@valkyriestudios/utils 5.2.0 → 5.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/.nyc_output/42fb4596-cca6-4b5f-9d84-4dfa81222f86.json +1 -0
  2. package/.nyc_output/e5760d4f-f98f-4742-ab93-9fe7645e0319.json +1 -0
  3. package/.nyc_output/processinfo/42fb4596-cca6-4b5f-9d84-4dfa81222f86.json +1 -0
  4. package/.nyc_output/processinfo/e5760d4f-f98f-4742-ab93-9fe7645e0319.json +1 -0
  5. package/.nyc_output/processinfo/index.json +1 -1
  6. package/CHANGELOG.md +12 -0
  7. package/README.md +57 -51
  8. package/array/dedupe.js +3 -4
  9. package/array/is.js +0 -1
  10. package/array/isNotEmpty.js +0 -3
  11. package/array/join.js +1 -15
  12. package/array/mapFn.js +2 -15
  13. package/array/mapKey.js +1 -13
  14. package/array/mapPrimitive.js +1 -14
  15. package/array/shuffle.js +17 -0
  16. package/boolean/is.js +0 -1
  17. package/caching/memoize.js +14 -10
  18. package/coverage/lcov-report/index.html +17 -17
  19. package/coverage/lcov-report/src/array/dedupe.js.html +1 -1
  20. package/coverage/lcov-report/src/array/index.html +21 -6
  21. package/coverage/lcov-report/src/array/is.js.html +2 -2
  22. package/coverage/lcov-report/src/array/isNotEmpty.js.html +3 -3
  23. package/coverage/lcov-report/src/array/join.js.html +1 -1
  24. package/coverage/lcov-report/src/array/mapFn.js.html +1 -1
  25. package/coverage/lcov-report/src/array/mapKey.js.html +1 -1
  26. package/coverage/lcov-report/src/array/mapPrimitive.js.html +1 -1
  27. package/coverage/lcov-report/src/array/shuffle.js.html +133 -0
  28. package/coverage/lcov-report/src/boolean/index.html +1 -1
  29. package/coverage/lcov-report/src/boolean/is.js.html +1 -1
  30. package/coverage/lcov-report/src/caching/index.html +7 -7
  31. package/coverage/lcov-report/src/caching/memoize.js.html +39 -21
  32. package/coverage/lcov-report/src/date/index.html +1 -1
  33. package/coverage/lcov-report/src/date/is.js.html +1 -1
  34. package/coverage/lcov-report/src/deep/define.js.html +1 -1
  35. package/coverage/lcov-report/src/deep/freeze.js.html +1 -1
  36. package/coverage/lcov-report/src/deep/get.js.html +1 -1
  37. package/coverage/lcov-report/src/deep/index.html +1 -1
  38. package/coverage/lcov-report/src/deep/seal.js.html +1 -1
  39. package/coverage/lcov-report/src/deep/set.js.html +1 -1
  40. package/coverage/lcov-report/src/equal.js.html +1 -1
  41. package/coverage/lcov-report/src/function/index.html +1 -1
  42. package/coverage/lcov-report/src/function/is.js.html +2 -2
  43. package/coverage/lcov-report/src/function/noop.js.html +1 -1
  44. package/coverage/lcov-report/src/function/noopresolve.js.html +1 -1
  45. package/coverage/lcov-report/src/function/noopreturn.js.html +1 -1
  46. package/coverage/lcov-report/src/function/sleep.js.html +1 -1
  47. package/coverage/lcov-report/src/hash/fnv1A.js.html +13 -13
  48. package/coverage/lcov-report/src/hash/guid.js.html +1 -1
  49. package/coverage/lcov-report/src/hash/index.html +1 -1
  50. package/coverage/lcov-report/src/index.html +1 -1
  51. package/coverage/lcov-report/src/is.js.html +1 -1
  52. package/coverage/lcov-report/src/number/index.html +1 -1
  53. package/coverage/lcov-report/src/number/is.js.html +1 -1
  54. package/coverage/lcov-report/src/number/isAbove.js.html +1 -1
  55. package/coverage/lcov-report/src/number/isBelow.js.html +1 -1
  56. package/coverage/lcov-report/src/number/isBetween.js.html +1 -1
  57. package/coverage/lcov-report/src/number/isInteger.js.html +1 -1
  58. package/coverage/lcov-report/src/number/isIntegerAbove.js.html +1 -1
  59. package/coverage/lcov-report/src/number/isIntegerBelow.js.html +1 -1
  60. package/coverage/lcov-report/src/number/isIntegerBetween.js.html +1 -1
  61. package/coverage/lcov-report/src/number/isNumericalNaN.js.html +1 -1
  62. package/coverage/lcov-report/src/number/randomBetween.js.html +1 -1
  63. package/coverage/lcov-report/src/number/round.js.html +1 -1
  64. package/coverage/lcov-report/src/number/toPercentage.js.html +1 -1
  65. package/coverage/lcov-report/src/object/define.js.html +1 -1
  66. package/coverage/lcov-report/src/object/defineFrozen.js.html +1 -1
  67. package/coverage/lcov-report/src/object/defineSealed.js.html +1 -1
  68. package/coverage/lcov-report/src/object/forValues.js.html +1 -1
  69. package/coverage/lcov-report/src/object/index.html +1 -1
  70. package/coverage/lcov-report/src/object/is.js.html +1 -1
  71. package/coverage/lcov-report/src/object/isNotEmpty.js.html +1 -1
  72. package/coverage/lcov-report/src/object/merge.js.html +1 -1
  73. package/coverage/lcov-report/src/object/pick.js.html +1 -1
  74. package/coverage/lcov-report/src/object/zip.js.html +1 -1
  75. package/coverage/lcov-report/src/regexp/index.html +1 -1
  76. package/coverage/lcov-report/src/regexp/is.js.html +1 -1
  77. package/coverage/lcov-report/src/string/index.html +1 -1
  78. package/coverage/lcov-report/src/string/is.js.html +2 -2
  79. package/coverage/lcov-report/src/string/isBetween.js.html +1 -1
  80. package/coverage/lcov-report/src/string/isNotEmpty.js.html +1 -1
  81. package/coverage/lcov-report/src/string/shorten.js.html +1 -1
  82. package/coverage/lcov.info +84 -55
  83. package/date/is.js +0 -1
  84. package/deep/define.js +0 -3
  85. package/deep/freeze.js +0 -5
  86. package/deep/get.js +2 -12
  87. package/deep/seal.js +0 -5
  88. package/deep/set.js +2 -12
  89. package/equal.js +0 -13
  90. package/function/is.js +0 -1
  91. package/function/noop.js +2 -2
  92. package/function/noopresolve.js +0 -1
  93. package/function/noopreturn.js +0 -1
  94. package/function/sleep.js +0 -1
  95. package/hash/fnv1A.js +1 -10
  96. package/hash/guid.js +2 -2
  97. package/is.js +0 -21
  98. package/number/is.js +0 -3
  99. package/number/isAbove.js +0 -3
  100. package/number/isBelow.js +0 -3
  101. package/number/isBetween.js +0 -3
  102. package/number/isInteger.js +0 -3
  103. package/number/isIntegerAbove.js +0 -4
  104. package/number/isIntegerBelow.js +0 -4
  105. package/number/isIntegerBetween.js +0 -4
  106. package/number/randomBetween.js +0 -3
  107. package/number/round.js +1 -4
  108. package/number/toPercentage.js +0 -4
  109. package/object/define.js +0 -5
  110. package/object/defineFrozen.js +0 -3
  111. package/object/defineSealed.js +0 -3
  112. package/object/forValues.js +0 -7
  113. package/object/is.js +0 -1
  114. package/object/isNotEmpty.js +0 -3
  115. package/object/merge.js +0 -8
  116. package/object/pick.js +0 -9
  117. package/object/zip.js +0 -6
  118. package/package.json +6 -6
  119. package/regexp/is.js +0 -1
  120. package/string/is.js +0 -1
  121. package/string/isBetween.js +0 -4
  122. package/string/isNotEmpty.js +0 -3
  123. package/string/shorten.js +0 -5
  124. package/.nyc_output/58f73d7a-e507-4792-bfca-ebfb34732639.json +0 -1
  125. package/.nyc_output/86a24097-14b3-4c83-9aaf-69614f599a22.json +0 -1
  126. package/.nyc_output/processinfo/58f73d7a-e507-4792-bfca-ebfb34732639.json +0 -1
  127. package/.nyc_output/processinfo/86a24097-14b3-4c83-9aaf-69614f599a22.json +0 -1
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ });
6
+ exports["default"] = shuffle;
7
+ var _isNotEmpty = _interopRequireDefault(require("./isNotEmpty"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
9
+ function shuffle(arr) {
10
+ if (!(0, _isNotEmpty["default"])(arr)) return;
11
+ for (var i = arr.length - 1; i > 0; i--) {
12
+ var j = Math.floor(Math.random() * (i + 1));
13
+ var _ref = [arr[j], arr[i]];
14
+ arr[i] = _ref[0];
15
+ arr[j] = _ref[1];
16
+ }
17
+ }
package/boolean/is.js CHANGED
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  });
6
6
  exports["default"] = _default;
