UNPKG

@sustain/core

Version:

Sustain is a Framework that is barely used despedcies to make stable and sustainable apps

73 lines 3.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.executeOnServerStart = exports.getAllModuleMetaData = exports.getModuleMetaData = void 0; const dependency_container_1 = require("./../di/dependency-container"); let usedInjectedContainer = dependency_container_1.InjectedContainer; let allControllers = [], allProviders = [], allExtensions = [], allStaticFolders = [], allMiddleswares = [], allModules = [], applicationPort; const getModuleMetaData = (module, config) => { const { MODULE_CONFIG } = module.prototype; let { controllers = [], providers = [], extensions = [], modules = [], staticFolders = [], middleswares = [], port, } = MODULE_CONFIG; if (config === null || config === void 0 ? void 0 : config.mainModule) { applicationPort = port; } allControllers = [...allControllers, ...controllers]; allProviders = [...allProviders, ...providers]; allExtensions = [...allExtensions, ...extensions]; allStaticFolders = [...allStaticFolders, ...staticFolders]; allMiddleswares = [...allMiddleswares, ...middleswares]; allModules = [...allModules, module]; injectProvidersToRootContainer([...providers]); injectControllerToRootContainer([...extensions, ...controllers]); if (Array.isArray(modules)) { for (const childModule of modules) { exports.getModuleMetaData(childModule); } } executeOnModuleLoaded(module); }; exports.getModuleMetaData = getModuleMetaData; const getAllModuleMetaData = (mainModule, params) => { if (params === null || params === void 0 ? void 0 : params.scoped) { usedInjectedContainer = params.container; } exports.getModuleMetaData(mainModule, { mainModule: true }); return { controllers: allControllers, providers: allProviders, extensions: allExtensions, middleswares: allMiddleswares, staticFolders: allStaticFolders, modules: allModules, port: applicationPort, }; }; exports.getAllModuleMetaData = getAllModuleMetaData; const injectControllerToRootContainer = (elements = []) => { elements.forEach((element) => { usedInjectedContainer.inject(element); }); }; const injectProvidersToRootContainer = (elements = []) => { elements.forEach((element) => { usedInjectedContainer.addProvider({ provide: element, useClass: element }); usedInjectedContainer.inject(element); }); }; const executeOnModuleLoaded = (module) => { usedInjectedContainer.inject(module); const instance = usedInjectedContainer.get(module); if (instance.onModuleLoaded) { instance.onModuleLoaded(); } }; const executeOnServerStart = (modules, applicationRequests) => { modules.forEach((module) => { usedInjectedContainer.inject(module); const instance = usedInjectedContainer.get(module); if (instance.onServerStart) { instance.onServerStart(applicationRequests); } }); }; exports.executeOnServerStart = executeOnServerStart; //# sourceMappingURL=module.helper.js.map