async-iterator-to-pull-stream
Convert a (async) iterator to a pull stream
Install
npm install async-iterator-to-pull-stream
Usage
const pull = require('pull-stream')
const toPull = require('async-iterator-to-pull-stream')
const iterator = async function * () {
const sourceValues = [1, 2, 3, 4, 5]
for (let i = 0; i < sourceValues.length; i++) {
yield await new Promise(resolve => setTimeout(() => resolve(sourceValues[i])))
}
}
pull(
toPull(iterator()),
pull.collect((err, values) => {
console.log(values)
})
)
API
toPull(iterator)
Convert an async iterator
into a source pull stream. Returns a pull stream that can be used as a source in a pull pipeline.
toPull.through(createIterable)
A "through stream" in async iterator terms is a function that takes an iterable to read from, and returns an iterable that yields (possibly mutated) data.
createIterable
is a function that creates a new iterable. It is passed an iterable - the source to read data from, and should return an iterable that yields (possibly mutated data). e.g.
const toPull = require('async-iterator-to-pull-stream')
const pull = require('pull-stream')
const passThrough = source => (async function * () {
for await (const chunk of source) {
yield chunk
}
})()
pull(
pull.values([1, 2, 3]),
toPull.through(passThrough),
pull.collect((err, chunks) => {
console.log(err, chunks)
})
)
Contribute
Feel free to dive in! Open an issue or submit PRs.
License
MIT © Alan Shaw