inceptum
Version:
hipages take on the foundational library for enterprise-grade apps written in NodeJS
88 lines (87 loc) • 3.94 kB
TypeScript
import { LifecycleState } from '../Lifecycle';
import { SingletonDefinition } from './SingletonDefinition';
import { ObjectDefinition } from './ObjectDefinition';
export declare class BaseSingletonState extends LifecycleState {
static INSTANTIATING: BaseSingletonState;
static INSTANTIATED: BaseSingletonState;
static PROPERTIES_SET: BaseSingletonState;
}
export declare enum ParamType {
Value = 0,
Reference = 1,
Type = 2,
TypeArray = 3,
Config = 4,
Group = 5,
DefinitionGroup = 6,
}
export declare class ParamDefinition {
static withValue(val: any): ParamDefinition;
static withConfigKey(key: string, defaultValue?: any): ParamDefinition;
static withGroupName(groupName: string): ParamDefinition;
static withDefinitionGroupName(groupName: string): ParamDefinition;
static withRefName(refName: string): ParamDefinition;
static withClassName(className: string): ParamDefinition;
static withClassNameArr(className: string): ParamDefinition;
className: string;
refName: string;
type: ParamType;
val: any;
key: string;
group: string;
objectDefinitions: Array<ObjectDefinition<any>>;
defaultValue: any;
constructor(type: ParamType);
}
export declare class CallDefinition {
paramName: string;
args: ParamDefinition[];
constructor(paramName: string, paramDefinition: ParamDefinition);
}
export declare abstract class ConfigurableSingletonDefinition<T> extends SingletonDefinition<T> {
private constructorArgDefinitions;
private propertiesToSetDefinitions;
private startFunctionName;
private shutdownFunctionName;
constructor(clazz: any, name?: any, logger?: any);
getConstructorArgDefinitions(): ParamDefinition[];
getPropertiesToSetDefinitions(): CallDefinition[];
getStartFunctionName(): string;
getShutdownFunctionName(): string;
constructorParamByValue(value: any): this;
constructorParamByConfig(key: string, defaultValue?: any): this;
constructorParamByRef(name: any): this;
constructorParamByType(clazz: any): this;
constructorParamByTypeArray(clazz: any): this;
setPropertyByValue(paramName: any, value: any): this;
setPropertyByConfig(paramName: any, key: any, defaultValue?: any): this;
setPropertyByGroup(paramName: any, groupName: any): this;
setPropertyByDefinitionGroup(paramName: any, groupName: any): this;
setPropertyByRef(paramName: any, name: any): this;
setPropertyByType(paramName: any, className: any): this;
setPropertyByTypeArray(paramName: any, className: any): this;
startFunction(startFunctionName: any): this;
stopFunction(shutdownFunctionName: any): this;
protected copyInternalProperties(copyTo: any): void;
}
export declare class BaseSingletonDefinition<T> extends ConfigurableSingletonDefinition<T> {
instancePromise: Promise<T>;
constructor(clazz: any, name?: any, logger?: any);
getInstance(): Promise<T>;
protected hasPropertiesCircularDependency(trace?: Array<string>): boolean;
checkConstructorCircularDependency(trace?: Array<string>): void;
protected getAllConstructorObjectDefinitions(): Array<ObjectDefinition<any>>;
protected getAllPropertiesObjectDefinitions(): Array<ObjectDefinition<any>>;
protected getAllPropertyObjectDefinitions(): Array<ObjectDefinition<any>>;
protected resolveParamObjectDefinition(paramDefinition: ParamDefinition): Array<ObjectDefinition<any>>;
private instantiate();
private setAllProperties();
private getSetPropertyPromise(propertyToSet);
getParamDefinitionValue(paramDefinition: ParamDefinition): Promise<any>;
protected doStart(): Promise<void>;
protected doStop(): Promise<void>;
getCopyInstance(): ObjectDefinition<T>;
}
export declare class BaseSingletonDefinitionTestUtil extends BaseSingletonDefinition<any> {
exposeGetAllConstructorObjectDefinitions(): Array<ObjectDefinition<any>>;
}