UNPKG

vulcain-corejs

Version:
75 lines (74 loc) 2.99 kB
import { Container } from './containers'; import { LifeTime } from './annotations'; export declare enum BusUsage { all = 0, commandOnly = 1, eventOnly = 2, } export interface IContainer { injectInstance(fn: any, name: string): IContainer; injectSingleton(fn: any, ...args: any[]): IContainer; injectSingleton(fn: any, name?: string, ...args: any[]): IContainer; injectSingleton(fn: any, nameOrArray: string | Array<any>, ...args: any[]): IContainer; injectTransient(fn: any, ...args: any[]): IContainer; injectTransient(fn: any, name?: string, ...args: any[]): IContainer; injectTransient(fn: any, nameOrArray: string | Array<any>, ...args: any[]): IContainer; injectScoped(fn: any, ...args: any[]): IContainer; injectScoped(fn: any, name?: string, ...args: any[]): IContainer; injectScoped(fn: any, nameOrArray: string | Array<any>, ...args: any[]): IContainer; /** * Inject all components founded recursivly in a folder. * * @param {string} path Root folder relative to current folder * @returns {IContainer} */ injectFrom(path: string): IContainer; /** * Get a component by name * * @template T * @param {string} name Component name * @param {boolean} [optional] if true doesn't throw an exception if the component doesn't exist * @param {LifeTime} [assertLifeTime] If provided check if the component has been injected with the same lifetime value * @returns {T} A component */ get<T>(name: string, optional?: boolean, assertLifeTime?: LifeTime): T; /** * Create a new component resolving all its dependencies * * @param {any} fn A component class * @param {any} args Custom arguments */ resolve(fn: any, ...args: any[]): any; dispose(): any; useRabbitBusAdapter(address?: string, usage?: BusUsage): any; useMongoProvider(uri: string, mongoOptions?: any): any; useMemoryProvider(folder?: string): any; inject(name: string, fn: any, lifeTime: LifeTime): any; } export interface IResolver { lifeTime: LifeTime; resolve(container: Container, name?: string, parentContainer?: Container): any; } export declare class InstanceResolver implements IResolver { private instance; lifeTime: LifeTime; constructor(instance: any); resolve(container: Container, name?: string): any; } export declare class Resolver implements IResolver { private fn; lifeTime: LifeTime; private args; static nb: number; constructor(fn: any, lifeTime: LifeTime, args?: Array<any>); resolve(container: Container, name?: string): any; } export declare class SingletonResolver extends Resolver { constructor(fn: any, args?: Array<any>); resolve(container: Container, name?: string, parentContainer?: Container): any; } export declare class ScopedResolver extends Resolver { constructor(fn: any, args?: Array<any>); resolve(container: Container, name?: string): any; }