7
-
8
7
  function _default(val) {
9
8
  return val === !0 || val === !1 || typeof val === 'boolean' || val instanceof Boolean;
10
9
  }
@@ -4,17 +4,21 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  });
6
6
  exports["default"] = _default;
7
-
7
+ var _is = _interopRequireDefault(require("../function/is"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
8
9
  function _default(fn) {
9
- var cache = {};
10
- return function memoized() {
11
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
12
- args[_key] = arguments[_key];
13
- }
10
+ var resolver = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : !1;
11
+ var has_resolver = (0, _is["default"])(resolver);
12
+ var memoized = function memoized() {
13
+ var key = has_resolver ? resolver.apply(this, arguments) : arguments[0];
14
+
15
+ if (memoized.cache.has(key)) return memoized.cache.get(key);
16
+
17
+ var result = fn.apply(this, arguments);
14
18
 
15
- var key = JSON.stringify(args);
16
- if (key in cache) return cache[key];
17
- cache[key] = fn.apply(void 0, args);
18
- return cache[key];
19
+ memoized.cache.set(key, result);
20
+ return result;
19
21
  };
22
+ memoized.cache = new Map();
23
+ return memoized;
20
24
  }
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">98.89% </span>
26
+ <span class="strong">98.92% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>449/454</span>
28
+ <span class='fraction'>461/466</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">95.38% </span>
33
+ <span class="strong">95.46% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>434/455</span>
35
+ <span class='fraction'>442/463</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">97.14% </span>
40
+ <span class="strong">97.18% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>68/70</span>
42
+ <span class='fraction'>69/71</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">99.18% </span>
47
+ <span class="strong">99.2% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>366/369</span>
49
+ <span class='fraction'>376/379</span>
50
50
  </div>
51
51
 
52
52
 
@@ -99,13 +99,13 @@
99
99
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
100
100
  </td>
101
101
  <td data-value="100" class="pct high">100%</td>
102
- <td data-value="96" class="abs high">96/96</td>
103
- <td data-value="98.88" class="pct high">98.88%</td>
104
- <td data-value="90" class="abs high">89/90</td>
102
+ <td data-value="105" class="abs high">105/105</td>
103
+ <td data-value="98.91" class="pct high">98.91%</td>
104
+ <td data-value="92" class="abs high">91/92</td>
105
105
  <td data-value="100" class="pct high">100%</td>
106
- <td data-value="8" class="abs high">8/8</td>
106
+ <td data-value="9" class="abs high">9/9</td>
107
107
  <td data-value="100" class="pct high">100%</td>
108
- <td data-value="78" class="abs high">78/78</td>
108
+ <td data-value="83" class="abs high">83/83</td>
109
109
  </tr>
110
110
 
111
111
  <tr>
@@ -129,13 +129,13 @@
129
129
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
130
130
  </td>
131
131
  <td data-value="100" class="pct high">100%</td>
132
- <td data-value="9" class="abs high">9/9</td>
132
+ <td data-value="12" class="abs high">12/12</td>
133
133
  <td data-value="100" class="pct high">100%</td>
134
- <td data-value="2" class="abs high">2/2</td>
134
+ <td data-value="8" class="abs high">8/8</td>
135
135
  <td data-value="100" class="pct high">100%</td>
136
136
  <td data-value="2" class="abs high">2/2</td>
137
137
  <td data-value="100" class="pct high">100%</td>
138
- <td data-value="6" class="abs high">6/6</td>
138
+ <td data-value="11" class="abs high">11/11</td>
139
139
  </tr>
140
140
 
141
141
  <tr>
@@ -266,7 +266,7 @@
266
266
  <div class='footer quiet pad2 space-top1 center small'>
267
267
  Code coverage generated by
268
268
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
269
- at Sun Oct 09 2022 11:27:19 GMT+0200 (Central European Summer Time)
269
+ at Sun Nov 20 2022 13:07:50 GMT+0100 (Central European Standard Time)
270
270
  </div>
271
271
  <script src="prettify.js"></script>
272
272
  <script>
@@ -139,7 +139,7 @@ export default function (val = []) {
139
139
  <div class='footer quiet pad2 space-top1 center small'>
140
140
  Code coverage generated by
141
141
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
142
- at Sun Oct 09 2022 11:27:19 GMT+0200 (Central European Summer Time)
142
+ at Sun Nov 20 2022 13:07:50 GMT+0100 (Central European Standard Time)
143
143
  </div>
144
144
  <script src="../../prettify.js"></script>
145
145
  <script>
@@ -25,28 +25,28 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>96/96</span>
28
+ <span class='fraction'>105/105</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">98.88% </span>
33
+ <span class="strong">98.91% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>89/90</span>
35
+ <span class='fraction'>91/92</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>8/8</span>
42
+ <span class='fraction'>9/9</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>78/78</span>
49
+ <span class='fraction'>83/83</span>
50
50
  </div>
51
51
 
52
52
 
@@ -183,6 +183,21 @@
183
183
  <td data-value="18" class="abs high">18/18</td>
184
184
  </tr>
185
185
 
186
+ <tr>
187
+ <td class="file high" data-value="shuffle.js"><a href="shuffle.js.html">shuffle.js</a></td>
188
+ <td data-value="100" class="pic high">
189
+ <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
190
+ </td>
191
+ <td data-value="100" class="pct high">100%</td>
192
+ <td data-value="9" class="abs high">9/9</td>
193
+ <td data-value="100" class="pct high">100%</td>
194
+ <td data-value="2" class="abs high">2/2</td>
195
+ <td data-value="100" class="pct high">100%</td>
196
+ <td data-value="1" class="abs high">1/1</td>
197
+ <td data-value="100" class="pct high">100%</td>
198
+ <td data-value="5" class="abs high">5/5</td>
199
+ </tr>
200
+
186
201
  </tbody>
187
202
  </table>
188
203
  </div>
@@ -191,7 +206,7 @@
191
206
  <div class='footer quiet pad2 space-top1 center small'>
192
207
  Code coverage generated by
193
208
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
194
- at Sun Oct 09 2022 11:27:19 GMT+0200 (Central European Summer Time)
209
+ at Sun Nov 20 2022 13:07:50 GMT+0100 (Central European Standard Time)
195
210
  </div>
196
211
  <script src="../../prettify.js"></script>
197
212
  <script>
@@ -71,7 +71,7 @@
71
71
  <a name='L6'></a><a href='#L6'>6</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
72
72
  <span class="cline-any cline-neutral">&nbsp;</span>
73
73
  <span class="cline-any cline-neutral">&nbsp;</span>
74
- <span class="cline-any cline-yes">889x</span>
74
+ <span class="cline-any cline-yes">3301516x</span>
75
75
  <span class="cline-any cline-neutral">&nbsp;</span>
76
76
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">'use strict';
77
77
  &nbsp;
@@ -85,7 +85,7 @@ export default function (val) {
85
85
  <div class='footer quiet pad2 space-top1 center small'>
86
86
  Code coverage generated by
87
87
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
88
- at Sun Oct 09 2022 11:27:19 GMT+0200 (Central European Summer Time)
88
+ at Sun Nov 20 2022 13:07:50 GMT+0100 (Central European Standard Time)
89
89
  </div>
90
90
  <script src="../../prettify.js"></script>
91
91
  <script>
@@ -76,8 +76,8 @@
76
76
  <span class="cline-any cline-yes">1x</span>
77
77
  <span class="cline-any cline-neutral">&nbsp;</span>
78
78
  <span class="cline-any cline-neutral">&nbsp;</span>
79
- <span class="cline-any cline-yes">273x</span>
80
- <span class="cline-any cline-yes">116x</span>
79
+ <span class="cline-any cline-yes">3300600x</span>
80
+ <span class="cline-any cline-yes">3300418x</span>
81
81
  <span class="cline-any cline-neutral">&nbsp;</span>
82
82
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">'use strict';
83
83
  &nbsp;
@@ -94,7 +94,7 @@ export default function (val) {
94
94
  <div class='footer quiet pad2 space-top1 center small'>
95
95
  Code coverage generated by
96
96
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
97
- at Sun Oct 09 2022 11:27:19 GMT+0200 (Central European Summer Time)
97
+ at Sun Nov 20 2022 13:07:50 GMT+0100 (Central European Standard Time)
98
98
  </div>
99
99
  <script src="../../prettify.js"></script>
100
100
  <script>
@@ -169,7 +169,7 @@ export default function (arr, options = {}) {
169
169
  <div class='footer quiet pad2 space-top1 center small'>
170
170
  Code coverage generated by
171
171
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
172
- at Sun Oct 09 2022 11:27:19 GMT+0200 (Central European Summer Time)
172
+ at Sun Nov 20 2022 13:07:50 GMT+0100 (Central European Standard Time)
173
173
  </div>
174
174
  <script src="../../prettify.js"></script>
175
175
  <script>
@@ -169,7 +169,7 @@ export default function (arr, fn, opts = {}) {
169
169
  <div class='footer quiet pad2 space-top1 center small'>
170
170
  Code coverage generated by
171
171
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
172
- at Sun Oct 09 2022 11:27:19 GMT+0200 (Central European Summer Time)
172
+ at Sun Nov 20 2022 13:07:50 GMT+0100 (Central European Standard Time)
173
173
  </div>
174
174
  <script src="../../prettify.js"></script>
175
175
  <script>
@@ -145,7 +145,7 @@ export default function (arr, key, opts = {}) {
145
145
  <div class='footer quiet pad2 space-top1 center small'>
146
146
  Code coverage generated by
147
147
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
148
- at Sun Oct 09 2022 11:27:19 GMT+0200 (Central European Summer Time)
148
+ at Sun Nov 20 2022 13:07:50 GMT+0100 (Central European Standard Time)
149
149
  </div>
150
150
  <script src="../../prettify.js"></script>
151
151
  <script>
@@ -178,7 +178,7 @@ export default function (arr, opts = {}) {
178
178
  <div class='footer quiet pad2 space-top1 center small'>
179
179
  Code coverage generated by
180
180
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
181
- at Sun Oct 09 2022 11:27:19 GMT+0200 (Central European Summer Time)
181
+ at Sun Nov 20 2022 13:07:50 GMT+0100 (Central European Standard Time)
182
182
  </div>
183
183
  <script src="../../prettify.js"></script>
184
184
  <script>
@@ -0,0 +1,133 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/array/shuffle.js</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../prettify.css" />
9
+ <link rel="stylesheet" href="../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">src/array</a> shuffle.js</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">100% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>9/9</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">100% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>2/2</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>1/1</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">100% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>5/5</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
83
+ <span class="cline-any cline-neutral">&nbsp;</span>
84
+ <span class="cline-any cline-yes">1x</span>
85
+ <span class="cline-any cline-neutral">&nbsp;</span>
86
+ <span class="cline-any cline-neutral">&nbsp;</span>
87
+ <span class="cline-any cline-neutral">&nbsp;</span>
88
+ <span class="cline-any cline-neutral">&nbsp;</span>
89
+ <span class="cline-any cline-neutral">&nbsp;</span>
90
+ <span class="cline-any cline-neutral">&nbsp;</span>
91
+ <span class="cline-any cline-yes">3300327x</span>
92
+ <span class="cline-any cline-neutral">&nbsp;</span>
93
+ <span class="cline-any cline-yes">3300301x</span>
94
+ <span class="cline-any cline-yes">57702709x</span>
95
+ <span class="cline-any cline-yes">57702709x</span>
96
+ <span class="cline-any cline-neutral">&nbsp;</span>
97
+ <span class="cline-any cline-neutral">&nbsp;</span>
98
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">'use strict';
99
+ &nbsp;
100
+ import isNotEmptyArray from './isNotEmpty';
101
+ &nbsp;
102
+ // Fisher - Yates shuffle O(n)
103
+ // https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle
104
+ //
105
+ // @param array arr Array to shuffle
106
+ export default function shuffle (arr) {
107
+ if (!isNotEmptyArray(arr)) return;
108
+ &nbsp;
109
+ for (let i = arr.length - 1; i &gt; 0; i--) {
110
+ const j = Math.floor(Math.random() * (i + 1)); // Random index from 0 to i
111
+ [arr[i], arr[j]] = [arr[j], arr[i]]; // Swap elements
112
+ }
113
+ }
114
+ &nbsp;</pre></td></tr></table></pre>
115
+
116
+ <div class='push'></div><!-- for sticky footer -->
117
+ </div><!-- /wrapper -->
118
+ <div class='footer quiet pad2 space-top1 center small'>
119
+ Code coverage generated by
120
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
121
+ at Sun Nov 20 2022 13:07:50 GMT+0100 (Central European Standard Time)
122
+ </div>
123
+ <script src="../../prettify.js"></script>
124
+ <script>
125
+ window.onload = function () {
126
+ prettyPrint();
127
+ };
128
+ </script>
129
+ <script src="../../sorter.js"></script>
130
+ <script src="../../block-navigation.js"></script>
131
+ </body>
132
+ </html>
133
+
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at Sun Oct 09 2022 11:27:19 GMT+0200 (Central European Summer Time)
104
+ at Sun Nov 20 2022 13:07:50 GMT+0100 (Central European Standard Time)
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <script>
@@ -85,7 +85,7 @@ export default function (val) {
85
85
  <div class='footer quiet pad2 space-top1 center small'>
86
86
  Code coverage generated by
87
87
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
88
- at Sun Oct 09 2022 11:27:19 GMT+0200 (Central European Summer Time)
88
+ at Sun Nov 20 2022 13:07:50 GMT+0100 (Central European Standard Time)
89
89
  </div>
90
90
  <script src="../../prettify.js"></script>
91
91
  <script>
@@ -25,14 +25,14 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>9/9</span>
28
+ <span class='fraction'>12/12</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>2/2</span>
35
+ <span class='fraction'>8/8</span>
36
36
  </div>
37
37
 
38
38
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>6/6</span>
49
+ <span class='fraction'>11/11</span>
50
50
  </div>
51
51
 
52
52
 
@@ -84,13 +84,13 @@
84
84
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
85
85
  </td>
86
86
  <td data-value="100" class="pct high">100%</td>
87
- <td data-value="9" class="abs high">9/9</td>
87
+ <td data-value="12" class="abs high">12/12</td>
88
88
  <td data-value="100" class="pct high">100%</td>
89
- <td data-value="2" class="abs high">2/2</td>
89
+ <td data-value="8" class="abs high">8/8</td>
90
90
  <td data-value="100" class="pct high">100%</td>
91
91
  <td data-value="2" class="abs high">2/2</td>
92
92
  <td data-value="100" class="pct high">100%</td>
93
- <td data-value="6" class="abs high">6/6</td>
93
+ <td data-value="11" class="abs high">11/11</td>
94
94
  </tr>
95
95
 
96
96
  </tbody>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at Sun Oct 09 2022 11:27:19 GMT+0200 (Central European Summer Time)
104
+ at Sun Nov 20 2022 13:07:50 GMT+0100 (Central European Standard Time)
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <script>
@@ -25,14 +25,14 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>9/9</span>
28
+ <span class='fraction'>12/12</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>2/2</span>
35
+ <span class='fraction'>8/8</span>
36
36
  </div>
37
37
 
38
38
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>6/6</span>
49
+ <span class='fraction'>11/11</span>
50
50
  </div>
51
51
 
52
52
 
@@ -81,41 +81,59 @@
81
81
  <a name='L16'></a><a href='#L16'>16</a>
82
82
  <a name='L17'></a><a href='#L17'>17</a>
83
83
  <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
85
- <span class="cline-any cline-neutral">&nbsp;</span>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
86
91
  <span class="cline-any cline-neutral">&nbsp;</span>
87
92
  <span class="cline-any cline-yes">1x</span>
88
93
  <span class="cline-any cline-neutral">&nbsp;</span>
89
- <span class="cline-any cline-yes">400000x</span>
90
- <span class="cline-any cline-yes">100000x</span>
94
+ <span class="cline-any cline-yes">3x</span>
95
+ <span class="cline-any cline-yes">3x</span>
96
+ <span class="cline-any cline-yes">3x</span>
97
+ <span class="cline-any cline-neutral">&nbsp;</span>
98
+ <span class="cline-any cline-yes">3000000x</span>
91
99
  <span class="cline-any cline-neutral">&nbsp;</span>
92
100
  <span class="cline-any cline-neutral">&nbsp;</span>
93
- <span class="cline-any cline-yes">100000x</span>
101
+ <span class="cline-any cline-yes">3000000x</span>
94
102
  <span class="cline-any cline-neutral">&nbsp;</span>
95
103
  <span class="cline-any cline-neutral">&nbsp;</span>
96
- <span class="cline-any cline-yes">7x</span>
104
+ <span class="cline-any cline-yes">21x</span>
97
105
  <span class="cline-any cline-neutral">&nbsp;</span>
98
106
  <span class="cline-any cline-neutral">&nbsp;</span>
99
- <span class="cline-any cline-yes">7x</span>
107
+ <span class="cline-any cline-yes">21x</span>
100
108
  <span class="cline-any cline-neutral">&nbsp;</span>
109
+ <span class="cline-any cline-yes">21x</span>
110
+ <span class="cline-any cline-neutral">&nbsp;</span>
111
+ <span class="cline-any cline-yes">3x</span>
112
+ <span class="cline-any cline-yes">3x</span>
101
113
  <span class="cline-any cline-neutral">&nbsp;</span>
102
114
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">'use strict';
103
115
  &nbsp;
104
- export default function (fn) {
105
- const cache = {};
116
+ import isFunction from '../function/is';
117
+ &nbsp;
118
+ export default function (fn, resolver = false) {
119
+ const has_resolver = isFunction(resolver);
120
+ const memoized = function () {
121
+ // Get key
122
+ const key = has_resolver ? resolver.apply(this, arguments) : arguments[0]; // eslint-disable-line
106
123
  &nbsp;
107
- return function memoized (...args) {
108
- const key = JSON.stringify(args);
124
+ // Check in cache
125
+ if (memoized.cache.has(key)) return memoized.cache.get(key);
109
126
  &nbsp;
110
- // If already memoized -&gt; return
111
- if (key in cache) return cache[key];
127
+ // Call function
128
+ const result = fn.apply(this, arguments); // eslint-disable-line
112
129
  &nbsp;
113
- // Set cache key to output of function
114
- cache[key] = fn(...args);
130
+ // Set in cache
131
+ memoized.cache.set(key, result);
115
132
  &nbsp;
116
- // Return cached value
117
- return cache[key];
133
+ return result;
118
134
  };
135
+ memoized.cache = new Map();
136
+ return memoized;
119
137
  }
120
138
  &nbsp;</pre></td></tr></table></pre>
121
139
 
@@ -124,7 +142,7 @@ export default function (fn) {
124
142
  <div class='footer quiet pad2 space-top1 center small'>
125
143
  Code coverage generated by
126
144
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
127
- at Sun Oct 09 2022 11:27:19 GMT+0200 (Central European Summer Time)
145
+ at Sun Nov 20 2022 13:07:50 GMT+0100 (Central European Standard Time)
128
146
  </div>
129
147
  <script src="../../prettify.js"></script>
130
148
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at Sun Oct 09 2022 11:27:19 GMT+0200 (Central European Summer Time)
104
+ at Sun Nov 20 2022 13:07:50 GMT+0100 (Central European Standard Time)
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <script>