UNPKG

719 BJavaScriptView Raw
1/**
2 * Memoizes the provided three-argument function.
3 */
4export default function memoize3(fn) {
5 var cache0;
6 return function memoized(a1, a2, a3) {
7 if (!cache0) {
8 cache0 = new WeakMap();
9 }
10
11 var cache1 = cache0.get(a1);
12 var cache2;
13
14 if (cache1) {
15 cache2 = cache1.get(a2);
16
17 if (cache2) {
18 var cachedValue = cache2.get(a3);
19
20 if (cachedValue !== undefined) {
21 return cachedValue;
22 }
23 }
24 } else {
25 cache1 = new WeakMap();
26 cache0.set(a1, cache1);
27 }
28
29 if (!cache2) {
30 cache2 = new WeakMap();
31 cache1.set(a2, cache2);
32 }
33
34 var newValue = fn(a1, a2, a3);
35 cache2.set(a3, newValue);
36 return newValue;
37 };
38}