@dbs-portal/core-module-registry
Version:
Core module registry system for automatic module discovery and registration
117 lines • 3.01 kB
TypeScript
/**
* Module Discovery Service
*
* Orchestrates multiple discovery strategies to automatically find and load
* modules from various sources (packages, configs, runtime registration).
*/
import type { ModuleMetadata } from '../types/ModuleMetadata';
export interface DiscoveryOptions {
packageScanPaths?: string[];
configScanPaths?: string[];
packageNamePattern?: string;
configFilePattern?: string;
enablePackageScanning?: boolean;
enableConfigDetection?: boolean;
enableRuntimeRegistration?: boolean;
validateModules?: boolean;
ignorePatterns?: string[];
}
export interface DiscoveryResult {
modules: ModuleMetadata[];
errors: DiscoveryError[];
warnings: DiscoveryWarning[];
stats: DiscoveryStats;
}
export interface DiscoveryError {
source: string;
message: string;
details?: any;
}
export interface DiscoveryWarning {
source: string;
message: string;
details?: any;
}
export interface DiscoveryStats {
packagesScanned: number;
configsFound: number;
modulesDiscovered: number;
validationErrors: number;
discoveryTime: number;
}
export declare class ModuleDiscoveryService {
private options;
private runtimeModules;
private logger;
private platformInfo;
constructor(options?: DiscoveryOptions);
/**
* Discover modules from all enabled sources
*/
discoverModules(): Promise<ModuleMetadata[]>;
/**
* Discover modules from package.json files
*/
private discoverFromPackages;
/**
* Discover modules from module.config.ts files
*/
private discoverFromConfigs;
/**
* Get modules registered at runtime
*/
private discoverFromRuntime;
/**
* Register a module at runtime
*/
registerRuntimeModule(module: ModuleMetadata): void;
/**
* Scan workspace for packages matching the pattern
*/
private scanWorkspacePackages;
/**
* Find module configuration files
*/
private findConfigFiles;
/**
* Load module metadata from package candidate
*/
private loadModuleFromPackage;
/**
* Load module metadata from configuration file
*/
private loadModuleFromConfig;
/**
* Generate module metadata from package.json
*/
private generateMetadataFromPackage;
/**
* Check if package is a module package
*/
private isModulePackage;
/**
* Extract module ID from package name
*/
private extractModuleId;
/**
* Format module name from ID
*/
private formatModuleName;
/**
* Infer category from module ID
*/
private inferCategoryFromId;
/**
* Read and parse package.json file
*/
private readPackageJson;
/**
* Remove duplicate modules (prefer first occurrence)
*/
private deduplicateModules;
/**
* Validate discovered modules
*/
private validateDiscoveredModules;
}
//# sourceMappingURL=ModuleDiscoveryService.d.ts.map