UNPKG

hurt

Version:

HTTP and SPA routing using RFC 6570 URI templates

53 lines (46 loc) 3.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = handler; /** * Return a function to process the given list of callbacks, * keeping the call stack flat in case `next` is called synchronously. * * @param {Array<Function>} stack * @param {*} [context] * @return {Function} */ function handler(stack, context) { return function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } var self = context || this; var next = args.pop(); var index = 0; var sync = true; args.push(iter); iter(); function iter(err) { if (err) { sync = true; } while (sync) { sync = false; if (err || index >= stack.length) { next(err); } else { try { stack[index++].apply(self, args); } catch (e) { sync = true; err = e; } } } sync = true; } }; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9oYW5kbGVyLmpzIl0sIm5hbWVzIjpbImhhbmRsZXIiLCJzdGFjayIsImNvbnRleHQiLCJhcmdzIiwic2VsZiIsIm5leHQiLCJwb3AiLCJpbmRleCIsInN5bmMiLCJwdXNoIiwiaXRlciIsImVyciIsImxlbmd0aCIsImFwcGx5IiwiZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7a0JBUXdCQSxPO0FBUnhCOzs7Ozs7OztBQVFlLFNBQVNBLE9BQVQsQ0FBaUJDLEtBQWpCLEVBQXdCQyxPQUF4QixFQUFpQztBQUM5QyxTQUFPLFlBQW1CO0FBQUEsc0NBQU5DLElBQU07QUFBTkEsVUFBTTtBQUFBOztBQUN4QixRQUFNQyxPQUFPRixXQUFXLElBQXhCO0FBQ0EsUUFBTUcsT0FBT0YsS0FBS0csR0FBTCxFQUFiOztBQUVBLFFBQUlDLFFBQVEsQ0FBWjtBQUNBLFFBQUlDLE9BQU8sSUFBWDs7QUFFQUwsU0FBS00sSUFBTCxDQUFVQyxJQUFWO0FBQ0FBOztBQUVBLGFBQVNBLElBQVQsQ0FBY0MsR0FBZCxFQUFtQjtBQUNqQixVQUFJQSxHQUFKLEVBQVM7QUFDUEgsZUFBTyxJQUFQO0FBQ0Q7O0FBRUQsYUFBT0EsSUFBUCxFQUFhO0FBQ1hBLGVBQU8sS0FBUDtBQUNBLFlBQUlHLE9BQU9KLFNBQVNOLE1BQU1XLE1BQTFCLEVBQWtDO0FBQ2hDUCxlQUFLTSxHQUFMO0FBQ0QsU0FGRCxNQUVPO0FBQ0wsY0FBSTtBQUNGVixrQkFBTU0sT0FBTixFQUFlTSxLQUFmLENBQXFCVCxJQUFyQixFQUEyQkQsSUFBM0I7QUFDRCxXQUZELENBR0EsT0FBT1csQ0FBUCxFQUFVO0FBQ1JOLG1CQUFPLElBQVA7QUFDQUcsa0JBQU1HLENBQU47QUFDRDtBQUNGO0FBQ0Y7O0FBRUROLGFBQU8sSUFBUDtBQUNEO0FBQ0YsR0FoQ0Q7QUFpQ0QiLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmV0dXJuIGEgZnVuY3Rpb24gdG8gcHJvY2VzcyB0aGUgZ2l2ZW4gbGlzdCBvZiBjYWxsYmFja3MsXG4gKiBrZWVwaW5nIHRoZSBjYWxsIHN0YWNrIGZsYXQgaW4gY2FzZSBgbmV4dGAgaXMgY2FsbGVkIHN5bmNocm9ub3VzbHkuXG4gKlxuICogQHBhcmFtIHtBcnJheTxGdW5jdGlvbj59IHN0YWNrXG4gKiBAcGFyYW0geyp9IFtjb250ZXh0XVxuICogQHJldHVybiB7RnVuY3Rpb259XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGhhbmRsZXIoc3RhY2ssIGNvbnRleHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgY29uc3Qgc2VsZiA9IGNvbnRleHQgfHwgdGhpcztcbiAgICBjb25zdCBuZXh0ID0gYXJncy5wb3AoKTtcblxuICAgIGxldCBpbmRleCA9IDA7XG4gICAgbGV0IHN5bmMgPSB0cnVlO1xuXG4gICAgYXJncy5wdXNoKGl0ZXIpO1xuICAgIGl0ZXIoKTtcblxuICAgIGZ1bmN0aW9uIGl0ZXIoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHN5bmMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICB3aGlsZSAoc3luYykge1xuICAgICAgICBzeW5jID0gZmFsc2U7XG4gICAgICAgIGlmIChlcnIgfHwgaW5kZXggPj0gc3RhY2subGVuZ3RoKSB7XG4gICAgICAgICAgbmV4dChlcnIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzdGFja1tpbmRleCsrXS5hcHBseShzZWxmLCBhcmdzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHN5bmMgPSB0cnVlO1xuICAgICAgICAgICAgZXJyID0gZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc3luYyA9IHRydWU7XG4gICAgfVxuICB9O1xufVxuIl19