munchy (@xarc/core-utils-munchy)
A producer Node stream for draining different data, including Readable streams.
$ npm i --save @xarc/core-utils-munchy
examples:
const Munchy = require("@xarc/core-utils-munchy");
const munchy = new Munchy();
munchy.munch("hello world", fs.createReadStream("blah"), "bye bye");
munchy.munch(null); // null terminates it
munchy.pipe(process.stdout);
const Munchy = require("@xarc/core-utils-munchy");
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);
API
constructor
Munchy(opts, ...sources);
name | description |
---|---|
opts |
options for Node Readable stream |
sources |
variadic params of sources to munch |
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 };
}
});
munch
munchy.munch(...sources);
name | description |
---|---|
sources |
variadic params of sources to munch |
-
Returns
this
. -
To end and terminate
munchy
stream:
munchy.munch(null);
Events
Munchy emits the following custom events:
name | description | payload |
---|---|---|
draining |
starting to drain a stream source. | { stream } |
drained |
done draining a stream source. | { stream } |
munched |
all sources munched, ready for more. |
ie:
munchy.on("draining", ({ stream }) => {});
Demos
- Hapi - https://github.com/jchip/hapi-stream-sample
- Koa - https://github.com/jchip/koa-stream-sample
- express - https://github.com/jchip/express-stream-sample
License
Licensed under the Apache License, Version 2.0