UNPKG

tsioc

Version:

tsioc is AOP, Ioc container, via typescript decorator

181 lines (180 loc) 5.17 kB
import { Token, ToInstance, Providers, Express2 } from '../../types'; import { IContainer } from '../../IContainer'; /** * provider, to dynamic resovle instance of params in run time. * * @export * @class Provider */ export declare class Provider { /** * service provider is value or value factory. * * @memberof Provider */ protected value?: any; /** * service is instance of type. * * @type {Token<any>} * @memberof Provider */ type?: Token<any>; constructor(type?: Token<any>, value?: any); /** * resolve provider value. * * @template T * @param {IContainer} container * @param {Providers[]} providers * @returns {T} * @memberof Provider */ resolve<T>(container: IContainer, ...providers: Providers[]): T; /** * create provider. * * @static * @param {Token<any>} type * @param {(any)} value * @returns Provider * @memberof Provider */ static create(type: Token<any>, value: any): Provider; /** * create extends provider. * * @static * @param {Token<any>} token * @param {(any)} value * @param {Express2<any, ExtendsProvider, void>} [extendsTarget] * @returns {ExtendsProvider} * @memberof Provider */ static createExtends(token: Token<any>, value: any, extendsTarget?: Express2<any, ExtendsProvider, void>): ExtendsProvider; /** * create custom provider. * * @static * @param {Token<any>} [type] * @param {ToInstance<any>} [toInstance] * @param {*} [value] * @returns {CustomProvider} * @memberof Provider */ static createCustom(type?: Token<any>, toInstance?: ToInstance<any>, value?: any): CustomProvider; /** * create invoked provider. * * @static * @param {Token<any>} token * @param {string} method * @param {(any)} [value] * @returns {InvokeProvider} * @memberof Provider */ static createInvoke(token: Token<any>, method: string, value?: any): InvokeProvider; /** * create param provider. * * @static * @param {Token<any>} token * @param {(any)} value * @param {number} [index] * @param {string} [method] * @returns {ParamProvider} * @memberof Provider */ static createParam(token: Token<any>, value: any, index?: number, method?: string): ParamProvider; /** * create async param provider. * * @static * @param {(string | string[])} files * @param {Token<any>} token * @param {number} [index] * @param {string} [method] * @param {(any)} [value] * @returns {AsyncParamProvider} * @memberof Provider */ static createAsyncParam(files: string | string[], token: Token<any>, index?: number, method?: string, value?: any): AsyncParamProvider; } export declare class CustomProvider extends Provider { /** * service value is the result of type instance invoke the method return value. * * @type {string} * @memberof Provider */ protected toInstance?: ToInstance<any>; constructor(type?: Token<any>, toInstance?: ToInstance<any>, value?: any); resolve<T>(container: IContainer, ...providers: Providers[]): T; } /** * InvokeProvider * * @export * @class InvokeProvider * @extends {Provider} */ export declare class InvokeProvider extends Provider { /** * service value is the result of type instance invoke the method return value. * * @type {string} * @memberof Provider */ protected method?: string; constructor(type?: Token<any>, method?: string, value?: any); resolve<T>(container: IContainer, ...providers: Providers[]): T; } /** * param provider. * * @export * @interface ParamProvider */ export declare class ParamProvider extends InvokeProvider { /** * param index, param name. * * @type {number} * @memberof ParamProvider */ index?: number; constructor(token?: Token<any>, value?: any, index?: number, method?: string); resolve<T>(container: IContainer, ...providers: Providers[]): T; } /** * Provider enable exntends target with provider in dynamic. * * @export * @class ExtendsProvider * @extends {Provider} */ export declare class ExtendsProvider extends Provider { private extendsTarget; constructor(token: Token<any>, value?: any, extendsTarget?: Express2<any, ExtendsProvider, void>); resolve<T>(container: IContainer, ...providers: Providers[]): T; extends(target: any): void; } /** * async param provider. * async load source file and execution as param value. * * @export * @interface AsyncParamProvider * @extends {ParamProvider} */ export declare class AsyncParamProvider extends ParamProvider { /** * match ref files. * * @type {(string | string[])} * @memberof AsyncParamProvider */ protected files?: string | string[]; constructor(files: string | string[], token: Token<any>, index?: number, method?: string, value?: any); resolve<T>(container: IContainer, ...providers: Providers[]): any; }