Swap-Aggregator-Subgraph/node_modules/pull-stream/sinks/reduce.js
2022-07-03 07:27:35 +05:30

23 lines
521 B
JavaScript

'use strict'
var drain = require('./drain')
module.exports = function reduce (reducer, acc, cb ) {
if(!cb) cb = acc, acc = null
var sink = drain(function (data) {
acc = reducer(acc, data)
}, function (err) {
cb(err, acc)
})
if (arguments.length === 2)
return function (source) {
source(null, function (end, data) {
//if ended immediately, and no initial...
if(end) return cb(end === true ? null : end)
acc = data; sink(source)
})
}
else
return sink
}