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