@zajno/common 1.3.2 → 1.3.6

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 (93) hide show
  1. package/.github/workflows/CI.yml +8 -0
  2. package/coverage/clover.xml +195 -141
  3. package/coverage/coverage-final.json +40 -39
  4. package/coverage/lcov-report/index.html +39 -24
  5. package/coverage/lcov-report/src/__tests__/helpers/index.html +1 -1
  6. package/coverage/lcov-report/src/__tests__/helpers/main.ts.html +1 -1
  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 +1 -1
  22. package/coverage/lcov-report/src/fields/index.html +111 -0
  23. package/coverage/lcov-report/src/{viewModels/SelectViewModel.ts.html → fields/update.ts.html} +119 -182
  24. package/coverage/lcov-report/src/index.html +1 -1
  25. package/coverage/lcov-report/src/lazy.light.ts.html +3 -3
  26. package/coverage/lcov-report/src/logger/batch.ts.html +1 -1
  27. package/coverage/lcov-report/src/logger/console.ts.html +1 -1
  28. package/coverage/lcov-report/src/logger/index.html +1 -1
  29. package/coverage/lcov-report/src/logger/index.ts.html +1 -1
  30. package/coverage/lcov-report/src/logger/named.ts.html +1 -1
  31. package/coverage/lcov-report/src/logger/proxy.ts.html +1 -1
  32. package/coverage/lcov-report/src/math/arrays.ts.html +32 -8
  33. package/coverage/lcov-report/src/math/calc.ts.html +1 -1
  34. package/coverage/lcov-report/src/math/distribution.ts.html +1 -1
  35. package/coverage/lcov-report/src/math/index.html +11 -11
  36. package/coverage/lcov-report/src/math/index.ts.html +1 -1
  37. package/coverage/lcov-report/src/transitionObserver.ts.html +1 -1
  38. package/coverage/lcov-report/src/types.ts.html +4 -4
  39. package/coverage/lcov-report/src/validation/ValidationErrors.ts.html +1 -1
  40. package/coverage/lcov-report/src/validation/creditCard.ts.html +1 -1
  41. package/coverage/lcov-report/src/validation/helpers.ts.html +1 -1
  42. package/coverage/lcov-report/src/validation/index.html +1 -1
  43. package/coverage/lcov-report/src/validation/index.ts.html +1 -1
  44. package/coverage/lcov-report/src/validation/types.ts.html +1 -1
  45. package/coverage/lcov-report/src/validation/validators.ts.html +1 -1
  46. package/coverage/lcov-report/src/validation/wrappers.ts.html +1 -1
  47. package/coverage/lcov-report/src/viewModels/FlagModel.ts.html +6 -6
  48. package/coverage/lcov-report/src/viewModels/MultiSelectModel.ts.html +104 -95
  49. package/coverage/lcov-report/src/viewModels/NumberModel.ts.html +1 -1
  50. package/coverage/lcov-report/src/viewModels/SelectModel.ts.html +1 -1
  51. package/coverage/lcov-report/src/viewModels/Validatable.ts.html +45 -21
  52. package/coverage/lcov-report/src/viewModels/index.html +30 -30
  53. package/coverage/lcov-report/src/viewModels/wrappers.ts.html +1 -1
  54. package/coverage/lcov-report/{enumHelper.ts.html → update.ts.html} +118 -193
  55. package/coverage/lcov.info +347 -207
  56. package/lib/fields/update.d.ts +17 -6
  57. package/lib/fields/update.d.ts.map +1 -1
  58. package/lib/fields/update.js +29 -13
  59. package/lib/fields/update.js.map +1 -1
  60. package/lib/ident.d.ts +6 -0
  61. package/lib/ident.d.ts.map +1 -0
  62. package/lib/ident.js +3 -0
  63. package/lib/ident.js.map +1 -0
  64. package/lib/math/arrays.d.ts +2 -1
  65. package/lib/math/arrays.d.ts.map +1 -1
  66. package/lib/math/arrays.js +9 -1
  67. package/lib/math/arrays.js.map +1 -1
  68. package/lib/viewModels/MultiSelectModel.d.ts +2 -0
  69. package/lib/viewModels/MultiSelectModel.d.ts.map +1 -1
  70. package/lib/viewModels/MultiSelectModel.js +3 -1
  71. package/lib/viewModels/MultiSelectModel.js.map +1 -1
  72. package/lib/viewModels/PromptModal.d.ts.map +1 -1
  73. package/lib/viewModels/PromptModal.js +1 -1
  74. package/lib/viewModels/PromptModal.js.map +1 -1
  75. package/lib/viewModels/Validatable.d.ts +2 -1
  76. package/lib/viewModels/Validatable.d.ts.map +1 -1
  77. package/lib/viewModels/Validatable.js +7 -0
  78. package/lib/viewModels/Validatable.js.map +1 -1
  79. package/package.json +1 -1
  80. package/src/fields/__tests__/fields.update.test.ts +73 -0
  81. package/src/fields/update.ts +54 -20
  82. package/src/ident.ts +8 -0
  83. package/src/math/arrays.ts +9 -1
  84. package/src/viewModels/MultiSelectModel.ts +4 -1
  85. package/src/viewModels/PromptModal.ts +1 -1
  86. package/src/viewModels/Validatable.ts +8 -0
  87. package/src/viewModels/__tests__/multiSelect.test.ts +127 -12
  88. package/coverage/lcov-report/NumberModel.ts.html +0 -188
  89. package/coverage/lcov-report/arrays.ts.html +0 -602
  90. package/coverage/lcov-report/calc.ts.html +0 -278
  91. package/coverage/lcov-report/src/viewModels/LabeledFlagModel.ts.html +0 -137
  92. package/coverage/lcov-report/src/viewModels/labeled.ts.html +0 -128
  93. package/coverage/lcov-report/transitionObserver.ts.html +0 -536
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">47.47% </span>
26
+ <span class="strong">77.67% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>47/99</span>
28
+ <span class='fraction'>80/103</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">6.25% </span>
33
+ <span class="strong">43.75% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>1/16</span>
35
+ <span class='fraction'>7/16</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">20% </span>
40
+ <span class="strong">66.67% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>8/40</span>
42
+ <span class='fraction'>28/42</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">49.38% </span>
47
+ <span class="strong">77.11% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>40/81</span>
49
+ <span class='fraction'>64/83</span>
50
50
  </div>
