multitude
Version:
Comprehensive streams for push and pull
39 lines (32 loc) • 5.65 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.merge = merge;
var _Observable = require("../classes/Observable");
var _intercept = require("../utils/intercept");
var _from = require("./from");
function merge(...arr) {
if (arr.length < 1) {
throw Error(`Must provide at least one observable to merge`);
}
const observables = arr.map(_from.from);
if (observables.length === 1) return observables[0];
return new _Observable.Observable(obs => {
let completed = 0;
const subscriptions = observables.map(observable => {
return obs.closed ? null : (0, _intercept.intercept)(observable, obs, {
complete() {
completed++;
if (completed >= observables.length) obs.complete();
}
});
}).filter(item => Boolean(item));
return () => {
for (const subscription of subscriptions) {
subscription.unsubscribe();
}
};
});
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wdXNoL2NyZWF0b3JzL21lcmdlLnRzIl0sIm5hbWVzIjpbIm1lcmdlIiwiYXJyIiwibGVuZ3RoIiwiRXJyb3IiLCJvYnNlcnZhYmxlcyIsIm1hcCIsImZyb20iLCJPYnNlcnZhYmxlIiwib2JzIiwiY29tcGxldGVkIiwic3Vic2NyaXB0aW9ucyIsIm9ic2VydmFibGUiLCJjbG9zZWQiLCJjb21wbGV0ZSIsImZpbHRlciIsIml0ZW0iLCJCb29sZWFuIiwic3Vic2NyaXB0aW9uIiwidW5zdWJzY3JpYmUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUE2Q08sU0FBU0EsS0FBVCxDQUFlLEdBQUdDLEdBQWxCLEVBQTZDO0FBQ2xELE1BQUlBLEdBQUcsQ0FBQ0MsTUFBSixHQUFhLENBQWpCLEVBQW9CO0FBQ2xCLFVBQU1DLEtBQUssQ0FBRSwrQ0FBRixDQUFYO0FBQ0Q7O0FBRUQsUUFBTUMsV0FBOEIsR0FBR0gsR0FBRyxDQUFDSSxHQUFKLENBQVFDLFVBQVIsQ0FBdkM7QUFDQSxNQUFJRixXQUFXLENBQUNGLE1BQVosS0FBdUIsQ0FBM0IsRUFBOEIsT0FBT0UsV0FBVyxDQUFDLENBQUQsQ0FBbEI7QUFFOUIsU0FBTyxJQUFJRyxzQkFBSixDQUFnQkMsR0FBRCxJQUFTO0FBQzdCLFFBQUlDLFNBQVMsR0FBRyxDQUFoQjtBQUVBLFVBQU1DLGFBQWEsR0FBR04sV0FBVyxDQUM5QkMsR0FEbUIsQ0FDZE0sVUFBRCxJQUFnQjtBQUNuQixhQUFPSCxHQUFHLENBQUNJLE1BQUosR0FDSCxJQURHLEdBRUgsMEJBQVVELFVBQVYsRUFBc0JILEdBQXRCLEVBQTJCO0FBQ3pCSyxRQUFBQSxRQUFRLEdBQUc7QUFDVEosVUFBQUEsU0FBUztBQUNULGNBQUlBLFNBQVMsSUFBSUwsV0FBVyxDQUFDRixNQUE3QixFQUFxQ00sR0FBRyxDQUFDSyxRQUFKO0FBQ3RDOztBQUp3QixPQUEzQixDQUZKO0FBUUQsS0FWbUIsRUFXbkJDLE1BWG1CLENBV1hDLElBQUQsSUFBcUNDLE9BQU8sQ0FBQ0QsSUFBRCxDQVhoQyxDQUF0QjtBQWFBLFdBQU8sTUFBTTtBQUNYLFdBQUssTUFBTUUsWUFBWCxJQUEyQlAsYUFBM0IsRUFBMEM7QUFDeENPLFFBQUFBLFlBQVksQ0FBQ0MsV0FBYjtBQUNEO0FBQ0YsS0FKRDtBQUtELEdBckJNLENBQVA7QUFzQkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQdXNoIH0gZnJvbSAnQGRlZmluaXRpb25zJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICcuLi9jbGFzc2VzL09ic2VydmFibGUnO1xuaW1wb3J0IHsgaW50ZXJjZXB0IH0gZnJvbSAnLi4vdXRpbHMvaW50ZXJjZXB0JztcbmltcG9ydCB7IGZyb20gfSBmcm9tICcuL2Zyb20nO1xuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2U8QT4oYTogUHVzaC5Db252ZXJ0aWJsZTxBPik6IFB1c2guT2JzZXJ2YWJsZTxBPjtcbmV4cG9ydCBmdW5jdGlvbiBtZXJnZTxBLCBCPihcbiAgYTogUHVzaC5Db252ZXJ0aWJsZTxBPixcbiAgYjogUHVzaC5Db252ZXJ0aWJsZTxCPlxuKTogUHVzaC5PYnNlcnZhYmxlPEEgfCBCPjtcbmV4cG9ydCBmdW5jdGlvbiBtZXJnZTxBLCBCLCBDPihcbiAgYTogUHVzaC5Db252ZXJ0aWJsZTxBPixcbiAgYjogUHVzaC5Db252ZXJ0aWJsZTxCPixcbiAgYzogUHVzaC5Db252ZXJ0aWJsZTxDPlxuKTogUHVzaC5PYnNlcnZhYmxlPEEgfCBCIHwgQz47XG5leHBvcnQgZnVuY3Rpb24gbWVyZ2U8QSwgQiwgQywgRD4oXG4gIGE6IFB1c2guQ29udmVydGlibGU8QT4sXG4gIGI6IFB1c2guQ29udmVydGlibGU8Qj4sXG4gIGM6IFB1c2guQ29udmVydGlibGU8Qz4sXG4gIGQ6IFB1c2guQ29udmVydGlibGU8RD5cbik6IFB1c2guT2JzZXJ2YWJsZTxBIHwgQiB8IEMgfCBEPjtcbmV4cG9ydCBmdW5jdGlvbiBtZXJnZTxBLCBCLCBDLCBELCBFPihcbiAgYTogUHVzaC5Db252ZXJ0aWJsZTxBPixcbiAgYjogUHVzaC5Db252ZXJ0aWJsZTxCPixcbiAgYzogUHVzaC5Db252ZXJ0aWJsZTxDPixcbiAgZDogUHVzaC5Db252ZXJ0aWJsZTxEPixcbiAgZTogUHVzaC5Db252ZXJ0aWJsZTxFPlxuKTogUHVzaC5PYnNlcnZhYmxlPEEgfCBCIHwgQyB8IEQgfCBFPjtcbmV4cG9ydCBmdW5jdGlvbiBtZXJnZTxBLCBCLCBDLCBELCBFLCBGPihcbiAgYTogUHVzaC5Db252ZXJ0aWJsZTxBPixcbiAgYjogUHVzaC5Db252ZXJ0aWJsZTxCPixcbiAgYzogUHVzaC5Db252ZXJ0aWJsZTxDPixcbiAgZDogUHVzaC5Db252ZXJ0aWJsZTxEPixcbiAgZTogUHVzaC5Db252ZXJ0aWJsZTxFPixcbiAgZjogUHVzaC5Db252ZXJ0aWJsZTxGPlxuKTogUHVzaC5PYnNlcnZhYmxlPEEgfCBCIHwgQyB8IEQgfCBFIHwgRj47XG5leHBvcnQgZnVuY3Rpb24gbWVyZ2U8QSwgQiwgQywgRCwgRSwgRiwgRz4oXG4gIGE6IFB1c2guQ29udmVydGlibGU8QT4sXG4gIGI6IFB1c2guQ29udmVydGlibGU8Qj4sXG4gIGM6IFB1c2guQ29udmVydGlibGU8Qz4sXG4gIGQ6IFB1c2guQ29udmVydGlibGU8RD4sXG4gIGU6IFB1c2guQ29udmVydGlibGU8RT4sXG4gIGY6IFB1c2guQ29udmVydGlibGU8Rj4sXG4gIGc6IFB1c2guQ29udmVydGlibGU8Rz5cbik6IFB1c2guT2JzZXJ2YWJsZTxBIHwgQiB8IEMgfCBEIHwgRSB8IEYgfCBHPjtcbmV4cG9ydCBmdW5jdGlvbiBtZXJnZTxUPihcbiAgLi4uYXJyOiBBcnJheTxQdXNoLkNvbnZlcnRpYmxlPFQ+PlxuKTogUHVzaC5PYnNlcnZhYmxlPFQ+O1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlKC4uLmFycjogYW55KTogUHVzaC5PYnNlcnZhYmxlIHtcbiAgaWYgKGFyci5sZW5ndGggPCAxKSB7XG4gICAgdGhyb3cgRXJyb3IoYE11c3QgcHJvdmlkZSBhdCBsZWFzdCBvbmUgb2JzZXJ2YWJsZSB0byBtZXJnZWApO1xuICB9XG5cbiAgY29uc3Qgb2JzZXJ2YWJsZXM6IFB1c2guT2JzZXJ2YWJsZVtdID0gYXJyLm1hcChmcm9tKTtcbiAgaWYgKG9ic2VydmFibGVzLmxlbmd0aCA9PT0gMSkgcmV0dXJuIG9ic2VydmFibGVzWzBdO1xuXG4gIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzKSA9PiB7XG4gICAgbGV0IGNvbXBsZXRlZCA9IDA7XG5cbiAgICBjb25zdCBzdWJzY3JpcHRpb25zID0gb2JzZXJ2YWJsZXNcbiAgICAgIC5tYXAoKG9ic2VydmFibGUpID0+IHtcbiAgICAgICAgcmV0dXJuIG9icy5jbG9zZWRcbiAgICAgICAgICA/IG51bGxcbiAgICAgICAgICA6IGludGVyY2VwdChvYnNlcnZhYmxlLCBvYnMsIHtcbiAgICAgICAgICAgICAgY29tcGxldGUoKSB7XG4gICAgICAgICAgICAgICAgY29tcGxldGVkKys7XG4gICAgICAgICAgICAgICAgaWYgKGNvbXBsZXRlZCA+PSBvYnNlcnZhYmxlcy5sZW5ndGgpIG9icy5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKChpdGVtKTogaXRlbSBpcyBQdXNoLlN1YnNjcmlwdGlvbiA9PiBCb29sZWFuKGl0ZW0pKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IHN1YnNjcmlwdGlvbiBvZiBzdWJzY3JpcHRpb25zKSB7XG4gICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH07XG4gIH0pO1xufVxuIl19
;