@lakutata/core
Version:
Lakutata Framework Core
44 lines (43 loc) • 2.81 kB
TypeScript
import { AsyncContainerModule, Container as InversifyContainer } from 'inversify';
import { IConstructor } from '../interfaces/IConstructor';
import { Module } from './abstracts/Module';
import { Component } from './abstracts/Component';
import { Plugin } from './Plugin';
import { BaseObject } from './BaseObject';
export declare class Container<TObject extends BaseObject = BaseObject, TPlugin extends Plugin = Plugin, TModule extends Module = Module, TComponent extends Component = Component> {
private readonly eventEmitter;
private readonly rootIoC;
private readonly pluginIoC;
private readonly objectIoC;
private readonly componentIoC;
private readonly moduleIoC;
private readonly metadataReader;
private readonly moduleMap;
private readonly moduleBindingMap;
private readonly componentMap;
private readonly componentBindingMap;
private readonly isInitializedSymbol;
constructor();
setParent(parentContainer: Container): void;
protected bindAsync<T>(ioc: InversifyContainer, map: Map<IConstructor<T>, AsyncContainerModule[]>, bindingMap: Map<any, any>, constructor: IConstructor<T>, identifier: string | IConstructor<T>, initializerFunction: (this: T) => Promise<void>): void;
bindPlugin(pluginConstructor: IConstructor<TPlugin>, identifier: string, config: object): void;
bindObject(objectConstructor: IConstructor<TObject>, config?: object): void;
bindModule(moduleConstructor: IConstructor<TModule>, config?: object, identifier?: string, callback?: () => void): void;
bindComponent(componentConstructor: IConstructor<TComponent>, identifier: string, config?: object): void;
getPlugin<TPlugin>(identifier: string): TPlugin;
getObject<TObject>(objectConstructor: IConstructor<TObject>): TObject;
hasObject(objectConstructor: IConstructor<TObject>): boolean;
unbindObject(objectConstructor: IConstructor<TObject>): void;
getModule<TModule>(identifier: string | IConstructor<TModule>): TModule;
getComponent<TComponent>(identifier: string): TComponent;
protected loadAsync<T>(ioc: InversifyContainer, map: Map<IConstructor<T>, AsyncContainerModule[]>, bindingMap: Map<any, any>): Promise<void>;
loadModules(): Promise<void>;
loadComponents(): Promise<void>;
initialize(callbacks?: {
componentsLoaded?: () => Promise<void>;
modulesLoaded?: () => Promise<void>;
}): Promise<void>;
on(event: 'componentLoaded', listener: (componentId: string, componentConstructor: IConstructor<TComponent>, loadTime: number, subModuleId?: string) => void): this;
on(event: 'moduleLoaded', listener: (moduleId: string, moduleConstructor: IConstructor<TModule>, loadTime: number, subModuleId?: string) => void): this;
on(event: string, listener: (...args: any[]) => void): this;
}