51
51
 
52
52
 
@@ -55,7 +55,7 @@
55
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
56
  </p>
57
57
  </div>
58
- <div class='status-line low'></div>
58
+ <div class='status-line medium'></div>
59
59
  <pre><table class="coverage">
60
60
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
61
61
  <a name='L2'></a><a href='#L2'>2</a>
@@ -218,7 +218,10 @@
218
218
  <a name='L159'></a><a href='#L159'>159</a>
219
219
  <a name='L160'></a><a href='#L160'>160</a>
220
220
  <a name='L161'></a><a href='#L161'>161</a>
221
- <a name='L162'></a><a href='#L162'>162</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
221
+ <a name='L162'></a><a href='#L162'>162</a>
222
+ <a name='L163'></a><a href='#L163'>163</a>
223
+ <a name='L164'></a><a href='#L164'>164</a>
224
+ <a name='L165'></a><a href='#L165'>165</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
222
225
  <span class="cline-any cline-yes">1x</span>
223
226
  <span class="cline-any cline-yes">1x</span>
224
227
  <span class="cline-any cline-yes">1x</span>
@@ -230,56 +233,56 @@
230
233
  <span class="cline-any cline-yes">1x</span>
231
234
  <span class="cline-any cline-neutral">&nbsp;</span>
232
235
  <span class="cline-any cline-neutral">&nbsp;</span>
233
- <span class="cline-any cline-yes">3x</span>
236
+ <span class="cline-any cline-yes">6x</span>
234
237
  <span class="cline-any cline-neutral">&nbsp;</span>
235
- <span class="cline-any cline-yes">3x</span>
236
- <span class="cline-any cline-yes">3x</span>
238
+ <span class="cline-any cline-yes">6x</span>
239
+ <span class="cline-any cline-yes">6x</span>
237
240
  <span class="cline-any cline-neutral">&nbsp;</span>
238
- <span class="cline-any cline-yes">3x</span>
239
- <span class="cline-any cline-yes">3x</span>
241
+ <span class="cline-any cline-yes">6x</span>
242
+ <span class="cline-any cline-yes">6x</span>
240
243
  <span class="cline-any cline-neutral">&nbsp;</span>
241
244
  <span class="cline-any cline-neutral">&nbsp;</span>
242
- <span class="cline-any cline-yes">3x</span>
243
- <span class="cline-any cline-yes">3x</span>
245
+ <span class="cline-any cline-yes">6x</span>
246
+ <span class="cline-any cline-yes">6x</span>
244
247
  <span class="cline-any cline-neutral">&nbsp;</span>
245
248
  <span class="cline-any cline-neutral">&nbsp;</span>
246
- <span class="cline-any cline-yes">3x</span>
247
- <span class="cline-any cline-yes">3x</span>
248
- <span class="cline-any cline-yes">3x</span>
249
- <span class="cline-any cline-yes">3x</span>
249
+ <span class="cline-any cline-yes">6x</span>
250
+ <span class="cline-any cline-yes">6x</span>
251
+ <span class="cline-any cline-yes">6x</span>
252
+ <span class="cline-any cline-yes">6x</span>
250
253
  <span class="cline-any cline-neutral">&nbsp;</span>
