UNPKG

826 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
14 function memoized(a1, a2, a3) {
15 if (!cache0) {
16 cache0 = new WeakMap();
17 }
18
19 var cache1 = cache0.get(a1);
20 var cache2;
21
22 if (cache1) {
23 cache2 = cache1.get(a2);
24
25 if (cache2) {
26 var cachedValue = cache2.get(a3);
27
28 if (cachedValue !== undefined) {
29 return cachedValue;
30 }
31 }
32 } else {
33 cache1 = new WeakMap();
34 cache0.set(a1, cache1);
35 }
36
37 if (!cache2) {
38 cache2 = new WeakMap();
39 cache1.set(a2, cache2);
40 }
41
42 var newValue = fn(a1, a2, a3);
43 cache2.set(a3, newValue);
44 return newValue;
45 }
46
47 return memoized;
48}