@zajno/common 1.3.0-beta → 1.3.3

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 (152) hide show
  1. package/.github/workflows/CI.yml +8 -0
  2. package/coverage/clover.xml +428 -360
  3. package/coverage/coverage-final.json +20 -19
  4. package/coverage/lcov-report/index.html +44 -44
  5. package/coverage/lcov-report/src/__tests__/helpers/index.html +1 -1
  6. package/coverage/lcov-report/src/__tests__/helpers/main.ts.html +2 -2
  7. package/coverage/lcov-report/src/async/arrays.ts.html +1 -1
  8. package/coverage/lcov-report/src/async/index.html +1 -1
  9. package/coverage/lcov-report/src/dates/calc.ts.html +1 -1
  10. package/coverage/lcov-report/src/dates/convert.ts.html +1 -1
  11. package/coverage/lcov-report/src/dates/datex.ts.html +1 -1
  12. package/coverage/lcov-report/src/dates/format.ts.html +1 -1
  13. package/coverage/lcov-report/src/dates/index.html +1 -1
  14. package/coverage/lcov-report/src/dates/index.ts.html +1 -1
  15. package/coverage/lcov-report/src/dates/parse.ts.html +1 -1
  16. package/coverage/lcov-report/src/dates/period.ts.html +1 -1
  17. package/coverage/lcov-report/src/dates/shift.ts.html +1 -1
  18. package/coverage/lcov-report/src/dates/types.ts.html +1 -1
  19. package/coverage/lcov-report/src/dates/yearDate.ts.html +1 -1
  20. package/coverage/lcov-report/src/enumHelper.ts.html +1 -1
  21. package/coverage/lcov-report/src/event.ts.html +3 -3
  22. package/coverage/lcov-report/src/index.html +21 -21
  23. package/coverage/lcov-report/src/lazy.light.ts.html +3 -3
  24. package/coverage/lcov-report/src/logger/batch.ts.html +107 -0
  25. package/coverage/lcov-report/src/logger/console.ts.html +10 -25
  26. package/coverage/lcov-report/src/logger/index.html +54 -39
  27. package/coverage/lcov-report/src/logger/index.ts.html +88 -61
  28. package/coverage/lcov-report/src/logger/named.ts.html +31 -31
  29. package/coverage/lcov-report/src/logger/proxy.ts.html +13 -13
  30. package/coverage/lcov-report/src/math/arrays.ts.html +293 -32
  31. package/coverage/lcov-report/src/math/calc.ts.html +11 -11
  32. package/coverage/lcov-report/src/math/distribution.ts.html +2 -2
  33. package/coverage/lcov-report/src/math/index.html +11 -11
  34. package/coverage/lcov-report/src/math/index.ts.html +6 -6
  35. package/coverage/lcov-report/src/transitionObserver.ts.html +5 -5
  36. package/coverage/lcov-report/src/types.ts.html +33 -18
  37. package/coverage/lcov-report/src/validation/ValidationErrors.ts.html +1 -1
  38. package/coverage/lcov-report/src/validation/creditCard.ts.html +1 -1
  39. package/coverage/lcov-report/src/validation/helpers.ts.html +1 -1
  40. package/coverage/lcov-report/src/validation/index.html +1 -1
  41. package/coverage/lcov-report/src/validation/index.ts.html +1 -1
  42. package/coverage/lcov-report/src/validation/types.ts.html +1 -1
  43. package/coverage/lcov-report/src/validation/validators.ts.html +1 -1
  44. package/coverage/lcov-report/src/validation/wrappers.ts.html +1 -1
  45. package/coverage/lcov-report/src/viewModels/FlagModel.ts.html +21 -18
  46. package/coverage/lcov-report/src/viewModels/MultiSelectModel.ts.html +136 -94
  47. package/coverage/lcov-report/src/viewModels/NumberModel.ts.html +19 -10
  48. package/coverage/lcov-report/src/viewModels/SelectModel.ts.html +19 -10
  49. package/coverage/lcov-report/src/viewModels/Validatable.ts.html +12 -12
  50. package/coverage/lcov-report/src/viewModels/index.html +45 -45
  51. package/coverage/lcov-report/src/viewModels/wrappers.ts.html +3 -15
  52. package/coverage/lcov.info +871 -720
  53. package/lib/event.d.ts.map +1 -1
  54. package/lib/event.js +1 -1
  55. package/lib/event.js.map +1 -1
  56. package/lib/logger/batch.d.ts +3 -0
  57. package/lib/logger/batch.d.ts.map +1 -0
  58. package/lib/logger/batch.js +12 -0
  59. package/lib/logger/batch.js.map +1 -0
  60. package/lib/logger/console.d.ts +0 -1
  61. package/lib/logger/console.d.ts.map +1 -1
  62. package/lib/logger/console.js +0 -3
  63. package/lib/logger/console.js.map +1 -1
  64. package/lib/logger/file.d.ts +15 -0
  65. package/lib/logger/file.d.ts.map +1 -0
  66. package/lib/logger/file.js +43 -0
  67. package/lib/logger/file.js.map +1 -0
  68. package/lib/logger/index.d.ts +7 -6
  69. package/lib/logger/index.d.ts.map +1 -1
  70. package/lib/logger/index.js +34 -21
  71. package/lib/logger/index.js.map +1 -1
  72. package/lib/logger/named.js +3 -3
  73. package/lib/logger/named.js.map +1 -1
  74. package/lib/logger/proxy.d.ts +1 -1
  75. package/lib/logger/proxy.d.ts.map +1 -1
  76. package/lib/logger/proxy.js +2 -2
  77. package/lib/logger/proxy.js.map +1 -1
  78. package/lib/math/arrays.d.ts +16 -0
  79. package/lib/math/arrays.d.ts.map +1 -1
  80. package/lib/math/arrays.js +77 -1
  81. package/lib/math/arrays.js.map +1 -1
  82. package/lib/transitionObserver.d.ts.map +1 -1
  83. package/lib/transitionObserver.js +2 -2
  84. package/lib/transitionObserver.js.map +1 -1
  85. package/lib/types.d.ts +4 -0
  86. package/lib/types.d.ts.map +1 -1
  87. package/lib/types.js +6 -2
  88. package/lib/types.js.map +1 -1
  89. package/lib/viewModels/FlagModel.d.ts +4 -4
  90. package/lib/viewModels/FlagModel.d.ts.map +1 -1
  91. package/lib/viewModels/FlagModel.js +1 -0
  92. package/lib/viewModels/FlagModel.js.map +1 -1
  93. package/lib/viewModels/MultiSelectModel.d.ts +9 -3
  94. package/lib/viewModels/MultiSelectModel.d.ts.map +1 -1
  95. package/lib/viewModels/MultiSelectModel.js +16 -2
  96. package/lib/viewModels/MultiSelectModel.js.map +1 -1
  97. package/lib/viewModels/NumberModel.d.ts +4 -2
  98. package/lib/viewModels/NumberModel.d.ts.map +1 -1
  99. package/lib/viewModels/NumberModel.js +1 -0
  100. package/lib/viewModels/NumberModel.js.map +1 -1
  101. package/lib/viewModels/{PromptModalViewModel.d.ts → PromptModal.d.ts} +1 -1
  102. package/lib/viewModels/PromptModal.d.ts.map +1 -0
  103. package/lib/viewModels/{PromptModalViewModel.js → PromptModal.js} +1 -1
  104. package/lib/viewModels/PromptModal.js.map +1 -0
  105. package/lib/viewModels/SelectModel.d.ts +4 -2
  106. package/lib/viewModels/SelectModel.d.ts.map +1 -1
  107. package/lib/viewModels/SelectModel.js +1 -0
  108. package/lib/viewModels/SelectModel.js.map +1 -1
  109. package/lib/viewModels/TextModel.d.ts +4 -3
  110. package/lib/viewModels/TextModel.d.ts.map +1 -1
  111. package/lib/viewModels/TextModel.js +5 -11
  112. package/lib/viewModels/TextModel.js.map +1 -1
  113. package/lib/viewModels/ValuesCollector.d.ts +1 -3
  114. package/lib/viewModels/ValuesCollector.d.ts.map +1 -1
  115. package/lib/viewModels/ValuesCollector.js.map +1 -1
  116. package/lib/viewModels/index.d.ts +2 -1
  117. package/lib/viewModels/index.d.ts.map +1 -1
  118. package/lib/viewModels/index.js +2 -1
  119. package/lib/viewModels/index.js.map +1 -1
  120. package/lib/viewModels/types.d.ts +16 -0
  121. package/lib/viewModels/types.d.ts.map +1 -0
  122. package/lib/viewModels/types.js +3 -0
  123. package/lib/viewModels/types.js.map +1 -0
  124. package/lib/viewModels/wrappers.d.ts +1 -4
  125. package/lib/viewModels/wrappers.d.ts.map +1 -1
  126. package/lib/viewModels/wrappers.js.map +1 -1
  127. package/package.json +1 -1
  128. package/src/event.ts +2 -2
  129. package/src/logger/__tests__/{index.test.ts → logger.test.ts} +97 -41
  130. package/src/logger/batch.ts +9 -0
  131. package/src/logger/console.ts +0 -5
  132. package/src/logger/file.ts +46 -0
  133. package/src/logger/index.ts +37 -28
  134. package/src/logger/named.ts +3 -3
  135. package/src/logger/proxy.ts +2 -2
  136. package/src/math/__tests__/arrays.test.ts +53 -0
  137. package/src/math/arrays.ts +87 -0
  138. package/src/transitionObserver.ts +2 -2
  139. package/src/types.ts +6 -1
  140. package/src/viewModels/FlagModel.ts +5 -4
  141. package/src/viewModels/MultiSelectModel.ts +19 -5
  142. package/src/viewModels/NumberModel.ts +5 -2
  143. package/src/viewModels/{PromptModalViewModel.ts → PromptModal.ts} +0 -0
  144. package/src/viewModels/SelectModel.ts +5 -2
  145. package/src/viewModels/TextModel.ts +6 -6
  146. package/src/viewModels/ValuesCollector.ts +1 -4
  147. package/src/viewModels/__tests__/multiSelect.test.ts +127 -12
  148. package/src/viewModels/index.ts +2 -1
  149. package/src/viewModels/types.ts +19 -0
  150. package/src/viewModels/wrappers.ts +1 -5
  151. package/lib/viewModels/PromptModalViewModel.d.ts.map +0 -1
  152. package/lib/viewModels/PromptModalViewModel.js.map +0 -1
