UNPKG

tsioc

Version:

tsioc is AOP, Ioc container, via typescript decorator

170 lines (169 loc) 5.01 kB
import 'reflect-metadata'; import { IContainer } from './IContainer'; import { Type, Token, Factory, SymbolType, ToInstance, Providers } from './types'; import { MapSet } from './utils/index'; import { ActionComponent } from './core/index'; import { LifeScope } from './LifeScope'; import { IParameter } from './IParameter'; /** * Container. */ export declare class Container implements IContainer { protected provideTypes: MapSet<Token<any>, Type<any>>; protected factories: MapSet<Token<any>, Function>; protected singleton: MapSet<Token<any>, any>; constructor(); /** * Retrieves an instance from the container based on the provided token. * * @template T * @param {Token<T>} token * @param {string} [alias] * @param {T} [notFoundValue] * @returns {T} * @memberof Container */ get<T>(token: Token<T>, alias?: string): T; /** * resolve type instance with token and param provider. * * @template T * @param {Token<T>} token * @param {T} [notFoundValue] * @param {...Providers[]} providers * @memberof Container */ resolve<T>(token: Token<T>, ...providers: Providers[]): T; /** * clear cache. * * @param {Type<any>} targetType * @memberof IContainer */ clearCache(targetType: Type<any>): void; /** * get token. * * @template T * @param {Token<T>} token * @param {string} [alias] * @returns {Token<T>} * @memberof Container */ getToken<T>(token: Token<T>, alias?: string): Token<T>; /** * get tocken key. * * @template T * @param {Token<T>} token * @param {string} [alias] * @returns {SymbolType<T>} * @memberof Container */ getTokenKey<T>(token: Token<T>, alias?: string): SymbolType<T>; /** * register type. * @abstract * @template T * @param {Token<T>} token * @param {T} [value] * @returns {this} * @memberOf Container */ register<T>(token: Token<T>, value?: Factory<T>): this; /** * has register the token or not. * * @template T * @param {Token<T>} token * @param {string} [alias] * @returns {boolean} * @memberof Container */ has<T>(token: Token<T>, alias?: string): boolean; /** * has register type. * * @template T * @param {SymbolType<T>} key * @returns * @memberof Container */ hasRegister<T>(key: SymbolType<T>): boolean; /** * unregister the token * * @template T * @param {Token<T>} token * @returns {this} * @memberof Container */ unregister<T>(token: Token<T>): this; /** * register stingleton type. * @abstract * @template T * @param {Token<T>} token * @param {Factory<T>} [value] * @returns {this} * @memberOf Container */ registerSingleton<T>(token: Token<T>, value?: Factory<T>): this; /** * bind provider. * * @template T * @param {Token<T>} provide * @param {Token<T>} provider * @returns {this} * @memberof Container */ bindProvider<T>(provide: Token<T>, provider: Token<T> | Factory<T>): this; /** * get token implements class type. * * @template T * @param {Token<T>} token * @returns {Type<T>} * @memberof Container */ getTokenImpl<T>(token: Token<T>): Type<T>; /** * get life scope of container. * * @returns {LifeScope} * @memberof IContainer */ getLifeScope(): LifeScope; /** * invoke method async. * * @template T * @param {Token<any>} token * @param {(string | symbol)} propertyKey * @param {*} [instance] * @param {...Providers[]} providers * @returns {Promise<T>} * @memberof Container */ invoke<T>(token: Token<any>, propertyKey: string | symbol, instance?: any, ...providers: Providers[]): Promise<T>; /** * invoke method. * * @template T * @param {Token<any>} token * @param {(string | symbol)} propertyKey * @param {*} [instance] * @param {...Providers[]} providers * @returns {T} * @memberof Container */ syncInvoke<T>(token: Token<any>, propertyKey: string | symbol, instance?: any, ...providers: Providers[]): T; createSyncParams(params: IParameter[], ...providers: Providers[]): any[]; createParams(params: IParameter[], ...providers: Providers[]): Promise<any[]>; protected cacheDecorator<T>(map: Map<string, ActionComponent>, action: ActionComponent): void; protected init(): void; protected registerFactory<T>(token: Token<T>, value?: Factory<T>, singleton?: boolean): void; protected createCustomFactory<T>(key: SymbolType<T>, factory?: ToInstance<T>, singleton?: boolean): (...providers: any[]) => any; protected createTypeFactory<T>(key: SymbolType<T>, ClassT?: Type<T>, singleton?: boolean): (...providers: any[]) => any; }