UNPKG

sflow

Version:

sflow is a powerful and highly-extensible library designed for processing and manipulating streams of data effortlessly. Inspired by the functional programming paradigm, it provides a rich set of utilities for transforming streams, including chunking, fil

27 lines (24 loc) 713 B
import type { AsyncOrSync } from "ts-essentials"; /** unwrap promises of readable stream */ export function unpromises<T>( promise: AsyncOrSync<ReadableStream<T>>, ): ReadableStream<T> { const tr = new TransformStream<T, T>(); (async () => { const s = await promise; await s.pipeTo(tr.writable); })() .catch((error) => { tr.readable.cancel(error).catch(() => { throw error; }); }) .then(); return tr.readable; } /** unwrap promises of readable stream */ export function unpromisesFn<Args extends unknown[], T>( fn: (...args: Args) => Promise<ReadableStream<T>>, ): (...args: Args) => ReadableStream<T> { return (...args: Args) => unpromises(fn(...args)); }