UNPKG

@johngw/stream

Version:

Reactive programming tools using the WHATWG Streams API.

36 lines 1.21 kB
import { all } from '@johngw/stream-common/Async'; import { isCancellableSource, isPullableSource, isStartableSource, } from '@johngw/stream-common/Stream'; /** * A collection of `UnderlyingSource`s that implement the `UnderlyingSource`. * * @group Sources * @example * ``` * new ReadableStream( * new SourceComposite([ * { start: (controller) => controller.enqueue('Hello') }, * { start: (controller) => controller.enqueue('World') }, * ]) * ) * ``` */ export class SourceComposite { #cancellableSources; #pullableSources; #startableSources; constructor(sources) { this.#cancellableSources = sources.filter(isCancellableSource); this.#pullableSources = sources.filter(isPullableSource); this.#startableSources = sources.filter(isStartableSource); } async cancel(reason) { await all(this.#cancellableSources, (source) => source.cancel(reason)); } async pull(controller) { await all(this.#pullableSources, (source) => source.pull(controller)); } async start(controller) { await all(this.#startableSources, (source) => source.start(controller)); } } //# sourceMappingURL=SourceComposite.js.map