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