251
254
  <span class="cline-any cline-neutral">&nbsp;</span>
252
255
  <span class="cline-any cline-neutral">&nbsp;</span>
253
- <span class="cline-any cline-yes">1x</span>
256
+ <span class="cline-any cline-yes">25x</span>
254
257
  <span class="cline-any cline-neutral">&nbsp;</span>
255
- <span class="cline-any cline-yes">1x</span>
258
+ <span class="cline-any cline-yes">7x</span>
256
259
  <span class="cline-any cline-neutral">&nbsp;</span>
257
260
  <span class="cline-any cline-no">&nbsp;</span>
258
261
  <span class="cline-any cline-neutral">&nbsp;</span>
259
262
  <span class="cline-any cline-neutral">&nbsp;</span>
260
263
  <span class="cline-any cline-yes">1x</span>
261
- <span class="cline-any cline-yes">4x</span>
264
+ <span class="cline-any cline-yes">49x</span>
262
265
  <span class="cline-any cline-neutral">&nbsp;</span>
263
266
  <span class="cline-any cline-neutral">&nbsp;</span>
264
267
  <span class="cline-any cline-neutral">&nbsp;</span>
265
268
  <span class="cline-any cline-yes">1x</span>
266
- <span class="cline-any cline-no">&nbsp;</span>
269
+ <span class="cline-any cline-yes">9x</span>
267
270
  <span class="cline-any cline-neutral">&nbsp;</span>
268
271
  <span class="cline-any cline-neutral">&nbsp;</span>
269
272
  <span class="cline-any cline-neutral">&nbsp;</span>
270
273
  <span class="cline-any cline-yes">1x</span>
271
- <span class="cline-any cline-no">&nbsp;</span>
272
- <span class="cline-any cline-no">&nbsp;</span>
274
+ <span class="cline-any cline-yes">21x</span>
275
+ <span class="cline-any cline-yes">21x</span>
273
276
  <span class="cline-any cline-neutral">&nbsp;</span>
274
277
  <span class="cline-any cline-neutral">&nbsp;</span>
275
278
  <span class="cline-any cline-no">&nbsp;</span>
276
279
  <span class="cline-any cline-no">&nbsp;</span>
277
280
  <span class="cline-any cline-neutral">&nbsp;</span>
278
- <span class="cline-any cline-yes">1x</span>
279
- <span class="cline-any cline-no">&nbsp;</span>
281
+ <span class="cline-any cline-yes">11x</span>
282
+ <span class="cline-any cline-yes">18x</span>
280
283
  <span class="cline-any cline-neutral">&nbsp;</span>
281
- <span class="cline-any cline-no">&nbsp;</span>
282
- <span class="cline-any cline-no">&nbsp;</span>
284
+ <span class="cline-any cline-yes">4x</span>
285
+ <span class="cline-any cline-yes">4x</span>
283
286
  <span class="cline-any cline-no">&nbsp;</span>
284
287
  <span class="cline-any cline-neutral">&nbsp;</span>
285
288
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -287,50 +290,50 @@
287
290
  <span class="cline-any cline-neutral">&nbsp;</span>
288
291
  <span class="cline-any cline-no">&nbsp;</span>
289
292
  <span class="cline-any cline-neutral">&nbsp;</span>
290
- <span class="cline-any cline-yes">3x</span>
291
- <span class="cline-any cline-no">&nbsp;</span>
292
- <span class="cline-any cline-no">&nbsp;</span>
293
- <span class="cline-any cline-no">&nbsp;</span>
293
+ <span class="cline-any cline-yes">6x</span>
294
+ <span class="cline-any cline-yes">4x</span>
295
+ <span class="cline-any cline-yes">4x</span>
296
+ <span class="cline-any cline-yes">4x</span>
294
297
  <span class="cline-any cline-neutral">&nbsp;</span>
295
298
  <span class="cline-any cline-neutral">&nbsp;</span>
296
299
  <span class="cline-any cline-neutral">&nbsp;</span>
297
- <span class="cline-any cline-yes">3x</span>
298
- <span class="cline-any cline-yes">3x</span>
300
+ <span class="cline-any cline-yes">6x</span>
301
+ <span class="cline-any cline-yes">6x</span>
299
302
  <span class="cline-any cline-neutral">&nbsp;</span>
300
303
  <span class="cline-any cline-neutral">&nbsp;</span>
