UNPKG

@gati-framework/runtime

Version:

Gati runtime execution engine for running handler-based applications

113 lines 3 kB
/** * @module runtime/module-registry * @description Module registry for tracking and managing loaded modules */ import type { Module, ModuleMetadata, ModuleState } from './types/module.js'; /** * Module registry for tracking loaded modules */ export declare class ModuleRegistry { private modules; /** * Register a new module * * @param module - Module to register * @throws {ModuleError} If module with same name already exists */ register<T>(module: Module<T>): void; /** * Unregister a module * * @param name - Module name to unregister * @returns true if module was unregistered, false if not found */ unregister(name: string): boolean; /** * Check if a module is registered * * @param name - Module name to check * @returns true if module is registered */ has(name: string): boolean; /** * Get module metadata * * @param name - Module name * @returns Module metadata * @throws {ModuleNotFoundError} If module not found */ get<T = unknown>(name: string): ModuleMetadata<T>; /** * Get module if it exists, or undefined * * @param name - Module name * @returns Module metadata or undefined */ tryGet<T = unknown>(name: string): ModuleMetadata<T> | undefined; /** * Update module state * * @param name - Module name * @param state - New state * @param error - Optional error if state is 'error' * @throws {ModuleNotFoundError} If module not found */ updateState(name: string, state: ModuleState, error?: Error): void; /** * Increment usage count for a module * * @param name - Module name * @throws {ModuleNotFoundError} If module not found */ incrementUsage(name: string): void; /** * Get all registered module names * * @returns Array of module names */ getModuleNames(): string[]; /** * Get all modules with a specific state * * @param state - Module state to filter by * @returns Array of module metadata */ getModulesByState(state: ModuleState): ModuleMetadata[]; /** * Get all module metadata * * @returns Array of all module metadata */ getAll(): ModuleMetadata[]; /** * Get total number of registered modules * * @returns Number of modules */ size(): number; /** * Clear all modules */ clear(): void; /** * Get module statistics * * @returns Statistics object */ getStatistics(): { total: number; initialized: number; uninitialized: number; initializing: number; error: number; shutdown: number; totalUsage: number; }; } /** * Create a new module registry * * @returns New module registry instance */ export declare function createModuleRegistry(): ModuleRegistry; //# sourceMappingURL=module-registry.d.ts.map