-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.d.ts
More file actions
54 lines (42 loc) · 1.89 KB
/
index.d.ts
File metadata and controls
54 lines (42 loc) · 1.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
export type ModuleClass = ClassOf<Module>;
export type ClassOf<T> = new () => T;
export type ClassOrName<T> = ClassOf<T> | string;
export type ModuleRequestFunction = <T extends Module>(classOrName: ClassOrName<T>) => T;
export type ModuleInjectionHandler = (request: ModuleRequestFunction, requestOptional?: ModuleRequestFunction) => void;
export interface ModuleConstructorOptions {
exclusive?: boolean;
inject?: ModuleInjectionHandler
}
export class Module {
constructor(options?: ModuleConstructorOptions);
setup(): void;
postSetup(): void;
teardown(): void;
moduleIsExclusive(): boolean;
moduleWasSetUp(): boolean;
modulePerformInjection(requestFn: ModuleRequestFunction): void;
assertDependenciesSetup(): void;
getRequiredDependencies(): Module[];
getOptionalDependencies(): Module[];
setSystemStateReference(system: SystemState): void;
getSystemStateReference(): SystemState;
}
export type ClassOfMembers<T> = { [P in keyof T]: ClassOf<T[P]> | string };
export class SystemState extends Module {
addModuleClass(someClass: ModuleClass, overrideName?: string): void;
bootstrap<K>(requirements: ClassOfMembers<K>): K;
constructModule(name: string): Module;
constructModule<T>(name: string): T;
constructModule<T extends Module>(someClass: ClassOf<T>): T;
resolveClass(name: string): Module;
resolveClass<T>(name: string): T;
resolveClass<T extends Module>(someClass: ClassOf<T>): T;
setup(): Promise<void>;
teardown(): Promise<void>;
invertSetupModulesList(): void;
getModulesList(): Module[];
}
export type QuickstrapKnownModules = ModuleClass[] | {[alias: string]: ModuleClass};
export type QuickstrapResult<K> = { state: K, system: SystemState };
export function quickstrap<K>(requirements: ClassOfMembers<K>, knownModules: QuickstrapKnownModules): Promise<QuickstrapResult<K>>;
export function visualize(system: SystemState): string;