json-routing-for-osseus
Version:
JSON configurable MVC routing for express 4
61 lines • 2.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const path = require("path");
const route_validator_1 = require("./route-validator");
class RouteMiddleware {
constructor(options, osseus) {
this.options = options;
this.app = osseus.server.app;
this.osseus = osseus;
}
get(middlewareDef = [], globalDef = [], hasJwt = false, validators, hasCors, uri) {
if (!Array.isArray(middlewareDef))
middlewareDef = [middlewareDef];
if (!Array.isArray(globalDef))
globalDef = [globalDef];
const mdlw = [...globalDef, ...middlewareDef];
let mdlwFnc = this.parse(mdlw);
if (hasJwt && this.options.jwt) {
try {
const jwt = require("express-jwt");
mdlwFnc.unshift(jwt(this.options.jwt));
}
catch (e) {
console.error("\x1b[31m");
console.error("************************************ WARNING!!!! ******************************************");
console.error("* *");
console.error("* JWT ROUTE NOT LOADED: PLEASE ADD express-jwt module: npm install --save express-jwt *");
console.error("* *");
console.error("*******************************************************************************************");
console.error("\x1b[0m");
}
}
if (validators.body || validators.params || validators.query) {
const validatorMdw = route_validator_1.RouteValidator.get(validators);
if (hasJwt && this.options.jwt) {
mdlwFnc.splice(1, 0, validatorMdw);
}
else {
mdlwFnc.unshift(validatorMdw);
}
}
return mdlwFnc;
}
parse(middlewareDef) {
let result = [];
middlewareDef.forEach((mdlw) => {
let parts = mdlw.split(":");
let basePath = this.options.policyPath;
if (this.startWith(parts[0], "."))
basePath = this.options.processdir;
let middleware = require(path.join(basePath, parts[0]))(this.osseus);
result.push(middleware[parts[1]]);
});
return result;
}
startWith(value, char) {
return (value.substring(0, 1) === char) ? true : false;
}
}
exports.RouteMiddleware = RouteMiddleware;
//# sourceMappingURL=route-middleware.js.map