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

33 lines (32 loc) 882 B
/** * Convert a readable stream to it's latest value * * the return object is dynamic updated */ export function toLatests<T>(r: ReadableStream<T>): { latest: Promise<T>, next: Promise<T> } { let latest: T | undefined; let nextPromise = Promise.withResolvers<T>(); r.pipeTo( new WritableStream<T>({ write: (value) => { latest = value; nextPromise.resolve(value); nextPromise = Promise.withResolvers<T>(); }, close: () => { nextPromise.resolve(undefined); } }) ); return { get latest() { if (latest === undefined) { return nextPromise.promise; } return Promise.resolve(latest); }, get next() { return nextPromise.promise; } }; }