Transform stream that aggregates elements into larger chunks
npm install @strong-roots-capital/aggregating-stream
import { aggregatingStream } from '@strong-roots-capital/aggregating-stream'
const source = new Readable({objectMode: true, read() {}})
const aggregator = aggregatingStream(2, (chunks: number[]) => Math.max(...chunks))
const sink = new Writable({
objectMode: true,
write(chunk: number, _: string, callback: any) {
console.log(chunk)
callback()
}
})
source.pipe(aggregator).pipe(sink
;[1, 2, 3, 4, null].forEach(value => source.push(value))
//=>2,
//=>4
▸ aggregatingStream<I
,O
>(chunksToAggregate: number
, aggregate: function
): Transform
Defined in aggregating-stream.ts:17
Aggregate specified number of received values with aggregating function and push the aggregated result.
Type parameters:
Parameters:
Name | Type | Description |
---|---|---|
chunksToAggregate | number |
number of chunks to aggregate before each push |
aggregate | function |
Function used to aggregate results into a single value |
Returns: Transform