lakutata
Version:
An IoC-based universal application framework.
76 lines (69 loc) • 2.49 kB
TypeScript
import '../vendor/TypeDef.2.js';
import { B as BaseObject, L as LifetimeType, I as IBaseObjectConstructor } from '../vendor/TypeDef.3.js';
import { C as ClassDecorator, P as PropertyDecorator } from '../vendor/TypeDef.12.js';
import { S as Schema } from '../vendor/TypeDef.5.js';
import '../vendor/TypeDef.11.js';
/**
* Class Decorator
* @param lifetime
* @param lock
* @constructor
*/
declare function Lifetime<ClassConstructor extends typeof BaseObject>(lifetime: LifetimeType, lock?: boolean): ClassDecorator<ClassConstructor>;
/**
* Class Decorator
* @param lock
* @constructor
*/
declare function Singleton<ClassConstructor extends typeof BaseObject>(lock?: boolean): ClassDecorator<ClassConstructor>;
/**
* Class Decorator
* @param lock
* @constructor
*/
declare function Transient<ClassConstructor extends typeof BaseObject>(lock?: boolean): ClassDecorator<ClassConstructor>;
/**
* Class Decorator
* @param lock
* @constructor
*/
declare function Scoped<ClassConstructor extends typeof BaseObject>(lock?: boolean): ClassDecorator<ClassConstructor>;
/**
* Class Decorator
* @constructor
*/
declare function Autoload<ClassConstructor extends typeof BaseObject>(): ClassDecorator<ClassConstructor>;
/**
* Property Decorator
* @param schema
* @param fn
* @constructor
*/
declare function Configurable<ClassPrototype extends BaseObject, DataType>(schema?: Schema<DataType>, fn?: (this: ClassPrototype, value: DataType) => DataType | Promise<DataType>): PropertyDecorator<ClassPrototype>;
type InjectionName = string | symbol | IBaseObjectConstructor<BaseObject>;
type InjectionTransformFunction = (injection: any) => any | Promise<any>;
/**
*
* @constructor
*/
declare function Inject<ClassPrototype extends BaseObject>(): PropertyDecorator<ClassPrototype>;
/**
* Property Decorator
* @param name
* @constructor
*/
declare function Inject<ClassPrototype extends BaseObject>(name: InjectionName): PropertyDecorator<ClassPrototype>;
/**
* Property Decorator
* @param transform
* @constructor
*/
declare function Inject<ClassPrototype extends BaseObject>(transform: InjectionTransformFunction): PropertyDecorator<ClassPrototype>;
/**
* Property Decorator
* @param name
* @param transform
* @constructor
*/
declare function Inject<ClassPrototype extends BaseObject>(name: InjectionName, transform: InjectionTransformFunction): PropertyDecorator<ClassPrototype>;
export { Autoload, Configurable, Inject, Lifetime, Scoped, Singleton, Transient };