npm.io
3.0.1 • Published 5 months ago

rindle

Licence
Apache-2.0
Version
3.0.1
Deps
0
Size
52 kB
Vulns
0
Weekly
0
Stars
4

rindle

npm version dependencies Build Status Build status

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

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.

Keywords