memoize.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.memoize2of4 = exports.memoize5 = exports.memoize4 = exports.memoize3 = exports.memoize2 = exports.memoize1 = void 0;
  4. function memoize1(fn) {
  5. const memoize1cache = new WeakMap();
  6. return function memoized(a1) {
  7. const cachedValue = memoize1cache.get(a1);
  8. if (cachedValue === undefined) {
  9. const newValue = fn(a1);
  10. memoize1cache.set(a1, newValue);
  11. return newValue;
  12. }
  13. return cachedValue;
  14. };
  15. }
  16. exports.memoize1 = memoize1;
  17. function memoize2(fn) {
  18. const memoize2cache = new WeakMap();
  19. return function memoized(a1, a2) {
  20. let cache2 = memoize2cache.get(a1);
  21. if (!cache2) {
  22. cache2 = new WeakMap();
  23. memoize2cache.set(a1, cache2);
  24. const newValue = fn(a1, a2);
  25. cache2.set(a2, newValue);
  26. return newValue;
  27. }
  28. const cachedValue = cache2.get(a2);
  29. if (cachedValue === undefined) {
  30. const newValue = fn(a1, a2);
  31. cache2.set(a2, newValue);
  32. return newValue;
  33. }
  34. return cachedValue;
  35. };
  36. }
  37. exports.memoize2 = memoize2;
  38. function memoize3(fn) {
  39. const memoize3Cache = new WeakMap();
  40. return function memoized(a1, a2, a3) {
  41. let cache2 = memoize3Cache.get(a1);
  42. if (!cache2) {
  43. cache2 = new WeakMap();
  44. memoize3Cache.set(a1, cache2);
  45. const cache3 = new WeakMap();
  46. cache2.set(a2, cache3);
  47. const newValue = fn(a1, a2, a3);
  48. cache3.set(a3, newValue);
  49. return newValue;
  50. }
  51. let cache3 = cache2.get(a2);
  52. if (!cache3) {
  53. cache3 = new WeakMap();
  54. cache2.set(a2, cache3);
  55. const newValue = fn(a1, a2, a3);
  56. cache3.set(a3, newValue);
  57. return newValue;
  58. }
  59. const cachedValue = cache3.get(a3);
  60. if (cachedValue === undefined) {
  61. const newValue = fn(a1, a2, a3);
  62. cache3.set(a3, newValue);
  63. return newValue;
  64. }
  65. return cachedValue;
  66. };
  67. }
  68. exports.memoize3 = memoize3;
  69. function memoize4(fn) {
  70. const memoize4Cache = new WeakMap();
  71. return function memoized(a1, a2, a3, a4) {
  72. let cache2 = memoize4Cache.get(a1);
  73. if (!cache2) {
  74. cache2 = new WeakMap();
  75. memoize4Cache.set(a1, cache2);
  76. const cache3 = new WeakMap();
  77. cache2.set(a2, cache3);
  78. const cache4 = new WeakMap();
  79. cache3.set(a3, cache4);
  80. const newValue = fn(a1, a2, a3, a4);
  81. cache4.set(a4, newValue);
  82. return newValue;
  83. }
  84. let cache3 = cache2.get(a2);
  85. if (!cache3) {
  86. cache3 = new WeakMap();
  87. cache2.set(a2, cache3);
  88. const cache4 = new WeakMap();
  89. cache3.set(a3, cache4);
  90. const newValue = fn(a1, a2, a3, a4);
  91. cache4.set(a4, newValue);
  92. return newValue;
  93. }
  94. const cache4 = cache3.get(a3);
  95. if (!cache4) {
  96. const cache4 = new WeakMap();
  97. cache3.set(a3, cache4);
  98. const newValue = fn(a1, a2, a3, a4);
  99. cache4.set(a4, newValue);
  100. return newValue;
  101. }
  102. const cachedValue = cache4.get(a4);
  103. if (cachedValue === undefined) {
  104. const newValue = fn(a1, a2, a3, a4);
  105. cache4.set(a4, newValue);
  106. return newValue;
  107. }
  108. return cachedValue;
  109. };
  110. }
  111. exports.memoize4 = memoize4;
  112. function memoize5(fn) {
  113. const memoize5Cache = new WeakMap();
  114. return function memoized(a1, a2, a3, a4, a5) {
  115. let cache2 = memoize5Cache.get(a1);
  116. if (!cache2) {
  117. cache2 = new WeakMap();
  118. memoize5Cache.set(a1, cache2);
  119. const cache3 = new WeakMap();
  120. cache2.set(a2, cache3);
  121. const cache4 = new WeakMap();
  122. cache3.set(a3, cache4);
  123. const cache5 = new WeakMap();
  124. cache4.set(a4, cache5);
  125. const newValue = fn(a1, a2, a3, a4, a5);
  126. cache5.set(a5, newValue);
  127. return newValue;
  128. }
  129. let cache3 = cache2.get(a2);
  130. if (!cache3) {
  131. cache3 = new WeakMap();
  132. cache2.set(a2, cache3);
  133. const cache4 = new WeakMap();
  134. cache3.set(a3, cache4);
  135. const cache5 = new WeakMap();
  136. cache4.set(a4, cache5);
  137. const newValue = fn(a1, a2, a3, a4, a5);
  138. cache5.set(a5, newValue);
  139. return newValue;
  140. }
  141. let cache4 = cache3.get(a3);
  142. if (!cache4) {
  143. cache4 = new WeakMap();
  144. cache3.set(a3, cache4);
  145. const cache5 = new WeakMap();
  146. cache4.set(a4, cache5);
  147. const newValue = fn(a1, a2, a3, a4, a5);
  148. cache5.set(a5, newValue);
  149. return newValue;
  150. }
  151. let cache5 = cache4.get(a4);
  152. if (!cache5) {
  153. cache5 = new WeakMap();
  154. cache4.set(a4, cache5);
  155. const newValue = fn(a1, a2, a3, a4, a5);
  156. cache5.set(a5, newValue);
  157. return newValue;
  158. }
  159. const cachedValue = cache5.get(a5);
  160. if (cachedValue === undefined) {
  161. const newValue = fn(a1, a2, a3, a4, a5);
  162. cache5.set(a5, newValue);
  163. return newValue;
  164. }
  165. return cachedValue;
  166. };
  167. }
  168. exports.memoize5 = memoize5;
  169. const memoize2of4cache = new WeakMap();
  170. function memoize2of4(fn) {
  171. return function memoized(a1, a2, a3, a4) {
  172. let cache2 = memoize2of4cache.get(a1);
  173. if (!cache2) {
  174. cache2 = new WeakMap();
  175. memoize2of4cache.set(a1, cache2);
  176. const newValue = fn(a1, a2, a3, a4);
  177. cache2.set(a2, newValue);
  178. return newValue;
  179. }
  180. const cachedValue = cache2.get(a2);
  181. if (cachedValue === undefined) {
  182. const newValue = fn(a1, a2, a3, a4);
  183. cache2.set(a2, newValue);
  184. return newValue;
  185. }
  186. return cachedValue;
  187. };
  188. }
  189. exports.memoize2of4 = memoize2of4;