UNPKG

@owja/ioc

Version:

dependency injection for javascript

37 lines (36 loc) 947 B
interface IConfig<T> { object?: INewAble<T>; factory?: Factory<T>; value?: Value<T>; cache?: T; singleton: boolean; } interface INewAble<T> { new (...args: any[]): T; } declare type Factory<T> = () => T; declare type Value<T> = T; declare class Options<T> { private _target; constructor(_target: IConfig<T>); inSingletonScope(): void; } declare class Bind<T> { private _target; constructor(_target: IConfig<T>); to(object: INewAble<T>): Options<T>; toFactory(factory: Factory<T>): Options<T>; toValue(value: Value<T>): void; } export declare class Container { private _registry; private _snapshots; bind<T = never>(type: symbol): Bind<T>; rebind<T = never>(type: symbol): Bind<T>; remove(type: symbol): Container; get<T = never>(type: symbol): T; snapshot(): Container; restore(): Container; private _add; } export {};