JSPM

async-iterator-to-pull-stream

1.3.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2489
  • Score
    100M100P100Q121421F
  • License MIT

Convert a (async) iterator to a pull stream

Package Exports

  • async-iterator-to-pull-stream

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (async-iterator-to-pull-stream) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

async-iterator-to-pull-stream

Build Status dependencies Status

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) // 1, 2, 3, 4, 5
  })
)

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')

// A "pass through stream" that reads from the `source` iterable and returns an
// iterable (a generator in this case) that yields the same data.
const passThrough = source => (async function * () {
  for await (const chunk of source) {
    yield chunk // here we _could_ change the chunk or buffer it or whatever
  }
})()

pull(
  pull.values([1, 2, 3]),
  toPull.transform(passThrough),
  pull.collect((err, chunks) => {
    console.log(err, chunks) // logs: undefined, [1, 2, 3]
  })
)

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) // logs: 1 then 2 then 3
    }
  })
)

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