MCPcopy
hub / github.com/ardatan/graphql-tools / memoize3

Function memoize3

packages/utils/src/memoize.ts:44–79  ·  view source on GitHub ↗
(fn: F)

Source from the content-addressed store, hash-verified

42}
43
44export function memoize3<F extends (a1: any, a2: any, a3: any) => any>(fn: F): F {
45 const memoize3Cache: WeakMap<
46 Record<string, any>,
47 WeakMap<Record<string, any>, any>
48 > = new WeakMap();
49 return function memoized(a1: any, a2: any, a3: any) {
50 let cache2 = memoize3Cache.get(a1);
51 if (!cache2) {
52 cache2 = new WeakMap();
53 memoize3Cache.set(a1, cache2);
54 const cache3 = new WeakMap();
55 cache2.set(a2, cache3);
56 const newValue = fn(a1, a2, a3);
57 cache3.set(a3, newValue);
58 return newValue;
59 }
60
61 let cache3 = cache2.get(a2);
62 if (!cache3) {
63 cache3 = new WeakMap();
64 cache2.set(a2, cache3);
65 const newValue = fn(a1, a2, a3);
66 cache3.set(a3, newValue);
67 return newValue;
68 }
69
70 const cachedValue = cache3.get(a3);
71 if (cachedValue === undefined) {
72 const newValue = fn(a1, a2, a3);
73 cache3.set(a3, newValue);
74 return newValue;
75 }
76
77 return cachedValue;
78 } as F;
79}
80
81export function memoize4<F extends (a1: any, a2: any, a3: any, a4: any) => any>(fn: F): F {
82 const memoize4Cache: WeakMap<

Callers 1

execute.tsFile · 0.90

Calls 2

getMethod · 0.65
setMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…