UNPKG

class-injector

Version:

Crazy simple dependency injection for TypeScript

38 lines (37 loc) 1.8 kB
import 'reflect-metadata'; export declare const __ContextSymbol: unique symbol; declare type Symbol = any; declare type Type = any; declare type Instance = any; declare type Constructor<T> = { new (...args: any[]): T; }; export declare type ContextOptions = { provide?: ([Type, Instance] | Instance)[]; }; export declare type PartialContext = { get<Instance>(type: Type): Instance | null; set(type: Type, instance: Instance): void; has(type: Type): boolean; }; export declare type Context = PartialContext & { bind: (instance: Instance) => void; instantiate: <T>(type: Constructor<T>) => T; }; export declare const __TypeRegistry: Map<any, any>; export declare const __InstanceRegistry: Map<any, any>; export declare function createPartialForContext(context: Context, options?: ContextOptions): PartialContext; export declare function createContext(options?: ContextOptions): Context; export declare const Context: (options?: ContextOptions) => ClassDecorator; export declare const Inject: (type?: any) => PropertyDecorator; export declare const Provide: (symbol?: any) => ClassDecorator; export declare function provide(symbol: Symbol, type: Type): void; export declare function provide(type: Type): void; export declare const ProvideInstance: (symbol?: any) => ClassDecorator; export declare function provideInstance<T>(symbol: Symbol, constructor: Constructor<T>): T; export declare function provideInstance<T>(instance: Constructor<T>): T; export declare function provideRawInstance<T extends Instance>(symbol: Symbol, instance: T): T; export declare function provideRawInstance<T extends Instance>(instance: T): T; export declare const getContext: (instance: Instance) => Context | null; export declare const isContext: (instance: any) => instance is Context; export {};