@xcons/widget
Version:
XCon Studio widget utilities with advanced template rendering, reactive binding system and registry pattern support
70 lines (69 loc) • 1.86 kB
TypeScript
import { ServiceScope, ServiceToken, ServiceConstructor, ServiceConfig, ServiceProvider, IServiceRegistry } from './service-types';
export declare class ServiceRegistry implements IServiceRegistry {
private static instance;
private services;
private providers;
private instances;
private dependencyChain;
static getInstance(): ServiceRegistry;
/**
* Register a service class with configuration
*/
registerService<T>(target: ServiceConstructor<T>, config?: ServiceConfig): void;
/**
* Register a service provider
*/
registerProvider<T>(provider: ServiceProvider<T>): void;
/**
* Check if service is registered
*/
hasService(token: ServiceToken): boolean;
/**
* Get service instance
*/
getService<T>(token: ServiceToken<T>): T;
/**
* Create new instance without caching
*/
createInstance<T>(target: ServiceConstructor<T>): T;
/**
* Clear instances by scope
*/
clearScope(scope: ServiceScope): void;
/**
* Clear all services and instances
*/
clear(): void;
/**
* Resolve service with dependency injection
*/
private resolveService;
/**
* Create service instance from metadata
*/
private createServiceInstance;
/**
* Create service instance from provider
*/
private createProviderInstance;
/**
* Extract dependencies from constructor metadata
*/
private extractDependencies;
/**
* Get all registered services info
*/
getRegisteredServices(): Array<{
token: string;
scope: ServiceScope;
hasInstance: boolean;
}>;
/**
* Call onServiceInit lifecycle hook
*/
private callOnServiceInit;
/**
* Call onServiceDestroy lifecycle hook
*/
private callOnServiceDestroy;
}