stream-to-it

Convert Node.js streams to streaming iterables

Usage no npm install needed!

<script type="module">
  import streamToIt from 'https://cdn.skypack.dev/stream-to-it';
</script>

README

stream-to-it

Build Status dependencies Status JavaScript Style Guide

Convert Node.js streams to streaming iterables

Install

npm i stream-to-it

Usage

const toIterable = require('stream-to-it')

Convert readable stream to source iterable

const readable = fs.createReadStream('/path/to/file')
// Node.js streams are already async iterable so this is just s => s
const source = toIterable.source(readable)

for await (const chunk of source) {
  console.log(chunk.toString())
}

Also works with browser ReadableStream:

const res = fetch('http://example.org/file.jpg')

for await (const chunk of toIterable.source(res.body)) {
  console.log(chunk.toString())
}

Convert writable stream to sink iterable

const pipe = require('it-pipe')

const source = [Buffer.from('Hello '), Buffer.from('World!')]
const sink = toIterable.sink(fs.createWriteStream('/path/to/file'))

await pipe(source, sink)

Convert transform stream to transform iterable

const { Transform } = require('stream')

const output = await pipe(
  [true, false, true, true],
  toIterable.transform(new Transform({ // Inverter transform :)
    transform (chunk, enc, cb) {
      cb(null, !chunk)
    }
  })),
  // Collect and return the chunks
  source => {
    const chunks = []
    for await (chunk of source) chunks.push(chunk)
    return chunks
  }
)

console.log(output) // [ false, true, false, false ]

API

const toIterable = require('stream-to-it')

toIterable.source(readable): Function

Convert a Readable stream or a browser ReadableStream to a source iterable.

toIterable.sink(writable): Function

Convert a Writable stream to a sink iterable.

toIterable.transform(transform): Function

Convert a Transform stream to a transform iterable.

toIterable.duplex(duplex): { sink: Function, source: Function }

Convert a Duplex stream to a duplex iterable.

Related

  • it-to-stream Convert streaming iterables to Node.js streams
  • it-pipe Utility to "pipe" async iterables together

Contribute

Feel free to dive in! Open an issue or submit PRs.

License

MIT © Alan Shaw