1.3.1 • Published 11 months ago

monoflux v1.3.1

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago
const flux = ... // a Flux<string>, monoflux's object for an asyncronous stream
for await (const message of flux) {
    console.log(message) // happens asynchronously!
}

Install

npm install monoflux

Usage examples

Creating a Flux

const flux1 = Flux.fromGeneratorFunction(async function*() {
  yield 1
  yield 2
})

or

const flux1 = Flux.fromReadableStream(/* a ReadableStream */)

Transforming a Flux

chatMessages // a Flux<Message>
  .filter(chatMessage => chatMessage.recipient === 'david') // a Flux<Message>
  .map(chatMessage => chatMessage.text) // a Flux<string>

Doing stuff with events

const chatMessages // = a Flux<string>
for await (const message of chatMessages) {
    console.log(message) // happens asynchronously!
}
// and Flux can do much, much more...

For collecting all events in an array, you can just treat the Flux like a promise, i.e.

const fluxOfStrings // = a Flux<string>
const arrayOfStrings = await fluxOfStrings // becomes a string[]

or

fluxOfStrings // = a Flux<string>
  .then(arrayOfStrings => /* do stuff */)

Consuming a streaming http response

const reader = new TextDecoder()
const {body} = await fetch(/* ... */)
const flux = Flux.fromReadableStream(body) // a Flux<Uint8Array>, monoflux's object for an asyncronous stream
  .map(d => reader.decode(d)) // a Flux<string>
for await (const message of flux) {
    console.log(message) // happens asynchronously!
}

Feedback

If something is missing from this library that makes it not fit your use case today, or if you find a bug that spoils it for you, don't hesitate to create an Issue (just a stub is better than nothing!) or a Pull Request. At this moment, the library is not at 1.0 yet and is organically growing to suit the use cases we run into first! Any feedback and/or contribution is sincerely appreciated.

License

The content of this project is licensed under the MIT license.

1.2.0

11 months ago

1.1.0

11 months ago

1.3.1

11 months ago

1.3.0

11 months ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago