sfcode An Online Competing and Development Environment

from2

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

# Usage

## <tt>stream = from2([opts], read)</tt>

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)

## <tt>stream = from2.obj([opts], read)</tt>

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

## <tt>createStream = from2.ctor([opts], read)</tt>

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.

# License

MIT. See LICENSE.md for details.