UNPKG

express-inject-middleware

Version:

Inject stack of middlewares into given routes or middlewares.

39 lines 1.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var layer = require("express/lib/router/layer"); function distinctMiddlewaresByReference(middlewares) { var distinct = []; middlewares.forEach(function (middleware) { if (!distinct.some(function (dm) { return dm === middleware; })) { distinct.push(middleware); } }); return distinct; } function injectMiddlewaresRecursive(middleware, injectLayers, appCount) { var stack = middleware.stack || (middleware._router && middleware._router.stack); stack.forEach(function (layer, index) { var _a; if (layer.route) { if (!(middleware.name === 'app' && index < stack.length - appCount)) { (_a = layer.route.stack).unshift.apply(_a, injectLayers); } } else if (layer.name === 'router' || layer.name === 'bound dispatch') { injectMiddlewaresRecursive(layer.handle, injectLayers, appCount); } }); } function injectMiddleware(injectedMiddlewares, groupingMiddlewares) { var distinctMiddlewares = distinctMiddlewaresByReference(groupingMiddlewares); var injectLayers = injectedMiddlewares.map(function (i) { return new layer('', {}, i); }); var appCount = groupingMiddlewares.filter(function (m) { return m.name === 'app'; }).length; distinctMiddlewares.forEach(function (middleware) { injectMiddlewaresRecursive(middleware, injectLayers, appCount); }); return (function (req, res, next) { return next(); }); } exports.injectMiddleware = injectMiddleware; //# sourceMappingURL=index.js.map