@tdb/web
Version:
Common condiguration for serving a web-site and testing web-based UI components.
115 lines (94 loc) • 3.57 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/typeof"));
var _getIterator2 = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/get-iterator"));
var _set = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/set"));
var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
var _pathMatch = _interopRequireDefault(require("./lib/path-match"));
var route = (0, _pathMatch.default)();
var Router =
/*#__PURE__*/
function () {
function Router() {
(0, _classCallCheck2.default)(this, Router);
this.routes = new _map.default();
}
(0, _createClass2.default)(Router, [{
key: "add",
value: function add(method, path, fn) {
var routes = this.routes.get(method) || new _set.default();
routes.add({
match: route(path),
fn: fn
});
this.routes.set(method, routes);
}
}, {
key: "match",
value: function match(req, res, parsedUrl) {
var routes = this.routes.get(req.method);
if (!routes) return;
var pathname = parsedUrl.pathname;
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
var _loop = function _loop() {
var r = _step.value;
var params = r.match(pathname);
if (params) {
return {
v: function () {
var _v = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee() {
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
return _context.abrupt("return", r.fn(req, res, params, parsedUrl));
case 1:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
return function v() {
return _v.apply(this, arguments);
};
}()
};
}
};
for (var _iterator = (0, _getIterator2.default)(routes), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var _ret = _loop();
if ((0, _typeof2.default)(_ret) === "object") return _ret.v;
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
}
}]);
return Router;
}();
exports.default = Router;