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

65 lines (62 loc) 1.75 kB
import Keyv from "keyv"; import { sf } from "."; import { cacheSkips } from "./cacheSkips"; it("works", async () => { const kv = new Keyv<any>({ ttl: 10e3 }); expect(await sf([4, 3, 2, 1]).by(cacheSkips(kv, "test")).toArray()).toEqual([ 4, 3, 2, 1, ]); expect( await sf([5, 4, 3, 2, 1]).by(cacheSkips(kv, "test")).toArray() ).toEqual([5]); }); it("works on obj", async () => { const kv = new Keyv<any>({ ttl: 10e3 }); expect( await sf([4, 3, 2, 1]) .map((e) => ({ e })) .by(cacheSkips(kv, "test")) .map(({ e }) => e) .toArray() ).toEqual([4, 3, 2, 1]); expect( await sf([5, 4, 3, 2, 1]) .map((e) => ({ e })) .by(cacheSkips(kv, "test")) .map(({ e }) => e) .toArray() ).toEqual([5]); expect( await sf([6, 5, 4, 3, 2, 1]) .map((e) => ({ e })) .by(cacheSkips(kv, "test")) .map(({ e }) => e) .toArray() ).toEqual([6]); }); it("works on Date", async () => { const kv = new Keyv<any>({ ttl: 10e3 }); expect( await sf([4, 3, 2, 1]) .map((e) => ({ date: new Date(e) })) .by(cacheSkips(kv, "test")) .map(({ date }) => +date) .toArray() ).toEqual([4, 3, 2, 1]); expect(await kv.get("test")).toEqual([{ date: new Date(4).toISOString() }]); expect( await sf([6, 5, 4, 3, 2, 1]) .map((e) => ({ date: new Date(e) })) .by(cacheSkips(kv, "test")) .map(({ date }) => +date) .toArray() ).toEqual([6, 5]); expect(await kv.get("test")).toEqual([{ date: new Date(6).toISOString() }]); expect( await sf([8, 7, 6, 5, 4, 3, 2, 1]) .map((e) => ({ date: new Date(e) })) .by(cacheSkips(kv, "test")) .map(({ date }) => +date) .toArray() ).toEqual([8, 7]); });