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
32 lines (29 loc) • 812 B
text/typescript
import { sflow } from "./sflow";
export function rangeStream(
minInclusive: number,
maxExclusive: number,
): ReadableStream<number>;
export function rangeStream(maxExclusive: number): ReadableStream<number>;
export function rangeStream(...args: number[]) {
const [min, max]: [number, number] =
args[1] != null ? [args[0], args[1]] : [0, args[0]];
let i = min;
return new ReadableStream(
{
pull: (ctrl) => {
ctrl.enqueue(i);
if (++i >= max) ctrl.close();
},
},
{ highWaterMark: 0 }, //lazy
);
}
export function rangeFlow(
minInclusive: number,
maxExclusive: number,
): sflow<number>;
export function rangeFlow(maxExclusive: number): sflow<number>;
export function rangeFlow(...args: number[]) {
// @ts-ignore
return sflow(rangeStream(...args));
}