@lskjs/server
Version:
LSK server.
175 lines (130 loc) • 14.8 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getRoutesTree = getRoutesTree;
exports["default"] = _default;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _isPlainObject = _interopRequireDefault(require("lodash/isPlainObject"));
var _isFunction = _interopRequireDefault(require("lodash/isFunction"));
var _forEach = _interopRequireDefault(require("lodash/forEach"));
var _get = _interopRequireDefault(require("lodash/get"));
var _mapValues = _interopRequireDefault(require("lodash/mapValues"));
var _isClass = _interopRequireDefault(require("@lskjs/utils/isClass"));
var _express = _interopRequireDefault(require("express"));
var _AsyncRouter = _interopRequireDefault(require("../AsyncRouter"));
var DEBUG = false;
function getRoutesTree(ctx) {
var iterate = function iterate(item) {
if (!item) return null;
if ((0, _isClass["default"])(item)) {
var api = new item(ctx); // eslint-disable-line new-cap
return api && (0, _isFunction["default"])(api.getRoutes) && api.getRoutes();
}
if (!(0, _isPlainObject["default"])(item)) {
if (item.getRoutes) {
return item.getRoutes();
}
if (item.routes) {
return item.routes;
}
return item;
}
return (0, _mapValues["default"])(item, iterate);
};
if (ctx && ctx.getRoutes && (0, _isFunction["default"])(ctx.getRoutes)) {
return iterate(ctx.getRoutes());
}
return {};
}
function getMethodAndPath() {
var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var val = arguments.length > 1 ? arguments[1] : undefined;
var method;
if ((0, _isPlainObject["default"])(val)) method = 'use';
var chunk = key.trim().split(' ');
var path;
if (chunk.length >= 2) {
var _chunk = (0, _slicedToArray2["default"])(chunk, 2);
method = _chunk[0];
path = _chunk[1];
} else {
var _chunk2 = (0, _slicedToArray2["default"])(chunk, 1);
path = _chunk2[0];
}
if (!method) method = 'all';
return {
path: path,
method: method.toLowerCase()
};
}
function iterateRoute(data) {
var info = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
path: '/'
};
if (DEBUG) console.warn('iterateRoute', info); // eslint-disable-line no-console
if ((0, _isPlainObject["default"])(data)) {
var asyncRouter = (0, _AsyncRouter["default"])();
(0, _forEach["default"])(data, function (val, key) {
var _getMethodAndPath = getMethodAndPath(key, val),
path = _getMethodAndPath.path,
method = _getMethodAndPath.method;
var route = iterateRoute(val, {
method: method,
path: path,
parent: info
}); // , { path: params.path + path, i: params.i + 1 });
asyncRouter[method](path, route);
});
return asyncRouter;
}
if ((0, _isFunction["default"])(data)) {
return data;
}
if (data && data.getRoutes && (0, _isFunction["default"])(data.getRoutes)) {
return data.getRoutes();
}
if (data && data.api && (0, _isFunction["default"])(data.api)) {
return data.api();
}
if (Array.isArray(data)) {
var middlewares = data.slice(0, -1);
var _data$slice = data.slice(-1),
_data$slice2 = (0, _slicedToArray2["default"])(_data$slice, 1),
routes = _data$slice2[0];
var subRouter = iterateRoute(routes, {
elem: data.length - 1,
parent: info
}); // , { path: params.path + path, i: params.i + 1 });
var router = _express["default"].Router();
router.use.apply(router, (0, _toConsumableArray2["default"])(middlewares).concat([subRouter]));
return router;
}
if (DEBUG) console.warn('iterateRoute NOT FOUND CASE', info); // eslint-disable-line no-console
return function () {};
}
function _default() {
if (this.Api) {
this.rootApi = new this.Api({
app: this
});
var indexApi = (0, _get["default"])(this, 'rootApi.indexApi');
if (indexApi && indexApi.getRoutesList) {
this.log.trace('routes', indexApi.getRoutesList());
}
} else {
// eslint-disable-next-line no-unused-expressions
this.log ? this.log.warn('!app.Api') : console.warn('!app.Api'); // eslint-disable-line no-console
}
this.routes = getRoutesTree(this.rootApi);
if (DEBUG) console.warn('this.routes', this.routes); // eslint-disable-line no-console
var router = iterateRoute(this.routes);
var asyncRouter = (0, _AsyncRouter["default"])();
asyncRouter.use('/', router);
this.express.use('/', asyncRouter);
return this.express;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXRob2RzL3J1blJvdXRlcy5qcyJdLCJuYW1lcyI6WyJERUJVRyIsImdldFJvdXRlc1RyZWUiLCJjdHgiLCJpdGVyYXRlIiwiaXRlbSIsImFwaSIsImdldFJvdXRlcyIsInJvdXRlcyIsImdldE1ldGhvZEFuZFBhdGgiLCJrZXkiLCJ2YWwiLCJtZXRob2QiLCJjaHVuayIsInRyaW0iLCJzcGxpdCIsInBhdGgiLCJsZW5ndGgiLCJ0b0xvd2VyQ2FzZSIsIml0ZXJhdGVSb3V0ZSIsImRhdGEiLCJpbmZvIiwiY29uc29sZSIsIndhcm4iLCJhc3luY1JvdXRlciIsInJvdXRlIiwicGFyZW50IiwiQXJyYXkiLCJpc0FycmF5IiwibWlkZGxld2FyZXMiLCJzbGljZSIsInN1YlJvdXRlciIsImVsZW0iLCJyb3V0ZXIiLCJleHByZXNzIiwiUm91dGVyIiwidXNlIiwiQXBpIiwicm9vdEFwaSIsImFwcCIsImluZGV4QXBpIiwiZ2V0Um91dGVzTGlzdCIsImxvZyIsInRyYWNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLElBQU1BLEtBQUssR0FBRyxLQUFkOztBQUVPLFNBQVNDLGFBQVQsQ0FBdUJDLEdBQXZCLEVBQTRCO0FBQ2pDLE1BQU1DLE9BQU8sR0FBRyxTQUFWQSxPQUFVLENBQUNDLElBQUQsRUFBVTtBQUN4QixRQUFJLENBQUNBLElBQUwsRUFBVyxPQUFPLElBQVA7O0FBQ1gsUUFBSSx5QkFBUUEsSUFBUixDQUFKLEVBQW1CO0FBQ2pCLFVBQU1DLEdBQUcsR0FBRyxJQUFJRCxJQUFKLENBQVNGLEdBQVQsQ0FBWixDQURpQixDQUNVOztBQUMzQixhQUFPRyxHQUFHLElBQUksNEJBQVdBLEdBQUcsQ0FBQ0MsU0FBZixDQUFQLElBQW9DRCxHQUFHLENBQUNDLFNBQUosRUFBM0M7QUFDRDs7QUFDRCxRQUFJLENBQUMsK0JBQWNGLElBQWQsQ0FBTCxFQUEwQjtBQUN4QixVQUFJQSxJQUFJLENBQUNFLFNBQVQsRUFBb0I7QUFDbEIsZUFBT0YsSUFBSSxDQUFDRSxTQUFMLEVBQVA7QUFDRDs7QUFDRCxVQUFJRixJQUFJLENBQUNHLE1BQVQsRUFBaUI7QUFDZixlQUFPSCxJQUFJLENBQUNHLE1BQVo7QUFDRDs7QUFDRCxhQUFPSCxJQUFQO0FBQ0Q7O0FBQ0QsV0FBTywyQkFBVUEsSUFBVixFQUFnQkQsT0FBaEIsQ0FBUDtBQUNELEdBaEJEOztBQWlCQSxNQUFJRCxHQUFHLElBQUlBLEdBQUcsQ0FBQ0ksU0FBWCxJQUF3Qiw0QkFBV0osR0FBRyxDQUFDSSxTQUFmLENBQTVCLEVBQXVEO0FBQ3JELFdBQU9ILE9BQU8sQ0FBQ0QsR0FBRyxDQUFDSSxTQUFKLEVBQUQsQ0FBZDtBQUNEOztBQUNELFNBQU8sRUFBUDtBQUNEOztBQUVELFNBQVNFLGdCQUFULEdBQXlDO0FBQUEsTUFBZkMsR0FBZSx1RUFBVCxFQUFTO0FBQUEsTUFBTEMsR0FBSztBQUN2QyxNQUFJQyxNQUFKO0FBQ0EsTUFBSSwrQkFBY0QsR0FBZCxDQUFKLEVBQXdCQyxNQUFNLEdBQUcsS0FBVDtBQUN4QixNQUFNQyxLQUFLLEdBQUdILEdBQUcsQ0FBQ0ksSUFBSixHQUFXQyxLQUFYLENBQWlCLEdBQWpCLENBQWQ7QUFDQSxNQUFJQyxJQUFKOztBQUNBLE1BQUlILEtBQUssQ0FBQ0ksTUFBTixJQUFnQixDQUFwQixFQUF1QjtBQUFBLGlEQUNKSixLQURJOztBQUNwQkQsSUFBQUEsTUFEb0I7QUFDWkksSUFBQUEsSUFEWTtBQUV0QixHQUZELE1BRU87QUFBQSxrREFDSUgsS0FESjs7QUFDSkcsSUFBQUEsSUFESTtBQUVOOztBQUNELE1BQUksQ0FBQ0osTUFBTCxFQUFhQSxNQUFNLEdBQUcsS0FBVDtBQUNiLFNBQU87QUFDTEksSUFBQUEsSUFBSSxFQUFKQSxJQURLO0FBRUxKLElBQUFBLE1BQU0sRUFBRUEsTUFBTSxDQUFDTSxXQUFQO0FBRkgsR0FBUDtBQUlEOztBQUVELFNBQVNDLFlBQVQsQ0FBc0JDLElBQXRCLEVBQWtEO0FBQUEsTUFBdEJDLElBQXNCLHVFQUFmO0FBQUVMLElBQUFBLElBQUksRUFBRTtBQUFSLEdBQWU7QUFDaEQsTUFBSWYsS0FBSixFQUFXcUIsT0FBTyxDQUFDQyxJQUFSLENBQWEsY0FBYixFQUE2QkYsSUFBN0IsRUFEcUMsQ0FDRDs7QUFDL0MsTUFBSSwrQkFBY0QsSUFBZCxDQUFKLEVBQXlCO0FBQ3ZCLFFBQU1JLFdBQVcsR0FBRyw4QkFBcEI7QUFDQSw2QkFBUUosSUFBUixFQUFjLFVBQUNULEdBQUQsRUFBTUQsR0FBTixFQUFjO0FBQUEsOEJBQ0RELGdCQUFnQixDQUFDQyxHQUFELEVBQU1DLEdBQU4sQ0FEZjtBQUFBLFVBQ2xCSyxJQURrQixxQkFDbEJBLElBRGtCO0FBQUEsVUFDWkosTUFEWSxxQkFDWkEsTUFEWTs7QUFFMUIsVUFBTWEsS0FBSyxHQUFHTixZQUFZLENBQUNSLEdBQUQsRUFBTTtBQUFFQyxRQUFBQSxNQUFNLEVBQU5BLE1BQUY7QUFBVUksUUFBQUEsSUFBSSxFQUFKQSxJQUFWO0FBQWdCVSxRQUFBQSxNQUFNLEVBQUVMO0FBQXhCLE9BQU4sQ0FBMUIsQ0FGMEIsQ0FFdUM7O0FBQ2pFRyxNQUFBQSxXQUFXLENBQUNaLE1BQUQsQ0FBWCxDQUFvQkksSUFBcEIsRUFBMEJTLEtBQTFCO0FBQ0QsS0FKRDtBQUtBLFdBQU9ELFdBQVA7QUFDRDs7QUFDRCxNQUFJLDRCQUFXSixJQUFYLENBQUosRUFBc0I7QUFDcEIsV0FBT0EsSUFBUDtBQUNEOztBQUNELE1BQUlBLElBQUksSUFBSUEsSUFBSSxDQUFDYixTQUFiLElBQTBCLDRCQUFXYSxJQUFJLENBQUNiLFNBQWhCLENBQTlCLEVBQTBEO0FBQ3hELFdBQU9hLElBQUksQ0FBQ2IsU0FBTCxFQUFQO0FBQ0Q7O0FBQ0QsTUFBSWEsSUFBSSxJQUFJQSxJQUFJLENBQUNkLEdBQWIsSUFBb0IsNEJBQVdjLElBQUksQ0FBQ2QsR0FBaEIsQ0FBeEIsRUFBOEM7QUFDNUMsV0FBT2MsSUFBSSxDQUFDZCxHQUFMLEVBQVA7QUFDRDs7QUFDRCxNQUFJcUIsS0FBSyxDQUFDQyxPQUFOLENBQWNSLElBQWQsQ0FBSixFQUF5QjtBQUN2QixRQUFNUyxXQUFXLEdBQUdULElBQUksQ0FBQ1UsS0FBTCxDQUFXLENBQVgsRUFBYyxDQUFDLENBQWYsQ0FBcEI7O0FBRHVCLHNCQUVOVixJQUFJLENBQUNVLEtBQUwsQ0FBVyxDQUFDLENBQVosQ0FGTTtBQUFBO0FBQUEsUUFFaEJ0QixNQUZnQjs7QUFJdkIsUUFBTXVCLFNBQVMsR0FBR1osWUFBWSxDQUFDWCxNQUFELEVBQVM7QUFBRXdCLE1BQUFBLElBQUksRUFBRVosSUFBSSxDQUFDSCxNQUFMLEdBQWMsQ0FBdEI7QUFBeUJTLE1BQUFBLE1BQU0sRUFBRUw7QUFBakMsS0FBVCxDQUE5QixDQUp1QixDQUkwRDs7QUFDakYsUUFBTVksTUFBTSxHQUFHQyxvQkFBUUMsTUFBUixFQUFmOztBQUNBRixJQUFBQSxNQUFNLENBQUNHLEdBQVAsT0FBQUgsTUFBTSxzQ0FBUUosV0FBUixVQUFxQkUsU0FBckIsR0FBTjtBQUVBLFdBQU9FLE1BQVA7QUFDRDs7QUFFRCxNQUFJaEMsS0FBSixFQUFXcUIsT0FBTyxDQUFDQyxJQUFSLENBQWEsNkJBQWIsRUFBNENGLElBQTVDLEVBL0JxQyxDQStCYzs7QUFDOUQsU0FBTyxZQUFNLENBQUUsQ0FBZjtBQUNEOztBQUVjLG9CQUFZO0FBQ3pCLE1BQUksS0FBS2dCLEdBQVQsRUFBYztBQUNaLFNBQUtDLE9BQUwsR0FBZSxJQUFJLEtBQUtELEdBQVQsQ0FBYTtBQUFFRSxNQUFBQSxHQUFHLEVBQUU7QUFBUCxLQUFiLENBQWY7QUFDQSxRQUFNQyxRQUFRLEdBQUcscUJBQUksSUFBSixFQUFVLGtCQUFWLENBQWpCOztBQUNBLFFBQUlBLFFBQVEsSUFBSUEsUUFBUSxDQUFDQyxhQUF6QixFQUF3QztBQUN0QyxXQUFLQyxHQUFMLENBQVNDLEtBQVQsQ0FBZSxRQUFmLEVBQXlCSCxRQUFRLENBQUNDLGFBQVQsRUFBekI7QUFDRDtBQUNGLEdBTkQsTUFNTztBQUNMO0FBQ0EsU0FBS0MsR0FBTCxHQUFXLEtBQUtBLEdBQUwsQ0FBU25CLElBQVQsQ0FBYyxVQUFkLENBQVgsR0FBdUNELE9BQU8sQ0FBQ0MsSUFBUixDQUFhLFVBQWIsQ0FBdkMsQ0FGSyxDQUU0RDtBQUNsRTs7QUFDRCxPQUFLZixNQUFMLEdBQWNOLGFBQWEsQ0FBQyxLQUFLb0MsT0FBTixDQUEzQjtBQUNBLE1BQUlyQyxLQUFKLEVBQVdxQixPQUFPLENBQUNDLElBQVIsQ0FBYSxhQUFiLEVBQTRCLEtBQUtmLE1BQWpDLEVBWmMsQ0FZNEI7O0FBQ3JELE1BQU15QixNQUFNLEdBQUdkLFlBQVksQ0FBQyxLQUFLWCxNQUFOLENBQTNCO0FBQ0EsTUFBTWdCLFdBQVcsR0FBRyw4QkFBcEI7QUFDQUEsRUFBQUEsV0FBVyxDQUFDWSxHQUFaLENBQWdCLEdBQWhCLEVBQXFCSCxNQUFyQjtBQUNBLE9BQUtDLE9BQUwsQ0FBYUUsR0FBYixDQUFpQixHQUFqQixFQUFzQlosV0FBdEI7QUFDQSxTQUFPLEtBQUtVLE9BQVo7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc1BsYWluT2JqZWN0IGZyb20gJ2xvZGFzaC9pc1BsYWluT2JqZWN0JztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC9pc0Z1bmN0aW9uJztcbmltcG9ydCBmb3JFYWNoIGZyb20gJ2xvZGFzaC9mb3JFYWNoJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgbWFwVmFsdWVzIGZyb20gJ2xvZGFzaC9tYXBWYWx1ZXMnO1xuaW1wb3J0IGlzQ2xhc3MgZnJvbSAnQGxza2pzL3V0aWxzL2lzQ2xhc3MnO1xuaW1wb3J0IGV4cHJlc3MgZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgQXN5bmNSb3V0ZXIgZnJvbSAnLi4vQXN5bmNSb3V0ZXInO1xuXG5jb25zdCBERUJVRyA9IGZhbHNlO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um91dGVzVHJlZShjdHgpIHtcbiAgY29uc3QgaXRlcmF0ZSA9IChpdGVtKSA9PiB7XG4gICAgaWYgKCFpdGVtKSByZXR1cm4gbnVsbDtcbiAgICBpZiAoaXNDbGFzcyhpdGVtKSkge1xuICAgICAgY29uc3QgYXBpID0gbmV3IGl0ZW0oY3R4KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuZXctY2FwXG4gICAgICByZXR1cm4gYXBpICYmIGlzRnVuY3Rpb24oYXBpLmdldFJvdXRlcykgJiYgYXBpLmdldFJvdXRlcygpO1xuICAgIH1cbiAgICBpZiAoIWlzUGxhaW5PYmplY3QoaXRlbSkpIHtcbiAgICAgIGlmIChpdGVtLmdldFJvdXRlcykge1xuICAgICAgICByZXR1cm4gaXRlbS5nZXRSb3V0ZXMoKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtLnJvdXRlcykge1xuICAgICAgICByZXR1cm4gaXRlbS5yb3V0ZXM7XG4gICAgICB9XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG4gICAgcmV0dXJuIG1hcFZhbHVlcyhpdGVtLCBpdGVyYXRlKTtcbiAgfTtcbiAgaWYgKGN0eCAmJiBjdHguZ2V0Um91dGVzICYmIGlzRnVuY3Rpb24oY3R4LmdldFJvdXRlcykpIHtcbiAgICByZXR1cm4gaXRlcmF0ZShjdHguZ2V0Um91dGVzKCkpO1xuICB9XG4gIHJldHVybiB7fTtcbn1cblxuZnVuY3Rpb24gZ2V0TWV0aG9kQW5kUGF0aChrZXkgPSAnJywgdmFsKSB7XG4gIGxldCBtZXRob2Q7XG4gIGlmIChpc1BsYWluT2JqZWN0KHZhbCkpIG1ldGhvZCA9ICd1c2UnO1xuICBjb25zdCBjaHVuayA9IGtleS50cmltKCkuc3BsaXQoJyAnKTtcbiAgbGV0IHBhdGg7XG4gIGlmIChjaHVuay5sZW5ndGggPj0gMikge1xuICAgIFttZXRob2QsIHBhdGhdID0gY2h1bms7XG4gIH0gZWxzZSB7XG4gICAgW3BhdGhdID0gY2h1bms7XG4gIH1cbiAgaWYgKCFtZXRob2QpIG1ldGhvZCA9ICdhbGwnO1xuICByZXR1cm4ge1xuICAgIHBhdGgsXG4gICAgbWV0aG9kOiBtZXRob2QudG9Mb3dlckNhc2UoKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXRlcmF0ZVJvdXRlKGRhdGEsIGluZm8gPSB7IHBhdGg6ICcvJyB9KSB7XG4gIGlmIChERUJVRykgY29uc29sZS53YXJuKCdpdGVyYXRlUm91dGUnLCBpbmZvKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gIGlmIChpc1BsYWluT2JqZWN0KGRhdGEpKSB7XG4gICAgY29uc3QgYXN5bmNSb3V0ZXIgPSBBc3luY1JvdXRlcigpO1xuICAgIGZvckVhY2goZGF0YSwgKHZhbCwga2V5KSA9PiB7XG4gICAgICBjb25zdCB7IHBhdGgsIG1ldGhvZCB9ID0gZ2V0TWV0aG9kQW5kUGF0aChrZXksIHZhbCk7XG4gICAgICBjb25zdCByb3V0ZSA9IGl0ZXJhdGVSb3V0ZSh2YWwsIHsgbWV0aG9kLCBwYXRoLCBwYXJlbnQ6IGluZm8gfSk7IC8vICwgeyBwYXRoOiBwYXJhbXMucGF0aCArIHBhdGgsIGk6IHBhcmFtcy5pICsgMSB9KTtcbiAgICAgIGFzeW5jUm91dGVyW21ldGhvZF0ocGF0aCwgcm91dGUpO1xuICAgIH0pO1xuICAgIHJldHVybiBhc3luY1JvdXRlcjtcbiAgfVxuICBpZiAoaXNGdW5jdGlvbihkYXRhKSkge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG4gIGlmIChkYXRhICYmIGRhdGEuZ2V0Um91dGVzICYmIGlzRnVuY3Rpb24oZGF0YS5nZXRSb3V0ZXMpKSB7XG4gICAgcmV0dXJuIGRhdGEuZ2V0Um91dGVzKCk7XG4gIH1cbiAgaWYgKGRhdGEgJiYgZGF0YS5hcGkgJiYgaXNGdW5jdGlvbihkYXRhLmFwaSkpIHtcbiAgICByZXR1cm4gZGF0YS5hcGkoKTtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgIGNvbnN0IG1pZGRsZXdhcmVzID0gZGF0YS5zbGljZSgwLCAtMSk7XG4gICAgY29uc3QgW3JvdXRlc10gPSBkYXRhLnNsaWNlKC0xKTtcblxuICAgIGNvbnN0IHN1YlJvdXRlciA9IGl0ZXJhdGVSb3V0ZShyb3V0ZXMsIHsgZWxlbTogZGF0YS5sZW5ndGggLSAxLCBwYXJlbnQ6IGluZm8gfSk7IC8vICwgeyBwYXRoOiBwYXJhbXMucGF0aCArIHBhdGgsIGk6IHBhcmFtcy5pICsgMSB9KTtcbiAgICBjb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xuICAgIHJvdXRlci51c2UoLi4ubWlkZGxld2FyZXMsIHN1YlJvdXRlcik7XG5cbiAgICByZXR1cm4gcm91dGVyO1xuICB9XG5cbiAgaWYgKERFQlVHKSBjb25zb2xlLndhcm4oJ2l0ZXJhdGVSb3V0ZSBOT1QgRk9VTkQgQ0FTRScsIGluZm8pOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcbiAgcmV0dXJuICgpID0+IHt9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLkFwaSkge1xuICAgIHRoaXMucm9vdEFwaSA9IG5ldyB0aGlzLkFwaSh7IGFwcDogdGhpcyB9KTtcbiAgICBjb25zdCBpbmRleEFwaSA9IGdldCh0aGlzLCAncm9vdEFwaS5pbmRleEFwaScpO1xuICAgIGlmIChpbmRleEFwaSAmJiBpbmRleEFwaS5nZXRSb3V0ZXNMaXN0KSB7XG4gICAgICB0aGlzLmxvZy50cmFjZSgncm91dGVzJywgaW5kZXhBcGkuZ2V0Um91dGVzTGlzdCgpKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC1leHByZXNzaW9uc1xuICAgIHRoaXMubG9nID8gdGhpcy5sb2cud2FybignIWFwcC5BcGknKSA6IGNvbnNvbGUud2FybignIWFwcC5BcGknKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gIH1cbiAgdGhpcy5yb3V0ZXMgPSBnZXRSb3V0ZXNUcmVlKHRoaXMucm9vdEFwaSk7XG4gIGlmIChERUJVRykgY29uc29sZS53YXJuKCd0aGlzLnJvdXRlcycsIHRoaXMucm91dGVzKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gIGNvbnN0IHJvdXRlciA9IGl0ZXJhdGVSb3V0ZSh0aGlzLnJvdXRlcyk7XG4gIGNvbnN0IGFzeW5jUm91dGVyID0gQXN5bmNSb3V0ZXIoKTtcbiAgYXN5bmNSb3V0ZXIudXNlKCcvJywgcm91dGVyKTtcbiAgdGhpcy5leHByZXNzLnVzZSgnLycsIGFzeW5jUm91dGVyKTtcbiAgcmV0dXJuIHRoaXMuZXhwcmVzcztcbn1cbiJdfQ==
//# sourceMappingURL=runRoutes.js.map