UNPKG

@re-shell/cli

Version:

Full-stack development platform uniting microservices and microfrontends. Build complete applications with .NET (ASP.NET Core Web API, Minimal API), Java (Spring Boot, Quarkus, Micronaut, Vert.x), Rust (Actix-Web, Warp, Rocket, Axum), Python (FastAPI, Dja

102 lines (101 loc) 3.34 kB
import { EventEmitter } from 'events'; import { Plugin, PluginRegistration, PluginContext, PluginPermission } from './plugin-system'; export declare enum PluginState { UNLOADED = "unloaded", LOADING = "loading", LOADED = "loaded", INITIALIZING = "initializing", INITIALIZED = "initialized", ACTIVATING = "activating", ACTIVE = "active", DEACTIVATING = "deactivating", DEACTIVATED = "deactivated", ERROR = "error" } export interface PluginLifecycleEvent { pluginName: string; oldState: PluginState; newState: PluginState; timestamp: number; data?: any; error?: Error; } export interface PluginLoaderConfig { timeout: number; validateSecurity: boolean; sandboxed: boolean; maxMemory?: number; allowedPermissions?: PluginPermission[]; blockedPermissions?: PluginPermission[]; enableHotReload?: boolean; preloadDependencies?: boolean; } export interface PluginDependency { name: string; version: string; required: boolean; resolved?: boolean; instance?: Plugin; } export interface ManagedPluginRegistration extends PluginRegistration { state: PluginState; dependencies: PluginDependency[]; dependents: string[]; loadTime?: number; initTime?: number; activationTime?: number; lastStateChange: number; context?: PluginContext; stateHistory: PluginLifecycleEvent[]; errors: Array<{ stage: string; error: Error; timestamp: number; }>; permissions: PluginPermission[]; memoryUsage?: NodeJS.MemoryUsage; performance: { loadDuration: number; initDuration: number; activationDuration: number; }; } export declare class PluginLifecycleManager extends EventEmitter { private plugins; private dependencyGraph; private config; private isInitialized; private hotReloadWatchers; constructor(config?: Partial<PluginLoaderConfig>); initialize(): Promise<void>; registerPlugin(registration: PluginRegistration): Promise<void>; loadPlugin(pluginName: string): Promise<void>; initializePlugin(pluginName: string, context?: PluginContext): Promise<void>; activatePlugin(pluginName: string): Promise<void>; deactivatePlugin(pluginName: string): Promise<void>; unloadPlugin(pluginName: string): Promise<void>; reloadPlugin(pluginName: string): Promise<void>; private loadPluginModule; private validatePluginInterface; private validatePluginSecurity; private resolveDependencies; private loadDependencies; private activateDependencies; private deactivateDependents; private buildDependencyGraph; private updateDependencyGraph; private setupHotReload; private ensurePluginDirectories; private createPluginContext; private createLogger; private createHookSystem; private createUtils; private transitionState; private isValidManifest; getPlugin(name: string): ManagedPluginRegistration | undefined; getPlugins(): ManagedPluginRegistration[]; getPluginsByState(state: PluginState): ManagedPluginRegistration[]; getDependencyGraph(): Map<string, Set<string>>; getLifecycleStats(): any; } export declare function createPluginLifecycleManager(config?: Partial<PluginLoaderConfig>): PluginLifecycleManager;