jsev
Version:
Environment for building Web API's.
59 lines • 1.98 kB
JavaScript
;
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