UNPKG

jsev

Version:

Environment for building Web API's.

59 lines 1.98 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const utilities_1 = require("../utilities"); function convertToTable(middlewareList) { const table = { header: ["Rank", "Middleware"], rows: [], }; middlewareList.forEach((x) => { const { name, rank } = x; table.rows.push([rank.toString(), name]); }); return table; } async function convertMiddlewareToListItem(env, name, middleware) { if (!utilities_1.isFunction(middleware)) { return; } const m = await middleware(env); if (!m) { return; } return { name, ...m }; } async function applyMiddlewares(env) { const { app, middlewares, log } = env; const mws = await Promise.all(Object.entries(middlewares).map(async (x) => convertMiddlewareToListItem(env, x[0], x[1]))); const middlewareList = mws .filter(utilities_1.notNullFilter) .sort((a, b) => a.rank - b.rank); middlewareList.forEach((x) => { if (x.func) { app.use(x.func); } else { x.apply(); } }); log.info({ table: convertToTable(middlewareList) }, `Loaded ${middlewareList.length} middlewares`); } exports.applyMiddlewares = applyMiddlewares; async function loadMiddlewares(appRootPath) { let middlewares = await utilities_1.exportModules(__dirname); const appMiddlewarePath = path_1.default.join(appRootPath, "middlewares"); if (fs_1.default.existsSync(appMiddlewarePath)) { middlewares = { ...middlewares, ...await utilities_1.exportModules(appMiddlewarePath), }; } return middlewares; } exports.loadMiddlewares = loadMiddlewares; //# sourceMappingURL=index.js.map