node package manager
Stop writing boring code. Discover, share, and reuse within your team. Create a free org »

bufferstreams

BufferStreams

NPM version Build Status Dependency Status devDependency Status Coverage Status Code Climate

bufferstreams abstracts streams to allow you to deal with their whole content in a single buffer when it becomes necessary (by example: a legacy library that do not support streams).

It is not a good practice, just some glue. Using bufferstreams means:

  • there is no library dealing with streams for your needs
  • you filled an issue to the wrapped library to support streams

bufferstreams can also be used to control the whole stream content in a single point of a streaming pipeline for testing purposes.

Usage

Install the npm module:

npm install bufferstreams --save

Then, in your scripts:

var fs = require('fs');
var bufferstreams = require('bufferstreams');
 
fs.createReadStream('input.txt')
  .pipe(new bufferstreams(function(err, buf, cb) {
 
    // err will be filled with an error if the piped in stream emits one.
    if(err) {
      throw err;
    }
 
    // buf will contain the whole piped in stream contents
    buf = Buffer(buf.toString('utf-8').replace('foo', 'bar'));
 
    // cb is a callback to pass the result back to the piped out stream
    // first argument is an error that will be emitted if any
    // the second argument is the modified buffer
    cb(null, buf);
 
  }))
  .pipe(fs.createWriteStream('output.txt'));

Note that you can use bufferstreams with the objectMode option. In this case, the given buffer will be an array containing the streamed objects:

new BufferStreams({objectMode: true}, myCallback);

API

Stream : BufferStreams([options], callback)

options

options.objectMode

Type: Boolean Default value: false

Use if piped in streams are in object mode. In this case, an array of the buffered will be transmitted to the callback function.

options.*

bufferstreams inherits of Stream.Duplex, the options are passed to the parent constructor so you can use it's options too.

callback(err, buf, cb)

Type: Function, required.

A function to handle the buffered content.

Stats

NPM NPM

Contributing

Feel free to pull your code if you agree with publishing it under the MIT license.