@api-buddy/plugin-utils
Version:
Shared utilities for API Buddy plugins
46 lines (45 loc) • 1.25 kB
TypeScript
import type { Plugin, PluginContext, Logger } from '@api-buddy/types';
export 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.
*/
export 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>;
}