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 🙏

© 2025 – Pkg Stats / Ryan Hefner

bacon-node-autopause-line-stream

v1.0.5

Published

Converts a Node.js readable stream to a Bacon stream that emits lines of text, pausing itself every time a line of text is emitted

Readme

This is a package with a function that converts a Node.js readable stream to a Bacon.js stream that a line of text and then pauses itself. You can then call a resume() function to cause the stream to emit another line of text.

This is useful if you have multiple streams and you want to control which one will emit the next line of text rather than having all of them continually emitting lines.

Each value that is emitted from one of these autopause streams is an object with two properties, { line, resume }, where line is the line of text and resume is a function that can be called to cause the stream to emit another line of text.

So if the Node.js readable stream contains two lines of text (separated by a '\n' character), the corresponding Bacon stream will emit a single event, containing a single line of text and a resume function. After calling the resume function, the stream will emit another line of text and a resume function. Calling resume() again will cause the stream to end, because it has no more lines of text to emit.

There is only one instance of a resume() function per stream, and it is included with every event for the sake of convenience and consistency. You can cache the very first instance of the resume() function that is emitted from a stream and use for the entire lifetime of the stream.

Installing

Via npm:

npm install --save bacon-node-autopause-line-stream

Via yarn:

yarn add bacon-node-autopause-line-stream

Using

Here's an example of creating a readable stream from a file and then converting that to a Bacon stream.

const createLineStream = require('bacon-node-autopause-line-stream');
const fs = require('fs');

//Create a autopause bacon line stream
const lineStream = createAutoPauseLineStream(readStream);

//Create an error handler
lineStream.onError(error => console.error(error));

//Output the lines from the text file
lineStream.onValue(({line, resume}) => {
	//Output the line of text
	console.log(line);

	//Tell the stream to resume so that it will emit more lines
	resume();
});

Running the Example

After downloading the source, you can run an example which reads from a file and outputs the contents of that file line by line:

yarn fileExample example/textFile.txt

This command runs the example/fileExample.js file and passes it the text file to read from.

You can replace "example/textFile.txt" with any text file. For example, we could output the example source file:

yarn fileExample example/fileExample.js

Running the Tests

After downloading, install the dependencies:

yarn install

Then run the unit tests:

yarn test

License

This package is licensed under the MIT license.