@@ -30,9 +30,9 @@
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">57.14% </span>
33
+ <span class="strong">50% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>4/7</span>
35
+ <span class='fraction'>3/6</span>
36
36
  </div>
37
37
 
38
38
 
@@ -97,19 +97,19 @@
97
97
  <span class="cline-any cline-neutral">&nbsp;</span>
98
98
  <span class="cline-any cline-yes">2x</span>
99
99
  <span class="cline-any cline-neutral">&nbsp;</span>
100
- <span class="cline-any cline-yes">30x</span>
100
+ <span class="cline-any cline-yes">66x</span>
101
101
  <span class="cline-any cline-neutral">&nbsp;</span>
102
- <span class="cline-any cline-yes">39x</span>
102
+ <span class="cline-any cline-yes">52x</span>
103
103
  <span class="cline-any cline-neutral">&nbsp;</span>
104
104
  <span class="cline-any cline-neutral">&nbsp;</span>
105
- <span class="cline-any cline-yes">39x</span>
106
- <span class="cline-any cline-yes">39x</span>
105
+ <span class="cline-any cline-yes">52x</span>
106
+ <span class="cline-any cline-yes">52x</span>
107
107
  <span class="cline-any cline-neutral">&nbsp;</span>
108
108
  <span class="cline-any cline-neutral">&nbsp;</span>
