Skip to content
This repository has been archived by the owner on Jul 20, 2023. It is now read-only.

strong-roots-capital/aggregating-stream

Repository files navigation

aggregating-stream Build status npm version codecov

Transform stream that aggregates elements into larger chunks

Install

npm install @strong-roots-capital/aggregating-stream

Use

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

Index

Functions


Functions

aggregatingStream

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:

I

O

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