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
text/typescript
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 });
});