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

Function memoize4

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

Source from the content-addressed store, hash-verified

79}
80
81export function memoize4<F extends (a1: any, a2: any, a3: any, a4: any) => any>(fn: F): F {
82 const memoize4Cache: WeakMap<
83 Record<string, any>,
84 WeakMap<Record<string, any>, any>
85 > = new WeakMap();
86 return function memoized(a1: any, a2: any, a3: any, a4: any) {
87 let cache2 = memoize4Cache.get(a1);
88 if (!cache2) {
89 cache2 = new WeakMap();
90 memoize4Cache.set(a1, cache2);
91 const cache3 = new WeakMap();
92 cache2.set(a2, cache3);
93 const cache4 = new WeakMap();
94 cache3.set(a3, cache4);
95 const newValue = fn(a1, a2, a3, a4);
96 cache4.set(a4, newValue);
97 return newValue;
98 }
99
100 let cache3 = cache2.get(a2);
101 if (!cache3) {
102 cache3 = new WeakMap();
103 cache2.set(a2, cache3);
104 const cache4 = new WeakMap();
105 cache3.set(a3, cache4);
106 const newValue = fn(a1, a2, a3, a4);
107 cache4.set(a4, newValue);
108 return newValue;
109 }
110
111 const cache4 = cache3.get(a3);
112 if (!cache4) {
113 const cache4 = new WeakMap();
114 cache3.set(a3, cache4);
115 const newValue = fn(a1, a2, a3, a4);
116 cache4.set(a4, newValue);
117 return newValue;
118 }
119
120 const cachedValue = cache4.get(a4);
121 if (cachedValue === undefined) {
122 const newValue = fn(a1, a2, a3, a4);
123 cache4.set(a4, newValue);
124 return newValue;
125 }
126
127 return cachedValue;
128 } as F;
129}
130
131export function memoize5<F extends (a1: any, a2: any, a3: any, a4: any, a5: any) => any>(fn: F): F {
132 const memoize5Cache: WeakMap<

Callers

nothing calls this directly

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…