Skip to content

Commit b105204

Browse files
committed
Switch to p-memoize
1 parent 9cd5b5c commit b105204

File tree

4 files changed

+26
-24
lines changed

4 files changed

+26
-24
lines changed

bun.lock

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,8 @@
142142
"@gitbook/cache-tags": "workspace:*",
143143
"@sindresorhus/fnv1a": "^3.1.0",
144144
"jwt-decode": "^4.0.0",
145-
"memoizee": "^0.4.17",
146145
"next": "canary",
146+
"p-memoize": "^7.1.1",
147147
"react": "^19.0.0",
148148
"react-dom": "^19.0.0",
149149
"rison": "^0.1.1",
@@ -2281,7 +2281,7 @@
22812281

22822282
"mime-types": ["[email protected]", "", { "dependencies": { "mime-db": "^1.53.0" } }, "sha512-XqoSHeCGjVClAmoGFG3lVFqQFRIrTVw2OH3axRqAcfaw+gHWIfnASS92AV+Rl/mk0MupgZTRHQOjxY6YVnzK5w=="],
22832283

2284-
"mimic-fn": ["mimic-fn@2.1.0", "", {}, "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="],
2284+
"mimic-fn": ["mimic-fn@4.0.0", "", {}, "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw=="],
22852285

22862286
"mimic-response": ["[email protected]", "", {}, "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="],
22872287

@@ -2393,6 +2393,8 @@
23932393

23942394
"p-map": ["[email protected]", "", {}, "sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q=="],
23952395

2396+
"p-memoize": ["[email protected]", "", { "dependencies": { "mimic-fn": "^4.0.0", "type-fest": "^3.0.0" } }, "sha512-DZ/bONJILHkQ721hSr/E9wMz5Am/OTJ9P6LhLFo2Tu+jL8044tgc9LwHO8g4PiaYePnlVVRAJcKmgy8J9MVFrA=="],
2397+
23962398
"p-try": ["[email protected]", "", {}, "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="],
23972399

23982400
"package-json": ["[email protected]", "", { "dependencies": { "got": "^9.6.0", "registry-auth-token": "^4.0.0", "registry-url": "^5.0.0", "semver": "^6.2.0" } }, "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ=="],
@@ -2803,7 +2805,7 @@
28032805

28042806
"type": ["[email protected]", "", {}, "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ=="],
28052807

2806-
"type-fest": ["type-fest@0.13.1", "", {}, "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg=="],
2808+
"type-fest": ["type-fest@3.13.1", "", {}, "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g=="],
28072809

28082810
"type-is": ["[email protected]", "", { "dependencies": { "content-type": "^1.0.5", "media-typer": "^1.1.0", "mime-types": "^3.0.0" } }, "sha512-gd0sGezQYCbWSbkZr75mln4YBidWUN60+devscpLF5mtRDUpiaTvKpBNrdaCvel1NdR2k6vclXybU5fBd2i+nw=="],
28092811

@@ -4043,6 +4045,8 @@
40434045

40444046
"mdast-util-gfm-task-list-item/mdast-util-to-markdown": ["[email protected]", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "longest-streak": "^3.0.0", "mdast-util-phrasing": "^4.0.0", "mdast-util-to-string": "^4.0.0", "micromark-util-decode-string": "^2.0.0", "unist-util-visit": "^5.0.0", "zwitch": "^2.0.0" } }, "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ=="],
40454047

4048+
"meow/type-fest": ["[email protected]", "", {}, "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg=="],
4049+
40464050
"micro/arg": ["[email protected]", "", {}, "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg=="],
40474051

40484052
"micro/content-type": ["[email protected]", "", {}, "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="],
@@ -4071,6 +4075,8 @@
40714075

40724076
"normalize-package-data/semver": ["[email protected]", "", { "bin": { "semver": "bin/semver" } }, "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="],
40734077

4078+
"onetime/mimic-fn": ["[email protected]", "", {}, "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="],
4079+
40744080
"p-filter/p-map": ["[email protected]", "", {}, "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw=="],
40754081

40764082
"package-json/semver": ["[email protected]", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="],

packages/gitbook-v2/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"warn-once": "^0.1.1",
1414
"rison": "^0.1.1",
1515
"jwt-decode": "^4.0.0",
16-
"memoizee": "^0.4.17"
16+
"p-memoize": "^7.1.1"
1717
},
1818
"devDependencies": {
1919
"gitbook": "*",

packages/gitbook-v2/src/lib/data/memoize.test.ts

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,36 +2,32 @@ import { describe, expect, it, mock } from 'bun:test';
22
import { memoize } from './memoize';
33

44
describe('memoize', () => {
5-
it('should memoize the function', () => {
6-
const fn = mock(() => Math.random());
5+
it('should memoize the function', async () => {
6+
const fn = mock(async () => Math.random());
77
const memoized = memoize(fn);
8-
expect(memoized()).toBe(memoized());
8+
expect(await memoized()).toBe(await memoized());
99
});
1010

11-
it('should memoize the function with different arguments', () => {
12-
const fn = mock((a: number, b: number) => a + b);
11+
it('should memoize the function with different arguments', async () => {
12+
const fn = mock(async (a: number, b: number) => a + b);
1313
const memoized = memoize(fn);
14-
expect(memoized(1, 2)).toBe(memoized(1, 2));
14+
expect(await memoized(1, 2)).toBe(await memoized(1, 2));
1515
expect(fn.mock.calls.length).toBe(1);
16-
expect(memoized(1, 2)).not.toBe(memoized(2, 3));
16+
expect(await memoized(1, 2)).not.toBe(await memoized(2, 3));
1717
expect(fn.mock.calls.length).toBe(2);
1818
});
1919

20-
it('should memoize a function complex object', () => {
21-
const fn = mock((a: { foo: string; bar: number }) => a.foo + a.bar);
20+
it('should memoize a function complex object', async () => {
21+
const fn = mock(async (a: { foo: string; bar: number }) => a.foo + a.bar);
2222
const memoized = memoize(fn);
23-
expect(memoized({ foo: 'foo', bar: 1 })).toBe(memoized({ foo: 'foo', bar: 1 }));
23+
expect(await memoized({ foo: 'foo', bar: 1 })).toBe(await memoized({ foo: 'foo', bar: 1 }));
2424
expect(fn.mock.calls.length).toBe(1);
25-
expect(memoized({ foo: 'foo', bar: 1 })).not.toBe(memoized({ foo: 'foo', bar: 2 }));
25+
expect(await memoized({ foo: 'foo', bar: 1 })).not.toBe(
26+
await memoized({ foo: 'foo', bar: 2 })
27+
);
2628
expect(fn.mock.calls.length).toBe(2);
2729
});
2830

29-
it('should support async function', async () => {
30-
const fn = mock(async () => Math.random());
31-
const memoized = memoize(fn);
32-
expect(await memoized()).toBe(await memoized());
33-
});
34-
3531
it('should wrap concurrent async calls', async () => {
3632
const fn = mock(async () => Math.random());
3733
const memoized = memoize(fn);

packages/gitbook-v2/src/lib/data/memoize.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import memoizee from 'memoizee';
1+
import pMemoize from 'p-memoize';
22

33
export function memoize<F extends (...args: any[]) => any>(f: F): F {
4-
return memoizee(f, {
5-
normalizer: (args) => {
4+
return pMemoize(f, {
5+
cacheKey: (args) => {
66
return JSON.stringify(deepSortValue(args));
77
},
88
});

0 commit comments

Comments
 (0)