@api-buddy/plugin-utils
Version:
Shared utilities for API Buddy plugins
50 lines (47 loc) • 1.37 kB
TypeScript
import { Logger, Plugin, PluginContext } from '@api-buddy/types';
export { Logger, Plugin, PluginContext, PluginHook } from '@api-buddy/types';
interface PluginManagerOptions {
cwd?: string;
logger?: Partial<Logger>;
pluginsDir?: string | string[];
nodeModulesDirs?: string[];
}
/**
* A simple plugin manager that handles loading and managing plugins.
* Can be extended to add custom plugin functionality.
*/
declare class SimplePluginManager {
protected plugins: Map<string, Plugin>;
protected context: PluginContext;
protected options: {
pluginsDir: string[];
nodeModulesDirs: string[];
};
private defaultLogger;
constructor(options?: PluginManagerOptions);
/**
* Register a plugin
*/
registerPlugin(plugin: Plugin): Promise<void>;
/**
* Get a registered plugin by name
*/
getPlugin<T extends Plugin = Plugin>(name: string): T | undefined;
/**
* Get all registered plugins
*/
getPlugins(): Plugin[];
/**
* Check if a plugin is registered
*/
hasPlugin(name: string): boolean;
/**
* Unregister a plugin
*/
unregisterPlugin(name: string): Promise<boolean>;
/**
* Load plugins from the specified directories
*/
loadPlugins(): Promise<void>;
}
export { type PluginManagerOptions, SimplePluginManager };