301
- <span class="cline-any cline-yes">3x</span>
302
- <span class="cline-any cline-no">&nbsp;</span>
304
+ <span class="cline-any cline-yes">6x</span>
305
+ <span class="cline-any cline-yes">1x</span>
303
306
  <span class="cline-any cline-neutral">&nbsp;</span>
304
307
  <span class="cline-any cline-neutral">&nbsp;</span>
305
- <span class="cline-any cline-yes">3x</span>
306
- <span class="cline-any cline-no">&nbsp;</span>
307
- <span class="cline-any cline-no">&nbsp;</span>
308
- <span class="cline-any cline-no">&nbsp;</span>
308
+ <span class="cline-any cline-yes">6x</span>
309
+ <span class="cline-any cline-yes">2x</span>
310
+ <span class="cline-any cline-yes">2x</span>
311
+ <span class="cline-any cline-yes">2x</span>
309
312
  <span class="cline-any cline-neutral">&nbsp;</span>
310
313
  <span class="cline-any cline-neutral">&nbsp;</span>
311
314
  <span class="cline-any cline-neutral">&nbsp;</span>
312
- <span class="cline-any cline-yes">3x</span>
313
- <span class="cline-any cline-yes">3x</span>
315
+ <span class="cline-any cline-yes">6x</span>
316
+ <span class="cline-any cline-yes">6x</span>
314
317
  <span class="cline-any cline-neutral">&nbsp;</span>
315
318
  <span class="cline-any cline-neutral">&nbsp;</span>
316
- <span class="cline-any cline-yes">3x</span>
319
+ <span class="cline-any cline-yes">6x</span>
317
320
  <span class="cline-any cline-no">&nbsp;</span>
318
321
  <span class="cline-any cline-neutral">&nbsp;</span>
319
322
  <span class="cline-any cline-neutral">&nbsp;</span>
320
323
  <span class="cline-any cline-neutral">&nbsp;</span>
321
- <span class="cline-any cline-yes">3x</span>
322
- <span class="cline-any cline-no">&nbsp;</span>
324
+ <span class="cline-any cline-yes">6x</span>
325
+ <span class="cline-any cline-yes">8x</span>
323
326
  <span class="cline-any cline-no">&nbsp;</span>
324
327
  <span class="cline-any cline-neutral">&nbsp;</span>
325
328
  <span class="cline-any cline-neutral">&nbsp;</span>
326
- <span class="cline-any cline-no">&nbsp;</span>
327
- <span class="cline-any cline-no">&nbsp;</span>
329
+ <span class="cline-any cline-yes">8x</span>
330
+ <span class="cline-any cline-yes">5x</span>
328
331
  <span class="cline-any cline-neutral">&nbsp;</span>
329
- <span class="cline-any cline-no">&nbsp;</span>
332
+ <span class="cline-any cline-yes">3x</span>
330
333
  <span class="cline-any cline-neutral">&nbsp;</span>
331
334
  <span class="cline-any cline-neutral">&nbsp;</span>
332
- <span class="cline-any cline-no">&nbsp;</span>
333
- <span class="cline-any cline-no">&nbsp;</span>
335
+ <span class="cline-any cline-yes">8x</span>
336
+ <span class="cline-any cline-yes">8x</span>
334
337
  <span class="cline-any cline-neutral">&nbsp;</span>
335
338
  <span class="cline-any cline-neutral">&nbsp;</span>
336
339
  <span class="cline-any cline-no">&nbsp;</span>
@@ -341,16 +344,19 @@
341
344
  <span class="cline-any cline-neutral">&nbsp;</span>
342
345
  <span class="cline-any cline-neutral">&nbsp;</span>
343
346
  <span class="cline-any cline-neutral">&nbsp;</span>
344
- <span class="cline-any cline-yes">3x</span>
345
- <span class="cline-any cline-no">&nbsp;</span>
346
- <span class="cline-any cline-no">&nbsp;</span>
347
+ <span class="cline-any cline-yes">6x</span>
348
+ <span class="cline-any cline-yes">6x</span>
347
349
  <span class="cline-any cline-neutral">&nbsp;</span>
350
+ <span class="cline-any cline-yes">6x</span>
351
+ <span class="cline-any cline-yes">1x</span>
352
+ <span class="cline-any cline-yes">1x</span>
348
353
  <span class="cline-any cline-neutral">&nbsp;</span>
349
354
  <span class="cline-any cline-neutral">&nbsp;</span>
350
- <span class="cline-any cline-yes">3x</span>
351
- <span class="cline-any cline-yes">3x</span>
352
355
  <span class="cline-any cline-neutral">&nbsp;</span>
