tsioc
Version:
tsioc is AOP, Ioc container, via typescript decorator
170 lines (169 loc) • 5.01 kB
TypeScript
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;
}