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

66 lines (48 loc) 1.59 kB
import { sleep } from "./utils"; import sflow from "./index"; import { toLatests } from "./toLatest"; it("Get the latest value", async () => { const ret = toLatests(sflow([1, 2, 3]) .forEach(async (e) => { await sleep(10); })) // wait for first emit expect(await ret.latest).toEqual(1); await sleep(100) expect(await ret.latest).toEqual(3); }); it("works number", async () => { const ret = toLatests(sflow([1, 2, 3]) .forEach(async (e) => { await sleep(10); })) // wait for first emit expect(await ret.latest).toEqual(1); expect(await ret.next).toEqual(2); expect(await ret.latest).toEqual(2); expect(await ret.next).toEqual(3); expect(await ret.latest).toEqual(3); expect(await ret.next).toEqual(undefined); expect(await ret.latest).toEqual(3); expect(await ret.next).toEqual(undefined); }); it("works obj", async () => { const ret = toLatests(sflow([ { b: 1 }, { a: { b: { c: 2 } } }, { c: 3 }, ]) .forEach(async () => { await sleep(10); })) // wait for first emit expect(await ret.latest).toEqual({ b: 1 }); // @ts-ignore expect(await ret.next).toEqual({ a: { b: { c: 2 } } }); expect(await ret.latest).toEqual({ a: { b: { c: 2 } } }); expect(await ret.next).toEqual({ c: 3 }); expect(await ret.latest).toEqual({ c: 3 }); expect(await ret.next).toEqual(undefined); expect(await ret.next).toEqual(undefined); expect(await ret.latest).toEqual({ c: 3 }); });