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.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const subject_1 = require("./subject"); const toCallbacks_1 = require("./toCallbacks"); function spanAll(predicate) { return function inner(source) { let done = false; const spanSubject = new subject_1.Subject(); spanSubject.finally(() => { done = true; }); let currentSubject = new subject_1.Subject(); spanSubject.onNext(currentSubject.iterator); toCallbacks_1.toCallbacks(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;