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

50 lines (47 loc) 1.12 kB
// snoflow import { nils, sflow } from "./index"; it("async iteratable", async () => { const req = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; const acc = []; for await (const iterator of sflow(req)) { acc.push(iterator); } expect(req).toEqual(acc); }); it("string stream", async () => { expect( await sflow(["asdf"]) .map((e) => e.replace("asdf", "zxcv")) .toOne(), ).toEqual("zxcv"); }); it("works", async () => { await sflow([1, 2, 3]) .buffer(2) .debounce(100) .filter() .map((n) => [String(n)]) .flat() .flatMap((n) => [String(n)]) .tees((s) => s.pipeTo(nils())) // Warn: read a flow with different speed may cause memory leak .limit(1) .map(() => 1) .peek(() => {}) .reduce((a, b) => a + b, 0) .skip(1) .tail(1) .throttle(100) .done(); }); it("works", async () => { expect( await sflow([1, 2, 3, 4]) .map((n) => n * 2) .log() // prints 2, 4, 6, 8 .filter((n) => n > 4) .log() // prints 6, 8 .reduce((a, b) => a + b, 0) .log() // prints 6, 14 .toArray(), ).toEqual([6, 14]); });