[//]: # ( ) [//]: # (This file is automatically generated by a `metapak`) [//]: # (module. Do not change it except between the) [//]: # (`content:start/end` flags, your changes would) [//]: # (be overridden.) [//]: # ( ) # bufferstreams > Abstract streams to deal with the whole buffered contents. [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/nfroidure/bufferstreams/blob/master/LICENSE) [![Build status](https://secure.travis-ci.org/nfroidure/bufferstreams.svg)](https://travis-ci.org/nfroidure/bufferstreams) [![Coverage Status](https://coveralls.io/repos/nfroidure/bufferstreams/badge.svg?branch=master)](https://coveralls.io/r/nfroidure/bufferstreams?branch=master) [![NPM version](https://badge.fury.io/js/bufferstreams.svg)](https://npmjs.org/package/bufferstreams) [![Dependency Status](https://david-dm.org/nfroidure/bufferstreams.svg)](https://david-dm.org/nfroidure/bufferstreams) [![devDependency Status](https://david-dm.org/nfroidure/bufferstreams/dev-status.svg)](https://david-dm.org/nfroidure/bufferstreams#info=devDependencies) [![Package Quality](http://npm.packagequality.com/shield/bufferstreams.svg)](http://packagequality.com/#?package=bufferstreams) [![Code Climate](https://codeclimate.com/github/nfroidure/bufferstreams.svg)](https://codeclimate.com/github/nfroidure/bufferstreams) [//]: # (::contents:start) `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](https://npmjs.org/package/bufferstreams): ```sh npm install bufferstreams --save ``` Then, in your scripts: ```js 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: ```js 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](https://nodei.co/npm/bufferstreams.png?downloads=true&stars=true)](https://nodei.co/npm/bufferstreams/) [![NPM](https://nodei.co/npm-dl/bufferstreams.png)](https://nodei.co/npm/bufferstreams/) ## Contributing Feel free to pull your code if you agree with publishing it under the MIT license. [//]: # (::contents:end) # Authors - [Nicolas Froidure](http://insertafter.com/en/index.html) # License [MIT](https://github.com/nfroidure/bufferstreams/blob/master/LICENSE)