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 source = (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.source(source),
pull.collect((err, values) => {
console.log(values)
})
)
API
toPull.source(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.transform(transform)
A transform
is a function that takes an iterable to read from, and returns 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.transform(passThrough),
pull.collect((err, chunks) => {
console.log(err, chunks)
})
)
toPull.sink(sink)
Convert a sink
to a pull stream sink. A sink
is a function that takes an async iterable and consumes some/all of it.
const toPull = require('async-iterator-to-pull-stream')
const pull = require('pull-stream')
pull(
pull.values([1, 2, 3]),
toPull.sink(async source => {
for await (const value of source) {
console.log(value)
}
})
)
toPull.duplex(duplex)
Convert a duplex
to a pull stream duplex. A duplex
is just an object with two properties, sink
(a function that takes an async iterable) and source
(an async iterable).
Contribute
Feel free to dive in! Open an issue or submit PRs.
License
MIT © Alan Shaw