UNPKG

@analog-tools/inject

Version:

Dependency injection for AnalogJS server-side applications

46 lines (45 loc) 1.33 kB
/** * 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; }