UNPKG

813 BJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = memoize3;
7
8/**
9 * Memoizes the provided three-argument function.
10 */
11function memoize3(fn) {
12 var cache0;
13 return function memoized(a1, a2, a3) {
14 if (!cache0) {
15 cache0 = new WeakMap();
16 }
17
18 var cache1 = cache0.get(a1);
19 var cache2;
20
21 if (cache1) {
22 cache2 = cache1.get(a2);
23
24 if (cache2) {
25 var cachedValue = cache2.get(a3);
26
27 if (cachedValue !== undefined) {
28 return cachedValue;
29 }
30 }
31 } else {
32 cache1 = new WeakMap();
33 cache0.set(a1, cache1);
34 }
35
36 if (!cache2) {
37 cache2 = new WeakMap();
38 cache1.set(a2, cache2);
39 }
40
41 var newValue = fn(a1, a2, a3);
42 cache2.set(a3, newValue);
43 return newValue;
44 };
45}