@gati-framework/runtime
Version:
Gati runtime execution engine for running handler-based applications
113 lines • 3 kB
TypeScript
/**
* @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