iter-tools-es
Version:
The iterable toolbox
27 lines (22 loc) • 644 B
JavaScript
const {
asyncIterableCurry
} = require('../../internal/async-iterable.js');
const {
__asyncSpliterate
} = require('../$spliterate/async-spliterate.js');
async function* asyncPredicateSpliterator(split, {
predicate
}, source) {
let i = 0;
for await (const value of source) {
yield (await predicate(value, i++)) ? split : value;
}
}
function __asyncSplitWhen(source, predicate) {
return __asyncSpliterate(source, asyncPredicateSpliterator, {
predicate
});
}
exports.__asyncSplitWhen = __asyncSplitWhen;
const asyncSplitWhen = /*#__PURE__*/asyncIterableCurry(__asyncSplitWhen);
exports.asyncSplitWhen = asyncSplitWhen;