353
- <span class="cline-any cline-yes">3x</span>
356
+ <span class="cline-any cline-yes">7x</span>
357
+ <span class="cline-any cline-yes">7x</span>
358
+ <span class="cline-any cline-neutral">&nbsp;</span>
359
+ <span class="cline-any cline-yes">7x</span>
354
360
  <span class="cline-any cline-no">&nbsp;</span>
355
361
  <span class="cline-any cline-neutral">&nbsp;</span>
356
362
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -376,7 +382,7 @@
376
382
  <span class="cline-any cline-yes">1x</span>
377
383
  <span class="cline-any cline-neutral">&nbsp;</span>
378
384
  <span class="cline-any cline-neutral">&nbsp;</span>
379
- <span class="cline-any cline-no">&nbsp;</span>
385
+ <span class="cline-any cline-yes">3x</span>
380
386
  <span class="cline-any cline-neutral">&nbsp;</span>
381
387
  <span class="cline-any cline-neutral">&nbsp;</span>
382
388
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { createLazy } from '../lazy.light';
@@ -423,24 +429,24 @@ export class MultiSelect&lt;T = any&gt; extends ValidatableModel&lt;ReadonlyArra
423
429
  }
424
430
  &nbsp;
425
431
  @computed
426
- <span class="fstat-no" title="function not covered" > get s</span>electedItems(): ReadonlyArray&lt;T&gt; {
427
- <span class="cstat-no" title="statement not covered" > return this.selectedIndexes.map(<span class="fstat-no" title="function not covered" >i </span>=&gt; <span class="cstat-no" title="statement not covered" >this._items[i])</span>;</span>
432
+ get selectedItems(): ReadonlyArray&lt;T&gt; {
433
+ return this.selectedIndexes.map(i =&gt; this._items[i]);
428
434
  }
429
435
  &nbsp;
430
436
  @computed
431
- <span class="fstat-no" title="function not covered" > get s</span>electedValues(): ReadonlyArray&lt;string&gt; {
432
- const values = <span class="cstat-no" title="statement not covered" >this.values;</span>
433
- <span class="cstat-no" title="statement not covered" > return this.selectedIndexes.map(<span class="fstat-no" title="function not covered" >i </span>=&gt; <span class="cstat-no" title="statement not covered" >values[i])</span>;</span>
437
+ get selectedValues(): ReadonlyArray&lt;string&gt; {
438
+ const values = this.values;
439
+ return this.selectedIndexes.map(i =&gt; values[i]);
434
440
  }
435
441
  &nbsp;
436
442
  <span class="fstat-no" title="function not covered" > get v</span>alue() { <span class="cstat-no" title="statement not covered" >return this.selectedValues; </span>}
437
443
  <span class="fstat-no" title="function not covered" > set v</span>alue(v: readonly string[]) { <span class="cstat-no" title="statement not covered" >this.selectValues(v); </span>}
438
444
  &nbsp;
439
445
  isIndexSelected(index: number) { return this._indexes.has(index); }
440
- <span class="fstat-no" title="function not covered" > isValueSelected(</span>value: string) { <span class="cstat-no" title="statement not covered" >return this.values.includes(value); </span>}
446
+ isValueSelected(value: string) { return this.selectedValues.includes(value); }
441
447
  &nbsp;
442
- <span class="fstat-no" title="function not covered" > get c</span>ount() { <span class="cstat-no" title="statement not covered" >return this._items.length; </span>}
443
- <span class="fstat-no" title="function not covered" > get s</span>electedCount() { <span class="cstat-no" title="statement not covered" >return this._indexes.size; </span>}
448
+ get count() { return this._items.length; }
449
+ get selectedCount() { return this._indexes.size; }
444
450
  <span class="fstat-no" title="function not covered" > get i</span>sEmpty() { <span class="cstat-no" title="statement not covered" >return this.selectedCount === 0; </span>}
445
451
  &nbsp;
446
452
  @computed
@@ -448,30 +454,30 @@ export class MultiSelect&lt;T = any&gt; extends ValidatableModel&lt;ReadonlyArra
448
454
  &nbsp;
449
455
  <span class="fstat-no" title="function not covered" > protected get v</span>alueToValidate() { <span class="cstat-no" title="statement not covered" >return this.selectedItems; </span>}
450
456
  &nbsp;
451
- setItemSelected = <span class="fstat-no" title="function not covered" >(i</span>tem: T, selected: boolean) =&gt; {
452
- const i = <span class="cstat-no" title="statement not covered" >this.items.indexOf(item);</span>
453
- <span class="cstat-no" title="statement not covered" > if (i &gt;= 0) {</span>
454
- <span class="cstat-no" title="statement not covered" > this.setIndexSelected(i, selected);</span>
457
+ setItemSelected = (item: T, selected: boolean) =&gt; {
458
+ const i = this.items.indexOf(item);
459
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (i &gt;= 0) {
460
+ this.setIndexSelected(i, selected);
455
461
  }
456
462
  };
457
463
  &nbsp;
458
- selectItem = <span class="fstat-no" title="function not covered" >(i</span>tem: T) =&gt; <span class="cstat-no" title="statement not covered" >this.setItemSelected(item, true);</span>
459
- deSelectItem = <span class="fstat-no" title="function not covered" >(i</span>tem: T) =&gt; <span class="cstat-no" title="statement not covered" >this.setItemSelected(item, false);</span>
464
+ selectItem = (item: T) =&gt; this.setItemSelected(item, true);
465
+ deSelectItem = (item: T) =&gt; this.setItemSelected(item, false);
460
466
  &nbsp;
461
467
  @action
462
- selectItems = <span class="fstat-no" title="function not covered" >(i</span>tems: readonly T[]) =&gt; {
463
- <span class="cstat-no" title="statement not covered" > items.forEach(this.selectItem);</span>
468
+ selectItems = (items: readonly T[]) =&gt; {
469
+ items.forEach(this.selectItem);
464
470
  };
465
471
  &nbsp;
466
- setValueSelected = <span class="fstat-no" title="function not covered" >(v</span>alue: string, selected: boolean) =&gt; {
467
- const i = <span class="cstat-no" title="statement not covered" >this.values.indexOf(value);</span>
468
- <span class="cstat-no" title="statement not covered" > if (i &gt;= 0) {</span>
469
- <span class="cstat-no" title="statement not covered" > this.setIndexSelected(i, selected);</span>
472
+ setValueSelected = (value: string, selected: boolean) =&gt; {
473
+ const i = this.values.indexOf(value);
474
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (i &gt;= 0) {
475
+ this.setIndexSelected(i, selected);
470
476
  }
471
477
  };
472
478
  &nbsp;
473
- selectValue = <span class="fstat-no" title="function not covered" >(v</span>alue: string) =&gt; <span class="cstat-no" title="statement not covered" >this.setValueSelected(value, true);</span>
474
- deSelectValue = <span class="fstat-no" title="function not covered" >(v</span>alue: string) =&gt; <span class="cstat-no" title="statement not covered" >this.setValueSelected(value, false);</span>
479
+ selectValue = (value: string) =&gt; this.setValueSelected(value, true);
480
+ deSelectValue = (value: string) =&gt; this.setValueSelected(value, false);
475
481
  &nbsp;
476
482
  @action
477
483
  selectValues = <span class="fstat-no" title="function not covered" >(v</span>alues: readonly string[]) =&gt; {
@@ -479,19 +485,19 @@ export class MultiSelect&lt;T = any&gt; extends ValidatableModel&lt;ReadonlyArra
479
485
  };
480
486
  &nbsp;
481
487
  @action
482
- setIndexSelected = <span class="fstat-no" title="function not covered" >(i</span>ndex: number, selected: boolean) =&gt; {
483
- <span class="cstat-no" title="statement not covered" > if (this._indexesLocked) {</span>
488
+ setIndexSelected = (index: number, selected: boolean) =&gt; {
489
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (this._indexesLocked) {
484
490
  <span class="cstat-no" title="statement not covered" > return;</span>
485
491
  }
486
492
  &nbsp;
487
- <span class="cstat-no" title="statement not covered" > if (selected) {</span>
488
- <span class="cstat-no" title="statement not covered" > this._indexes.add(index);</span>
493
+ if (selected) {
494
+ this._indexes.add(index);
489
495
  } else {
490
- <span class="cstat-no" title="statement not covered" > this._indexes.delete(index);</span>
496
+ this._indexes.delete(index);
491
497
  }
492
498
  &nbsp;
493
- <span class="cstat-no" title="statement not covered" > if (!this._flags.hasValue) {</span>
494
- <span class="cstat-no" title="statement not covered" > return;</span>
499
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (!this._flags.hasValue) {
500
+ return;
495
501
  }
496
502
  &nbsp;
497
503
  <span class="cstat-no" title="statement not covered" > try {</span>
@@ -502,9 +508,12 @@ export class MultiSelect&lt;T = any&gt; extends ValidatableModel&lt;ReadonlyArra
502
508
  }
503
509
  };
504
510
  &nbsp;
505
- reset = <span class="fstat-no" title="function not covered" >() =</span>&gt; {
506
- <span class="cstat-no" title="statement not covered" > super.reset();</span>
507
- <span class="cstat-no" title="statement not covered" > this.setInitialIndexes();</span>
511
+ selectIndex = (index: number) =&gt; this.setIndexSelected(index, true);
512
+ deSelectIndex = (index: number) =&gt; this.setIndexSelected(index, false);
513
+ &nbsp;
514
+ reset = () =&gt; {
515
+ super.reset();
516
+ this.setInitialIndexes();
508
517
  };
509
518
  &nbsp;
510
519
  private setInitialIndexes() {
@@ -536,8 +545,8 @@ export class MultiSelect&lt;T = any&gt; extends ValidatableModel&lt;ReadonlyArra
536
545
  &nbsp;
537
546
  export class MultiSelectString&lt;T extends string = string&gt; extends MultiSelect&lt;T&gt; {
538
547
  &nbsp;
539
- <span class="fstat-no" title="function not covered" > constructor(i</span>tems: ReadonlyArray&lt;T&gt;, ...selected: number[]) {
540
- <span class="cstat-no" title="statement not covered" > super(items, <span class="fstat-no" title="function not covered" >v </span>=&gt; <span class="cstat-no" title="statement not covered" >v,</span> ...selected);</span>
548
+ constructor(items: ReadonlyArray&lt;T&gt;, ...selected: number[]) {
549
+ super(items, v =&gt; v, ...selected);
541
550
  }
542
551
  }
543
552
  &nbsp;</pre></td></tr></table></pre>
@@ -547,7 +556,7 @@ export class MultiSelectString&lt;T extends string = string&gt; extends MultiSel
547
556
  <div class='footer quiet pad2 space-top1 center small'>
548
557
  Code coverage generated by
549
558
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
550
- at Mon Nov 29 2021 07:49:53 GMT+0000 (Coordinated Universal Time)
559
+ at Mon Jan 03 2022 18:23:02 GMT+0000 (Coordinated Universal Time)
551
560
  </div>
552
561
  </div>
553
562
  <script src="../../prettify.js"></script>
@@ -181,7 +181,7 @@ export default NumberModel;
181
181
  <div class='footer quiet pad2 space-top1 center small'>
182
182
  Code coverage generated by
183
183
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
184
- at Mon Nov 29 2021 07:49:53 GMT+0000 (Coordinated Universal Time)
184
+ at Mon Jan 03 2022 18:23:02 GMT+0000 (Coordinated Universal Time)
185
185
  </div>
186
186
  </div>
187
187
  <script src="../../prettify.js"></script>
@@ -448,7 +448,7 @@ export class SelectString&lt;T extends string = string&gt; extends Select&lt;T&g
448
448
  <div class='footer quiet pad2 space-top1 center small'>
449
449
  Code coverage generated by
450
450
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
451
- at Mon Nov 29 2021 07:49:53 GMT+0000 (Coordinated Universal Time)
451
+ at Mon Jan 03 2022 18:23:02 GMT+0000 (Coordinated Universal Time)
452
452
  </div>
453
453
  </div>
454
454
  <script src="../../prettify.js"></script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">65.85% </span>
26
+ <span class="strong">60% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>27/41</span>
28
+ <span class='fraction'>27/45</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">52.38% </span>
33
+ <span class="strong">47.83% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>11/21</span>
35
+ <span class='fraction'>11/23</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">50% </span>
40
+ <span class="strong">46.15% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>6/12</span>
42
+ <span class='fraction'>6/13</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">69.44% </span>
47
+ <span class="strong">62.5% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>25/36</span>
49
+ <span class='fraction'>25/40</span>
50
50
  </div>
51
51
 
52
52
 
@@ -140,7 +140,15 @@
140
140
  <a name='L81'></a><a href='#L81'>81</a>
141
141
  <a name='L82'></a><a href='#L82'>82</a>
142
142
  <a name='L83'></a><a href='#L83'>83</a>
143
- <a name='L84'></a><a href='#L84'>84</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
143
+ <a name='L84'></a><a href='#L84'>84</a>
144
+ <a name='L85'></a><a href='#L85'>85</a>
145
+ <a name='L86'></a><a href='#L86'>86</a>
146
+ <a name='L87'></a><a href='#L87'>87</a>
147
+ <a name='L88'></a><a href='#L88'>88</a>
148
+ <a name='L89'></a><a href='#L89'>89</a>
149
+ <a name='L90'></a><a href='#L90'>90</a>
150
+ <a name='L91'></a><a href='#L91'>91</a>
151
+ <a name='L92'></a><a href='#L92'>92</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
144
152
  <span class="cline-any cline-yes">2x</span>
145
153
  <span class="cline-any cline-yes">2x</span>
146
154
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -155,17 +163,17 @@
155
163
  <span class="cline-any cline-yes">2x</span>
156
164
  <span class="cline-any cline-yes">2x</span>
157
165
  <span class="cline-any cline-neutral">&nbsp;</span>
158
- <span class="cline-any cline-yes">8x</span>
159
- <span class="cline-any cline-yes">8x</span>
166
+ <span class="cline-any cline-yes">11x</span>
167
+ <span class="cline-any cline-yes">11x</span>
160
168
  <span class="cline-any cline-neutral">&nbsp;</span>
161
169
  <span class="cline-any cline-neutral">&nbsp;</span>
162
- <span class="cline-any cline-yes">8x</span>
170
+ <span class="cline-any cline-yes">11x</span>
163
171
  <span class="cline-any cline-neutral">&nbsp;</span>
164
- <span class="cline-any cline-yes">8x</span>
172
+ <span class="cline-any cline-yes">11x</span>
165
173
  <span class="cline-any cline-neutral">&nbsp;</span>
166
174
  <span class="cline-any cline-neutral">&nbsp;</span>
167
- <span class="cline-any cline-yes">8x</span>
168
- <span class="cline-any cline-yes">8x</span>
175
+ <span class="cline-any cline-yes">11x</span>
176
+ <span class="cline-any cline-yes">11x</span>
169
177
  <span class="cline-any cline-neutral">&nbsp;</span>
170
178
  <span class="cline-any cline-neutral">&nbsp;</span>
171
179
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -175,9 +183,17 @@
175
183
  <span class="cline-any cline-yes">1x</span>
176
184
  <span class="cline-any cline-neutral">&nbsp;</span>
177
185
  <span class="cline-any cline-neutral">&nbsp;</span>
178
- <span class="cline-any cline-yes">8x</span>
179
- <span class="cline-any cline-yes">8x</span>
180
- <span class="cline-any cline-yes">8x</span>
186
+ <span class="cline-any cline-yes">11x</span>
187
+ <span class="cline-any cline-yes">11x</span>
188
+ <span class="cline-any cline-yes">11x</span>
189
+ <span class="cline-any cline-neutral">&nbsp;</span>
190
+ <span class="cline-any cline-neutral">&nbsp;</span>
191
+ <span class="cline-any cline-neutral">&nbsp;</span>
192
+ <span class="cline-any cline-no">&nbsp;</span>
193
+ <span class="cline-any cline-no">&nbsp;</span>
194
+ <span class="cline-any cline-no">&nbsp;</span>
195
+ <span class="cline-any cline-neutral">&nbsp;</span>
196
+ <span class="cline-any cline-no">&nbsp;</span>
181
197
  <span class="cline-any cline-neutral">&nbsp;</span>
182
198
  <span class="cline-any cline-neutral">&nbsp;</span>
183
199
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -210,8 +226,8 @@
210
226
  <span class="cline-any cline-neutral">&nbsp;</span>
211
227
  <span class="cline-any cline-neutral">&nbsp;</span>
212
228
  <span class="cline-any cline-yes">2x</span>
213
- <span class="cline-any cline-yes">1x</span>
214
- <span class="cline-any cline-yes">1x</span>
229
+ <span class="cline-any cline-yes">2x</span>
230
+ <span class="cline-any cline-yes">2x</span>
215
231
  <span class="cline-any cline-neutral">&nbsp;</span>
216
232
  <span class="cline-any cline-neutral">&nbsp;</span>
217
233
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -262,6 +278,14 @@ export abstract class ValidatableModel&lt;T = string&gt; {
262
278
  this._strings = <span class="branch-1 cbranch-no" title="branch not covered" >config?.errors;</span>
263
279
  return this;
264
280
  }
281
+ &nbsp;
282
+ public <span class="fstat-no" title="function not covered" >async </span>testValidate(value: T) {
283
+ <span class="cstat-no" title="statement not covered" > if (this._validator) {</span>
284
+ const res = <span class="cstat-no" title="statement not covered" >await this._validator(value);</span>
285
+ <span class="cstat-no" title="statement not covered" > return res;</span>
286
+ }
287
+ <span class="cstat-no" title="statement not covered" > return null;</span>
288
+ }
265
289
  &nbsp;
266
290
  async validate() {
267
291
  <span class="missing-if-branch" title="if path not taken" >I</span>if (!this._validator) {
@@ -313,7 +337,7 @@ export abstract class ValidatableModel&lt;T = string&gt; {
313
337
  <div class='footer quiet pad2 space-top1 center small'>
314
338
  Code coverage generated by
315
339
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
316
- at Mon Nov 29 2021 07:49:53 GMT+0000 (Coordinated Universal Time)
340
+ at Mon Jan 03 2022 18:23:02 GMT+0000 (Coordinated Universal Time)
317
341
  </div>
318
342
  </div>
319
343
  <script src="../../prettify.js"></script>