Sign inDemoInstall


Package Overview
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies



Convenience wrapper for ReadableStream, with an API lifted from "from" and "through2"

Version published
Weekly downloads
decreased by-2.33%
Install size
187 kB
Weekly downloads

Package description

What is from2?

The 'from2' npm package is a utility for creating readable streams using a simple API. It is particularly useful for stream-based operations where data needs to be generated or transformed on the fly. The package simplifies the process of creating custom readable streams by handling the underlying Node.js stream mechanics.

What are from2's main functionalities?

Creating a readable stream from a data source

This feature allows you to create a readable stream that emits data from an array. The stream reads data from the array and pushes it to the consumer until there's no data left, at which point it signals the end of the stream.

const from2 = require('from2');

const data = ['hello', 'world'];
const stream = from2(function(size, next) {
  if (data.length === 0) return next(null, null);
  next(null, data.shift());

stream.on('data', (chunk) => {
stream.on('end', () => {
  console.log('Stream ended');

Creating a stream from an asynchronous data source

This example demonstrates how to create a readable stream that reads data from a file asynchronously. The stream uses the 'fs.readFile' method to read data and then pushes it to the stream consumer.

const from2 = require('from2');
const fs = require('fs');

const stream = from2(function(size, next) {
  fs.readFile('/path/to/file.txt', (err, data) => {
    if (err) return next(err);
    next(null, data);

stream.on('data', (chunk) => {
stream.on('end', () => {
  console.log('Stream ended');

Other packages similar to from2



from2 Flattr this!experimental

from2 is a high-level module for creating readable streams that properly handle backpressure.

Convience wrapper for readable-stream's ReadableStream base class, with an API lifted from from and through2.



stream = from2([opts], read)

Where opts are the options to pass on to the ReadableStream constructor, and read(size, next) is called when data is requested from the stream.

  • size is the recommended amount of data (in bytes) to retrieve.
  • next(err) should be called when you're ready to emit more data.

For example, here's a readable stream that emits the contents of a given string:

var from = require('from2')

function fromString(string) {
  return from(function(size, next) {
    // if there's no more content
    // left in the string, close the stream.
    if (string.length <= 0) return next(null, null)

    // Pull in a new chunk of text,
    // removing it from the string.
    var chunk = string.slice(0, size)
    string = string.slice(size)

    // Emit "chunk" from the stream.
    next(null, chunk)

// pipe "hello world" out
// to stdout.
fromString('hello world').pipe(process.stdout)

stream = from2.obj([opts], read)

Shorthand for from2({ objectMode: true }, read).

createStream = from2.ctor([opts], read)

If you're creating similar streams in quick succession you can improve performance by generating a stream constructor that you can reuse instead of creating one-off streams on each call.

Takes the same options as from2, instead returning a constructor which you can use to create new streams.

See Also

  • from2-array - Create a from2 stream based on an array of source values.
  • from2-string - Create a stream from a string. Sugary wrapper around from2.


MIT. See for details.



Last updated on 15 Aug 2016

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.


Related posts

SocketSocket SOC 2 Logo


  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc