0.0.20 • Published 10 months ago
keyv-cached-with v0.0.20
keyv-cached-with
HOF(High order function) to cache a function with keyv
Usage
import Keyv from "keyv";
import { KeyvCachedWith } from "keyv-cached-with";
it("works in full-args call", async () => {
let i = 0;
const kv = new Keyv();
const fn1 = KeyvCachedWith(kv, async (a: number) => `${a}/${++i}`) satisfies (
a: number
) => Promise<string>;
expect(await fn1(1)).toBe("1/1");
expect(await fn1(5)).toBe("5/2");
expect(await fn1(1)).toBe("1/1");
const fn2 = KeyvCachedWith(kv, async (a: number) => `${a}/${++i}`);
expect(await fn2(1)).toBe("1/1");
expect(await fn2(5)).toBe("5/2");
expect(await fn2(1)).toBe("1/1");
});
it("works with curry", async () => {
const CachedWith = KeyvCachedWith(new Keyv());
let i = 0;
const fn2 = CachedWith((a: number) => `${a}/${++i}`) satisfies (
a: number
) => Promise<string>;
expect(await fn2(2)).toBe("2/1");
expect(await fn2(5)).toBe("5/2");
expect(await fn2(2)).toBe("2/1"); // use cache
// fn3's content is same with fn2
const fn3 = CachedWith((a: number) => `${a}/${++i}`) satisfies (
a: number
) => Promise<string>;
expect(await fn3(2)).toBe("2/1"); // use cache
expect(await fn3(5)).toBe("5/2"); // use cache
expect(await fn3(6)).toBe("6/3"); // eval
// fn4's content is different
const fn4 = CachedWith((a: number) => `${a}/${++i}` + "".trim());
expect(await fn4(2)).toBe("2/4"); // use cache
expect(await fn4(5)).toBe("5/5");
expect(await fn4(2)).toBe("2/4"); // use cache
});
0.0.20
10 months ago
0.0.19
10 months ago
0.0.18
11 months ago
0.0.17
11 months ago
0.0.16
11 months ago
0.0.15
12 months ago
0.0.14
12 months ago
0.0.13
12 months ago
0.0.12
1 year ago
0.0.11
1 year ago
0.0.10
1 year ago
0.0.9
1 year ago
0.0.8
1 year ago
0.0.6
1 year ago
0.0.5
1 year ago
0.0.4
1 year ago
0.0.3
1 year ago
0.0.2
1 year ago