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 rindle
Documentation
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 test
Contribute
- 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 lint
License
The project is licensed under the MIT license.
