UNPKG

cider-di

Version:

Minimal Dependency Injection Framework for javascript

42 lines (41 loc) 1.4 kB
export interface Mapping { [name: string]: any; } export interface Binding<T extends Mapping, R> { (dependencies: Dependencies<T>, providers: Providers<T>, context: Context): R; tags?: string[]; } export interface Provider<R> { (): R; tags: string[]; } export declare type Module<T extends Mapping> = { [P in keyof T]: Binding<T, T[P]>; }; export interface Context { [key: string]: any; } export declare type Dependencies<T extends Mapping> = { [P in keyof T]: T[P]; }; export declare type Providers<T extends Mapping> = { [P in keyof T]: Provider<T[P]>; }; export interface Injector<T extends Mapping> { dependencies: Dependencies<T>; providers: Providers<T>; context: Context; } export declare function createInjector<T extends Mapping>(mod: Module<T>): Injector<T>; export declare function singleton<T extends Mapping, R>(binding: Binding<T, R>): Binding<T, R>; export declare function instance<V>(v: V): Binding<Mapping, V>; export declare function tagged<T extends Mapping, R>(tags: string[], binding: Binding<T, R>): Binding<T, R>; export declare function alias<T extends Mapping, K extends keyof T>(name: K): Binding<T, T[K]>; declare const _default: { createInjector: typeof createInjector; singleton: typeof singleton; instance: typeof instance; tagged: typeof tagged; alias: typeof alias; }; export default _default;