UNPKG

iter-tools

Version:
402 lines (327 loc) 11.9 kB
var _toConsumableArray = require("@babel/runtime/helpers/toConsumableArray"); var _regeneratorRuntime = require("@babel/runtime/regenerator"); var _asyncToGenerator = require("@babel/runtime/helpers/asyncToGenerator"); var _classCallCheck = require("@babel/runtime/helpers/classCallCheck"); var _createClass = require("@babel/runtime/helpers/createClass"); var _get = require("@babel/runtime/helpers/get"); var _inherits = require("@babel/runtime/helpers/inherits"); var _possibleConstructorReturn = require("@babel/runtime/helpers/possibleConstructorReturn"); var _getPrototypeOf = require("@babel/runtime/helpers/getPrototypeOf"); function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var _require = require('../../internal/async-iterable.js'), asyncIterableCurry = _require.asyncIterableCurry, asyncCallReturn = _require.asyncCallReturn; var _require2 = require('../../internal/async-iterable-iterator.js'), AsyncIterableIterator = _require2.AsyncIterableIterator; var _require3 = require('../../internal/async-parallel-each.js'), asyncParallelEach = _require3.asyncParallelEach; var _require4 = require('../../internal/async-peekerator.js'), AsyncPeekerator = _require4.AsyncPeekerator; var _require5 = require('../$map/async-map.js'), __asyncMap = _require5.__asyncMap; var _require6 = require('../$to-array/async-to-array.js'), __asyncToArray = _require6.__asyncToArray; var _ = Symbol["for"]('_'); var __advance = Symbol["for"]('__advance'); var AsyncSummarizedPeekerator = /*#__PURE__*/function (_AsyncPeekerator) { _inherits(AsyncSummarizedPeekerator, _AsyncPeekerator); var _super = _createSuper(AsyncSummarizedPeekerator); function AsyncSummarizedPeekerator(iterator, first, inputSummary) { var _this; _classCallCheck(this, AsyncSummarizedPeekerator); _this = _super.call(this, iterator, first); _this[_].inputSummary = inputSummary; return _this; } _createClass(AsyncSummarizedPeekerator, [{ key: "advance", value: function () { var _advance = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() { return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return this[_].inputSummary.advanceBuffer(this); case 2: case "end": return _context.stop(); } } }, _callee, this); })); function advance() { return _advance.apply(this, arguments); } return advance; }() }, { key: __advance, value: function () { var _value = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() { return _regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _context2.next = 2; return _get(_getPrototypeOf(AsyncSummarizedPeekerator.prototype), "advance", this).call(this); case 2: case "end": return _context2.stop(); } } }, _callee2, this); })); function value() { return _value.apply(this, arguments); } return value; }() }]); return AsyncSummarizedPeekerator; }(AsyncPeekerator); var AsyncInputSummaryInternal = /*#__PURE__*/function () { function AsyncInputSummaryInternal() { _classCallCheck(this, AsyncInputSummaryInternal); this.buffers = []; this.notDoneBuffer = null; this.index = 0; } _createClass(AsyncInputSummaryInternal, [{ key: "init", value: function init(buffers) { this.buffers = buffers; this.updateNotDone(); } }, { key: "updateNotDone", value: function updateNotDone() { this.notDoneBuffer = this.buffers.find(function (buffer) { return !buffer.done; }); } }, { key: "advanceBuffer", value: function () { var _advanceBuffer = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(buffer) { var wasDone; return _regeneratorRuntime.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: wasDone = buffer.done; _context3.next = 3; return buffer[__advance](); case 3: this.index++; if (!wasDone && buffer.done) { this.updateNotDone(); } case 5: case "end": return _context3.stop(); } } }, _callee3, this); })); function advanceBuffer(_x) { return _advanceBuffer.apply(this, arguments); } return advanceBuffer; }() }]); return AsyncInputSummaryInternal; }(); var AsyncInputSummary = /*#__PURE__*/function () { function AsyncInputSummary(internal) { _classCallCheck(this, AsyncInputSummary); this[_] = internal; } _createClass(AsyncInputSummary, [{ key: "advance", value: function advance() { throw new Error('advance() is not supported on an interleave summary'); } }, { key: "current", get: function get() { return { value: this.value, done: this.done }; } }, { key: "value", get: function get() { return this[_].notDoneBuffer; } }, { key: "done", get: function get() { return this[_].notDoneBuffer === undefined; } }, { key: "index", get: function get() { return this[_].index; } }]); return AsyncInputSummary; }(); exports.AsyncInputSummary = AsyncInputSummary; var AsyncInterleaver = /*#__PURE__*/function (_AsyncIterableIterato) { _inherits(AsyncInterleaver, _AsyncIterableIterato); var _super2 = _createSuper(AsyncInterleaver); function AsyncInterleaver(sources, strategy, options) { var _this2; _classCallCheck(this, AsyncInterleaver); _this2 = _super2.call(this); _this2.sources = sources; _this2.strategy = strategy; _this2.options = options; _this2.initialized = false; _this2.inputSummary = new AsyncInputSummaryInternal(sources); return _this2; } _createClass(AsyncInterleaver, [{ key: "init", value: function () { var _init = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() { var strategy, options, inputSummary; return _regeneratorRuntime.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: this.initialized = true; strategy = this.strategy, options = this.options, inputSummary = this.inputSummary; _context4.next = 4; return __asyncToArray(__asyncMap(this.sources, function (source) { return AsyncSummarizedPeekerator.from(source, inputSummary); })); case 4: this.buffers = _context4.sent; this.iterator = strategy.apply(void 0, [options, new AsyncInputSummary(inputSummary)].concat(_toConsumableArray(this.buffers))); _context4.next = 8; return inputSummary.init(this.buffers); case 8: case "end": return _context4.stop(); } } }, _callee4, this); })); function init() { return _init.apply(this, arguments); } return init; }() }, { key: "returnBuffers", value: function () { var _returnBuffers = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() { return _regeneratorRuntime.wrap(function _callee5$(_context5) { while (1) { switch (_context5.prev = _context5.next) { case 0: _context5.next = 2; return asyncParallelEach(this.buffers, function (buffer) { return buffer["return"](); }); case 2: case "end": return _context5.stop(); } } }, _callee5, this); })); function returnBuffers() { return _returnBuffers.apply(this, arguments); } return returnBuffers; }() }, { key: "next", value: function () { var _next = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6() { var step; return _regeneratorRuntime.wrap(function _callee6$(_context6) { while (1) { switch (_context6.prev = _context6.next) { case 0: if (this.initialized) { _context6.next = 3; break; } _context6.next = 3; return this.init(); case 3: _context6.next = 5; return this.iterator.next(); case 5: step = _context6.sent; if (!step.done) { _context6.next = 9; break; } _context6.next = 9; return this.returnBuffers(); case 9: return _context6.abrupt("return", step); case 10: case "end": return _context6.stop(); } } }, _callee6, this); })); function next() { return _next.apply(this, arguments); } return next; }() }, { key: "return", value: function () { var _return2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee7() { return _regeneratorRuntime.wrap(function _callee7$(_context7) { while (1) { switch (_context7.prev = _context7.next) { case 0: _context7.next = 2; return asyncCallReturn(this.iterator); case 2: _context7.next = 4; return this.returnBuffers(); case 4: return _context7.abrupt("return", { value: undefined, done: true }); case 5: case "end": return _context7.stop(); } } }, _callee7, this); })); function _return() { return _return2.apply(this, arguments); } return _return; }() }]); return AsyncInterleaver; }(AsyncIterableIterator); function __asyncInterleave(sources, strategy) { var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; return new AsyncInterleaver(sources, strategy, options); } exports.__asyncInterleave = __asyncInterleave; var asyncInterleave = /*#__PURE__*/asyncIterableCurry(__asyncInterleave, { variadic: true, growRight: true, minArgs: 1, maxArgs: 2 }); exports.asyncInterleave = asyncInterleave;