UNPKG

axax

Version:

A library of async iterator extensions for JavaScript including ```map```, ```reduce```, ```filter```, ```flatMap```, ```pipe``` and [more](https://github.com/jamiemccrindle/axax/blob/master/docs/API.md#functions).

38 lines (37 loc) 1.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var subject_1 = require("./subject"); var toCallbacks_1 = require("./toCallbacks"); function spanAll(predicate) { return function inner(source) { var done = false; var spanSubject = new subject_1.Subject(); spanSubject.finally(function () { done = true; }); var currentSubject = new subject_1.Subject(); spanSubject.onNext(currentSubject.iterator); toCallbacks_1.toCallbacks(function (result) { if (done) { throw new toCallbacks_1.StopError(); } if (result.done) { currentSubject.onCompleted(); spanSubject.onCompleted(); return Promise.resolve(); } if (predicate(result.value)) { currentSubject.onCompleted(); currentSubject = new subject_1.Subject(); spanSubject.onNext(currentSubject.iterator); } else { currentSubject.onNext(result.value); } // not handling back pressure at the moment return Promise.resolve(); })(source); return spanSubject.iterator; }; } exports.spanAll = spanAll;