Files
Plugin-Host/README.md

1.5 KiB

Plugin Host

A lightweight, event-driven plugin host system for Node.js applications.

Features

  • Dynamic Plugin Loading: Load plugins at runtime from a local directory
  • Plugin Registry: Automatic fetching of available plugins from a remote directory
  • Hook System: Plugins can register hooks for extensibility
  • Event System: EventEmitter-based communication between host and plugins
  • Hot Reload: Support for unloading and reloading plugins
  • Auto-Update: Periodic registry updates from the plugin directory

Installation

npm install

Usage

import { PluginHost } from './src/PluginHost.js';

const host = new PluginHost({
  directoryUrl: 'http://your-plugin-directory/plugins',
  pluginsDir: './plugins',
  autoUpdate: true,
  updateInterval: 300000 // 5 minutes
});

await host.initialize();
await host.loadPlugins();

Plugin Context API

Plugins receive a context object with the following API:

  • registerHook(hookName, callback) - Register a hook
  • unregisterHook(hookName, callback) - Unregister a hook
  • runHook(hookName, ...args) - Execute a hook
  • getConfig(key) - Get plugin configuration
  • log(...args) - Log with plugin prefix
  • on(event, listener) - Listen to host events
  • emit(event, ...args) - Emit events

Events

  • initialized - Host initialized
  • registry-updated - Plugin registry updated
  • plugin-loaded - Plugin loaded
  • plugin-unloaded - Plugin unloaded
  • plugin-error - Plugin error occurred
  • shutdown - Host shutting down

License

MIT