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

throughout

v0.0.0

Published

apply a through stream to the output side of another through stream

Downloads

4,296

Readme

throughout

Apply a through stream to the output side of another through stream, preserving the first stream as input in the returned stream.

build status

browser support

example

var through = require('through');
var throughout = require('throughput');

var doubler = through(function (buf) {
    var dbuf = new Buffer(buf.length * 2);
    for (var i = 0; i < dbuf.length; i++) {
        dbuf[i] = buf[Math.floor(i/2)];
    }
    this.queue(dbuf);
});

var counter = through(
    function (buf) {
        this._count = (this._count || 0) + buf.length;
    },
    function () {
        this.queue(this._count + '\n');
        this.queue(null);
    }
);

process.stdin
    .pipe(throughout(doubler, counter))
    .pipe(process.stdout)
;

rationale

If you want to transform just the output side of a through stream, this is actually somewhat difficult and it's not immediately obvious why something like:

var duplexer = require('duplexer');

function filterOutput (a, b) {
    a.pipe(b);
    return duplexer(a, b);
}

shouldn't just work. The worst part is that it does work, until you try to pipe the results to a slow endpoint that will throttle with pause and resume.

The problem is that both duplexer and .pipe() will handle pause and resume in a mutually exclusive way that will cause the stream to hang indefinitely if a slow downstream consumer ever triggers a pause.

If you try to use event-stream's .pipeline() function you will get the same problem.

methods

var throughout = require('throughout');

var c = throughout(a, b)

Pipe the output of a through stream a into the input of a through stream b, returning a new stream c that writes its input to a and forwards the output from b.

install

With npm do:

npm install throughout

license

MIT