@lakutata/core
Version:
Lakutata Framework Core
89 lines (88 loc) • 5.3 kB
TypeScript
import { BaseObject } from '../BaseObject';
import { Container } from '../Container';
import { Component } from './Component';
import { IComponentsConfig } from '../../interfaces/IComponentsConfig';
import { IModulesConfig } from '../../interfaces/IModulesConfig';
import { TPluginsConfig } from '../../types/TPluginsConfig';
import { Plugin } from '../Plugin';
import { IConstructor } from '../../interfaces/IConstructor';
import { TWorkflowsConfig } from '../../types/TWorkflowsConfig';
import { ThreadManager } from '../thread/ThreadManager';
import { Thread } from '../thread/Thread';
import { IThreadConstructor } from '../../interfaces/IThreadConstructor';
import { ProcessManager } from '../process/ProcessManager';
import { Process } from '../process/Process';
import { IProcessConstructor } from '../../interfaces/IProcessConstructor';
import { TThreadsConfig } from '../../types/TThreadsConfig';
import { TProcessesConfig } from '../../types/TProcessesConfig';
export declare abstract class Module extends BaseObject {
private readonly eventEmitter;
readonly id: string | IConstructor<Module>;
protected readonly container: Container;
protected readonly threadManager: ThreadManager;
protected readonly processManager: ProcessManager;
protected readonly onComponentsLoaded: (module: ThisType<this>) => void | Promise<void>;
protected readonly onModulesLoaded: (module: ThisType<this>) => void | Promise<void>;
protected abstract initialize(): Promise<void> | void;
constructor();
protected readonly workflows: TWorkflowsConfig;
protected readonly plugins: TPluginsConfig;
protected readonly components: IComponentsConfig;
protected readonly modules: IModulesConfig;
protected readonly threads: TThreadsConfig;
protected readonly processes: TProcessesConfig;
protected bindPlugins(): void;
protected bindComponents(): void;
protected bindModules(): void;
protected bindThreads(): Promise<void>;
protected bindProcesses(): Promise<void>;
get Plugins(): {
bind: <TPlugin extends Plugin = Plugin>(pluginConstructor: IConstructor<TPlugin>, identifier: string, config: object) => void;
get: <T extends Plugin = Plugin>(name: string) => T;
has: (name: string) => boolean;
};
get Objects(): {
bind: <TObject extends BaseObject = BaseObject>(objectConstructor: IConstructor<TObject>, config?: {
[key: string]: any;
} | undefined) => void;
get: <TObject_1 extends BaseObject = BaseObject>(objectConstructor: IConstructor<TObject_1>) => TObject_1;
has: <TObject_2 extends BaseObject = BaseObject>(objectConstructor: IConstructor<TObject_2>) => boolean;
unbind: <TObject_3 extends BaseObject = BaseObject>(objectConstructor: IConstructor<TObject_3>) => void;
};
get Components(): {
[key: string]: any;
get: <T extends Component = Component>(name: string) => T;
has: (name: string) => boolean;
};
get Modules(): {
get: <T extends Module = Module>(name: string) => T;
has: (name: string) => boolean;
};
get Threads(): {
bind: <T extends Thread = Thread>(threadConstructor: IThreadConstructor<T>) => Promise<boolean>;
get: <T_1 extends Thread = Thread>(threadConstructor: IThreadConstructor<T_1>) => T_1;
has: <T_2 extends Thread = Thread>(threadConstructor: IThreadConstructor<T_2>) => boolean;
destroy: <T_3 extends Thread = Thread>(threadConstructor: IThreadConstructor<T_3>) => Promise<void>;
};
get Processes(): {
bind: <T extends Process = Process>(processConstructor: IProcessConstructor<T>) => Promise<boolean>;
get: <T_1 extends Process = Process>(processConstructor: IProcessConstructor<T_1>) => T_1;
has: <T_2 extends Process = Process>(processConstructor: IProcessConstructor<T_2>) => boolean;
destroy: <T_3 extends Process = Process>(processConstructor: IProcessConstructor<T_3>) => Promise<void>;
};
on(event: 'ready', listener: (instance: this) => void): this;
on(event: 'loaded', listener: (id: string, identifier: string, constructor: IConstructor<Module> | IConstructor<Component>, loadTime: number, type: 'module' | 'component') => void): this;
on(event: string | symbol, listener: (...args: any[]) => void): this;
once(event: 'ready', listener: (instance: this) => void): this;
once(event: 'loaded', listener: (id: string, identifier: string, constructor: IConstructor<Module> | IConstructor<Component>, loadTime: number, type: 'module' | 'component') => void): this;
once(event: string | symbol, listener: (...args: any[]) => void): this;
off(event: string): void;
off(event: string | symbol, listener: (...args: any[]) => void): this;
emit(event: string | symbol, ...args: any[]): boolean;
bind<TObject extends BaseObject = BaseObject>(objectConstructor: IConstructor<TObject>, config?: {
[key: string]: any;
}): void;
get<TObject extends BaseObject = BaseObject>(objectConstructor: IConstructor<TObject>): TObject;
unbind<TObject extends BaseObject = BaseObject>(objectConstructor: IConstructor<TObject>): void;
has<TObject extends BaseObject = BaseObject>(objectConstructor: IConstructor<TObject>): boolean;
}