|Sven Slootweg ac9f516a79||5 years ago|
|src||5 years ago|
|.gitignore||5 years ago|
|.npmignore||5 years ago|
|README.md||5 years ago|
|gulpfile.js||5 years ago|
|index.js||5 years ago|
|package.json||5 years ago|
|test.js||5 years ago|
through2 stream that buffers up a certain amount of data before passing anything through.
This module generates a simple Transform stream that you can use in any (non-object-mode) pipeline, and that will only do a single thing: buffer up a stream to a certain amount. It's useful for eg. audio/video streams, where you want to have a 'headstart' to prevent underruns if your encoding process stalls for a moment.
through2-buffer will start out in buffering mode, and keep collecting incoming chunks of data until it hits the configured buffer size. At that moment, it switches to flowing mode, outputs the chunks it has collected, and pass through everything that comes afterwards.
Once the stream is in flowing mode, it will never go back to buffering mode; this is to prevent hiccups in the source stream from causing delayed hiccups in the output. You should make sure that your initial buffer is large enough to cover all the hiccups that you will encounter throughout the life of the stream.
My income consists largely of donations for my projects. If this module is useful to you, consider making a donation!
You can donate using Bitcoin, PayPal, Flattr, cash-in-mail, SEPA transfers, and pretty much anything else.
Pull requests welcome. Please make sure your modifications are in line with the overall code style, and ensure that you're editing the files in
src/, not those in
Build tool of choice is
gulp; simply run
gulp while developing, and it will watch for changes.
Be aware that by making a pull request, you agree to release your modifications under the licenses stated above.
Please be careful not to require the module as
buffer! That would cause confusion with the built-in
Buffer type in Node.js.
The following example would keep reading data from
/dev/urandom (and converting it to hexadecimal representation), and buffer 5 MiB of it. After that it will switch into flowing mode and pass everything through to the terminal, including the originally buffered data.
'use strict'; const through2Buffer = require("through2-buffer"); const fs = require("fs"); fs.createReadStream("/dev/urandom", "hex") .pipe(streamBuffer(5 * 1024 * 1024)) /* 5 MiB buffer size */ .pipe(process.stdout);
Creates and returns a new
through2-buffer stream. Like all Node.js streams, this stream is single-use.