UNPKG

@restmatic/server

Version:

The core Pomegranate plugins for RestMatic

73 lines 2.79 kB
"use strict"; 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