connect-chain
Version:
Connect-Chain composes a connect middleware from a chain of middlewares to be called in series.
27 lines (24 loc) • 668 B
JavaScript
module.exports = function () {
// Empty chain
if (arguments.length < 1)
return function (req, res, next) {
next();
};
var middlewares = Array.prototype.slice.call(arguments, 0);
return function(req, res, next) {
function createNext(middleware, i) {
return function(err) {
if (err) return next(err);
var nextIndex = i + 1,
nextMiddleware = middlewares[nextIndex] ? createNext(middlewares[nextIndex], nextIndex) : next;
try {
middleware(req, res, nextMiddleware);
}
catch (e) {
next(e);
}
};
}
return createNext(middlewares[0], 0)();
};
};