UNPKG

multitude

Version:

Comprehensive streams for push and pull

59 lines (48 loc) 5.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mergeMap = mergeMap; var _operate = require("../../utils/operate"); var _intercept = require("../../utils/intercept"); function mergeMap(projection) { return (0, _operate.operate)(obs => { let index = 0; let parentComplete = false; let completeSubscriptions = 0; const subscriptions = []; function unsubscribe() { for (const subscription of subscriptions) { subscription.unsubscribe(); } } return [null, function next(value) { if (obs.closed) return; (0, _intercept.intercept)(projection(value, index++), obs, { start(subscription) { subscriptions.push(subscription); }, error(error) { obs.error(error); unsubscribe(); }, complete() { completeSubscriptions++; if (!parentComplete) return; if (completeSubscriptions >= subscriptions.length) { obs.complete(); unsubscribe(); } } }); }, null, function complete() { parentComplete = true; if (completeSubscriptions >= subscriptions.length) { obs.complete(); } }, function teardown() { if (obs.closed || !parentComplete) unsubscribe(); }]; }); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wdXNoL29wZXJhdG9ycy9jb21iaW5lL21lcmdlTWFwLnRzIl0sIm5hbWVzIjpbIm1lcmdlTWFwIiwicHJvamVjdGlvbiIsIm9icyIsImluZGV4IiwicGFyZW50Q29tcGxldGUiLCJjb21wbGV0ZVN1YnNjcmlwdGlvbnMiLCJzdWJzY3JpcHRpb25zIiwidW5zdWJzY3JpYmUiLCJzdWJzY3JpcHRpb24iLCJuZXh0IiwidmFsdWUiLCJjbG9zZWQiLCJzdGFydCIsInB1c2giLCJlcnJvciIsImNvbXBsZXRlIiwibGVuZ3RoIiwidGVhcmRvd24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFFTyxTQUFTQSxRQUFULENBQ0xDLFVBREssRUFFaUI7QUFDdEIsU0FBTyxzQkFBZUMsR0FBRCxJQUFTO0FBQzVCLFFBQUlDLEtBQUssR0FBRyxDQUFaO0FBQ0EsUUFBSUMsY0FBYyxHQUFHLEtBQXJCO0FBQ0EsUUFBSUMscUJBQXFCLEdBQUcsQ0FBNUI7QUFDQSxVQUFNQyxhQUFrQyxHQUFHLEVBQTNDOztBQUVBLGFBQVNDLFdBQVQsR0FBNkI7QUFDM0IsV0FBSyxNQUFNQyxZQUFYLElBQTJCRixhQUEzQixFQUEwQztBQUN4Q0UsUUFBQUEsWUFBWSxDQUFDRCxXQUFiO0FBQ0Q7QUFDRjs7QUFFRCxXQUFPLENBQ0wsSUFESyxFQUVMLFNBQVNFLElBQVQsQ0FBY0MsS0FBZCxFQUE4QjtBQUM1QixVQUFJUixHQUFHLENBQUNTLE1BQVIsRUFBZ0I7QUFFaEIsZ0NBQVVWLFVBQVUsQ0FBQ1MsS0FBRCxFQUFRUCxLQUFLLEVBQWIsQ0FBcEIsRUFBc0NELEdBQXRDLEVBQTJDO0FBQ3pDVSxRQUFBQSxLQUFLLENBQUNKLFlBQUQsRUFBZTtBQUNsQkYsVUFBQUEsYUFBYSxDQUFDTyxJQUFkLENBQW1CTCxZQUFuQjtBQUNELFNBSHdDOztBQUl6Q00sUUFBQUEsS0FBSyxDQUFDQSxLQUFELEVBQVE7QUFDWFosVUFBQUEsR0FBRyxDQUFDWSxLQUFKLENBQVVBLEtBQVY7QUFDQVAsVUFBQUEsV0FBVztBQUNaLFNBUHdDOztBQVF6Q1EsUUFBQUEsUUFBUSxHQUFHO0FBQ1RWLFVBQUFBLHFCQUFxQjtBQUVyQixjQUFJLENBQUNELGNBQUwsRUFBcUI7O0FBQ3JCLGNBQUlDLHFCQUFxQixJQUFJQyxhQUFhLENBQUNVLE1BQTNDLEVBQW1EO0FBQ2pEZCxZQUFBQSxHQUFHLENBQUNhLFFBQUo7QUFDQVIsWUFBQUEsV0FBVztBQUNaO0FBQ0Y7O0FBaEJ3QyxPQUEzQztBQWtCRCxLQXZCSSxFQXdCTCxJQXhCSyxFQXlCTCxTQUFTUSxRQUFULEdBQW9CO0FBQ2xCWCxNQUFBQSxjQUFjLEdBQUcsSUFBakI7O0FBQ0EsVUFBSUMscUJBQXFCLElBQUlDLGFBQWEsQ0FBQ1UsTUFBM0MsRUFBbUQ7QUFDakRkLFFBQUFBLEdBQUcsQ0FBQ2EsUUFBSjtBQUNEO0FBQ0YsS0E5QkksRUErQkwsU0FBU0UsUUFBVCxHQUFvQjtBQUNsQixVQUFJZixHQUFHLENBQUNTLE1BQUosSUFBYyxDQUFDUCxjQUFuQixFQUFtQ0csV0FBVztBQUMvQyxLQWpDSSxDQUFQO0FBbUNELEdBL0NNLENBQVA7QUFnREQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQdXNoIH0gZnJvbSAnQGRlZmluaXRpb25zJztcbmltcG9ydCB7IG9wZXJhdGUgfSBmcm9tICcuLi8uLi91dGlscy9vcGVyYXRlJztcbmltcG9ydCB7IGludGVyY2VwdCB9IGZyb20gJy4uLy4uL3V0aWxzL2ludGVyY2VwdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZU1hcDxULCBVPihcbiAgcHJvamVjdGlvbjogKHZhbHVlOiBULCBpbmRleDogbnVtYmVyKSA9PiBQdXNoLkNvbnZlcnRpYmxlPFU+XG4pOiBQdXNoLk9wZXJhdGlvbjxULCBVPiB7XG4gIHJldHVybiBvcGVyYXRlPFQsIFU+KChvYnMpID0+IHtcbiAgICBsZXQgaW5kZXggPSAwO1xuICAgIGxldCBwYXJlbnRDb21wbGV0ZSA9IGZhbHNlO1xuICAgIGxldCBjb21wbGV0ZVN1YnNjcmlwdGlvbnMgPSAwO1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbnM6IFB1c2guU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICAgIGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCk6IHZvaWQge1xuICAgICAgZm9yIChjb25zdCBzdWJzY3JpcHRpb24gb2Ygc3Vic2NyaXB0aW9ucykge1xuICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gW1xuICAgICAgbnVsbCxcbiAgICAgIGZ1bmN0aW9uIG5leHQodmFsdWU6IFQpOiB2b2lkIHtcbiAgICAgICAgaWYgKG9icy5jbG9zZWQpIHJldHVybjtcblxuICAgICAgICBpbnRlcmNlcHQocHJvamVjdGlvbih2YWx1ZSwgaW5kZXgrKyksIG9icywge1xuICAgICAgICAgIHN0YXJ0KHN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcihlcnJvcikge1xuICAgICAgICAgICAgb2JzLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIHVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb21wbGV0ZSgpIHtcbiAgICAgICAgICAgIGNvbXBsZXRlU3Vic2NyaXB0aW9ucysrO1xuXG4gICAgICAgICAgICBpZiAoIXBhcmVudENvbXBsZXRlKSByZXR1cm47XG4gICAgICAgICAgICBpZiAoY29tcGxldGVTdWJzY3JpcHRpb25zID49IHN1YnNjcmlwdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIG9icy5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICB1bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgbnVsbCxcbiAgICAgIGZ1bmN0aW9uIGNvbXBsZXRlKCkge1xuICAgICAgICBwYXJlbnRDb21wbGV0ZSA9IHRydWU7XG4gICAgICAgIGlmIChjb21wbGV0ZVN1YnNjcmlwdGlvbnMgPj0gc3Vic2NyaXB0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICBvYnMuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGZ1bmN0aW9uIHRlYXJkb3duKCkge1xuICAgICAgICBpZiAob2JzLmNsb3NlZCB8fCAhcGFyZW50Q29tcGxldGUpIHVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgXTtcbiAgfSk7XG59XG4iXX0=