rindle
v3.0.0
Published
Collection of utilities for working with Streams
Readme
rindle
Collection of utilities for working with Streams.
Description
This is a collection of functions that operate on streams to encapsulate some of the tasks I usually have to do in my project. I'll be adding more as I encounter more patterns.
Installation
Install rindle by running:
$ npm install --save rindleDocumentation
rindle.wait(stream)
This functions listens for the following events:
close.end.done.
If those events pass any argument when being emitted, you'll be able to access them as arguments to the callback.
Kind: static method of rindle
Summary: Wait for a stream to close
Access: public
| Param | Type | Description | | --- | --- | --- | | stream | Stream | stream |
Example
var fs = require('fs');
var rindle = require('rindle');
var input = fs.createReadStream('foo/bar');
var output = fs.createWriteStream('foo/baz');
input.pipe(output);
try {
await rindle.wait(output);
console.log('The output stream was closed!');
}(error) {
if (error) throw error;
}rindle.extract(stream)
Notice this function only extracts the remaining data from the stream.
Kind: static method of rindle
Summary: Extract data from readable stream
Access: public
| Param | Type | Description | | --- | --- | --- | | stream | StreamReadable | stream |
Example
var fs = require('fs');
var rindle = require('rindle');
var input = fs.createReadStream('foo/bar');
try {
const data = await rindle.extract(input);
console.log('The file contains: ' + data);
} catch (error) {
if (error) throw error;
}rindle.bifurcate(stream, output1, output2)
The returned promised gets resolved when both output streams close.
Kind: static method of rindle
Summary: Bifurcate readable stream to two writable streams
Access: public
| Param | Type | Description | | --- | --- | --- | | stream | StreamReadable | input stream | | output1 | StreamWritable | first output stream | | output2 | StreamWritable | second output stream |
Example
var fs = require('fs');
var rindle = require('rindle');
var input = fs.createReadStream('foo/bar');
var output1 = fs.createWriteStream('foo/baz');
var output2 = fs.createWriteStream('foo/qux');
try {
await rindle.bifurcate(input, output1, output2,
console.log('All files written!');
} (error) {
if (error) throw error;
}rindle.pipeWithEvents(stream, output, events) ⇒ StreamReadable
Kind: static method of rindle
Summary: Pipe a stream along with certain events
Returns: StreamReadable - resulting stream
Access: public
| Param | Type | Description | | --- | --- | --- | | stream | StreamReadable | input stream | | output | StreamWritable | output stream | | events | Array.<String> | events to pipe |
Example
var rindle = require('rindle');
rindle.pipeWithEvents(input, output, [
'response',
'request'
]);rindle.onEvent(stream, event)
Kind: static method of rindle
Summary: Wait for a stream to emit a certain event
Access: public
| Param | Type | Description | | --- | --- | --- | | stream | Stream | stream | | event | String | event name |
Example
var rindle = require('rindle');
var fs = require('fs');
try {
const fd = await rindle.onEvent(fs.createReadStream('foo/bar'), 'open');
console.log('The "open" event was emitted');
console.log(fd);
} (error) {
if (error) throw error;
}Support
If you're having any problem, please raise an issue on GitHub and I'll be happy to help.
Tests
Run the test suite by doing:
$ gulp testContribute
- Issue Tracker: github.com/jviotti/rindle/issues
- Source Code: github.com/jviotti/rindle
Before submitting a PR, please make sure that you include tests, and that jshint runs without any warning:
$ gulp lintLicense
The project is licensed under the MIT license.

