@zajno/common 2.0.0-beta.1 → 2.0.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.
- package/coverage/clover.xml +66 -21
- package/coverage/coverage-final.json +3 -2
- package/coverage/lcov-report/__tests__/helpers/expect.ts.html +1 -1
- package/coverage/lcov-report/__tests__/helpers/index.html +1 -1
- package/coverage/lcov-report/__tests__/helpers/main.ts.html +1 -1
- package/coverage/lcov-report/async/arrays.ts.html +1 -1
- package/coverage/lcov-report/async/index.html +1 -1
- package/coverage/lcov-report/async/timeout.ts.html +13 -13
- package/coverage/lcov-report/dates/calc.ts.html +1 -1
- package/coverage/lcov-report/dates/convert.ts.html +1 -1
- package/coverage/lcov-report/dates/datex.ts.html +1 -1
- package/coverage/lcov-report/dates/format.ts.html +1 -1
- package/coverage/lcov-report/dates/index.html +1 -1
- package/coverage/lcov-report/dates/index.ts.html +1 -1
- package/coverage/lcov-report/dates/parse.ts.html +1 -1
- package/coverage/lcov-report/dates/period.ts.html +1 -1
- package/coverage/lcov-report/dates/shift.ts.html +1 -1
- package/coverage/lcov-report/dates/types.ts.html +1 -1
- package/coverage/lcov-report/dates/yearDate.ts.html +1 -1
- package/coverage/lcov-report/fields/index.html +1 -1
- package/coverage/lcov-report/fields/update.ts.html +1 -1
- package/coverage/lcov-report/functions/index.html +17 -17
- package/coverage/lcov-report/functions/safeCall.ts.html +13 -13
- package/coverage/lcov-report/index.html +28 -28
- package/coverage/lcov-report/lazy/index.html +1 -1
- package/coverage/lcov-report/lazy/promise.ts.html +1 -1
- package/coverage/lcov-report/lazy/singleton.ts.html +1 -1
- package/coverage/lcov-report/logger/batch.ts.html +1 -1
- package/coverage/lcov-report/logger/console.ts.html +1 -1
- package/coverage/lcov-report/logger/index.html +1 -1
- package/coverage/lcov-report/logger/index.ts.html +1 -1
- package/coverage/lcov-report/logger/named.ts.html +1 -1
- package/coverage/lcov-report/logger/proxy.ts.html +1 -1
- package/coverage/lcov-report/math/arrays.ts.html +1 -1
- package/coverage/lcov-report/math/calc.ts.html +1 -1
- package/coverage/lcov-report/math/distribution.ts.html +1 -1
- package/coverage/lcov-report/math/index.html +1 -1
- package/coverage/lcov-report/math/index.ts.html +1 -1
- package/coverage/lcov-report/observing/event.ts.html +1 -1
- package/coverage/lcov-report/observing/index.html +1 -1
- package/coverage/lcov-report/queue/index.html +18 -18
- package/coverage/lcov-report/queue/tasks.ts.html +358 -0
- package/coverage/lcov-report/src/__tests__/helpers/expect.ts.html +1 -1
- package/coverage/lcov-report/src/__tests__/helpers/index.html +1 -1
- package/coverage/lcov-report/src/__tests__/helpers/main.ts.html +1 -1
- package/coverage/lcov-report/src/async/arrays.ts.html +1 -1
- package/coverage/lcov-report/src/async/index.html +36 -21
- package/coverage/lcov-report/src/async/timeout.ts.html +59 -59
- package/coverage/lcov-report/src/cache.ts.html +97 -97
- package/coverage/lcov-report/src/dates/calc.ts.html +1 -1
- package/coverage/lcov-report/src/dates/convert.ts.html +1 -1
- package/coverage/lcov-report/src/dates/datex.ts.html +1 -1
- package/coverage/lcov-report/src/dates/format.ts.html +1 -1
- package/coverage/lcov-report/src/dates/index.html +1 -1
- package/coverage/lcov-report/src/dates/index.ts.html +1 -1
- package/coverage/lcov-report/src/dates/parse.ts.html +1 -1
- package/coverage/lcov-report/src/dates/period.ts.html +1 -1
- package/coverage/lcov-report/src/dates/shift.ts.html +1 -1
- package/coverage/lcov-report/src/dates/types.ts.html +1 -1
- package/coverage/lcov-report/src/dates/yearDate.ts.html +1 -1
- package/coverage/lcov-report/src/disposer.ts.html +1 -1
- package/coverage/lcov-report/src/enumHelper.ts.html +1 -1
- package/coverage/lcov-report/src/event.ts.html +1 -1
- package/coverage/lcov-report/src/fields/index.html +1 -1
- package/coverage/lcov-report/src/fields/update.ts.html +1 -1
- package/coverage/lcov-report/src/functions.ts.html +13 -13
- package/coverage/lcov-report/src/index.html +155 -20
- package/coverage/lcov-report/src/lazy/index.html +1 -1
- package/coverage/lcov-report/src/lazy/light.ts.html +1 -1
- package/coverage/lcov-report/src/lazy/observable.ts.html +1 -1
- package/coverage/lcov-report/src/lazy/promise.ts.html +1 -1
- package/coverage/lcov-report/src/lazy/singleton.ts.html +1 -1
- package/coverage/lcov-report/src/logger/batch.ts.html +1 -1
- package/coverage/lcov-report/src/logger/console.ts.html +1 -1
- package/coverage/lcov-report/src/logger/index.html +1 -1
- package/coverage/lcov-report/src/logger/index.ts.html +1 -1
- package/coverage/lcov-report/src/logger/named.ts.html +1 -1
- package/coverage/lcov-report/src/logger/proxy.ts.html +1 -1
- package/coverage/lcov-report/src/math/arrays.ts.html +277 -316
- package/coverage/lcov-report/src/math/calc.ts.html +1 -1
- package/coverage/lcov-report/src/math/distribution.ts.html +1 -1
- package/coverage/lcov-report/src/math/index.html +66 -21
- package/coverage/lcov-report/src/math/index.ts.html +1 -1
- package/coverage/lcov-report/src/observersMap.ts.html +1 -1
- package/coverage/lcov-report/src/observingCache.ts.html +1 -1
- package/coverage/lcov-report/src/queue/index.html +24 -9
- package/coverage/lcov-report/src/queue/parallel.ts.html +1 -1
- package/coverage/lcov-report/src/queue/tasks.ts.html +358 -0
- package/coverage/lcov-report/src/tempoCache.ts.html +1 -1
- package/coverage/lcov-report/src/transitionObserver.ts.html +1 -1
- package/coverage/lcov-report/src/types.ts.html +1 -1
- package/coverage/lcov-report/src/validation/ValidationErrors.ts.html +1 -1
- package/coverage/lcov-report/src/validation/creditCard.ts.html +1 -1
- package/coverage/lcov-report/src/validation/helpers.ts.html +1 -1
- package/coverage/lcov-report/src/validation/index.html +1 -1
- package/coverage/lcov-report/src/validation/index.ts.html +1 -1
- package/coverage/lcov-report/src/validation/types.ts.html +1 -1
- package/coverage/lcov-report/src/validation/validators.ts.html +1 -1
- package/coverage/lcov-report/src/validation/wrappers.ts.html +1 -1
- package/coverage/lcov-report/src/viewModels/CommonModel.ts.html +1 -1
- package/coverage/lcov-report/src/viewModels/FlagModel.ts.html +1 -1
- package/coverage/lcov-report/src/viewModels/LoadingModel.ts.html +2 -5
- package/coverage/lcov-report/src/viewModels/MultiSelectModel.ts.html +1 -1
- package/coverage/lcov-report/src/viewModels/NumberModel.ts.html +1 -1
- package/coverage/lcov-report/src/viewModels/SelectModel.ts.html +1 -1
- package/coverage/lcov-report/src/viewModels/TextModel.ts.html +1 -1
- package/coverage/lcov-report/src/viewModels/Validatable.ts.html +1 -1
- package/coverage/lcov-report/src/viewModels/index.html +130 -10
- package/coverage/lcov-report/src/viewModels/wrappers.ts.html +1 -1
- package/coverage/lcov-report/structures/helpers/enum.ts.html +1 -1
- package/coverage/lcov-report/structures/helpers/index.html +1 -1
- package/coverage/lcov-report/structures/index.html +1 -1
- package/coverage/lcov-report/structures/queue/index.html +24 -9
- package/coverage/lcov-report/structures/queue/parallel.ts.html +1 -1
- package/coverage/lcov-report/structures/queue/tasks.ts.html +358 -0
- package/coverage/lcov-report/structures/tempoCache.ts.html +1 -1
- package/coverage/lcov-report/tasks.ts.html +355 -0
- package/coverage/lcov-report/types/comparator.ts.html +1 -1
- package/coverage/lcov-report/types/getter.ts.html +1 -1
- package/coverage/lcov-report/types/index.html +1 -1
- package/coverage/lcov-report/types/index.ts.html +26 -2
- package/coverage/lcov-report/validation/ValidationErrors.ts.html +1 -1
- package/coverage/lcov-report/validation/creditCard.ts.html +1 -1
- package/coverage/lcov-report/validation/helpers.ts.html +1 -1
- package/coverage/lcov-report/validation/index.html +1 -1
- package/coverage/lcov-report/validation/index.ts.html +1 -1
- package/coverage/lcov-report/validation/types.ts.html +1 -1
- package/coverage/lcov-report/validation/validators.ts.html +1 -1
- package/coverage/lcov-report/validation/wrappers.ts.html +1 -1
- package/coverage/lcov.info +112 -24
- package/lib/models/File.d.ts +10 -0
- package/lib/models/File.d.ts.map +1 -0
- package/lib/{web/breakpoints/types.js → models/File.js} +1 -1
- package/lib/models/File.js.map +1 -0
- package/lib/{abstractions/services/storage.d.ts → storage/abstractions.d.ts} +3 -2
- package/lib/storage/abstractions.d.ts.map +1 -0
- package/lib/{abstractions/services/storage.js → storage/abstractions.js} +1 -1
- package/lib/storage/abstractions.js.map +1 -0
- package/lib/storage/asyncWrapper.d.ts +10 -0
- package/lib/storage/asyncWrapper.d.ts.map +1 -0
- package/lib/storage/asyncWrapper.js +24 -0
- package/lib/storage/asyncWrapper.js.map +1 -0
- package/lib/storage/index.d.ts +1 -28
- package/lib/storage/index.d.ts.map +1 -1
- package/lib/storage/index.js +2 -53
- package/lib/storage/index.js.map +1 -1
- package/lib/storage/keyStorage.d.ts +21 -0
- package/lib/storage/keyStorage.d.ts.map +1 -0
- package/lib/storage/keyStorage.js +36 -0
- package/lib/storage/keyStorage.js.map +1 -0
- package/lib/structures/queue/tasks.d.ts +17 -0
- package/lib/structures/queue/tasks.d.ts.map +1 -0
- package/lib/structures/queue/tasks.js +76 -0
- package/lib/structures/queue/tasks.js.map +1 -0
- package/lib/types/index.d.ts +4 -0
- package/lib/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/models/File.ts +14 -0
- package/src/{abstractions/services/storage.ts → storage/abstractions.ts} +3 -1
- package/src/storage/asyncWrapper.ts +24 -0
- package/src/storage/index.ts +1 -62
- package/src/storage/keyStorage.ts +40 -0
- package/src/structures/queue/__tests__/tasks.test.ts +87 -0
- package/src/structures/queue/tasks.ts +91 -0
- package/src/types/index.ts +8 -0
- package/lib/abstractions/services/storage.d.ts.map +0 -1
- package/lib/abstractions/services/storage.js.map +0 -1
- package/lib/storage/web/localStorage.d.ts +0 -13
- package/lib/storage/web/localStorage.d.ts.map +0 -1
- package/lib/storage/web/localStorage.js +0 -29
- package/lib/storage/web/localStorage.js.map +0 -1
- package/lib/storage/web/sessionStorage.d.ts +0 -13
- package/lib/storage/web/sessionStorage.d.ts.map +0 -1
- package/lib/storage/web/sessionStorage.js +0 -29
- package/lib/storage/web/sessionStorage.js.map +0 -1
- package/lib/storage/web/webStorage.d.ts +0 -9
- package/lib/storage/web/webStorage.d.ts.map +0 -1
- package/lib/storage/web/webStorage.js +0 -24
- package/lib/storage/web/webStorage.js.map +0 -1
- package/lib/web/breakpoints/index.d.ts +0 -3
- package/lib/web/breakpoints/index.d.ts.map +0 -1
- package/lib/web/breakpoints/index.js +0 -6
- package/lib/web/breakpoints/index.js.map +0 -1
- package/lib/web/breakpoints/manager.d.ts +0 -17
- package/lib/web/breakpoints/manager.d.ts.map +0 -1
- package/lib/web/breakpoints/manager.js +0 -56
- package/lib/web/breakpoints/manager.js.map +0 -1
- package/lib/web/breakpoints/rem.d.ts +0 -3
- package/lib/web/breakpoints/rem.d.ts.map +0 -1
- package/lib/web/breakpoints/rem.js +0 -22
- package/lib/web/breakpoints/rem.js.map +0 -1
- package/lib/web/breakpoints/types.d.ts +0 -22
- package/lib/web/breakpoints/types.d.ts.map +0 -1
- package/lib/web/breakpoints/types.js.map +0 -1
- package/src/storage/web/localStorage.ts +0 -35
- package/src/storage/web/sessionStorage.ts +0 -35
- package/src/storage/web/webStorage.ts +0 -29
- package/src/web/breakpoints/index.ts +0 -3
- package/src/web/breakpoints/manager.ts +0 -65
- package/src/web/breakpoints/rem.ts +0 -24
- package/src/web/breakpoints/types.ts +0 -26
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">100% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>151/151</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">96.77% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>60/62</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">100% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>29/29</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">100% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>138/138</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
</div>
|
|
62
62
|
</template>
|
|
63
63
|
</div>
|
|
64
|
-
<div class='status-line
|
|
64
|
+
<div class='status-line high'></div>
|
|
65
65
|
<pre><table class="coverage">
|
|
66
66
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
67
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -324,566 +324,527 @@
|
|
|
324
324
|
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
325
|
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
326
|
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
-
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
-
<
|
|
329
|
-
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
-
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
-
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
-
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
-
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
-
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
-
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
-
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
-
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
-
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
-
<a name='L274'></a><a href='#L274'>274</a>
|
|
340
|
-
<a name='L275'></a><a href='#L275'>275</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
341
|
-
<span class="cline-any cline-yes">1x</span>
|
|
327
|
+
<a name='L262'></a><a href='#L262'>262</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">10x</span>
|
|
328
|
+
<span class="cline-any cline-yes">10x</span>
|
|
342
329
|
<span class="cline-any cline-neutral"> </span>
|
|
343
|
-
<span class="cline-any cline-yes">
|
|
344
|
-
<span class="cline-any cline-
|
|
345
|
-
<span class="cline-any cline-
|
|
330
|
+
<span class="cline-any cline-yes">10x</span>
|
|
331
|
+
<span class="cline-any cline-yes">3x</span>
|
|
332
|
+
<span class="cline-any cline-yes">2x</span>
|
|
346
333
|
<span class="cline-any cline-neutral"> </span>
|
|
347
334
|
<span class="cline-any cline-neutral"> </span>
|
|
348
|
-
<span class="cline-any cline-
|
|
349
|
-
<span class="cline-any cline-
|
|
350
|
-
<span class="cline-any cline-
|
|
351
|
-
<span class="cline-any cline-
|
|
352
|
-
<span class="cline-any cline-
|
|
335
|
+
<span class="cline-any cline-yes">1x</span>
|
|
336
|
+
<span class="cline-any cline-yes">1x</span>
|
|
337
|
+
<span class="cline-any cline-yes">3x</span>
|
|
338
|
+
<span class="cline-any cline-yes">3x</span>
|
|
339
|
+
<span class="cline-any cline-yes">3x</span>
|
|
353
340
|
<span class="cline-any cline-neutral"> </span>
|
|
354
341
|
<span class="cline-any cline-neutral"> </span>
|
|
355
342
|
<span class="cline-any cline-neutral"> </span>
|
|
356
|
-
<span class="cline-any cline-
|
|
343
|
+
<span class="cline-any cline-yes">1x</span>
|
|
357
344
|
<span class="cline-any cline-neutral"> </span>
|
|
358
345
|
<span class="cline-any cline-neutral"> </span>
|
|
359
|
-
<span class="cline-any cline-yes">
|
|
360
|
-
<span class="cline-any cline-
|
|
361
|
-
<span class="cline-any cline-
|
|
346
|
+
<span class="cline-any cline-yes">10x</span>
|
|
347
|
+
<span class="cline-any cline-yes">17x</span>
|
|
348
|
+
<span class="cline-any cline-yes">4x</span>
|
|
362
349
|
<span class="cline-any cline-neutral"> </span>
|
|
363
350
|
<span class="cline-any cline-neutral"> </span>
|
|
364
|
-
<span class="cline-any cline-
|
|
365
|
-
<span class="cline-any cline-
|
|
366
|
-
<span class="cline-any cline-
|
|
367
|
-
<span class="cline-any cline-
|
|
368
|
-
<span class="cline-any cline-
|
|
351
|
+
<span class="cline-any cline-yes">13x</span>
|
|
352
|
+
<span class="cline-any cline-yes">13x</span>
|
|
353
|
+
<span class="cline-any cline-yes">23x</span>
|
|
354
|
+
<span class="cline-any cline-yes">23x</span>
|
|
355
|
+
<span class="cline-any cline-yes">10x</span>
|
|
369
356
|
<span class="cline-any cline-neutral"> </span>
|
|
370
357
|
<span class="cline-any cline-neutral"> </span>
|
|
371
358
|
<span class="cline-any cline-neutral"> </span>
|
|
372
|
-
<span class="cline-any cline-
|
|
359
|
+
<span class="cline-any cline-yes">12x</span>
|
|
373
360
|
<span class="cline-any cline-neutral"> </span>
|
|
374
361
|
<span class="cline-any cline-neutral"> </span>
|
|
375
|
-
<span class="cline-any cline-yes">
|
|
376
|
-
<span class="cline-any cline-
|
|
362
|
+
<span class="cline-any cline-yes">10x</span>
|
|
363
|
+
<span class="cline-any cline-yes">7x</span>
|
|
377
364
|
<span class="cline-any cline-neutral"> </span>
|
|
378
365
|
<span class="cline-any cline-neutral"> </span>
|
|
379
|
-
<span class="cline-any cline-yes">
|
|
380
|
-
<span class="cline-any cline-
|
|
366
|
+
<span class="cline-any cline-yes">10x</span>
|
|
367
|
+
<span class="cline-any cline-yes">7x</span>
|
|
381
368
|
<span class="cline-any cline-neutral"> </span>
|
|
382
369
|
<span class="cline-any cline-neutral"> </span>
|
|
383
|
-
<span class="cline-any cline-yes">
|
|
384
|
-
<span class="cline-any cline-
|
|
385
|
-
<span class="cline-any cline-
|
|
370
|
+
<span class="cline-any cline-yes">10x</span>
|
|
371
|
+
<span class="cline-any cline-yes">5x</span>
|
|
372
|
+
<span class="cline-any cline-yes">2x</span>
|
|
386
373
|
<span class="cline-any cline-neutral"> </span>
|
|
387
374
|
<span class="cline-any cline-neutral"> </span>
|
|
388
|
-
<span class="cline-any cline-
|
|
389
|
-
<span class="cline-any cline-
|
|
390
|
-
<span class="cline-any cline-
|
|
391
|
-
<span class="cline-any cline-
|
|
375
|
+
<span class="cline-any cline-yes">3x</span>
|
|
376
|
+
<span class="cline-any cline-yes">3x</span>
|
|
377
|
+
<span class="cline-any cline-yes">9x</span>
|
|
378
|
+
<span class="cline-any cline-yes">9x</span>
|
|
392
379
|
<span class="cline-any cline-neutral"> </span>
|
|
393
380
|
<span class="cline-any cline-neutral"> </span>
|
|
394
|
-
<span class="cline-any cline-
|
|
381
|
+
<span class="cline-any cline-yes">3x</span>
|
|
395
382
|
<span class="cline-any cline-neutral"> </span>
|
|
396
383
|
<span class="cline-any cline-neutral"> </span>
|
|
397
|
-
<span class="cline-any cline-yes">
|
|
398
|
-
<span class="cline-any cline-
|
|
399
|
-
<span class="cline-any cline-
|
|
384
|
+
<span class="cline-any cline-yes">10x</span>
|
|
385
|
+
<span class="cline-any cline-yes">5x</span>
|
|
386
|
+
<span class="cline-any cline-yes">2x</span>
|
|
400
387
|
<span class="cline-any cline-neutral"> </span>
|
|
401
388
|
<span class="cline-any cline-neutral"> </span>
|
|
402
|
-
<span class="cline-any cline-
|
|
403
|
-
<span class="cline-any cline-
|
|
404
|
-
<span class="cline-any cline-
|
|
405
|
-
<span class="cline-any cline-
|
|
389
|
+
<span class="cline-any cline-yes">3x</span>
|
|
390
|
+
<span class="cline-any cline-yes">3x</span>
|
|
391
|
+
<span class="cline-any cline-yes">7x</span>
|
|
392
|
+
<span class="cline-any cline-yes">4x</span>
|
|
406
393
|
<span class="cline-any cline-neutral"> </span>
|
|
407
394
|
<span class="cline-any cline-neutral"> </span>
|
|
408
|
-
<span class="cline-any cline-
|
|
395
|
+
<span class="cline-any cline-yes">2x</span>
|
|
409
396
|
<span class="cline-any cline-neutral"> </span>
|
|
410
397
|
<span class="cline-any cline-neutral"> </span>
|
|
398
|
+
<span class="cline-any cline-yes">10x</span>
|
|
399
|
+
<span class="cline-any cline-yes">4x</span>
|
|
400
|
+
<span class="cline-any cline-yes">2x</span>
|
|
401
|
+
<span class="cline-any cline-yes">3x</span>
|
|
402
|
+
<span class="cline-any cline-yes">2x</span>
|
|
411
403
|
<span class="cline-any cline-yes">1x</span>
|
|
412
|
-
<span class="cline-any cline-no"> </span>
|
|
413
|
-
<span class="cline-any cline-no"> </span>
|
|
414
|
-
<span class="cline-any cline-no"> </span>
|
|
415
|
-
<span class="cline-any cline-no"> </span>
|
|
416
|
-
<span class="cline-any cline-no"> </span>
|
|
417
404
|
<span class="cline-any cline-neutral"> </span>
|
|
418
405
|
<span class="cline-any cline-neutral"> </span>
|
|
419
406
|
<span class="cline-any cline-neutral"> </span>
|
|
420
407
|
<span class="cline-any cline-neutral"> </span>
|
|
421
|
-
<span class="cline-any cline-
|
|
408
|
+
<span class="cline-any cline-yes">2x</span>
|
|
422
409
|
<span class="cline-any cline-neutral"> </span>
|
|
423
410
|
<span class="cline-any cline-neutral"> </span>
|
|
424
|
-
<span class="cline-any cline-yes">
|
|
425
|
-
<span class="cline-any cline-
|
|
426
|
-
<span class="cline-any cline-
|
|
411
|
+
<span class="cline-any cline-yes">10x</span>
|
|
412
|
+
<span class="cline-any cline-yes">8x</span>
|
|
413
|
+
<span class="cline-any cline-yes">2x</span>
|
|
427
414
|
<span class="cline-any cline-neutral"> </span>
|
|
428
415
|
<span class="cline-any cline-neutral"> </span>
|
|
429
|
-
<span class="cline-any cline-
|
|
430
|
-
<span class="cline-any cline-
|
|
416
|
+
<span class="cline-any cline-yes">6x</span>
|
|
417
|
+
<span class="cline-any cline-yes">6x</span>
|
|
431
418
|
<span class="cline-any cline-neutral"> </span>
|
|
432
419
|
<span class="cline-any cline-neutral"> </span>
|
|
433
420
|
<span class="cline-any cline-neutral"> </span>
|
|
434
421
|
<span class="cline-any cline-neutral"> </span>
|
|
435
422
|
<span class="cline-any cline-neutral"> </span>
|
|
436
|
-
<span class="cline-any cline-
|
|
437
|
-
<span class="cline-any cline-
|
|
438
|
-
<span class="cline-any cline-
|
|
439
|
-
<span class="cline-any cline-
|
|
440
|
-
<span class="cline-any cline-
|
|
423
|
+
<span class="cline-any cline-yes">6x</span>
|
|
424
|
+
<span class="cline-any cline-yes">7x</span>
|
|
425
|
+
<span class="cline-any cline-yes">7x</span>
|
|
426
|
+
<span class="cline-any cline-yes">7x</span>
|
|
427
|
+
<span class="cline-any cline-yes">3x</span>
|
|
441
428
|
<span class="cline-any cline-neutral"> </span>
|
|
442
429
|
<span class="cline-any cline-neutral"> </span>
|
|
443
|
-
<span class="cline-any cline-
|
|
430
|
+
<span class="cline-any cline-yes">4x</span>
|
|
444
431
|
<span class="cline-any cline-neutral"> </span>
|
|
445
432
|
<span class="cline-any cline-neutral"> </span>
|
|
446
|
-
<span class="cline-any cline-
|
|
447
|
-
<span class="cline-any cline-
|
|
433
|
+
<span class="cline-any cline-yes">6x</span>
|
|
434
|
+
<span class="cline-any cline-yes">1x</span>
|
|
448
435
|
<span class="cline-any cline-neutral"> </span>
|
|
449
436
|
<span class="cline-any cline-neutral"> </span>
|
|
450
|
-
<span class="cline-any cline-
|
|
451
|
-
<span class="cline-any cline-
|
|
437
|
+
<span class="cline-any cline-yes">6x</span>
|
|
438
|
+
<span class="cline-any cline-yes">6x</span>
|
|
452
439
|
<span class="cline-any cline-neutral"> </span>
|
|
453
440
|
<span class="cline-any cline-neutral"> </span>
|
|
454
|
-
<span class="cline-any cline-yes">
|
|
455
|
-
<span class="cline-any cline-
|
|
456
|
-
<span class="cline-any cline-
|
|
441
|
+
<span class="cline-any cline-yes">10x</span>
|
|
442
|
+
<span class="cline-any cline-yes">9x</span>
|
|
443
|
+
<span class="cline-any cline-yes">2x</span>
|
|
457
444
|
<span class="cline-any cline-neutral"> </span>
|
|
458
445
|
<span class="cline-any cline-neutral"> </span>
|
|
459
|
-
<span class="cline-any cline-
|
|
460
|
-
<span class="cline-any cline-
|
|
461
|
-
<span class="cline-any cline-
|
|
446
|
+
<span class="cline-any cline-yes">7x</span>
|
|
447
|
+
<span class="cline-any cline-yes">7x</span>
|
|
448
|
+
<span class="cline-any cline-yes">7x</span>
|
|
462
449
|
<span class="cline-any cline-neutral"> </span>
|
|
463
450
|
<span class="cline-any cline-neutral"> </span>
|
|
464
451
|
<span class="cline-any cline-neutral"> </span>
|
|
465
452
|
<span class="cline-any cline-neutral"> </span>
|
|
466
453
|
<span class="cline-any cline-neutral"> </span>
|
|
467
|
-
<span class="cline-any cline-
|
|
468
|
-
<span class="cline-any cline-
|
|
469
|
-
<span class="cline-any cline-
|
|
454
|
+
<span class="cline-any cline-yes">7x</span>
|
|
455
|
+
<span class="cline-any cline-yes">9x</span>
|
|
456
|
+
<span class="cline-any cline-yes">2x</span>
|
|
470
457
|
<span class="cline-any cline-neutral"> </span>
|
|
471
458
|
<span class="cline-any cline-neutral"> </span>
|
|
472
|
-
<span class="cline-any cline-
|
|
459
|
+
<span class="cline-any cline-yes">7x</span>
|
|
473
460
|
<span class="cline-any cline-neutral"> </span>
|
|
474
461
|
<span class="cline-any cline-neutral"> </span>
|
|
475
462
|
<span class="cline-any cline-neutral"> </span>
|
|
476
|
-
<span class="cline-any cline-
|
|
463
|
+
<span class="cline-any cline-yes">7x</span>
|
|
477
464
|
<span class="cline-any cline-neutral"> </span>
|
|
478
|
-
<span class="cline-any cline-
|
|
465
|
+
<span class="cline-any cline-yes">1x</span>
|
|
479
466
|
<span class="cline-any cline-neutral"> </span>
|
|
480
467
|
<span class="cline-any cline-neutral"> </span>
|
|
481
|
-
<span class="cline-any cline-
|
|
482
|
-
<span class="cline-any cline-
|
|
468
|
+
<span class="cline-any cline-yes">7x</span>
|
|
469
|
+
<span class="cline-any cline-yes">7x</span>
|
|
483
470
|
<span class="cline-any cline-neutral"> </span>
|
|
484
471
|
<span class="cline-any cline-neutral"> </span>
|
|
485
|
-
<span class="cline-any cline-yes">
|
|
486
|
-
<span class="cline-any cline-
|
|
472
|
+
<span class="cline-any cline-yes">10x</span>
|
|
473
|
+
<span class="cline-any cline-yes">7x</span>
|
|
487
474
|
<span class="cline-any cline-neutral"> </span>
|
|
488
475
|
<span class="cline-any cline-neutral"> </span>
|
|
476
|
+
<span class="cline-any cline-yes">10x</span>
|
|
477
|
+
<span class="cline-any cline-yes">3x</span>
|
|
489
478
|
<span class="cline-any cline-yes">1x</span>
|
|
490
|
-
<span class="cline-any cline-no"> </span>
|
|
491
|
-
<span class="cline-any cline-no"> </span>
|
|
492
479
|
<span class="cline-any cline-neutral"> </span>
|
|
493
480
|
<span class="cline-any cline-neutral"> </span>
|
|
494
|
-
<span class="cline-any cline-
|
|
495
|
-
<span class="cline-any cline-
|
|
496
|
-
<span class="cline-any cline-
|
|
497
|
-
<span class="cline-any cline-
|
|
498
|
-
<span class="cline-any cline-
|
|
481
|
+
<span class="cline-any cline-yes">2x</span>
|
|
482
|
+
<span class="cline-any cline-yes">2x</span>
|
|
483
|
+
<span class="cline-any cline-yes">2x</span>
|
|
484
|
+
<span class="cline-any cline-yes">2x</span>
|
|
485
|
+
<span class="cline-any cline-yes">2x</span>
|
|
499
486
|
<span class="cline-any cline-neutral"> </span>
|
|
500
487
|
<span class="cline-any cline-neutral"> </span>
|
|
501
|
-
<span class="cline-any cline-
|
|
488
|
+
<span class="cline-any cline-yes">3x</span>
|
|
502
489
|
<span class="cline-any cline-neutral"> </span>
|
|
503
490
|
<span class="cline-any cline-neutral"> </span>
|
|
491
|
+
<span class="cline-any cline-yes">10x</span>
|
|
492
|
+
<span class="cline-any cline-yes">4x</span>
|
|
504
493
|
<span class="cline-any cline-yes">1x</span>
|
|
505
|
-
<span class="cline-any cline-no"> </span>
|
|
506
|
-
<span class="cline-any cline-no"> </span>
|
|
507
494
|
<span class="cline-any cline-neutral"> </span>
|
|
508
495
|
<span class="cline-any cline-neutral"> </span>
|
|
509
|
-
<span class="cline-any cline-
|
|
510
|
-
<span class="cline-any cline-
|
|
496
|
+
<span class="cline-any cline-yes">2x</span>
|
|
497
|
+
<span class="cline-any cline-yes">2x</span>
|
|
511
498
|
<span class="cline-any cline-neutral"> </span>
|
|
512
499
|
<span class="cline-any cline-neutral"> </span>
|
|
513
|
-
<span class="cline-any cline-yes">
|
|
514
|
-
<span class="cline-any cline-
|
|
515
|
-
<span class="cline-any cline-
|
|
516
|
-
<span class="cline-any cline-
|
|
500
|
+
<span class="cline-any cline-yes">10x</span>
|
|
501
|
+
<span class="cline-any cline-yes">5x</span>
|
|
502
|
+
<span class="cline-any cline-yes">5x</span>
|
|
503
|
+
<span class="cline-any cline-yes">5x</span>
|
|
517
504
|
<span class="cline-any cline-neutral"> </span>
|
|
518
505
|
<span class="cline-any cline-neutral"> </span>
|
|
519
506
|
<span class="cline-any cline-neutral"> </span>
|
|
520
507
|
<span class="cline-any cline-neutral"> </span>
|
|
521
508
|
<span class="cline-any cline-neutral"> </span>
|
|
522
509
|
<span class="cline-any cline-neutral"> </span>
|
|
523
|
-
<span class="cline-any cline-yes">
|
|
524
|
-
<span class="cline-any cline-
|
|
510
|
+
<span class="cline-any cline-yes">10x</span>
|
|
511
|
+
<span class="cline-any cline-yes">4x</span>
|
|
525
512
|
<span class="cline-any cline-neutral"> </span>
|
|
526
|
-
<span class="cline-any cline-
|
|
527
|
-
<span class="cline-any cline-
|
|
528
|
-
<span class="cline-any cline-
|
|
513
|
+
<span class="cline-any cline-yes">4x</span>
|
|
514
|
+
<span class="cline-any cline-yes">4x</span>
|
|
515
|
+
<span class="cline-any cline-yes">4x</span>
|
|
529
516
|
<span class="cline-any cline-neutral"> </span>
|
|
530
517
|
<span class="cline-any cline-neutral"> </span>
|
|
531
|
-
<span class="cline-any cline-
|
|
518
|
+
<span class="cline-any cline-yes">4x</span>
|
|
532
519
|
<span class="cline-any cline-neutral"> </span>
|
|
533
520
|
<span class="cline-any cline-neutral"> </span>
|
|
534
|
-
<span class="cline-any cline-yes">
|
|
535
|
-
<span class="cline-any cline-
|
|
536
|
-
<span class="cline-any cline-
|
|
537
|
-
<span class="cline-any cline-
|
|
538
|
-
<span class="cline-any cline-
|
|
539
|
-
<span class="cline-any cline-
|
|
540
|
-
<span class="cline-any cline-
|
|
541
|
-
<span class="cline-any cline-
|
|
542
|
-
<span class="cline-any cline-neutral"> </span>
|
|
521
|
+
<span class="cline-any cline-yes">10x</span>
|
|
522
|
+
<span class="cline-any cline-yes">2x</span>
|
|
523
|
+
<span class="cline-any cline-yes">2x</span>
|
|
524
|
+
<span class="cline-any cline-yes">4x</span>
|
|
525
|
+
<span class="cline-any cline-yes">4x</span>
|
|
526
|
+
<span class="cline-any cline-yes">4x</span>
|
|
527
|
+
<span class="cline-any cline-yes">3x</span>
|
|
528
|
+
<span class="cline-any cline-yes">3x</span>
|
|
543
529
|
<span class="cline-any cline-neutral"> </span>
|
|
544
|
-
<span class="cline-any cline-no"> </span>
|
|
545
530
|
<span class="cline-any cline-neutral"> </span>
|
|
546
|
-
<span class="cline-any cline-
|
|
547
|
-
<span class="cline-any cline-no"> </span>
|
|
531
|
+
<span class="cline-any cline-yes">4x</span>
|
|
548
532
|
<span class="cline-any cline-neutral"> </span>
|
|
549
533
|
<span class="cline-any cline-neutral"> </span>
|
|
550
534
|
<span class="cline-any cline-yes">1x</span>
|
|
551
|
-
<span class="cline-any cline-no"> </span>
|
|
552
|
-
<span class="cline-any cline-no"> </span>
|
|
553
|
-
<span class="cline-any cline-no"> </span>
|
|
554
|
-
<span class="cline-any cline-no"> </span>
|
|
555
535
|
<span class="cline-any cline-neutral"> </span>
|
|
556
536
|
<span class="cline-any cline-neutral"> </span>
|
|
557
|
-
<span class="cline-any cline-
|
|
537
|
+
<span class="cline-any cline-yes">10x</span>
|
|
538
|
+
<span class="cline-any cline-yes">2x</span>
|
|
539
|
+
<span class="cline-any cline-yes">2x</span>
|
|
540
|
+
<span class="cline-any cline-yes">4x</span>
|
|
541
|
+
<span class="cline-any cline-yes">4x</span>
|
|
558
542
|
<span class="cline-any cline-neutral"> </span>
|
|
559
543
|
<span class="cline-any cline-neutral"> </span>
|
|
560
544
|
<span class="cline-any cline-yes">1x</span>
|
|
561
|
-
<span class="cline-any cline-no"> </span>
|
|
562
|
-
<span class="cline-any cline-no"> </span>
|
|
563
545
|
<span class="cline-any cline-neutral"> </span>
|
|
564
|
-
<span class="cline-any cline-no"> </span>
|
|
565
|
-
<span class="cline-any cline-no"> </span>
|
|
566
546
|
<span class="cline-any cline-neutral"> </span>
|
|
547
|
+
<span class="cline-any cline-yes">10x</span>
|
|
548
|
+
<span class="cline-any cline-yes">2x</span>
|
|
549
|
+
<span class="cline-any cline-yes">2x</span>
|
|
567
550
|
<span class="cline-any cline-neutral"> </span>
|
|
551
|
+
<span class="cline-any cline-yes">2x</span>
|
|
552
|
+
<span class="cline-any cline-yes">4x</span>
|
|
568
553
|
<span class="cline-any cline-neutral"> </span>
|
|
569
554
|
<span class="cline-any cline-neutral"> </span>
|
|
570
|
-
<span class="cline-any cline-no"> </span>
|
|
571
555
|
<span class="cline-any cline-neutral"> </span>
|
|
572
556
|
<span class="cline-any cline-neutral"> </span>
|
|
573
557
|
<span class="cline-any cline-yes">1x</span>
|
|
574
|
-
<span class="cline-any cline-no"> </span>
|
|
575
|
-
<span class="cline-any cline-no"> </span>
|
|
576
|
-
<span class="cline-any cline-neutral"> </span>
|
|
577
|
-
<span class="cline-any cline-neutral"> </span>
|
|
578
|
-
<span class="cline-any cline-no"> </span>
|
|
579
558
|
<span class="cline-any cline-neutral"> </span>
|
|
580
559
|
<span class="cline-any cline-neutral"> </span>
|
|
560
|
+
<span class="cline-any cline-yes">10x</span>
|
|
561
|
+
<span class="cline-any cline-yes">4x</span>
|
|
562
|
+
<span class="cline-any cline-yes">1x</span>
|
|
581
563
|
<span class="cline-any cline-neutral"> </span>
|
|
582
564
|
<span class="cline-any cline-neutral"> </span>
|
|
583
|
-
<span class="cline-any cline-yes">
|
|
584
|
-
<span class="cline-any cline-no"> </span>
|
|
565
|
+
<span class="cline-any cline-yes">7x</span>
|
|
585
566
|
<span class="cline-any cline-neutral"> </span>
|
|
586
567
|
<span class="cline-any cline-neutral"> </span>
|
|
587
|
-
<span class="cline-any cline-no"> </span>
|
|
588
|
-
<span class="cline-any cline-no"> </span>
|
|
589
568
|
<span class="cline-any cline-neutral"> </span>
|
|
590
569
|
<span class="cline-any cline-neutral"> </span>
|
|
591
|
-
<span class="cline-any cline-
|
|
570
|
+
<span class="cline-any cline-yes">10x</span>
|
|
571
|
+
<span class="cline-any cline-yes">3x</span>
|
|
592
572
|
<span class="cline-any cline-neutral"> </span>
|
|
593
573
|
<span class="cline-any cline-neutral"> </span>
|
|
574
|
+
<span class="cline-any cline-yes">3x</span>
|
|
594
575
|
<span class="cline-any cline-yes">1x</span>
|
|
595
|
-
<span class="cline-any cline-no"> </span>
|
|
596
|
-
<span class="cline-any cline-no"> </span>
|
|
597
|
-
<span class="cline-any cline-no"> </span>
|
|
598
|
-
<span class="cline-any cline-neutral"> </span>
|
|
599
|
-
<span class="cline-any cline-no"> </span>
|
|
600
576
|
<span class="cline-any cline-neutral"> </span>
|
|
601
577
|
<span class="cline-any cline-neutral"> </span>
|
|
602
|
-
<span class="cline-any cline-yes">
|
|
603
|
-
<span class="cline-any cline-no"> </span>
|
|
604
|
-
<span class="cline-any cline-no"> </span>
|
|
605
|
-
<span class="cline-any cline-no"> </span>
|
|
606
|
-
<span class="cline-any cline-no"> </span>
|
|
607
|
-
<span class="cline-any cline-no"> </span>
|
|
578
|
+
<span class="cline-any cline-yes">2x</span>
|
|
608
579
|
<span class="cline-any cline-neutral"> </span>
|
|
609
580
|
<span class="cline-any cline-neutral"> </span>
|
|
610
|
-
<span class="cline-any cline-
|
|
611
|
-
<span class="cline-any cline-
|
|
581
|
+
<span class="cline-any cline-yes">10x</span>
|
|
582
|
+
<span class="cline-any cline-yes">1x</span>
|
|
583
|
+
<span class="cline-any cline-yes">1x</span>
|
|
584
|
+
<span class="cline-any cline-yes">5x</span>
|
|
612
585
|
<span class="cline-any cline-neutral"> </span>
|
|
586
|
+
<span class="cline-any cline-yes">1x</span>
|
|
613
587
|
<span class="cline-any cline-neutral"> </span>
|
|
614
588
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { Comparator, Getter, Predicate } from '../types';
|
|
615
589
|
import { random } from './calc';
|
|
616
590
|
|
|
617
|
-
export function
|
|
618
|
-
|
|
619
|
-
|
|
591
|
+
export function arrayCompareG<T>(arr: ReadonlyArray<T>, cond: (current: T, previous: T) => boolean): T {
|
|
592
|
+
if (!Array.isArray(arr) || arr.length <= 0) {
|
|
593
|
+
return null;
|
|
620
594
|
}
|
|
621
595
|
|
|
622
|
-
let result: T =
|
|
623
|
-
|
|
624
|
-
const current: T =
|
|
625
|
-
|
|
626
|
-
|
|
596
|
+
let result: T = null;
|
|
597
|
+
for (let i = 0; i < arr.length; i++) {
|
|
598
|
+
const current: T = arr[i];
|
|
599
|
+
if (cond(current, result)) {
|
|
600
|
+
result = current;
|
|
627
601
|
}
|
|
628
602
|
}
|
|
629
603
|
|
|
630
|
-
|
|
604
|
+
return result;
|
|
631
605
|
}
|
|
632
606
|
|
|
633
|
-
export function
|
|
634
|
-
|
|
635
|
-
|
|
607
|
+
export function arrayCompare(arr: number[], absolute: boolean, cond: (i: number, t: number) => boolean) {
|
|
608
|
+
if (!Array.isArray(arr) || arr.length <= 0) {
|
|
609
|
+
return null;
|
|
636
610
|
}
|
|
637
611
|
|
|
638
|
-
let max =
|
|
639
|
-
|
|
640
|
-
const e =
|
|
641
|
-
|
|
642
|
-
|
|
612
|
+
let max = arr[0];
|
|
613
|
+
for (let i = 1; i < arr.length; i++) {
|
|
614
|
+
const e = absolute ? Math.abs(arr[i]) : arr[i];
|
|
615
|
+
if (cond(e, max)) {
|
|
616
|
+
max = e;
|
|
643
617
|
}
|
|
644
618
|
}
|
|
645
619
|
|
|
646
|
-
|
|
620
|
+
return max;
|
|
647
621
|
}
|
|
648
622
|
|
|
649
|
-
export function
|
|
650
|
-
|
|
623
|
+
export function arrayMax(arr: number[], absolute = false) {
|
|
624
|
+
return arrayCompare(arr, absolute, (e, max) => e > max);
|
|
651
625
|
}
|
|
652
626
|
|
|
653
|
-
export function
|
|
654
|
-
|
|
627
|
+
export function arrayMin(arr: number[], absolute = false) {
|
|
628
|
+
return arrayCompare(arr, absolute, (e, min) => e < min);
|
|
655
629
|
}
|
|
656
630
|
|
|
657
|
-
export function
|
|
658
|
-
|
|
659
|
-
|
|
631
|
+
export function arrayAverage(arr: number[], absolute = false) {
|
|
632
|
+
if (!Array.isArray(arr) || arr.length <= 0) {
|
|
633
|
+
return 0;
|
|
660
634
|
}
|
|
661
635
|
|
|
662
|
-
let sum =
|
|
663
|
-
|
|
664
|
-
const e =
|
|
665
|
-
|
|
636
|
+
let sum = 0;
|
|
637
|
+
for (let i = 0; i < arr.length; i++) {
|
|
638
|
+
const e = absolute ? Math.abs(arr[i]) : arr[i];
|
|
639
|
+
sum += e;
|
|
666
640
|
}
|
|
667
641
|
|
|
668
|
-
|
|
642
|
+
return sum / arr.length;
|
|
669
643
|
}
|
|
670
644
|
|
|
671
|
-
export function
|
|
672
|
-
|
|
673
|
-
|
|
645
|
+
export function arrayCount<T>(arr: ReadonlyArray<T>, condition: (o: T) => boolean): number {
|
|
646
|
+
if (!arr || !arr.length) {
|
|
647
|
+
return 0;
|
|
674
648
|
}
|
|
675
649
|
|
|
676
|
-
let count =
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
650
|
+
let count = 0;
|
|
651
|
+
arr.forEach(a => {
|
|
652
|
+
if (condition(a)) {
|
|
653
|
+
++count;
|
|
680
654
|
}
|
|
681
655
|
});
|
|
682
|
-
|
|
656
|
+
return count;
|
|
683
657
|
}
|
|
684
658
|
|
|
685
|
-
export function
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
const r =
|
|
689
|
-
|
|
690
|
-
|
|
659
|
+
export function arrayFirstResult<T, V>(arr: ReadonlyArray<T>, mapper: (o: T) => V | null | false): V | null | false {
|
|
660
|
+
if (arr?.length) {
|
|
661
|
+
for (let i = 0; i < arr.length; ++i) {
|
|
662
|
+
const r = mapper(arr[i]);
|
|
663
|
+
if (r) {
|
|
664
|
+
return r;
|
|
691
665
|
}
|
|
692
666
|
}
|
|
693
667
|
}
|
|
694
668
|
|
|
695
|
-
|
|
669
|
+
return false;
|
|
696
670
|
}
|
|
697
671
|
|
|
698
|
-
export function
|
|
699
|
-
|
|
700
|
-
|
|
672
|
+
export function arraysCompare<T>(base: readonly T[], target: readonly T[], comparator?: Comparator<T>) {
|
|
673
|
+
if (!base || !target) {
|
|
674
|
+
return null;
|
|
701
675
|
}
|
|
702
676
|
|
|
703
|
-
const compare =
|
|
704
|
-
const result =
|
|
677
|
+
const compare = comparator || Comparator.Default;
|
|
678
|
+
const result = {
|
|
705
679
|
missing: [] as T[],
|
|
706
680
|
extra: [] as T[],
|
|
707
681
|
diff: 0,
|
|
708
682
|
};
|
|
709
683
|
|
|
710
|
-
|
|
711
|
-
const baseItem =
|
|
712
|
-
const targetItem =
|
|
713
|
-
|
|
714
|
-
|
|
684
|
+
for (let i = 0; i < base.length; ++i) {
|
|
685
|
+
const baseItem = base[i];
|
|
686
|
+
const targetItem = target[i];
|
|
687
|
+
if (compare(baseItem, targetItem)) {
|
|
688
|
+
continue;
|
|
715
689
|
}
|
|
716
690
|
|
|
717
|
-
|
|
691
|
+
result.missing.push(baseItem);
|
|
718
692
|
}
|
|
719
693
|
|
|
720
|
-
|
|
721
|
-
|
|
694
|
+
for (let i = base.length; i < target.length; ++i) {
|
|
695
|
+
result.extra.push(target[i]);
|
|
722
696
|
}
|
|
723
697
|
|
|
724
|
-
|
|
725
|
-
|
|
698
|
+
result.diff = result.missing.length + result.extra.length;
|
|
699
|
+
return result;
|
|
726
700
|
}
|
|
727
701
|
|
|
728
|
-
export function
|
|
729
|
-
|
|
730
|
-
|
|
702
|
+
export function arraysCompareDistinct<T>(base: readonly T[], target: readonly T[]) {
|
|
703
|
+
if (!base || !target) {
|
|
704
|
+
return null;
|
|
731
705
|
}
|
|
732
706
|
|
|
733
|
-
const baseSet =
|
|
734
|
-
const targetSet =
|
|
735
|
-
const result =
|
|
707
|
+
const baseSet = new Set(base);
|
|
708
|
+
const targetSet = new Set(target);
|
|
709
|
+
const result = {
|
|
736
710
|
missing: [] as T[],
|
|
737
711
|
extra: [] as T[],
|
|
738
712
|
diff: 0,
|
|
739
713
|
};
|
|
740
714
|
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
715
|
+
for (const item of baseSet) {
|
|
716
|
+
if (!targetSet.has(item)) {
|
|
717
|
+
result.missing.push(item);
|
|
744
718
|
} else {
|
|
745
719
|
// reduce iterations for 'extra'
|
|
746
|
-
|
|
720
|
+
targetSet.delete(item);
|
|
747
721
|
}
|
|
748
722
|
}
|
|
749
723
|
|
|
750
|
-
|
|
724
|
+
for (const item of targetSet) {
|
|
751
725
|
// all items left in 'target' is missing in 'base'
|
|
752
|
-
|
|
726
|
+
result.extra.push(item);
|
|
753
727
|
}
|
|
754
728
|
|
|
755
|
-
|
|
756
|
-
|
|
729
|
+
result.diff = result.missing.length + result.extra.length;
|
|
730
|
+
return result;
|
|
757
731
|
}
|
|
758
732
|
|
|
759
|
-
export function
|
|
760
|
-
|
|
733
|
+
export function arrayDistinct<T>(arr: readonly T[]) {
|
|
734
|
+
return Array.from(new Set(arr || []));
|
|
761
735
|
}
|
|
762
736
|
|
|
763
|
-
export function
|
|
764
|
-
|
|
765
|
-
|
|
737
|
+
export function normalize(arr: number[]): number[] {
|
|
738
|
+
if (arr.length === 0) {
|
|
739
|
+
return arr;
|
|
766
740
|
}
|
|
767
741
|
|
|
768
|
-
const min =
|
|
769
|
-
const max =
|
|
770
|
-
const dist =
|
|
771
|
-
|
|
772
|
-
|
|
742
|
+
const min = arrayMin(arr);
|
|
743
|
+
const max = arrayMax(arr);
|
|
744
|
+
const dist = max - min;
|
|
745
|
+
if (Math.abs(dist) < 0.000001) { // almost zero
|
|
746
|
+
return arr.map(() => 1);
|
|
773
747
|
}
|
|
774
748
|
|
|
775
|
-
|
|
749
|
+
return arr.map(x => (x - min) / dist);
|
|
776
750
|
}
|
|
777
751
|
|
|
778
|
-
export function
|
|
779
|
-
|
|
780
|
-
|
|
752
|
+
export function randomArrayItem<T>(arr: T[]): T {
|
|
753
|
+
if (!arr.length) {
|
|
754
|
+
return null;
|
|
781
755
|
}
|
|
782
756
|
|
|
783
|
-
const i =
|
|
784
|
-
|
|
757
|
+
const i = random(0, arr.length - 1);
|
|
758
|
+
return arr[i];
|
|
785
759
|
}
|
|
786
760
|
|
|
787
|
-
export function
|
|
788
|
-
const x =
|
|
789
|
-
|
|
790
|
-
|
|
761
|
+
export function arraySwap<T>(arr: T[], i1: number, i2: number) {
|
|
762
|
+
const x = arr[i1];
|
|
763
|
+
arr[i1] = arr[i2];
|
|
764
|
+
arr[i2] = x;
|
|
791
765
|
}
|
|
792
766
|
|
|
793
767
|
export function shuffle<T>(arr: T[], slice: false): T[];
|
|
794
768
|
export function shuffle<T>(arr: ReadonlyArray<T>): T[];
|
|
795
769
|
export function shuffle<T>(arr: ReadonlyArray<T>, slice: true): T[];
|
|
796
770
|
|
|
797
|
-
export function
|
|
798
|
-
const res = <span class="
|
|
771
|
+
export function shuffle<T>(arr: T[], slice = true): T[] {
|
|
772
|
+
const res = (slice ? arr?.slice() : <span class="branch-1 cbranch-no" title="branch not covered" >arr)</span> || [];
|
|
799
773
|
|
|
800
|
-
|
|
801
|
-
const nextIndex =
|
|
802
|
-
|
|
774
|
+
for (let i = 0; i < res.length - 1; ++i) {
|
|
775
|
+
const nextIndex = random(i + 1, res.length - 1);
|
|
776
|
+
arraySwap(res, i, nextIndex);
|
|
803
777
|
}
|
|
804
778
|
|
|
805
|
-
|
|
779
|
+
return res;
|
|
806
780
|
}
|
|
807
781
|
|
|
808
|
-
export function
|
|
809
|
-
const result: Partial<Record<K, T[]>> =
|
|
810
|
-
|
|
811
|
-
const k =
|
|
812
|
-
let g =
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
782
|
+
export function groupBy<T, K extends string | number>(arr: ReadonlyArray<T>, grouper: (item: T) => K): Partial<Record<K, T[]>> {
|
|
783
|
+
const result: Partial<Record<K, T[]>> = { };
|
|
784
|
+
arr.forEach(item => {
|
|
785
|
+
const k = grouper(item);
|
|
786
|
+
let g = result[k];
|
|
787
|
+
if (!g) {
|
|
788
|
+
g = [];
|
|
789
|
+
result[k] = g;
|
|
816
790
|
}
|
|
817
791
|
|
|
818
|
-
|
|
792
|
+
g.push(item);
|
|
819
793
|
});
|
|
820
794
|
|
|
821
|
-
|
|
795
|
+
return result;
|
|
822
796
|
}
|
|
823
797
|
|
|
824
|
-
export function
|
|
825
|
-
const result: Partial<Record<K, T>> =
|
|
826
|
-
|
|
827
|
-
const k =
|
|
828
|
-
|
|
798
|
+
export function groupOneBy<T, K extends string | number>(arr: ReadonlyArray<T>, grouper: (item: T) => K): Partial<Record<K, T>> {
|
|
799
|
+
const result: Partial<Record<K, T>> = { };
|
|
800
|
+
arr.forEach(item => {
|
|
801
|
+
const k = grouper(item);
|
|
802
|
+
result[k] = item;
|
|
829
803
|
});
|
|
830
804
|
|
|
831
|
-
|
|
805
|
+
return result;
|
|
832
806
|
}
|
|
833
807
|
|
|
834
|
-
export function
|
|
835
|
-
const trueArr: T[] =
|
|
836
|
-
const falseArr: T[] =
|
|
808
|
+
export function arraySplit<T>(arr: ReadonlyArray<T>, predicate: (t: T) => boolean): [T[], T[]] {
|
|
809
|
+
const trueArr: T[] = [];
|
|
810
|
+
const falseArr: T[] = [];
|
|
837
811
|
|
|
838
|
-
|
|
839
|
-
|
|
812
|
+
arr.forEach(a => {
|
|
813
|
+
(predicate(a)
|
|
840
814
|
? trueArr
|
|
841
815
|
: falseArr).push(a);
|
|
842
816
|
});
|
|
843
817
|
|
|
844
|
-
|
|
818
|
+
return [trueArr, falseArr];
|
|
845
819
|
}
|
|
846
820
|
|
|
847
|
-
export function
|
|
848
|
-
|
|
849
|
-
|
|
821
|
+
export function findIndexLeast(num: number, arr: number[], sort = false) {
|
|
822
|
+
if (sort) {
|
|
823
|
+
arr.sort();
|
|
850
824
|
}
|
|
851
825
|
|
|
852
|
-
|
|
826
|
+
return arr.findIndex(i => i > num);
|
|
853
827
|
}
|
|
854
828
|
|
|
855
829
|
type NonFunction<T> = T extends Function ? never : T;
|
|
856
830
|
|
|
857
|
-
export function
|
|
858
|
-
const index =
|
|
831
|
+
export function removeItem<T>(array: T[], item: NonFunction<T> | Predicate<T>): T {
|
|
832
|
+
const index = typeof item === 'function'
|
|
859
833
|
? array.findIndex(item as Predicate<T>)
|
|
860
834
|
: array.indexOf(item);
|
|
861
|
-
|
|
862
|
-
|
|
835
|
+
if (index < 0) {
|
|
836
|
+
return null;
|
|
863
837
|
}
|
|
864
838
|
|
|
865
|
-
|
|
839
|
+
return array.splice(index, 1)[0];
|
|
866
840
|
}
|
|
867
841
|
|
|
868
|
-
export function
|
|
869
|
-
const res: T[] =
|
|
870
|
-
|
|
871
|
-
|
|
842
|
+
export function arrayRepeat<T>(factory: Getter<T>, count = <span class="branch-0 cbranch-no" title="branch not covered" >1)</span> {
|
|
843
|
+
const res: T[] = [];
|
|
844
|
+
for (let i = 0; i < count; ++i) {
|
|
845
|
+
res.push(Getter.getValue(factory));
|
|
872
846
|
}
|
|
873
|
-
|
|
874
|
-
}
|
|
875
|
-
|
|
876
|
-
export function <span class="fstat-no" title="function not covered" >chunkify<</span>T>(array: T[], size: number): T[][] {
|
|
877
|
-
<span class="cstat-no" title="statement not covered" > return array.reduce(<span class="fstat-no" title="function not covered" >(r</span>es, item) => {</span>
|
|
878
|
-
let arr = <span class="cstat-no" title="statement not covered" >res[res.length - 1];</span>
|
|
879
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!arr || arr.length >= size) {</span>
|
|
880
|
-
<span class="cstat-no" title="statement not covered" > arr = [];</span>
|
|
881
|
-
<span class="cstat-no" title="statement not covered" > res.push(arr);</span>
|
|
882
|
-
}
|
|
883
|
-
|
|
884
|
-
<span class="cstat-no" title="statement not covered" > arr.push(item);</span>
|
|
885
|
-
<span class="cstat-no" title="statement not covered" > return res;</span>
|
|
886
|
-
}, [] as T[][]);
|
|
847
|
+
return res;
|
|
887
848
|
}
|
|
888
849
|
</pre></td></tr></table></pre>
|
|
889
850
|
|
|
@@ -892,7 +853,7 @@ export function <span class="fstat-no" title="function not covered" >chunkify<
|
|
|
892
853
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
893
854
|
Code coverage generated by
|
|
894
855
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
895
|
-
at 2022-10-
|
|
856
|
+
at 2022-10-29T19:51:46.084Z
|
|
896
857
|
</div>
|
|
897
858
|
<script src="../../prettify.js"></script>
|
|
898
859
|
<script>
|