|  |  | [//]: # ( ) | 
						
						
						
							|  |  | [//]: # (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. | 
						
						
						
							|  |  |  | 
						
						
						
							|  |  | [](https://github.com/nfroidure/bufferstreams/blob/master/LICENSE) | 
						
						
						
							|  |  | [](https://travis-ci.org/nfroidure/bufferstreams) | 
						
						
						
							|  |  | [](https://coveralls.io/r/nfroidure/bufferstreams?branch=master) | 
						
						
						
							|  |  | [](https://npmjs.org/package/bufferstreams) | 
						
						
						
							|  |  | [](https://david-dm.org/nfroidure/bufferstreams) | 
						
						
						
							|  |  | [](https://david-dm.org/nfroidure/bufferstreams#info=devDependencies) | 
						
						
						
							|  |  | [](http://packagequality.com/#?package=bufferstreams) | 
						
						
						
							|  |  | [](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 | 
						
						
						
							|  |  |  | 
						
						
						
							|  |  | [](https://nodei.co/npm/bufferstreams/) | 
						
						
						
							|  |  | [](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)
 | 
						
						
						
							|  |  | 
 |