@restmatic/server
Version:
The core Pomegranate plugins for RestMatic
73 lines • 2.79 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
/**
* @file BundledMiddleware
* @author Jim Bulkowski <jim.b@paperelectron.com>
* @project server
* @license MIT {@link http://opensource.org/licenses/MIT}
*/
const plugin_tools_1 = require("@pomegranate/plugin-tools");
const url_1 = require("url");
const body_parser_1 = __importDefault(require("body-parser"));
const morgan_1 = __importDefault(require("morgan"));
const compression_1 = __importDefault(require("compression"));
const response_time_1 = __importDefault(require("response-time"));
const _500_1 = require("./middleware/ErrorMiddleware/500");
const _404_1 = require("./middleware/ErrorMiddleware/404");
//@ts-ignore
const logCommon = morgan_1.default.compile(morgan_1.default.common);
function findSkippedLogging(skipPaths) {
let skipfn = function (req, res) {
let pathname = url_1.parse(req.originalUrl).pathname;
return skipPaths.reduce(function (oldVal, newVal) {
if (newVal === pathname)
return true;
return oldVal;
}, false);
};
return {
skip: skipPaths && skipPaths.length >= 1 ? skipfn : false
};
}
exports.BundledMiddleware = plugin_tools_1.CreatePlugin('merge')
.configuration({
name: 'BundledMiddleware',
injectableParam: 'Middleware',
injectableScope: 'namespace',
depends: ['@restmatic/ExpressConfiguration']
})
.variables({
skipLogging: [
'/health'
]
})
.hooks({
load: function (Injector, PluginVariables, PluginLogger) {
return {
404: _404_1.fourOhfour,
500: _500_1.fivehundred,
jsonBody: body_parser_1.default.json(),
urlBody: body_parser_1.default.urlencoded({ extended: true }),
compression: compression_1.default(),
responseTime: response_time_1.default(),
//@ts-ignore
logger: morgan_1.default((t, req, res) => {
var resObj = {
'remote-addr': t['remote-addr'](req, res),
'date': t['date'](req, res),
'method': t['method'](req, res),
'url': t['url'](req, res),
'status': t['status'](req, res),
'content-length': res['content-length'],
'response-time': t['response-time'](req, res) + 'ms'
};
//@ts-ignore
PluginLogger.log(logCommon(morgan_1.default, req, res));
}, findSkippedLogging(PluginVariables.skipLogging))
};
}
});
//# sourceMappingURL=BundledMiddleware.js.map