UNPKG

ix

Version:

The Interactive Extensions for JavaScript

43 lines (41 loc) 1.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.zip = exports.ZipAsyncIterable = void 0; const tslib_1 = require("tslib"); const withabort_js_1 = require("./operators/withabort.js"); const asynciterablex_js_1 = require("./asynciterablex.js"); const returniterator_js_1 = require("../util/returniterator.js"); const aborterror_js_1 = require("../aborterror.js"); /** @ignore */ class ZipAsyncIterable extends asynciterablex_js_1.AsyncIterableX { constructor(sources) { super(); this._sources = sources; } // eslint-disable-next-line consistent-return [Symbol.asyncIterator](signal) { return tslib_1.__asyncGenerator(this, arguments, function* _a() { (0, aborterror_js_1.throwIfAborted)(signal); const sourcesLength = this._sources.length; const its = this._sources.map((x) => (0, withabort_js_1.wrapWithAbort)(x, signal)[Symbol.asyncIterator]()); while (sourcesLength > 0) { const values = new Array(sourcesLength); for (let i = -1; ++i < sourcesLength;) { const { value, done } = yield tslib_1.__await(its[i].next()); if (done) { yield tslib_1.__await(Promise.all(its.map(returniterator_js_1.returnAsyncIterator))); return yield tslib_1.__await(undefined); } values[i] = value; } yield yield tslib_1.__await(values); } }); } } exports.ZipAsyncIterable = ZipAsyncIterable; function zip(...sources) { return new ZipAsyncIterable(sources); } exports.zip = zip; //# sourceMappingURL=zip.js.map