lakutata
Version:
An IoC-based universal application framework.
75 lines (65 loc) • 2.52 kB
TypeScript
import { DTO, Module, Component, Provider } from './TypeDef.internal.96.js';
import { BaseObject } from './TypeDef.internal.120.js';
import { IBaseObjectConstructor } from './TypeDef.internal.118.js';
declare const OBJECT_ID: unique symbol;
declare class LoadObjectOptions<ClassConstructor extends typeof BaseObject = typeof BaseObject> extends DTO {
[OBJECT_ID]?: string | symbol;
class: ClassConstructor;
}
declare class LoadNamedObjectOptions extends DTO {
[id: string]: LoadObjectOptions;
}
declare class LoadAnonymousObjectOptions<ClassConstructor extends typeof BaseObject = typeof BaseObject> extends DTO {
class: ClassConstructor;
}
type AnonymousObject = LoadAnonymousObjectOptions | typeof BaseObject | string;
declare class ModuleLoadObjectsOptions extends DTO {
named?: LoadNamedObjectOptions;
anonymous?: AnonymousObject[];
}
declare class OverridableObjectOptions<ClassConstructor extends typeof BaseObject = typeof BaseObject> extends DTO {
class?: ClassConstructor;
}
declare class OverridableNamedObjectOptions<ClassConstructor extends IBaseObjectConstructor<BaseObject> = IBaseObjectConstructor<BaseObject>> extends DTO {
[id: string]: OverridableObjectOptions<ClassConstructor>;
}
type BootstrapAsyncFunction<T = any, U = any> = (target: T) => Promise<U>;
type BootstrapOption = string | symbol | IBaseObjectConstructor | BootstrapAsyncFunction<Module, void>;
declare class ModuleOptions extends DTO {
/**
* Load components option
*/
components?: OverridableNamedObjectOptions<IBaseObjectConstructor<Component>>;
/**
* Load providers option
*/
providers?: OverridableNamedObjectOptions<IBaseObjectConstructor<Provider>>;
/**
* Load objects option
*/
objects?: ModuleLoadObjectsOptions;
/**
* Bootstrap option
*/
bootstrap?: BootstrapOption[];
}
declare class ApplicationOptions extends ModuleOptions {
/**
* AppId
*/
readonly id: string;
/**
* AppName
*/
readonly name: string;
/**
* Application timezone
*/
readonly timezone?: string | 'auto';
/**
* runtime environment (development or production, default value is development)
*/
readonly mode?: 'development' | 'production';
}
export { ApplicationOptions, LoadAnonymousObjectOptions, LoadNamedObjectOptions, LoadObjectOptions, ModuleLoadObjectsOptions, ModuleOptions, OverridableNamedObjectOptions, OverridableObjectOptions };
export type { BootstrapOption };