UNPKG

@fdm-monster/server

Version:

FDM Monster is a bulk OctoPrint, Klipper, PrusaLink and BambuLab manager to set up, configure and monitor 3D printers. Our aim is to provide neat overview over your farm.

43 lines (42 loc) 1.51 kB
import _virtual_controllers_default from "../_virtual/_virtual_controllers.js"; import { Router } from "express"; import { HttpVerbs, getStateAndTarget, makeInvoker, rollUpState } from "awilix-express"; //#region src/shared/load-controllers.ts async function loadControllersFunc() { const found = await findControllers(); const router = Router(); found.forEach(_registerController.bind(null, router)); return router; } async function findControllers() { return _virtual_controllers_default.map(extractStateAndTargetFromExports).flat(); } function extractStateAndTargetFromExports(exports) { const items = []; if (exports) { const stateAndTarget = getStateAndTarget(exports); if (stateAndTarget) { items.push(stateAndTarget); return items; } for (const key of Object.keys(exports)) { const stateAndTarget = getStateAndTarget(exports[key]); if (stateAndTarget) items.push(stateAndTarget); } } return items; } function _registerController(router, stateAndTarget) { if (!stateAndTarget) return; const { state, target } = stateAndTarget; rollUpState(state).forEach((methodCfg, methodName) => { methodCfg.verbs.forEach((httpVerb) => { let method = httpVerb.toLowerCase(); if (httpVerb === HttpVerbs.ALL) method = "all"; router[method](methodCfg.paths, ...methodCfg.beforeMiddleware, makeInvoker(target)(methodName), ...methodCfg.afterMiddleware); }); }); } //#endregion export { findControllers, loadControllersFunc }; //# sourceMappingURL=load-controllers.js.map