@storm-stack/plugin-system
Version:
A library used to create and manage a plugin-styled architecture in a TypeScript application.
17 lines (16 loc) • 1.24 kB
TypeScript
import type { IPluginLoader, IPluginModule, PluginDefinition, PluginInstance } from "../types";
/**
* A base class to detect properly loaded plugins.
*/
export declare abstract class PluginLoader<TContext = any, TPluginModule extends IPluginModule<TContext> = IPluginModule<TContext>> implements IPluginLoader<TContext, TPluginModule> {
readonly rootPath?: string | undefined;
readonly tsconfig?: string | undefined;
readonly autoInstall?: boolean | undefined;
protected resolver: (request: string) => Promise<string>;
constructor(rootPath?: string | undefined, tsconfig?: string | undefined, autoInstall?: boolean | undefined);
abstract process: (context: TContext, instance: PluginInstance<TContext, TPluginModule>, options: Record<string, any>) => Promise<void>;
load: (definition: PluginDefinition, options?: Record<string, any>) => Promise<PluginInstance<TContext, TPluginModule>>;
isValid: (module: TPluginModule) => boolean;
protected instantiate: (definition: PluginDefinition, module: TPluginModule, resolvedPath: string, options?: Record<string, any>) => PluginInstance<TContext, TPluginModule>;
protected resolve: (definition: PluginDefinition, _?: Record<string, any>) => unknown;
}