A producer Node stream for draining different data, including Readable streams.
This is an ESM only package.
$ npm i --save munchy
examples:
import fs from "node:fs";
import { Munchy } from "munchy";
const munchy = new Munchy();
munchy.munch("hello world", fs.createReadStream("blah"), "bye bye");
munchy.munch(null); // null terminates it
munchy.pipe(process.stdout);
import fs from "node:fs";
import Munchy from "munchy"; // default export works too
const munchy = new Munchy({}, fs.createReadStream("foo"), fs.createReadStream("bar"));
munchy.munch(fs.createReadStream("blah"), "bye bye", null); // null terminates it
munchy.pipe(process.stdout);
See the full API reference for every option, type, and runtime rule.
Munchy(opts, ...sources);
| name | description |
|---|---|
opts |
options for Node Readable stream, or null |
sources |
variadic params of sources to munch |
opts may be null or omitted entirely, in which case every argument is
treated as a source.
A source can be any of:
| type | behavior |
|---|---|
string / Buffer / Uint8Array |
pushed as is |
Node Readable |
drained, with backpressure applied to the source |
Web ReadableStream |
converted with Readable.fromWeb and drained |
AsyncIterable |
drained one value at a time |
Iterable |
each value pushed |
Promise |
awaited, then handled as the resolved value |
null |
ends the stream |
| anything else | pushed as is (useful with objectMode) |
A rejected Promise or a stream error goes through handleStreamError below.
Munchy specific options:
| name | description |
|---|---|
handleStreamError |
callback to handle error from a stream being drained |
handleStreamError should take the error object and return an object with these fields:
| name | description |
|---|---|
result |
string data to add to the output |
remit |
Set to false and munchy will continue without destroying itself, else it emits the error again and stop processing |
If handleStreamError returns a falsy value, then Munchy will emit the error and destroys itself.
For example:
const munchy = new Munchy({
handleStreamError: err => {
return { result: err.stack, remit: false };
}
});
munchy.munch(...sources);
| name | description |
|---|---|
sources |
variadic params of sources to munch |
Returns this.
To end and terminate munchy stream:
munchy.munch(null);
Munchy emits the following custom events:
| name | description | payload |
|---|---|---|
draining |
starting to drain a stream source. | { stream } |
drained |
done with a stream source, including one recovered by handleStreamError. |
{ stream } |
munched |
all sources munched, ready for more. |
ie:
munchy.on("draining", ({ stream }) => {});
Licensed under the Apache License, Version 2.0