UNPKG

940 BJavaScriptView Raw
1/**
2 * Copyright (c) 2017-present, Facebook, Inc.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 *
7 * strict
8 */
9
10/**
11 * Memoizes the provided three-argument function.
12 */
13export default function memoize3(fn) {
14 var cache0;
15
16 function memoized(a1, a2, a3) {
17 if (!cache0) {
18 cache0 = new WeakMap();
19 }
20
21 var cache1 = cache0.get(a1);
22 var cache2;
23
24 if (cache1) {
25 cache2 = cache1.get(a2);
26
27 if (cache2) {
28 var cachedValue = cache2.get(a3);
29
30 if (cachedValue !== undefined) {
31 return cachedValue;
32 }
33 }
34 } else {
35 cache1 = new WeakMap();
36 cache0.set(a1, cache1);
37 }
38
39 if (!cache2) {
40 cache2 = new WeakMap();
41 cache1.set(a2, cache2);
42 }
43
44 var newValue = fn.apply(this, arguments);
45 cache2.set(a3, newValue);
46 return newValue;
47 }
48
49 return memoized;
50}
\No newline at end of file