import {CTX_OPTIONS, DEFAULT_CONTEXT} from "../@types/types"; import {applicationContext} from "../context/ApplicationContext"; import BIFlowApplication from "./BIFlowApplication"; import {requestHolder} from "./RequestContextHolder"; import {beanScanner} from "../reflect/ComponentScan"; export default class ApplicationInitializer { public static start(args: new () => T, callback?: Function, option?: CTX_OPTIONS) { applicationContext.init(option); beanScanner.scanFromModule(applicationContext.scanBase); (async (args) => { const instance = new args(); await instance.ready(); await requestHolder.requestIn(DEFAULT_CONTEXT, requestHolder.getDefaultHttpRequest(), [instance]); if (callback) { callback(instance); } })(args); }; }