import {BaseBootstrapEnv} from "../bootstrap"; import type {ApplicationModule} from "./ApplicationModule"; export abstract class Application { protected _modules: ApplicationModule[] = []; abstract initApplication(scope: BaseBootstrapEnv):Promise; prepareApplication?(scope: BaseBootstrapEnv): Promise; postInitApplication?(scope: BaseBootstrapEnv): Promise; async initModules(modules: ApplicationModule[], scope: BaseBootstrapEnv): Promise { for (const module of modules) { await module.initModule(this, scope); this._modules.push(module); } } get modules(): ApplicationModule[] { return this._modules; } }