@dataql/node
Version:
DataQL core SDK for unified data management with MongoDB and GraphQL - Production Multi-Cloud Ready
98 lines (97 loc) • 2.56 kB
TypeScript
import { Plugin, PluginManager as IPluginManager, PluginType, DataQLHook, HookData, HookHandler } from "./types.js";
import { Data } from "../Data.js";
/**
* Core plugin manager implementation for DataQL
*
* Handles plugin registration, initialization, lifecycle management,
* and provides the plugin ecosystem infrastructure.
*/
export declare class PluginManager implements IPluginManager {
private plugins;
private pluginConfigs;
private hooks;
private middleware;
private extensions;
private initialized;
private dataql;
private events;
private logger;
private utils;
constructor(dataql: Data);
/**
* Register a plugin with the manager
*/
register(plugin: Plugin, config?: Record<string, any>): Promise<void>;
/**
* Unregister a plugin
*/
unregister(pluginId: string): Promise<void>;
/**
* Get a registered plugin
*/
getPlugin(pluginId: string): Plugin | undefined;
/**
* Get all registered plugins
*/
getPlugins(): Plugin[];
/**
* Get plugins by type
*/
getPluginsByType(type: PluginType): Plugin[];
/**
* Check if plugin is registered
*/
hasPlugin(pluginId: string): boolean;
/**
* Initialize all registered plugins
*/
initializeAll(): Promise<void>;
/**
* Destroy all plugins
*/
destroyAll(): Promise<void>;
/**
* Execute a hook with all registered handlers
*/
executeHook<T extends DataQLHook>(hook: T, data: HookData[T]): Promise<HookData[T]>;
/**
* Register a hook handler
*/
registerHook<T extends DataQLHook>(hook: T, handler: HookHandler, pluginId: string): void;
/**
* Process request through middleware
*/
processRequest(request: any): Promise<any>;
/**
* Process response through middleware
*/
processResponse(response: any): Promise<any>;
/**
* Get extension methods
*/
getExtensions(): Record<string, any>;
/**
* Get plugin statistics
*/
getStats(): Record<string, any>;
/**
* Private: Initialize a single plugin
*/
private initializePlugin;
/**
* Private: Register plugin-specific functionality
*/
private registerPluginFunctionality;
/**
* Private: Validate plugin
*/
private validatePlugin;
/**
* Private: Check plugin dependencies
*/
private checkDependencies;
/**
* Private: Sort plugins by dependencies
*/
private sortPluginsByDependencies;
}