Skip to content
Pass through sequences with minimum length.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

keep-sequences-stream 🔍

Pass through sequences with minimum length.

// minimum length is 3
[1, 2, 2, 2, 2, 3, 3, 1, 1, 1, 3] // input
[   2, 2, 2, 2,       1, 1, 1   ] // output

npm version build status ISC-licensed chat on gitter support me on Patreon


npm install keep-sequences-stream


keepSequencesStream([n], [comparator])

Returns a duplex stream in object mode.

n is the sequence length, with 3 as default. Default comparator is ===, but you can pass any function that returns true or false.


const keepSequencesStream = require('keep-sequences-stream')

let s = keepSequencesStream(2)
for (let x of [3, -1, -1, 2, -1]) s.write(x)
s.on('data', console.log) // `-1` will be logged twice

Things to keep in mind

Because comparator can implicate equality for values that may not be strictly equal (===), there must be an array of values in the current sequence. So for n = 1000, up to 1000 elements will be kept in memory, which kind of defeats the purpose of a stream.

Just comparing strictly (===) would be more memory-efficient, as the last equal value could just be emitted n times.


If you have a question, found a bug or want to propose a feature, have a look at the issues page.

You can’t perform that action at this time.