# from2

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

Latest version **2.3.0** (published 2016-08-15) · MIT license · 0 weekly downloads

## Install

```sh
npm install from2
pnpm add from2
yarn add from2
bun add from2
```

## Health

**Score 23/100 (F)** — status: abandoned.

Positive: has types package; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.3.0 |
| Published | 2016-08-15 |
| First published | 2014-02-10 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | separate (@types/from2) |
| Module format | CommonJS |
| Dependencies | 2 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 131 |
| Author | Hugh Kennedy |
| Maintainers | hughsk, mafintosh |
| Keywords | from, stream, readable, pull, convenience, wrapper |

## Links

- npm: https://www.npmjs.com/package/from2
- Repository: https://github.com/hughsk/from2
- Issues: https://github.com/hughsk/from2/issues
- npm.io page: https://npm.io/package/from2

## Dependencies (2)

- [inherits](https://npm.io/package/inherits.md) ^2.0.1
- [readable-stream](https://npm.io/package/readable-stream.md) ^2.0.0

## Alternatives

- [byte-size](https://npm.io/package/byte-size.md) — 2.1M weekly downloads
- [speed-limiter](https://npm.io/package/speed-limiter.md) — 16.0K weekly downloads
- [@powersync/node](https://npm.io/package/@powersync/node.md) — 10.9K weekly downloads
- [@ledgerhq/coin-cardano](https://npm.io/package/@ledgerhq/coin-cardano.md) — 1.0K weekly downloads
- [@jayesol/jayeson.lib.streamfinder](https://npm.io/package/@jayesol/jayeson.lib.streamfinder.md) — 1.0K weekly downloads

## Recent versions

- 2.3.0 (latest) — 2016-08-15
- 2.2.0 — 2016-08-14
- 2.1.1 — 2016-01-27
- 2.1.0 — 2015-07-15
- 2.0.3 — 2015-06-17
- 2.0.2 — 2015-06-16
- 2.0.1 — 2015-06-16
- 2.0.0 — 2015-06-16
- 1.3.0 — 2015-01-11
- 1.2.0 — 2014-08-07
- 1.1.1 — 2014-07-20
- 1.1.0 — 2014-07-19
- 1.0.1 — 2014-07-18
- 1.0.0 — 2014-07-18
- 0.0.0 — 2014-02-10

## README

# from2 [![Flattr this!](https://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=hughskennedy&url=http://github.com/hughsk/from2&title=from2&description=hughsk/from2%20on%20GitHub&language=en_GB&tags=flattr,github,javascript&category=software)[![experimental](http://hughsk.github.io/stability-badges/dist/experimental.svg)](http://github.com/hughsk/stability-badges) #

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

Convience wrapper for
[readable-stream](http://github.com/isaacs/readable-stream)'s `ReadableStream`
base class, with an API lifted from
[from](http://github.com/dominictarr/from) and
[through2](http://github.com/rvagg/through2).

## Usage ##

[![from2](https://nodei.co/npm/from2.png?mini=true)](https://nodei.co/npm/from2)

### `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:

``` javascript
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](https://github.com/binocarlos/from2-array) - Create a from2 stream based on an array of source values.
- [from2-string](https://github.com/yoshuawuyts/from2-string) - Create a stream from a string. Sugary wrapper around from2.

## License ##

MIT. See [LICENSE.md](http://github.com/hughsk/from2/blob/master/LICENSE.md) for details.

---
_Source: https://npm.io/package/from2 · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
