vulcain-corejs
Version:
Vulcain micro-service framework
75 lines (74 loc) • 2.99 kB
TypeScript
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;
}