109
109
  <span class="cline-any cline-neutral">&nbsp;</span>
110
- <span class="cline-any cline-yes">92x</span>
111
- <span class="cline-any cline-yes">92x</span>
112
- <span class="cline-any cline-yes">92x</span>
110
+ <span class="cline-any cline-yes">105x</span>
111
+ <span class="cline-any cline-yes">105x</span>
112
+ <span class="cline-any cline-yes">105x</span>
113
113
  <span class="cline-any cline-neutral">&nbsp;</span>
114
114
  <span class="cline-any cline-no">&nbsp;</span>
115
115
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -126,12 +126,12 @@ export const EMPTY_LOGGER: ILogger = {
126
126
  &nbsp;
127
127
  export class ProxyLogger extends NamedLogger {
128
128
  &nbsp;
129
- protected get implementation() { return this._logger || EMPTY_LOGGER; }
129
+ protected get implementation() { return this._logger || <span class="branch-1 cbranch-no" title="branch not covered" >EMPTY_LOGGER;</span> }
130
130
  &nbsp;
131
131
  private _logger: ILogger = null;
132
132
  &nbsp;
133
- constructor(logger: ILogger, name?: string, enabled = <span class="branch-0 cbranch-no" title="branch not covered" >true)</span> {
134
- super(name, enabled);
133
+ constructor(logger: ILogger, name: string) {
134
+ super(name, logger != null);
135
135
  this._logger = logger;
136
136
  }
137
137
  &nbsp;
@@ -151,7 +151,7 @@ export class ProxyLogger extends NamedLogger {
151
151
  <div class='footer quiet pad2 space-top1 center small'>
152
152
  Code coverage generated by
153
153
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
154
- at Mon Nov 22 2021 09:37:35 GMT+0000 (Coordinated Universal Time)
154
+ at Mon Nov 29 2021 14:39:58 GMT+0000 (Coordinated Universal Time)
155
155
  </div>
156
156
  </div>
157
157
  <script src="../../prettify.js"></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'>106/106</span>
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">93.22% </span>
33
+ <span class="strong">96.25% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>55/59</span>
35
+ <span class='fraction'>77/80</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'>24/24</span>
42
+ <span class='fraction'>29/29</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'>96/96</span>
49
+ <span class='fraction'>138/138</span>
50
50
  </div>
51
51
 
52
52
 
@@ -231,9 +231,97 @@
231
231
  <a name='L172'></a><a href='#L172'>172</a>
232
232
  <a name='L173'></a><a href='#L173'>173</a>
233
233
  <a name='L174'></a><a href='#L174'>174</a>
234
- <a name='L175'></a><a href='#L175'>175</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">3x</span>
235
- <span class="cline-any cline-neutral">&nbsp;</span>
236
- <span class="cline-any cline-yes">3x</span>
234
+ <a name='L175'></a><a href='#L175'>175</a>
235
+ <a name='L176'></a><a href='#L176'>176</a>
236
+ <a name='L177'></a><a href='#L177'>177</a>
237
+ <a name='L178'></a><a href='#L178'>178</a>
238
+ <a name='L179'></a><a href='#L179'>179</a>
239
+ <a name='L180'></a><a href='#L180'>180</a>
240
+ <a name='L181'></a><a href='#L181'>181</a>
241
+ <a name='L182'></a><a href='#L182'>182</a>
242
+ <a name='L183'></a><a href='#L183'>183</a>
243
+ <a name='L184'></a><a href='#L184'>184</a>
244
+ <a name='L185'></a><a href='#L185'>185</a>
245
+ <a name='L186'></a><a href='#L186'>186</a>
246
+ <a name='L187'></a><a href='#L187'>187</a>
247
+ <a name='L188'></a><a href='#L188'>188</a>
248
+ <a name='L189'></a><a href='#L189'>189</a>
249
+ <a name='L190'></a><a href='#L190'>190</a>
250
+ <a name='L191'></a><a href='#L191'>191</a>
251
+ <a name='L192'></a><a href='#L192'>192</a>
252
+ <a name='L193'></a><a href='#L193'>193</a>
253
+ <a name='L194'></a><a href='#L194'>194</a>
254
+ <a name='L195'></a><a href='#L195'>195</a>
255
+ <a name='L196'></a><a href='#L196'>196</a>
256
+ <a name='L197'></a><a href='#L197'>197</a>
257
+ <a name='L198'></a><a href='#L198'>198</a>
258
+ <a name='L199'></a><a href='#L199'>199</a>
259
+ <a name='L200'></a><a href='#L200'>200</a>
260
+ <a name='L201'></a><a href='#L201'>201</a>
261
+ <a name='L202'></a><a href='#L202'>202</a>
262
+ <a name='L203'></a><a href='#L203'>203</a>
263
+ <a name='L204'></a><a href='#L204'>204</a>
264
+ <a name='L205'></a><a href='#L205'>205</a>
265
+ <a name='L206'></a><a href='#L206'>206</a>
266
+ <a name='L207'></a><a href='#L207'>207</a>
267
+ <a name='L208'></a><a href='#L208'>208</a>
268
+ <a name='L209'></a><a href='#L209'>209</a>
269
+ <a name='L210'></a><a href='#L210'>210</a>
270
+ <a name='L211'></a><a href='#L211'>211</a>
271
+ <a name='L212'></a><a href='#L212'>212</a>
272
+ <a name='L213'></a><a href='#L213'>213</a>
273
+ <a name='L214'></a><a href='#L214'>214</a>
274
+ <a name='L215'></a><a href='#L215'>215</a>
275
+ <a name='L216'></a><a href='#L216'>216</a>
276
+ <a name='L217'></a><a href='#L217'>217</a>
277
+ <a name='L218'></a><a href='#L218'>218</a>
278
+ <a name='L219'></a><a href='#L219'>219</a>
279
+ <a name='L220'></a><a href='#L220'>220</a>
280
+ <a name='L221'></a><a href='#L221'>221</a>
281
+ <a name='L222'></a><a href='#L222'>222</a>
282
+ <a name='L223'></a><a href='#L223'>223</a>
283
+ <a name='L224'></a><a href='#L224'>224</a>
284
+ <a name='L225'></a><a href='#L225'>225</a>
285
+ <a name='L226'></a><a href='#L226'>226</a>
286
+ <a name='L227'></a><a href='#L227'>227</a>
287
+ <a name='L228'></a><a href='#L228'>228</a>
288
+ <a name='L229'></a><a href='#L229'>229</a>
289
+ <a name='L230'></a><a href='#L230'>230</a>
290
+ <a name='L231'></a><a href='#L231'>231</a>
291
+ <a name='L232'></a><a href='#L232'>232</a>
292
+ <a name='L233'></a><a href='#L233'>233</a>
293
+ <a name='L234'></a><a href='#L234'>234</a>
294
+ <a name='L235'></a><a href='#L235'>235</a>
295
+ <a name='L236'></a><a href='#L236'>236</a>
296
+ <a name='L237'></a><a href='#L237'>237</a>
297
+ <a name='L238'></a><a href='#L238'>238</a>
298
+ <a name='L239'></a><a href='#L239'>239</a>
299
+ <a name='L240'></a><a href='#L240'>240</a>
300
+ <a name='L241'></a><a href='#L241'>241</a>
301
+ <a name='L242'></a><a href='#L242'>242</a>
302
+ <a name='L243'></a><a href='#L243'>243</a>
303
+ <a name='L244'></a><a href='#L244'>244</a>
304
+ <a name='L245'></a><a href='#L245'>245</a>
305
+ <a name='L246'></a><a href='#L246'>246</a>
306
+ <a name='L247'></a><a href='#L247'>247</a>
307
+ <a name='L248'></a><a href='#L248'>248</a>
308
+ <a name='L249'></a><a href='#L249'>249</a>
309
+ <a name='L250'></a><a href='#L250'>250</a>
310
+ <a name='L251'></a><a href='#L251'>251</a>
311
+ <a name='L252'></a><a href='#L252'>252</a>
312
+ <a name='L253'></a><a href='#L253'>253</a>
313
+ <a name='L254'></a><a href='#L254'>254</a>
314
+ <a name='L255'></a><a href='#L255'>255</a>
315
+ <a name='L256'></a><a href='#L256'>256</a>
316
+ <a name='L257'></a><a href='#L257'>257</a>
317
+ <a name='L258'></a><a href='#L258'>258</a>
318
+ <a name='L259'></a><a href='#L259'>259</a>
319
+ <a name='L260'></a><a href='#L260'>260</a>
320
+ <a name='L261'></a><a href='#L261'>261</a>
321
+ <a name='L262'></a><a href='#L262'>262</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">6x</span>
322
+ <span class="cline-any cline-yes">6x</span>
323
+ <span class="cline-any cline-neutral">&nbsp;</span>
324
+ <span class="cline-any cline-yes">6x</span>
237
325
  <span class="cline-any cline-yes">3x</span>
238
326
  <span class="cline-any cline-yes">2x</span>
239
327
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -249,7 +337,7 @@
249
337
  <span class="cline-any cline-yes">1x</span>
250
338
  <span class="cline-any cline-neutral">&nbsp;</span>
251
339
  <span class="cline-any cline-neutral">&nbsp;</span>
252
- <span class="cline-any cline-yes">3x</span>
340
+ <span class="cline-any cline-yes">6x</span>
253
341
  <span class="cline-any cline-yes">17x</span>
254
342
  <span class="cline-any cline-yes">4x</span>
255
343
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -265,15 +353,15 @@
265
353
  <span class="cline-any cline-yes">12x</span>
266
354
  <span class="cline-any cline-neutral">&nbsp;</span>
267
355
  <span class="cline-any cline-neutral">&nbsp;</span>
268
- <span class="cline-any cline-yes">3x</span>
356
+ <span class="cline-any cline-yes">6x</span>
269
357
  <span class="cline-any cline-yes">7x</span>
270
358
  <span class="cline-any cline-neutral">&nbsp;</span>
271
359
  <span class="cline-any cline-neutral">&nbsp;</span>
272
- <span class="cline-any cline-yes">3x</span>
360
+ <span class="cline-any cline-yes">6x</span>
273
361
  <span class="cline-any cline-yes">7x</span>
274
362
  <span class="cline-any cline-neutral">&nbsp;</span>
275
363
  <span class="cline-any cline-neutral">&nbsp;</span>
276
- <span class="cline-any cline-yes">3x</span>
364
+ <span class="cline-any cline-yes">6x</span>
277
365
  <span class="cline-any cline-yes">5x</span>
278
366
  <span class="cline-any cline-yes">2x</span>
279
367
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -287,7 +375,7 @@
287
375
  <span class="cline-any cline-yes">3x</span>
288
376
  <span class="cline-any cline-neutral">&nbsp;</span>
289
377
  <span class="cline-any cline-neutral">&nbsp;</span>
290
- <span class="cline-any cline-yes">3x</span>
378
+ <span class="cline-any cline-yes">6x</span>
291
379
  <span class="cline-any cline-yes">5x</span>
292
380
  <span class="cline-any cline-yes">2x</span>
293
381
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -301,7 +389,7 @@
301
389
  <span class="cline-any cline-yes">2x</span>
302
390
  <span class="cline-any cline-neutral">&nbsp;</span>
303
391
  <span class="cline-any cline-neutral">&nbsp;</span>
304
- <span class="cline-any cline-yes">3x</span>
392
+ <span class="cline-any cline-yes">6x</span>
305
393
  <span class="cline-any cline-yes">4x</span>
306
394
  <span class="cline-any cline-yes">2x</span>
307
395
  <span class="cline-any cline-yes">3x</span>
@@ -314,7 +402,72 @@
314
402
  <span class="cline-any cline-yes">2x</span>
315
403
  <span class="cline-any cline-neutral">&nbsp;</span>
316
404
  <span class="cline-any cline-neutral">&nbsp;</span>
405
+ <span class="cline-any cline-yes">6x</span>
406
+ <span class="cline-any cline-yes">8x</span>
407
+ <span class="cline-any cline-yes">2x</span>
408
+ <span class="cline-any cline-neutral">&nbsp;</span>
409
+ <span class="cline-any cline-neutral">&nbsp;</span>
410
+ <span class="cline-any cline-yes">6x</span>
411
+ <span class="cline-any cline-yes">6x</span>
412
+ <span class="cline-any cline-neutral">&nbsp;</span>
413
+ <span class="cline-any cline-neutral">&nbsp;</span>
414
+ <span class="cline-any cline-neutral">&nbsp;</span>
415
+ <span class="cline-any cline-neutral">&nbsp;</span>
416
+ <span class="cline-any cline-neutral">&nbsp;</span>
417
+ <span class="cline-any cline-yes">6x</span>
418
+ <span class="cline-any cline-yes">7x</span>
419
+ <span class="cline-any cline-yes">7x</span>
420
+ <span class="cline-any cline-yes">7x</span>
317
421
  <span class="cline-any cline-yes">3x</span>
422
+ <span class="cline-any cline-neutral">&nbsp;</span>
423
+ <span class="cline-any cline-neutral">&nbsp;</span>
424
+ <span class="cline-any cline-yes">4x</span>
425
+ <span class="cline-any cline-neutral">&nbsp;</span>
426
+ <span class="cline-any cline-neutral">&nbsp;</span>
427
+ <span class="cline-any cline-yes">6x</span>
428
+ <span class="cline-any cline-yes">1x</span>
429
+ <span class="cline-any cline-neutral">&nbsp;</span>
430
+ <span class="cline-any cline-neutral">&nbsp;</span>
431
+ <span class="cline-any cline-yes">6x</span>
432
+ <span class="cline-any cline-yes">6x</span>
433
+ <span class="cline-any cline-neutral">&nbsp;</span>
434
+ <span class="cline-any cline-neutral">&nbsp;</span>
435
+ <span class="cline-any cline-yes">6x</span>
436
+ <span class="cline-any cline-yes">9x</span>
437
+ <span class="cline-any cline-yes">2x</span>
438
+ <span class="cline-any cline-neutral">&nbsp;</span>
439
+ <span class="cline-any cline-neutral">&nbsp;</span>
440
+ <span class="cline-any cline-yes">7x</span>
441
+ <span class="cline-any cline-yes">7x</span>
442
+ <span class="cline-any cline-yes">7x</span>
443
+ <span class="cline-any cline-neutral">&nbsp;</span>
444
+ <span class="cline-any cline-neutral">&nbsp;</span>
445
+ <span class="cline-any cline-neutral">&nbsp;</span>
446
+ <span class="cline-any cline-neutral">&nbsp;</span>
447
+ <span class="cline-any cline-neutral">&nbsp;</span>
448
+ <span class="cline-any cline-yes">7x</span>
449
+ <span class="cline-any cline-yes">9x</span>
450
+ <span class="cline-any cline-yes">2x</span>
451
+ <span class="cline-any cline-neutral">&nbsp;</span>
452
+ <span class="cline-any cline-neutral">&nbsp;</span>
453
+ <span class="cline-any cline-yes">7x</span>
454
+ <span class="cline-any cline-neutral">&nbsp;</span>
455
+ <span class="cline-any cline-neutral">&nbsp;</span>
456
+ <span class="cline-any cline-neutral">&nbsp;</span>
457
+ <span class="cline-any cline-yes">7x</span>
458
+ <span class="cline-any cline-neutral">&nbsp;</span>
459
+ <span class="cline-any cline-yes">1x</span>
460
+ <span class="cline-any cline-neutral">&nbsp;</span>
461
+ <span class="cline-any cline-neutral">&nbsp;</span>
462
+ <span class="cline-any cline-yes">7x</span>
463
+ <span class="cline-any cline-yes">7x</span>
464
+ <span class="cline-any cline-neutral">&nbsp;</span>
465
+ <span class="cline-any cline-neutral">&nbsp;</span>
466
+ <span class="cline-any cline-yes">6x</span>
467
+ <span class="cline-any cline-yes">7x</span>
468
+ <span class="cline-any cline-neutral">&nbsp;</span>
469
+ <span class="cline-any cline-neutral">&nbsp;</span>
470
+ <span class="cline-any cline-yes">6x</span>
318
471
  <span class="cline-any cline-yes">3x</span>
319
472
  <span class="cline-any cline-yes">1x</span>
320
473
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -329,7 +482,7 @@
329
482
  <span class="cline-any cline-yes">3x</span>
330
483
  <span class="cline-any cline-neutral">&nbsp;</span>
331
484
  <span class="cline-any cline-neutral">&nbsp;</span>
332
- <span class="cline-any cline-yes">3x</span>
485
+ <span class="cline-any cline-yes">6x</span>
333
486
  <span class="cline-any cline-yes">4x</span>
334
487
  <span class="cline-any cline-yes">1x</span>
335
488
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -338,28 +491,28 @@
338
491
  <span class="cline-any cline-yes">2x</span>
339
492
  <span class="cline-any cline-neutral">&nbsp;</span>
340
493
  <span class="cline-any cline-neutral">&nbsp;</span>
341
- <span class="cline-any cline-yes">3x</span>
342
- <span class="cline-any cline-yes">3x</span>
343
- <span class="cline-any cline-yes">3x</span>
344
- <span class="cline-any cline-yes">3x</span>
494
+ <span class="cline-any cline-yes">6x</span>
495
+ <span class="cline-any cline-yes">5x</span>
496
+ <span class="cline-any cline-yes">5x</span>
497
+ <span class="cline-any cline-yes">5x</span>
345
498
  <span class="cline-any cline-neutral">&nbsp;</span>
346
499
  <span class="cline-any cline-neutral">&nbsp;</span>
347
500
  <span class="cline-any cline-neutral">&nbsp;</span>
348
501
  <span class="cline-any cline-neutral">&nbsp;</span>
349
502
  <span class="cline-any cline-neutral">&nbsp;</span>
350
503
  <span class="cline-any cline-neutral">&nbsp;</span>
351
- <span class="cline-any cline-yes">3x</span>
352
- <span class="cline-any cline-yes">1x</span>
504
+ <span class="cline-any cline-yes">6x</span>
505
+ <span class="cline-any cline-yes">4x</span>
353
506
  <span class="cline-any cline-neutral">&nbsp;</span>
354
- <span class="cline-any cline-yes">1x</span>
355
- <span class="cline-any cline-yes">2x</span>
356
- <span class="cline-any cline-yes">2x</span>
507
+ <span class="cline-any cline-yes">4x</span>
508
+ <span class="cline-any cline-yes">4x</span>
509
+ <span class="cline-any cline-yes">4x</span>
357
510
  <span class="cline-any cline-neutral">&nbsp;</span>
358
511
  <span class="cline-any cline-neutral">&nbsp;</span>
359
- <span class="cline-any cline-yes">1x</span>
512
+ <span class="cline-any cline-yes">4x</span>
360
513
  <span class="cline-any cline-neutral">&nbsp;</span>
361
514
  <span class="cline-any cline-neutral">&nbsp;</span>
362
- <span class="cline-any cline-yes">3x</span>
515
+ <span class="cline-any cline-yes">6x</span>
363
516
  <span class="cline-any cline-yes">2x</span>
364
517
  <span class="cline-any cline-yes">2x</span>
365
518
  <span class="cline-any cline-yes">4x</span>
@@ -375,7 +528,7 @@
375
528
  <span class="cline-any cline-yes">1x</span>
376
529
  <span class="cline-any cline-neutral">&nbsp;</span>
377
530
  <span class="cline-any cline-neutral">&nbsp;</span>
378
- <span class="cline-any cline-yes">3x</span>
531
+ <span class="cline-any cline-yes">6x</span>
379
532
  <span class="cline-any cline-yes">2x</span>
380
533
  <span class="cline-any cline-yes">2x</span>
381
534
  <span class="cline-any cline-yes">4x</span>
@@ -385,7 +538,7 @@
385
538
  <span class="cline-any cline-yes">1x</span>
386
539
  <span class="cline-any cline-neutral">&nbsp;</span>
387
540
  <span class="cline-any cline-neutral">&nbsp;</span>
388
- <span class="cline-any cline-yes">3x</span>
541
+ <span class="cline-any cline-yes">6x</span>
389
542
  <span class="cline-any cline-yes">2x</span>
390
543
  <span class="cline-any cline-yes">2x</span>
391
544
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -398,14 +551,36 @@
398
551
  <span class="cline-any cline-yes">1x</span>
399
552
  <span class="cline-any cline-neutral">&nbsp;</span>
400
553
  <span class="cline-any cline-neutral">&nbsp;</span>
401
- <span class="cline-any cline-yes">3x</span>
554
+ <span class="cline-any cline-yes">6x</span>
402
555
  <span class="cline-any cline-yes">4x</span>
403
556
  <span class="cline-any cline-yes">1x</span>
404
557
  <span class="cline-any cline-neutral">&nbsp;</span>
405
558
  <span class="cline-any cline-neutral">&nbsp;</span>
406
559
  <span class="cline-any cline-yes">7x</span>
407
560
  <span class="cline-any cline-neutral">&nbsp;</span>
408
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { random } from './calc';
561
+ <span class="cline-any cline-neutral">&nbsp;</span>
562
+ <span class="cline-any cline-neutral">&nbsp;</span>
563
+ <span class="cline-any cline-neutral">&nbsp;</span>
564
+ <span class="cline-any cline-yes">6x</span>
565
+ <span class="cline-any cline-yes">3x</span>
566
+ <span class="cline-any cline-neutral">&nbsp;</span>
567
+ <span class="cline-any cline-neutral">&nbsp;</span>
568
+ <span class="cline-any cline-yes">3x</span>
569
+ <span class="cline-any cline-yes">1x</span>
570
+ <span class="cline-any cline-neutral">&nbsp;</span>
571
+ <span class="cline-any cline-neutral">&nbsp;</span>
572
+ <span class="cline-any cline-yes">2x</span>
573
+ <span class="cline-any cline-neutral">&nbsp;</span>
574
+ <span class="cline-any cline-neutral">&nbsp;</span>
575
+ <span class="cline-any cline-yes">6x</span>
576
+ <span class="cline-any cline-yes">1x</span>
577
+ <span class="cline-any cline-yes">1x</span>
578
+ <span class="cline-any cline-yes">5x</span>
579
+ <span class="cline-any cline-neutral">&nbsp;</span>
580
+ <span class="cline-any cline-yes">1x</span>
581
+ <span class="cline-any cline-neutral">&nbsp;</span>
582
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { Comparator, Getter, Predicate } from '../types';
583
+ import { random } from './calc';
409
584
  &nbsp;
410
585
  export function arrayCompareG&lt;T&gt;(arr: ReadonlyArray&lt;T&gt;, cond: (current: T, previous: T) =&gt; boolean): T {
411
586
  if (!Array.isArray(arr) || arr.length &lt;= 0) {
@@ -488,6 +663,71 @@ export function arrayFirstResult&lt;T, V&gt;(arr: ReadonlyArray&lt;T&gt;, mapper
488
663
  return false;
489
664
  }
490
665
  &nbsp;
666
+ export function arraysCompare&lt;T&gt;(base: readonly T[], target: readonly T[], comparator?: Comparator&lt;T&gt;) {
667
+ if (!base || !target) {
668
+ return null;
669
+ }
670
+ &nbsp;
671
+ const compare = comparator || Comparator.Default;
672
+ const result = {
673
+ missing: [] as T[],
674
+ extra: [] as T[],
675
+ diff: 0,
676
+ };
677
+ &nbsp;
678
+ for (let i = 0; i &lt; base.length; ++i) {
679
+ const baseItem = base[i];
680
+ const targetItem = target[i];
681
+ if (compare(baseItem, targetItem)) {
682
+ continue;
683
+ }
684
+ &nbsp;
685
+ result.missing.push(baseItem);
686
+ }
687
+ &nbsp;
688
+ for (let i = base.length; i &lt; target.length; ++i) {
689
+ result.extra.push(target[i]);
690
+ }
691
+ &nbsp;
692
+ result.diff = result.missing.length + result.extra.length;
693
+ return result;
694
+ }
695
+ &nbsp;
696
+ export function arraysCompareDistinct&lt;T&gt;(base: readonly T[], target: readonly T[]) {
697
+ if (!base || !target) {
698
+ return null;
699
+ }
700
+ &nbsp;
701
+ const baseSet = new Set(base);
702
+ const targetSet = new Set(target);
703
+ const result = {
704
+ missing: [] as T[],
705
+ extra: [] as T[],
706
+ diff: 0,
707
+ };
708
+ &nbsp;
709
+ for (const item of baseSet) {
710
+ if (!targetSet.has(item)) {
711
+ result.missing.push(item);
712
+ } else {
713
+ // reduce iterations for 'extra'
714
+ targetSet.delete(item);
715
+ }
716
+ }
717
+ &nbsp;
718
+ for (const item of targetSet) {
719
+ // all items left in 'target' is missing in 'base'
720
+ result.extra.push(item);
721
+ }
722
+ &nbsp;
723
+ result.diff = result.missing.length + result.extra.length;
724
+ return result;
725
+ }
726
+ &nbsp;
727
+ export function arrayDistinct&lt;T&gt;(arr: readonly T[]) {
728
+ return Array.from(new Set(arr || []));
729
+ }
730
+ &nbsp;
491
731
  export function normalize(arr: number[]): number[] {
492
732
  if (arr.length === 0) {
493
733
  return arr;
@@ -523,7 +763,7 @@ export function shuffle&lt;T&gt;(arr: ReadonlyArray&lt;T&gt;): T[];
523
763
  export function shuffle&lt;T&gt;(arr: ReadonlyArray&lt;T&gt;, slice: true): T[];
524
764
  &nbsp;
525
765
  export function shuffle&lt;T&gt;(arr: T[], slice = true): T[] {
526
- const res = (slice ? arr<span class="branch-0 cbranch-no" title="branch not covered" >?.s</span>lice() : <span class="branch-1 cbranch-no" title="branch not covered" >arr)</span> || <span class="branch-1 cbranch-no" title="branch not covered" >[];</span>
766
+ const res = (slice ? arr?.slice() : <span class="branch-1 cbranch-no" title="branch not covered" >arr)</span> || [];
527
767
  &nbsp;
528
768
  for (let i = 0; i &lt; res.length - 1; ++i) {
529
769
  const nextIndex = random(i + 1, res.length - 1);
@@ -579,6 +819,27 @@ export function findIndexLeast(num: number, arr: number[], sort = false) {
579
819
  &nbsp;
580
820
  return arr.findIndex(i =&gt; i &gt; num);
581
821
  }
822
+ &nbsp;
823
+ type NonFunction&lt;T&gt; = T extends Function ? never : T;
824
+ &nbsp;
825
+ export function removeItem&lt;T&gt;(array: T[], item: NonFunction&lt;T&gt; | Predicate&lt;T&gt;): T {
826
+ const index = typeof item === 'function'
827
+ ? array.findIndex(item as Predicate&lt;T&gt;)
828
+ : array.indexOf(item);
829
+ if (index &lt; 0) {
830
+ return null;
831
+ }
832
+ &nbsp;
833
+ return array.splice(index, 1)[0];
834
+ }
835
+ &nbsp;
836
+ export function arrayRepeat&lt;T&gt;(factory: Getter&lt;T&gt;, count = <span class="branch-0 cbranch-no" title="branch not covered" >1)</span> {
837
+ const res: T[] = [];
838
+ for (let i = 0; i &lt; count; ++i) {
839
+ res.push(Getter.getValue(factory));
840
+ }
841
+ return res;
842
+ }
582
843
  &nbsp;</pre></td></tr></table></pre>
583
844
 
584
845
  <div class='push'></div><!-- for sticky footer -->
@@ -586,7 +847,7 @@ export function findIndexLeast(num: number, arr: number[], sort = false) {
586
847
  <div class='footer quiet pad2 space-top1 center small'>
587
848
  Code coverage generated by
588
849
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
589
- at Mon Nov 22 2021 09:37:35 GMT+0000 (Coordinated Universal Time)
850
+ at Mon Nov 29 2021 14:39:58 GMT+0000 (Coordinated Universal Time)
590
851
  </div>
591
852
  </div>
592
853
  <script src="../../prettify.js"></script>
@@ -124,7 +124,7 @@
124
124
  <a name='L65'></a><a href='#L65'>65</a>
125
125
  <a name='L66'></a><a href='#L66'>66</a>
126
126
  <a name='L67'></a><a href='#L67'>67</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
127
- <span class="cline-any cline-yes">4x</span>
127
+ <span class="cline-any cline-yes">7x</span>
128
128
  <span class="cline-any cline-yes">13x</span>
129
129
  <span class="cline-any cline-yes">3x</span>
130
130
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -136,17 +136,17 @@
136
136
  <span class="cline-any cline-yes">7x</span>
137
137
  <span class="cline-any cline-neutral">&nbsp;</span>
138
138
  <span class="cline-any cline-neutral">&nbsp;</span>
139
- <span class="cline-any cline-yes">4x</span>
139
+ <span class="cline-any cline-yes">7x</span>
140
140
  <span class="cline-any cline-yes">5x</span>
141
141
  <span class="cline-any cline-neutral">&nbsp;</span>
142
142
  <span class="cline-any cline-neutral">&nbsp;</span>
143
- <span class="cline-any cline-yes">4x</span>
143
+ <span class="cline-any cline-yes">7x</span>
144
144
  <span class="cline-any cline-yes">4x</span>
145
145
  <span class="cline-any cline-yes">4x</span>
146
146
  <span class="cline-any cline-yes">4x</span>
147
147
  <span class="cline-any cline-neutral">&nbsp;</span>
148
148
  <span class="cline-any cline-neutral">&nbsp;</span>
149
- <span class="cline-any cline-yes">4x</span>
149
+ <span class="cline-any cline-yes">7x</span>
150
150
  <span class="cline-any cline-yes">2x</span>
151
151
  <span class="cline-any cline-yes">2x</span>
152
152
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -168,7 +168,7 @@
168
168
  <span class="cline-any cline-neutral">&nbsp;</span>
169
169
  <span class="cline-any cline-neutral">&nbsp;</span>
170
170
  <span class="cline-any cline-neutral">&nbsp;</span>
171
- <span class="cline-any cline-yes">4x</span>
171
+ <span class="cline-any cline-yes">7x</span>
172
172
  <span class="cline-any cline-yes">9x</span>
173
173
  <span class="cline-any cline-yes">9x</span>
174
174
  <span class="cline-any cline-yes">9x</span>
@@ -179,14 +179,14 @@
179
179
  <span class="cline-any cline-yes">9x</span>
180
180
  <span class="cline-any cline-neutral">&nbsp;</span>
181
181
  <span class="cline-any cline-neutral">&nbsp;</span>
182
- <span class="cline-any cline-yes">4x</span>
182
+ <span class="cline-any cline-yes">7x</span>
183
183
  <span class="cline-any cline-yes">2x</span>
184
184
  <span class="cline-any cline-neutral">&nbsp;</span>
185
185
  <span class="cline-any cline-neutral">&nbsp;</span>
186
- <span class="cline-any cline-yes">4x</span>
187
- <span class="cline-any cline-yes">8x</span>
188
- <span class="cline-any cline-yes">8x</span>
189
- <span class="cline-any cline-yes">8x</span>
186
+ <span class="cline-any cline-yes">7x</span>
187
+ <span class="cline-any cline-yes">10x</span>
188
+ <span class="cline-any cline-yes">10x</span>
189
+ <span class="cline-any cline-yes">10x</span>
190
190
  <span class="cline-any cline-neutral">&nbsp;</span>
191
191
  <span class="cline-any cline-neutral">&nbsp;</span>
192
192
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">&nbsp;
@@ -262,7 +262,7 @@ export function random(min: number = <span class="branch-0 cbranch-no" title="br
262
262
  <div class='footer quiet pad2 space-top1 center small'>
263
263
  Code coverage generated by
264
264
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
265
- at Mon Nov 22 2021 09:37:35 GMT+0000 (Coordinated Universal Time)
265
+ at Mon Nov 29 2021 14:39:58 GMT+0000 (Coordinated Universal Time)
266
266
  </div>
267
267
  </div>
268
268
  <script src="../../prettify.js"></script>
@@ -84,7 +84,7 @@
84
84
  <span class="cline-any cline-neutral">&nbsp;</span>
85
85
  <span class="cline-any cline-neutral">&nbsp;</span>
86
86
  <span class="cline-any cline-neutral">&nbsp;</span>
87
- <span class="cline-any cline-yes">3x</span>
87
+ <span class="cline-any cline-yes">6x</span>
88
88
  <span class="cline-any cline-yes">4x</span>
89
89
  <span class="cline-any cline-yes">4x</span>
90
90
  <span class="cline-any cline-yes">1x</span>
@@ -124,7 +124,7 @@ export function extendDistribution&lt;T extends keyof any&gt;(count: number, typ
124
124
  <div class='footer quiet pad2 space-top1 center small'>
125
125
  Code coverage generated by
126
126
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
127
- at Mon Nov 22 2021 09:37:35 GMT+0000 (Coordinated Universal Time)
127
+ at Mon Nov 29 2021 14:39:58 GMT+0000 (Coordinated Universal Time)
128
128
  </div>
129
129
  </div>
130
130
  <script src="../../prettify.js"></script>