UNPKG

hurt

Version:

HTTP and SPA routing using RFC 6570 URI templates

58 lines (49 loc) 4.25 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var noop = function noop() {}; function mixin() { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, _ref$timeout = _ref.timeout, _timeout = _ref$timeout === undefined ? 0 : _ref$timeout; var handler_ = void 0; return { pre: [function (req, res) { for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { args[_key - 2] = arguments[_key]; } var _this = this; var next = args.pop(); var handler = handler_ || noop; if (res.setTimeout) { res.setTimeout(_timeout, function () { if (typeof _this.emit === 'function') { _this.emit.apply(_this, ['timeout', req, res].concat(args)); } handler.apply(undefined, [req, res].concat(args, [noop])); }); } next(); }], post: [function (req, res) { for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { args[_key2 - 2] = arguments[_key2]; } var next = args.pop(); if (res.setTimeout) { res.setTimeout(0); } next(); }], timeout: function timeout(delay, handler) { _timeout = delay; if (handler) { handler_ = handler; } return this; } }; } exports.mixin = mixin; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90aW1lb3V0LmpzIl0sIm5hbWVzIjpbIm5vb3AiLCJtaXhpbiIsInRpbWVvdXQiLCJoYW5kbGVyXyIsInByZSIsInJlcSIsInJlcyIsImFyZ3MiLCJuZXh0IiwicG9wIiwiaGFuZGxlciIsInNldFRpbWVvdXQiLCJlbWl0IiwicG9zdCIsImRlbGF5Il0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLElBQU1BLE9BQU8sU0FBUEEsSUFBTyxHQUFNLENBQUUsQ0FBckI7O0FBRU8sU0FBU0MsS0FBVCxHQUFxQztBQUFBLGlGQUFKLEVBQUk7QUFBQSwwQkFBcEJDLE9BQW9CO0FBQUEsTUFBcEJBLFFBQW9CLGdDQUFWLENBQVU7O0FBQzFDLE1BQUlDLGlCQUFKOztBQUVBLFNBQU87QUFDTEMsU0FBSyxDQUNILFVBQVVDLEdBQVYsRUFBZUMsR0FBZixFQUE2QjtBQUFBLHdDQUFOQyxJQUFNO0FBQU5BLFlBQU07QUFBQTs7QUFBQTs7QUFDM0IsVUFBTUMsT0FBT0QsS0FBS0UsR0FBTCxFQUFiO0FBQ0EsVUFBTUMsVUFBVVAsWUFBWUgsSUFBNUI7O0FBRUEsVUFBSU0sSUFBSUssVUFBUixFQUFvQjtBQUNsQkwsWUFBSUssVUFBSixDQUFlVCxRQUFmLEVBQXdCLFlBQU07QUFDNUIsY0FBSSxPQUFPLE1BQUtVLElBQVosS0FBcUIsVUFBekIsRUFBcUM7QUFDbkMsa0JBQUtBLElBQUwsZUFBVSxTQUFWLEVBQXFCUCxHQUFyQixFQUEwQkMsR0FBMUIsU0FBa0NDLElBQWxDO0FBQ0Q7QUFDREcsb0NBQVFMLEdBQVIsRUFBYUMsR0FBYixTQUFxQkMsSUFBckIsR0FBMkJQLElBQTNCO0FBQ0QsU0FMRDtBQU1EOztBQUVEUTtBQUNELEtBZkUsQ0FEQTtBQWtCTEssVUFBTSxDQUNKLFVBQVVSLEdBQVYsRUFBZUMsR0FBZixFQUE2QjtBQUFBLHlDQUFOQyxJQUFNO0FBQU5BLFlBQU07QUFBQTs7QUFDM0IsVUFBTUMsT0FBT0QsS0FBS0UsR0FBTCxFQUFiO0FBQ0EsVUFBSUgsSUFBSUssVUFBUixFQUFvQjtBQUNsQkwsWUFBSUssVUFBSixDQUFlLENBQWY7QUFDRDtBQUNESDtBQUNELEtBUEcsQ0FsQkQ7QUEyQkxOLFdBM0JLLG1CQTJCR1ksS0EzQkgsRUEyQlVKLE9BM0JWLEVBMkJtQjtBQUN0QlIsaUJBQVVZLEtBQVY7QUFDQSxVQUFJSixPQUFKLEVBQWE7QUFDWFAsbUJBQVdPLE9BQVg7QUFDRDtBQUNELGFBQU8sSUFBUDtBQUNEO0FBakNJLEdBQVA7QUFtQ0QiLCJmaWxlIjoidGltZW91dC5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcblxuZXhwb3J0IGZ1bmN0aW9uIG1peGluKHsgdGltZW91dCA9IDAgfSA9IHt9KSB7XG4gIGxldCBoYW5kbGVyXztcblxuICByZXR1cm4ge1xuICAgIHByZTogW1xuICAgICAgZnVuY3Rpb24gKHJlcSwgcmVzLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IG5leHQgPSBhcmdzLnBvcCgpO1xuICAgICAgICBjb25zdCBoYW5kbGVyID0gaGFuZGxlcl8gfHwgbm9vcDtcblxuICAgICAgICBpZiAocmVzLnNldFRpbWVvdXQpIHtcbiAgICAgICAgICByZXMuc2V0VGltZW91dCh0aW1lb3V0LCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuZW1pdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICB0aGlzLmVtaXQoJ3RpbWVvdXQnLCByZXEsIHJlcywgLi4uYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoYW5kbGVyKHJlcSwgcmVzLCAuLi5hcmdzLCBub29wKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5leHQoKTtcbiAgICAgIH1cbiAgICBdLFxuICAgIHBvc3Q6IFtcbiAgICAgIGZ1bmN0aW9uIChyZXEsIHJlcywgLi4uYXJncykge1xuICAgICAgICBjb25zdCBuZXh0ID0gYXJncy5wb3AoKTtcbiAgICAgICAgaWYgKHJlcy5zZXRUaW1lb3V0KSB7XG4gICAgICAgICAgcmVzLnNldFRpbWVvdXQoMCk7XG4gICAgICAgIH1cbiAgICAgICAgbmV4dCgpO1xuICAgICAgfVxuICAgIF0sXG4gICAgdGltZW91dChkZWxheSwgaGFuZGxlcikge1xuICAgICAgdGltZW91dCA9IGRlbGF5O1xuICAgICAgaWYgKGhhbmRsZXIpIHtcbiAgICAgICAgaGFuZGxlcl8gPSBoYW5kbGVyO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9O1xufVxuIl19