stream-chain
Version:
Chain functions as transform streams.
27 lines (22 loc) • 513 B
JavaScript
// @ts-self-types="./fold.d.ts"
;
const {none, flushable} = require('../defs');
const fold = (fn, acc) =>
flushable(value => {
if (value === none) {
// clean up acc
const result = acc;
acc = null;
return result;
}
const result = fn(acc, value);
if (result && typeof result.then == 'function') {
return result.then(result => {
acc = result;
return none;
});
}
acc = result;
return none;
});
module.exports = fold;