combine-middlewares
Version:
combine middlewares to one chain, supports async-await and recursive.
32 lines (26 loc) • 2.39 kB
JavaScript
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
module.exports = function () {
for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {
middlewares[_key] = arguments[_key];
}
return function () {
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
var chain = middlewares.concat(function () {
for (var _len3 = arguments.length, _args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
_args[_key3] = arguments[_key3];
}
return _args.slice(0, args.length);
});
var next = function next() {
for (var _len4 = arguments.length, _args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
_args[_key4] = arguments[_key4];
}
return chain.shift().apply(undefined, _toConsumableArray(_args.length > 0 ? _args : args).concat([next]));
};
return next();
};
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwibWlkZGxld2FyZXMiLCJhcmdzIiwiY2hhaW4iLCJjb25jYXQiLCJfYXJncyIsInNsaWNlIiwibGVuZ3RoIiwibmV4dCIsInNoaWZ0Il0sIm1hcHBpbmdzIjoiOzs7O0FBQUFBLE9BQU9DLE9BQVAsR0FBaUI7QUFBQSxvQ0FBSUMsV0FBSjtBQUFJQSxlQUFKO0FBQUE7O0FBQUEsU0FBb0IsWUFBYTtBQUFBLHVDQUFUQyxJQUFTO0FBQVRBLFVBQVM7QUFBQTs7QUFDaEQsUUFBTUMsUUFBUUYsWUFBWUcsTUFBWixDQUFtQjtBQUFBLHlDQUFJQyxLQUFKO0FBQUlBLGFBQUo7QUFBQTs7QUFBQSxhQUFjQSxNQUFNQyxLQUFOLENBQVksQ0FBWixFQUFlSixLQUFLSyxNQUFwQixDQUFkO0FBQUEsS0FBbkIsQ0FBZDtBQUNBLFFBQU1DLE9BQU8sU0FBUEEsSUFBTztBQUFBLHlDQUFJSCxLQUFKO0FBQUlBLGFBQUo7QUFBQTs7QUFBQSxhQUFjRixNQUFNTSxLQUFOLHVDQUFrQkosTUFBTUUsTUFBTixHQUFlLENBQWYsR0FBbUJGLEtBQW5CLEdBQTJCSCxJQUE3QyxVQUFvRE0sSUFBcEQsR0FBZDtBQUFBLEtBQWI7QUFDQSxXQUFPQSxNQUFQO0FBQ0QsR0FKZ0I7QUFBQSxDQUFqQiIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gKC4uLm1pZGRsZXdhcmVzKSA9PiAoLi4uYXJncykgPT4ge1xuICBjb25zdCBjaGFpbiA9IG1pZGRsZXdhcmVzLmNvbmNhdCgoLi4uX2FyZ3MpID0+IF9hcmdzLnNsaWNlKDAsIGFyZ3MubGVuZ3RoKSlcbiAgY29uc3QgbmV4dCA9ICguLi5fYXJncykgPT4gY2hhaW4uc2hpZnQoKSguLi4oX2FyZ3MubGVuZ3RoID4gMCA/IF9hcmdzIDogYXJncyksIG5leHQpXG4gIHJldHVybiBuZXh0KClcbn1cbiJdfQ==
;