stream-to-it
Convert Node.js streams to streaming iterables
About
Seamlessly use Node.js streams with it-pipe
and friends.
Example - Convert readable stream to source iterable
import fs from 'node:fs'
import * as toIterable from 'stream-to-it'
const readable = fs.createReadStream('/path/to/file')
const source = toIterable.source<Buffer>(readable)
for await (const chunk of source) {
console.log(chunk.toString())
}
Also works with browser ReadableStream
:
import * as toIterable from 'stream-to-it'
const res = await fetch('http://example.org/file.jpg')
if (res.body == null) {
throw new Error('Body was not set')
}
for await (const chunk of toIterable.source(res.body)) {
console.log(chunk.toString())
}
Example - Convert writable stream to sink iterable
import fs from 'node:fs'
import { pipe } from 'it-pipe'
import * as toIterable from 'stream-to-it'
const source = [Buffer.from('Hello '), Buffer.from('World!')]
const sink = toIterable.sink(fs.createWriteStream('/path/to/file'))
await pipe(source, sink)
Example - Convert transform stream to transform iterable
import fs from 'node:fs'
import { Transform } from 'node:stream'
import { pipe } from 'it-pipe'
import * as toIterable from 'stream-to-it'
const output = await pipe(
[true, false, true, true],
toIterable.transform(new Transform({
transform (chunk, enc, cb) {
cb(null, !chunk)
}
})),
async source => {
const chunks = []
for await (const chunk of source) chunks.push(chunk)
return chunks
}
)
console.log(output)
Related
it-to-stream
Convert streaming iterables to Node.js streamsit-pipe
Utility to "pipe" async iterables together
Install
$ npm i stream-to-it
API Docs
License
Licensed under either of
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.