UNPKG

@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
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; }