mergeReadableStreams

import { mergeReadableStreams } from "jsr:@ende/streams";

function

function mergeReadableStreams<T>(...streams: ReadableStream<T>[]): ReadableStream<T>

Merge multiple streams into a single one, not taking order into account. If a stream ends before other ones, the other will continue adding data, and the finished one will not add any more data.

...streams: ReadableStream<T>[]

An iterable of ReadableStreams to merge.

Returns

A ReadableStream that will emit the merged chunks.

Example: Merge 2 streams

import { mergeReadableStreams } from "@ende/streams/merge-readable-streams";
import { assertEquals } from "@ende/assert";

const stream1 = ReadableStream.from([1, 2]);
const stream2 = ReadableStream.from([3, 4, 5]);

const mergedStream = mergeReadableStreams(stream1, stream2);
const merged = await Array.fromAsync(mergedStream);
assertEquals(merged.toSorted(), [1, 2, 3, 4, 5]);

Example: Merge 3 streams

import { mergeReadableStreams } from "@ende/streams/merge-readable-streams";
import { assertEquals } from "@ende/assert";

const stream1 = ReadableStream.from([1, 2]);
const stream2 = ReadableStream.from([3, 4, 5]);
const stream3 = ReadableStream.from([6]);

const mergedStream = mergeReadableStreams(stream1, stream2, stream3);
const merged = await Array.fromAsync(mergedStream);
assertEquals(merged.toSorted(), [1, 2, 3, 4, 5, 6]);

Source