@analog-tools/inject
Version:
Dependency injection for AnalogJS server-side applications
46 lines (45 loc) • 1.33 kB
TypeScript
/**
* Symbol-based service discovery to prevent minification issues
*/
export declare const SERVICE_TOKEN: unique symbol;
/**
* Enhanced injectable service interface with symbol-based tokens
*/
export interface SymbolInjectableService {
[SERVICE_TOKEN]: symbol;
}
/**
* Create a unique service token
*/
export declare function createServiceToken(name?: string): symbol;
/**
* Decorator for marking services as injectable with automatic token generation
*/
export declare function Injectable<T extends new (...args: any[]) => any>(token?: symbol): (target: T) => T;
/**
* Enhanced service registry using symbols
*/
export declare class SymbolServiceRegistry {
private serviceMap;
private initializingServices;
/**
* Register a service with symbol-based token
*/
register<T>(serviceClass: new (...args: any[]) => T, ...args: ConstructorParameters<new (...args: any[]) => T>): void;
/**
* Get service by class
*/
getService<T>(serviceClass: new (...args: any[]) => T): T | undefined;
/**
* Check if service exists
*/
hasService<T>(serviceClass: new (...args: any[]) => T): boolean;
/**
* Remove service
*/
removeService<T>(serviceClass: new (...args: any[]) => T): boolean;
/**
* Clear all services
*/
clear(): void;
}