@lskjs/server
Version:
LSK server.
241 lines (191 loc) • 23.2 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.AsyncRouter = AsyncRouter;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var express = require('express');
var consolevoid = {
log: function log() {}
}; // var consolevoid = console
var exp = {}; // #endregion
// #region Types and Constants
var DEFAULT_SENDER = function DEFAULT_SENDER(req, res, val) {
res.send(val);
},
SHORTCUTS_METHODS = ['all', 'get', 'post', 'put', 'delete', 'patch', 'options', 'head']; // #endregion
// #region Public
function AsyncRouter(options) {
var sender = getSender(options),
innerRouter = express.Router(options),
asyncRouter = function asyncRouter() {
return innerRouter.apply(this, arguments);
};
asyncRouter.__asyncRouter = true;
asyncRouter.useRouter = function () {
var r = express.Router();
r.use.apply(r, arguments);
this.use(r);
return this;
};
wrapAllMatchers(asyncRouter, sender, innerRouter);
asyncRouter.param = function param() {
if (typeof arguments[1] === 'function' && arguments[1].length === 3) {
innerRouter.param(arguments[0], wrapParamHandler(arguments[1]));
return this;
}
innerRouter.param.apply(innerRouter, arguments);
return this;
};
asyncRouter.route = function route(path) {
var r = innerRouter.route(path);
wrapAllMatchers(r, sender);
return r;
};
asyncRouter.use = function use() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i - 0] = arguments[_i]; // if (arguments[_i] && arguments[_i].__asyncRouter) {
// return this.useRouter.apply(this, arguments);
// }
}
innerRouter.use.apply(innerRouter, (0, _toConsumableArray2["default"])(args.map(function (arg) {
return typeof arg === 'function' && !arg.__asyncRouter ? wrapHandlerOrErrorHandler(arg) : arg;
})));
return this;
};
return asyncRouter;
}
exp.AsyncRouter = AsyncRouter;
function create(options) {
return AsyncRouter(options);
}
exp.create = create; // #endregion
// #region Private Methods
function getSender(options) {
if (!options) {
return DEFAULT_SENDER;
}
var send = options.send,
sender = options.sender;
delete options.send;
delete options.sender;
if (send !== false) {
return sender || DEFAULT_SENDER;
}
}
function wrapAllMatchers(route, sender, router) {
consolevoid.log('wrapAllMatchers');
router = router || route;
SHORTCUTS_METHODS.forEach(function (method) {
route[method] = wrapMatcher(router, router[method], sender);
});
}
function wrapMatcher(router, routerMatcher, sender) {
consolevoid.log('wrapMatcher');
var _this = this;
return function (name) {
consolevoid.log('@wrapMatcher');
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
var last = args.length - 1,
mappedArgs = args.map(function (a, i) {
return i === last ? wrapHandler(a, sender) : wrapHandlerOrErrorHandler(a);
});
routerMatcher.apply(router, [name].concat(mappedArgs));
return _this;
};
}
function wrapHandler(handler, sender) {
consolevoid.log('wrapHandler');
return function (req, res, next) {
consolevoid.log('@wrapHandler');
try {
next = once(next);
toCallback(handler.call(this, req, res, next), next, req, res, function (result) {
if (sender && !res.headersSent) {
return sender(req, res, result);
}
});
} catch (err) {
next(err);
}
};
}
function wrapParamHandler(handler) {
consolevoid.log('wrapParamHandler');
return function (req, res, next, param) {
consolevoid.log('@wrapParamHandler');
try {
next = once(next);
toCallback(handler.call(this, req, res, param), next, req, res);
} catch (err) {
next(err);
}
};
}
function wrapHandlerOrErrorHandler(handler) {
consolevoid.log('wrapHandlerOrErrorHandler');
if (handler.length === 4) {
return function (err, req, res, next) {
consolevoid.log('@wrapHandlerOrErrorHandler 4');
try {
next = once(next);
toCallback(handler.call(this, err, req, res, next), next, req, res);
} catch (err) {
next(err);
}
};
}
return function (req, res, next) {
consolevoid.log('@wrapHandlerOrErrorHandler !=4');
try {
next = once(next);
toCallback(handler.call(this, req, res, next), next, req, res, handler.length === 3);
} catch (err) {
next(err);
}
};
}
function toCallback(thenable, next, req, res, end) {
consolevoid.log('toCallback');
if (!thenable || typeof thenable.then !== 'function') {
consolevoid.log('tc 1', thenable);
thenable = Promise.resolve(thenable);
}
if (typeof end === 'function') {
consolevoid.log('tc 2');
thenable = thenable.then(end);
}
thenable.then(function () {
consolevoid.log('tc 3 = !!next , !end , !res.headersSent', !!next, !end, !res.headersSent); // consolevoid.log(end);
// next()
if (next && !end && !res.headersSent) {
next();
}
}, function (err) {
consolevoid.log('tc 4');
if (typeof err === 'string') {
err = new Error(err);
}
next(err);
});
}
function once(fn) {
consolevoid.log('once');
var called = false;
return function () {
consolevoid.log('@once');
if (called) {
return;
}
called = true;
fn.apply(this, arguments);
};
} // export default { AsyncRouter };
// module.exports = exp;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Bc3luY1JvdXRlci9leHByZXNzLWFzeW5jLXJvdXRlci5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImNvbnNvbGV2b2lkIiwibG9nIiwiZXhwIiwiREVGQVVMVF9TRU5ERVIiLCJyZXEiLCJyZXMiLCJ2YWwiLCJzZW5kIiwiU0hPUlRDVVRTX01FVEhPRFMiLCJBc3luY1JvdXRlciIsIm9wdGlvbnMiLCJzZW5kZXIiLCJnZXRTZW5kZXIiLCJpbm5lclJvdXRlciIsIlJvdXRlciIsImFzeW5jUm91dGVyIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJfX2FzeW5jUm91dGVyIiwidXNlUm91dGVyIiwiciIsInVzZSIsIndyYXBBbGxNYXRjaGVycyIsInBhcmFtIiwibGVuZ3RoIiwid3JhcFBhcmFtSGFuZGxlciIsInJvdXRlIiwicGF0aCIsImFyZ3MiLCJfaSIsIm1hcCIsImFyZyIsIndyYXBIYW5kbGVyT3JFcnJvckhhbmRsZXIiLCJjcmVhdGUiLCJyb3V0ZXIiLCJmb3JFYWNoIiwibWV0aG9kIiwid3JhcE1hdGNoZXIiLCJyb3V0ZXJNYXRjaGVyIiwiX3RoaXMiLCJuYW1lIiwibGFzdCIsIm1hcHBlZEFyZ3MiLCJhIiwiaSIsIndyYXBIYW5kbGVyIiwiY29uY2F0IiwiaGFuZGxlciIsIm5leHQiLCJvbmNlIiwidG9DYWxsYmFjayIsImNhbGwiLCJyZXN1bHQiLCJoZWFkZXJzU2VudCIsImVyciIsInRoZW5hYmxlIiwiZW5kIiwidGhlbiIsIlByb21pc2UiLCJyZXNvbHZlIiwiRXJyb3IiLCJmbiIsImNhbGxlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxJQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUVBLElBQU1DLFdBQVcsR0FBRztBQUFFQyxFQUFBQSxHQUFGLGlCQUFRLENBQUU7QUFBVixDQUFwQixDLENBQ0E7O0FBQ0EsSUFBTUMsR0FBRyxHQUFHLEVBQVosQyxDQUNBO0FBQ0E7O0FB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QUosQ0FBVU4sR0FBVixDQUFOO0FBQ0Q7O0FBQ0ROLElBQUFBLElBQUksQ0FBQ00sR0FBRCxDQUFKO0FBQ0QsR0FiRDtBQWNEOztBQUNELFNBQVNMLElBQVQsQ0FBY1ksRUFBZCxFQUFrQjtBQUNoQjdELEVBQUFBLFdBQVcsQ0FBQ0MsR0FBWixDQUFnQixNQUFoQjtBQUNBLE1BQUk2RCxNQUFNLEdBQUcsS0FBYjtBQUNBLFNBQU8sWUFBWTtBQUNqQjlELElBQUFBLFdBQVcsQ0FBQ0MsR0FBWixDQUFnQixPQUFoQjs7QUFDQSxRQUFJNkQsTUFBSixFQUFZO0FBQ1Y7QUFDRDs7QUFDREEsSUFBQUEsTUFBTSxHQUFHLElBQVQ7QUFDQUQsSUFBQUEsRUFBRSxDQUFDN0MsS0FBSCxDQUFTLElBQVQsRUFBZUMsU0FBZjtBQUNELEdBUEQ7QUFRRCxDLENBRUQ7QUFDQSIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKCdleHByZXNzJyk7XG5cbmNvbnN0IGNvbnNvbGV2b2lkID0geyBsb2coKSB7fSB9O1xuLy8gdmFyIGNvbnNvbGV2b2lkID0gY29uc29sZVxuY29uc3QgZXhwID0ge307XG4vLyAjZW5kcmVnaW9uXG4vLyAjcmVnaW9uIFR5cGVzIGFuZCBDb25zdGFudHNcbmxldCBERUZBVUxUX1NFTkRFUiA9IGZ1bmN0aW9uIChyZXEsIHJlcywgdmFsKSB7IHJlcy5zZW5kKHZhbCk7IH0sXG4gIFNIT1JUQ1VUU19NRVRIT0RTID0gWydhbGwnLCAnZ2V0JywgJ3Bvc3QnLCAncHV0JywgJ2RlbGV0ZScsICdwYXRjaCcsICdvcHRpb25zJywgJ2hlYWQnXTtcbi8vICNlbmRyZWdpb25cbi8vICNyZWdpb24gUHVibGljXG5mdW5jdGlvbiBBc3luY1JvdXRlcihvcHRpb25zKSB7XG4gIGxldCBzZW5kZXIgPSBnZXRTZW5kZXIob3B0aW9ucyksXG4gICAgaW5uZXJSb3V0ZXIgPSBleHByZXNzLlJvdXRlcihvcHRpb25zKSxcbiAgICBhc3luY1JvdXRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBpbm5lclJvdXRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIGFzeW5jUm91dGVyLl9fYXN5bmNSb3V0ZXIgPSB0cnVlO1xuICBhc3luY1JvdXRlci51c2VSb3V0ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgciA9IGV4cHJlc3MuUm91dGVyKCk7XG4gICAgci51c2UoLi4uYXJndW1lbnRzKTtcbiAgICB0aGlzLnVzZShyKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgd3JhcEFsbE1hdGNoZXJzKGFzeW5jUm91dGVyLCBzZW5kZXIsIGlubmVyUm91dGVyKTtcbiAgYXN5bmNSb3V0ZXIucGFyYW0gPSBmdW5jdGlvbiBwYXJhbSgpIHtcbiAgICBpZiAodHlwZW9mIGFyZ3VtZW50c1sxXSA9PT0gJ2Z1bmN0aW9uJyAmJiBhcmd1bWVudHNbMV0ubGVuZ3RoID09PSAzKSB7XG4gICAgICBpbm5lclJvdXRlci5wYXJhbShhcmd1bWVudHNbMF0sIHdyYXBQYXJhbUhhbmRsZXIoYXJndW1lbnRzWzFdKSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgaW5uZXJSb3V0ZXIucGFyYW0oLi4uYXJndW1lbnRzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgYXN5bmNSb3V0ZXIucm91dGUgPSBmdW5jdGlvbiByb3V0ZShwYXRoKSB7XG4gICAgY29uc3QgciA9IGlubmVyUm91dGVyLnJvdXRlKHBhdGgpO1xuICAgIHdyYXBBbGxNYXRjaGVycyhyLCBzZW5kZXIpO1xuICAgIHJldHVybiByO1xuICB9O1xuICBhc3luY1JvdXRlci51c2UgPSBmdW5jdGlvbiB1c2UoKSB7XG4gICAgY29uc3QgYXJncyA9IFtdO1xuICAgIGZvciAobGV0IF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICBhcmdzW19pIC0gMF0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgLy8gaWYgKGFyZ3VtZW50c1tfaV0gJiYgYXJndW1lbnRzW19pXS5fX2FzeW5jUm91dGVyKSB7XG4gICAgICAvLyAgIHJldHVybiB0aGlzLnVzZVJvdXRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgLy8gfVxuICAgIH1cblxuICAgIGlubmVyUm91dGVyLnVzZSguLi5hcmdzLm1hcCgoYXJnKSA9PiB7IHJldHVybiB0eXBlb2YgYXJnID09PSAnZnVuY3Rpb24nICYmICFhcmcuX19hc3luY1JvdXRlciA/IHdyYXBIYW5kbGVyT3JFcnJvckhhbmRsZXIoYXJnKSA6IGFyZzsgfSkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICByZXR1cm4gYXN5bmNSb3V0ZXI7XG59XG5leHAuQXN5bmNSb3V0ZXIgPSBBc3luY1JvdXRlcjtcbmZ1bmN0aW9uIGNyZWF0ZShvcHRpb25zKSB7XG4gIHJldHVybiBBc3luY1JvdXRlcihvcHRpb25zKTtcbn1cbmV4cC5jcmVhdGUgPSBjcmVhdGU7XG4vLyAjZW5kcmVnaW9uXG4vLyAjcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xuZnVuY3Rpb24gZ2V0U2VuZGVyKG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgcmV0dXJuIERFRkFVTFRfU0VOREVSO1xuICB9XG4gIGxldCBzZW5kID0gb3B0aW9ucy5zZW5kLFxuICAgIHNlbmRlciA9IG9wdGlvbnMuc2VuZGVyO1xuICBkZWxldGUgb3B0aW9ucy5zZW5kO1xuICBkZWxldGUgb3B0aW9ucy5zZW5kZXI7XG4gIGlmIChzZW5kICE9PSBmYWxzZSkge1xuICAgIHJldHVybiBzZW5kZXIgfHwgREVGQVVMVF9TRU5ERVI7XG4gIH1cbn1cbmZ1bmN0aW9uIHdyYXBBbGxNYXRjaGVycyhyb3V0ZSwgc2VuZGVyLCByb3V0ZXIpIHtcbiAgY29uc29sZXZvaWQubG9nKCd3cmFwQWxsTWF0Y2hlcnMnKTtcblxuICByb3V0ZXIgPSByb3V0ZXIgfHwgcm91dGU7XG4gIFNIT1JUQ1VUU19NRVRIT0RTLmZvckVhY2goKG1ldGhvZCkgPT4ge1xuICAgIHJvdXRlW21ldGhvZF0gPSB3cmFwTWF0Y2hlcihyb3V0ZXIsIHJvdXRlclttZXRob2RdLCBzZW5kZXIpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHdyYXBNYXRjaGVyKHJvdXRlciwgcm91dGVyTWF0Y2hlciwgc2VuZGVyKSB7XG4gIGNvbnNvbGV2b2lkLmxvZygnd3JhcE1hdGNoZXInKTtcblxuICBjb25zdCBfdGhpcyA9IHRoaXM7XG4gIHJldHVybiBmdW5jdGlvbiAobmFtZSkge1xuICAgIGNvbnNvbGV2b2lkLmxvZygnQHdyYXBNYXRjaGVyJyk7XG4gICAgY29uc3QgYXJncyA9IFtdO1xuICAgIGZvciAobGV0IF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICBhcmdzW19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICBsZXQgbGFzdCA9IGFyZ3MubGVuZ3RoIC0gMSxcbiAgICAgIG1hcHBlZEFyZ3MgPSBhcmdzLm1hcCgoYSwgaSkgPT4geyByZXR1cm4gaSA9PT0gbGFzdCA/IHdyYXBIYW5kbGVyKGEsIHNlbmRlcikgOiB3cmFwSGFuZGxlck9yRXJyb3JIYW5kbGVyKGEpOyB9KTtcbiAgICByb3V0ZXJNYXRjaGVyLmFwcGx5KHJvdXRlciwgW25hbWVdLmNvbmNhdChtYXBwZWRBcmdzKSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9O1xufVxuZnVuY3Rpb24gd3JhcEhhbmRsZXIoaGFuZGxlciwgc2VuZGVyKSB7XG4gIGNvbnNvbGV2b2lkLmxvZygnd3JhcEhhbmRsZXInKTtcblxuICByZXR1cm4gZnVuY3Rpb24gKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc29sZXZvaWQubG9nKCdAd3JhcEhhbmRsZXInKTtcblxuICAgIHRyeSB7XG4gICAgICBuZXh0ID0gb25jZShuZXh0KTtcbiAgICAgIHRvQ2FsbGJhY2soaGFuZGxlci5jYWxsKHRoaXMsIHJlcSwgcmVzLCBuZXh0KSwgbmV4dCwgcmVxLCByZXMsIChyZXN1bHQpID0+IHtcbiAgICAgICAgaWYgKHNlbmRlciAmJiAhcmVzLmhlYWRlcnNTZW50KSB7XG4gICAgICAgICAgcmV0dXJuIHNlbmRlcihyZXEsIHJlcywgcmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBuZXh0KGVycik7XG4gICAgfVxuICB9O1xufVxuZnVuY3Rpb24gd3JhcFBhcmFtSGFuZGxlcihoYW5kbGVyKSB7XG4gIGNvbnNvbGV2b2lkLmxvZygnd3JhcFBhcmFtSGFuZGxlcicpO1xuXG4gIHJldHVybiBmdW5jdGlvbiAocmVxLCByZXMsIG5leHQsIHBhcmFtKSB7XG4gICAgY29uc29sZXZvaWQubG9nKCdAd3JhcFBhcmFtSGFuZGxlcicpO1xuICAgIHRyeSB7XG4gICAgICBuZXh0ID0gb25jZShuZXh0KTtcbiAgICAgIHRvQ2FsbGJhY2soaGFuZGxlci5jYWxsKHRoaXMsIHJlcSwgcmVzLCBwYXJhbSksIG5leHQsIHJlcSwgcmVzKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIG5leHQoZXJyKTtcbiAgICB9XG4gIH07XG59XG5mdW5jdGlvbiB3cmFwSGFuZGxlck9yRXJyb3JIYW5kbGVyKGhhbmRsZXIpIHtcbiAgY29uc29sZXZvaWQubG9nKCd3cmFwSGFuZGxlck9yRXJyb3JIYW5kbGVyJyk7XG4gIGlmIChoYW5kbGVyLmxlbmd0aCA9PT0gNCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoZXJyLCByZXEsIHJlcywgbmV4dCkge1xuICAgICAgY29uc29sZXZvaWQubG9nKCdAd3JhcEhhbmRsZXJPckVycm9ySGFuZGxlciA0Jyk7XG4gICAgICB0cnkge1xuICAgICAgICBuZXh0ID0gb25jZShuZXh0KTtcbiAgICAgICAgdG9DYWxsYmFjayhoYW5kbGVyLmNhbGwodGhpcywgZXJyLCByZXEsIHJlcywgbmV4dCksIG5leHQsIHJlcSwgcmVzKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBuZXh0KGVycik7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc29sZXZvaWQubG9nKCdAd3JhcEhhbmRsZXJPckVycm9ySGFuZGxlciAhPTQnKTtcblxuICAgIHRyeSB7XG4gICAgICBuZXh0ID0gb25jZShuZXh0KTtcbiAgICAgIHRvQ2FsbGJhY2soaGFuZGxlci5jYWxsKHRoaXMsIHJlcSwgcmVzLCBuZXh0KSwgbmV4dCwgcmVxLCByZXMsIGhhbmRsZXIubGVuZ3RoID09PSAzKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIG5leHQoZXJyKTtcbiAgICB9XG4gIH07XG59XG5mdW5jdGlvbiB0b0NhbGxiYWNrKHRoZW5hYmxlLCBuZXh0LCByZXEsIHJlcywgZW5kKSB7XG4gIGNvbnNvbGV2b2lkLmxvZygndG9DYWxsYmFjaycpO1xuICBpZiAoIXRoZW5hYmxlIHx8IHR5cGVvZiB0aGVuYWJsZS50aGVuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc29sZXZvaWQubG9nKCd0YyAxJywgdGhlbmFibGUpO1xuXG4gICAgdGhlbmFibGUgPSBQcm9taXNlLnJlc29sdmUodGhlbmFibGUpO1xuICB9XG4gIGlmICh0eXBlb2YgZW5kID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc29sZXZvaWQubG9nKCd0YyAyJyk7XG5cbiAgICB0aGVuYWJsZSA9IHRoZW5hYmxlLnRoZW4oZW5kKTtcbiAgfVxuICB0aGVuYWJsZS50aGVuKCgpID0+IHtcbiAgICBjb25zb2xldm9pZC5sb2coJ3RjIDMgPSAhIW5leHQgLCAhZW5kICwgIXJlcy5oZWFkZXJzU2VudCcsICEhbmV4dCwgIWVuZCwgIXJlcy5oZWFkZXJzU2VudCk7XG4gICAgLy8gY29uc29sZXZvaWQubG9nKGVuZCk7XG4gICAgLy8gbmV4dCgpXG4gICAgaWYgKG5leHQgJiYgIWVuZCAmJiAhcmVzLmhlYWRlcnNTZW50KSB7XG4gICAgICBuZXh0KCk7XG4gICAgfVxuICB9LCAoZXJyKSA9PiB7XG4gICAgY29uc29sZXZvaWQubG9nKCd0YyA0Jyk7XG4gICAgaWYgKHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlcnIgPSBuZXcgRXJyb3IoZXJyKTtcbiAgICB9XG4gICAgbmV4dChlcnIpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIG9uY2UoZm4pIHtcbiAgY29uc29sZXZvaWQubG9nKCdvbmNlJyk7XG4gIGxldCBjYWxsZWQgPSBmYWxzZTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zb2xldm9pZC5sb2coJ0BvbmNlJyk7XG4gICAgaWYgKGNhbGxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjYWxsZWQgPSB0cnVlO1xuICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH07XG59XG5cbi8vIGV4cG9ydCBkZWZhdWx0IHsgQXN5bmNSb3V0ZXIgfTtcbi8vIG1vZHVsZS5leHBvcnRzID0gZXhwO1xuZXhwb3J0IHsgQXN5bmNSb3V0ZXIgfTtcbiJdfQ==
//# sourceMappingURL=express-async-router.js.map