hurt
Version:
HTTP and SPA routing using RFC 6570 URI templates
58 lines (49 loc) • 4.25 kB
JavaScript
;
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