cs-element
Version:
Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support
80 lines • 2.75 kB
TypeScript
/**
* Менеджер плагинов для CSElement
* Обеспечивает загрузку, управление и выполнение плагинов
*/
import { EventEmitter } from 'eventemitter3';
import { CSElementPlugin, PluginManager as IPluginManager, LifecycleHooks, MiddlewareContext, MiddlewareConfig, PluginInfo, PluginOptions } from '../types/plugin-interfaces';
export declare class PluginManager extends EventEmitter implements IPluginManager {
private plugins;
private pluginOptions;
private hooks;
private advancedMiddleware;
private CSElementClass;
constructor();
/**
* Инициализация хуков
*/
private initializeHooks;
/**
* Установить ссылку на класс CSElement
*/
setCSElementClass(CSElementClass: any): void;
/**
* Установить плагин
*/
use(plugin: CSElementPlugin, options?: PluginOptions): void;
/**
* Удалить плагин
*/
uninstall(pluginName: string): boolean;
/**
* Получить установленный плагин
*/
getPlugin(name: string): CSElementPlugin | null;
/**
* Получить все установленные плагины
*/
getPlugins(): CSElementPlugin[];
/**
* Проверить, установлен ли плагин
*/
hasPlugin(name: string): boolean;
/**
* Получить информацию о всех плагинах
*/
getPluginInfo(): PluginInfo[];
/**
* Добавить хук жизненного цикла
*/
addHook(hookName: keyof LifecycleHooks, callback: Function): void;
/**
* Удалить хук жизненного цикла
*/
removeHook(hookName: keyof LifecycleHooks, callback: Function): void;
/**
* Добавить middleware с конфигурацией
*/
addAdvancedMiddleware(operation: string, config: MiddlewareConfig): void;
/**
* Выполнить хуки жизненного цикла
*/
executeHooks(hookName: keyof LifecycleHooks, ...args: any[]): Promise<void>;
/**
* Выполнить middleware цепочку
*/
executeMiddleware(context: MiddlewareContext, operation: () => Promise<any>): Promise<any>;
/**
* Очистить все плагины (для тестирования)
*/
clear(): void;
/**
* Получить статистику плагинов
*/
getStats(): {
totalPlugins: number;
totalHooks: number;
totalMiddleware: number;
pluginsByType: Record<string, number>;
};
}
//# sourceMappingURL=PluginManager.d.ts.map