@strong-roots-capital/publishable v2.0.1
publishable

Publishable (Readable) stream
Motivation
This package is an experiment to provide a Readable-stream with push functionality.
But wait, push() is already the cornerstone of Readable streams!
Unfortunately the true push functionality is only available when all
data is known (and buffered!) before the Readable is piped to a sink,
otherwise you'll get a read() not implemented error. If either of
these conditions is impossible, you're required to find a way to offer
data up for the read() function, which at times is unwieldy, if only
conceptually.
Sometimes it is easier to publish chunks when they become known,
e.g. with EventEmitters or Observables. Publishable extends an
ordinary Readable stream to offer publish(chunk: T | null) in
stead of read(size?: number).
Install
npm install @strong-roots-capital/publishableUse
import Publishable from '@strong-roots-capital/publishable'
const source = new Publishable()
const sink = new Writable({
write(chunk: Buffer, _: string, callback: any) {
console.log(chunk.toString())
callback()
}
})
source.pipe(sink)
source.publish('hi there')
source.publish('face here')
source.publish(null)Note that objectMode is supported as are all other
_Readable.ReadableOptions
const source = new Publishable<T>({objectMode: true})Generics are accepted to a limited extent (they do not carry over to
any piped streams but can be used to limit what is published through
a Publishable).
Related
For more experiments with streams, check out the following projects
Do note they are not compatible with node's built-in streams.