npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

through2-buffer

v1.0.0

Published

A simple through2 stream that buffers up a certain amount of data before passing anything through

Downloads

6

Readme

through2-buffer

A simple 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.

The 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.

License

WTFPL or CC0, whichever you prefer. A donation and/or attribution are appreciated, but not required.

Donate

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.

Contributing

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 lib/.

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.

Usage

Please be careful not to require the module as Buffer or 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);

API

through2Buffer(bufferSize)

Creates and returns a new through2-buffer stream. Like all Node.js streams, this stream is single-use.

  • bufferSize: The amount of bytes to buffer before switching into flowing mode.