@zajno/common 1.5.6 → 1.5.9

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 (175) hide show
  1. package/coverage/clover.xml +456 -349
  2. package/coverage/coverage-final.json +37 -36
  3. package/coverage/lcov-report/async/index.html +12 -7
  4. package/coverage/lcov-report/async/timeout.ts.html +24 -19
  5. package/coverage/lcov-report/block-navigation.js +8 -0
  6. package/coverage/lcov-report/disposer.ts.html +376 -0
  7. package/coverage/lcov-report/enumHelper.ts.html +454 -0
  8. package/coverage/lcov-report/favicon.png +0 -0
  9. package/coverage/lcov-report/index.html +64 -44
  10. package/coverage/lcov-report/logger/index.html +116 -0
  11. package/coverage/lcov-report/logger/index.ts.html +298 -0
  12. package/coverage/lcov-report/parallel.ts.html +550 -0
  13. package/coverage/lcov-report/queue/index.html +116 -0
  14. package/coverage/lcov-report/queue/parallel.ts.html +499 -0
  15. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  16. package/coverage/lcov-report/sorter.js +26 -0
  17. package/coverage/lcov-report/src/__tests__/helpers/index.html +8 -3
  18. package/coverage/lcov-report/src/__tests__/helpers/main.ts.html +8 -3
  19. package/coverage/lcov-report/src/async/arrays.ts.html +15 -10
  20. package/coverage/lcov-report/src/async/index.html +29 -24
  21. package/coverage/lcov-report/src/async/timeout.ts.html +134 -27
  22. package/coverage/lcov-report/src/cache.ts.html +15 -10
  23. package/coverage/lcov-report/src/dates/calc.ts.html +10 -5
  24. package/coverage/lcov-report/src/dates/convert.ts.html +9 -4
  25. package/coverage/lcov-report/src/dates/datex.ts.html +8 -3
  26. package/coverage/lcov-report/src/dates/format.ts.html +10 -5
  27. package/coverage/lcov-report/src/dates/index.html +19 -14
  28. package/coverage/lcov-report/src/dates/index.ts.html +8 -3
  29. package/coverage/lcov-report/src/dates/parse.ts.html +9 -4
  30. package/coverage/lcov-report/src/dates/period.ts.html +8 -3
  31. package/coverage/lcov-report/src/dates/shift.ts.html +9 -4
  32. package/coverage/lcov-report/src/dates/types.ts.html +8 -3
  33. package/coverage/lcov-report/src/dates/yearDate.ts.html +10 -5
  34. package/coverage/lcov-report/src/disposer.ts.html +65 -21
  35. package/coverage/lcov-report/src/enumHelper.ts.html +12 -7
  36. package/coverage/lcov-report/src/event.ts.html +98 -33
  37. package/coverage/lcov-report/src/fields/index.html +12 -7
  38. package/coverage/lcov-report/src/fields/update.ts.html +12 -7
  39. package/coverage/lcov-report/src/functions.ts.html +10 -5
  40. package/coverage/lcov-report/src/index.html +52 -47
  41. package/coverage/lcov-report/src/lazy.light.ts.html +9 -4
  42. package/coverage/lcov-report/src/logger/batch.ts.html +9 -4
  43. package/coverage/lcov-report/src/logger/console.ts.html +16 -11
  44. package/coverage/lcov-report/src/logger/index.html +13 -8
  45. package/coverage/lcov-report/src/logger/index.ts.html +38 -33
  46. package/coverage/lcov-report/src/logger/named.ts.html +26 -21
  47. package/coverage/lcov-report/src/logger/proxy.ts.html +20 -15
  48. package/coverage/lcov-report/src/math/arrays.ts.html +33 -28
  49. package/coverage/lcov-report/src/math/calc.ts.html +18 -13
  50. package/coverage/lcov-report/src/math/distribution.ts.html +10 -5
  51. package/coverage/lcov-report/src/math/index.html +16 -11
  52. package/coverage/lcov-report/src/math/index.ts.html +14 -9
  53. package/coverage/lcov-report/src/observersMap.ts.html +12 -7
  54. package/coverage/lcov-report/src/observingCache.ts.html +12 -7
  55. package/coverage/lcov-report/src/queue/index.html +116 -0
  56. package/coverage/lcov-report/src/queue/parallel.ts.html +499 -0
  57. package/coverage/lcov-report/src/tempoCache.ts.html +9 -4
  58. package/coverage/lcov-report/src/transitionObserver.ts.html +14 -9
  59. package/coverage/lcov-report/src/types.ts.html +13 -8
  60. package/coverage/lcov-report/src/validation/ValidationErrors.ts.html +8 -3
  61. package/coverage/lcov-report/src/validation/creditCard.ts.html +8 -3
  62. package/coverage/lcov-report/src/validation/helpers.ts.html +13 -8
  63. package/coverage/lcov-report/src/validation/index.html +11 -6
  64. package/coverage/lcov-report/src/validation/index.ts.html +8 -3
  65. package/coverage/lcov-report/src/validation/types.ts.html +8 -3
  66. package/coverage/lcov-report/src/validation/validators.ts.html +8 -3
  67. package/coverage/lcov-report/src/validation/wrappers.ts.html +8 -3
  68. package/coverage/lcov-report/src/viewModels/CommonModel.ts.html +10 -5
  69. package/coverage/lcov-report/src/viewModels/FlagModel.ts.html +8 -3
  70. package/coverage/lcov-report/src/viewModels/LoadingModel.ts.html +10 -5
  71. package/coverage/lcov-report/src/viewModels/MultiSelectModel.ts.html +13 -8
  72. package/coverage/lcov-report/src/viewModels/NumberModel.ts.html +8 -3
  73. package/coverage/lcov-report/src/viewModels/SelectModel.ts.html +10 -5
  74. package/coverage/lcov-report/src/viewModels/TextModel.ts.html +13 -8
  75. package/coverage/lcov-report/src/viewModels/Validatable.ts.html +12 -7
  76. package/coverage/lcov-report/src/viewModels/index.html +22 -17
  77. package/coverage/lcov-report/src/viewModels/wrappers.ts.html +8 -3
  78. package/coverage/lcov.info +565 -483
  79. package/jest.config.js +2 -1
  80. package/lib/async/arrays.extend.js +4 -4
  81. package/lib/async/arrays.extend.js.map +1 -1
  82. package/lib/async/timeout.d.ts +5 -0
  83. package/lib/async/timeout.d.ts.map +1 -1
  84. package/lib/async/timeout.js +30 -1
  85. package/lib/async/timeout.js.map +1 -1
  86. package/lib/cache.js +6 -6
  87. package/lib/cache.js.map +1 -1
  88. package/lib/dates/calc.js +7 -7
  89. package/lib/dates/calc.js.map +1 -1
  90. package/lib/dates/convert.js +11 -11
  91. package/lib/dates/convert.js.map +1 -1
  92. package/lib/dates/format.js +6 -6
  93. package/lib/dates/format.js.map +1 -1
  94. package/lib/dates/period.js +2 -2
  95. package/lib/dates/period.js.map +1 -1
  96. package/lib/dates/shift.js +5 -5
  97. package/lib/dates/shift.js.map +1 -1
  98. package/lib/dates/yearDate.js +2 -2
  99. package/lib/dates/yearDate.js.map +1 -1
  100. package/lib/disposer.d.ts +4 -2
  101. package/lib/disposer.d.ts.map +1 -1
  102. package/lib/disposer.js +10 -5
  103. package/lib/disposer.js.map +1 -1
  104. package/lib/enumHelper.d.ts +2 -2
  105. package/lib/enumHelper.d.ts.map +1 -1
  106. package/lib/enumHelper.js.map +1 -1
  107. package/lib/event.d.ts +2 -0
  108. package/lib/event.d.ts.map +1 -1
  109. package/lib/event.js +20 -3
  110. package/lib/event.js.map +1 -1
  111. package/lib/fields/update.js +2 -2
  112. package/lib/fields/update.js.map +1 -1
  113. package/lib/lazy.d.ts +2 -0
  114. package/lib/lazy.d.ts.map +1 -1
  115. package/lib/lazy.js +8 -3
  116. package/lib/lazy.js.map +1 -1
  117. package/lib/logger/file.js.map +1 -1
  118. package/lib/logger/index.d.ts +1 -1
  119. package/lib/logger/index.d.ts.map +1 -1
  120. package/lib/logger/index.js +1 -1
  121. package/lib/logger/index.js.map +1 -1
  122. package/lib/math/arrays.js +2 -2
  123. package/lib/math/arrays.js.map +1 -1
  124. package/lib/models/EntityWithStatus.js.map +1 -1
  125. package/lib/observersMap.js +2 -2
  126. package/lib/observersMap.js.map +1 -1
  127. package/lib/observingCache.js +1 -1
  128. package/lib/observingCache.js.map +1 -1
  129. package/lib/pool.js +1 -1
  130. package/lib/pool.js.map +1 -1
  131. package/lib/queue/parallel.d.ts +22 -0
  132. package/lib/queue/parallel.d.ts.map +1 -0
  133. package/lib/queue/parallel.js +117 -0
  134. package/lib/queue/parallel.js.map +1 -0
  135. package/lib/services/localization/LocalizationManager.js +1 -1
  136. package/lib/services/localization/LocalizationManager.js.map +1 -1
  137. package/lib/services/storage/web/localStorage.js +1 -1
  138. package/lib/services/storage/web/localStorage.js.map +1 -1
  139. package/lib/services/storage/web/sessionStorage.js +1 -1
  140. package/lib/services/storage/web/sessionStorage.js.map +1 -1
  141. package/lib/transitionObserver.js +3 -3
  142. package/lib/transitionObserver.js.map +1 -1
  143. package/lib/validation/wrappers.js +1 -1
  144. package/lib/validation/wrappers.js.map +1 -1
  145. package/lib/viewModels/CommonModel.js +1 -1
  146. package/lib/viewModels/CommonModel.js.map +1 -1
  147. package/lib/viewModels/FlagModel.js +1 -1
  148. package/lib/viewModels/FlagModel.js.map +1 -1
  149. package/lib/viewModels/MultiSelectModel.js +5 -5
  150. package/lib/viewModels/MultiSelectModel.js.map +1 -1
  151. package/lib/viewModels/NumberModel.js +1 -1
  152. package/lib/viewModels/NumberModel.js.map +1 -1
  153. package/lib/viewModels/PromptModal.js +1 -1
  154. package/lib/viewModels/PromptModal.js.map +1 -1
  155. package/lib/viewModels/SelectModel.js +4 -4
  156. package/lib/viewModels/SelectModel.js.map +1 -1
  157. package/lib/viewModels/TextModel.js +3 -3
  158. package/lib/viewModels/TextModel.js.map +1 -1
  159. package/lib/viewModels/Validatable.js +3 -3
  160. package/lib/viewModels/Validatable.js.map +1 -1
  161. package/lib/viewModels/ValueModel.js +1 -1
  162. package/lib/viewModels/ValueModel.js.map +1 -1
  163. package/package.json +11 -11
  164. package/src/.DS_Store +0 -0
  165. package/src/async/__tests__/timeout.test.ts +74 -0
  166. package/src/async/timeout.ts +34 -0
  167. package/src/disposer.ts +19 -6
  168. package/src/enumHelper.ts +2 -2
  169. package/src/event.ts +20 -0
  170. package/src/lazy.ts +8 -1
  171. package/src/queue/__tests__/parallel.test.ts +58 -0
  172. package/src/queue/parallel.ts +138 -0
  173. package/src/services/storage/web/localStorage.ts +1 -1
  174. package/src/services/storage/web/sessionStorage.ts +1 -1
  175. package/yarn.lock +1074 -1441
@@ -30,9 +30,9 @@
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">87.8% </span>
33
+ <span class="strong">86.84% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>36/41</span>
35
+ <span class='fraction'>33/38</span>
36
36
  </div>
37
37
 
38
38
 
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
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
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line high'></div>
59
65
  <pre><table class="coverage">
@@ -328,7 +334,7 @@
328
334
  return custom || v;
329
335
  }
330
336
  &nbsp;
331
- validateValue(v: string): T | null {
337
+ validateValue(v: string | null): T | null {
332
338
  if (!v) {
333
339
  return null;
334
340
  }
@@ -373,7 +379,7 @@ export default class EnumHelper&lt;T extends number&gt; {
373
379
  return custom || this._obj[v];
374
380
  }
375
381
  &nbsp;
376
- validateValue(v: number): T | null {
382
+ validateValue(v: number | null): T | null {
377
383
  if (v == null || Number.isNaN(v)) {
378
384
  return null;
379
385
  }
@@ -432,10 +438,9 @@ export class EnumBitwiseHelper&lt;T extends number&gt; extends EnumHelper&lt;T&g
432
438
  </div><!-- /wrapper -->
433
439
  <div class='footer quiet pad2 space-top1 center small'>
434
440
  Code coverage generated by
435
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
436
- at Thu Jul 07 2022 10:23:01 GMT+0000 (Coordinated Universal Time)
441
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
442
+ at 2022-09-08T13:27:57.517Z
437
443
  </div>
438
- </div>
439
444
  <script src="../prettify.js"></script>
440
445
  <script>
441
446
  window.onload = function () {
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">48.15% </span>
26
+ <span class="strong">70.27% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>13/27</span>
28
+ <span class='fraction'>26/37</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">66.67% </span>
33
+ <span class="strong">81.82% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>4/6</span>
35
+ <span class='fraction'>9/11</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">36.36% </span>
40
+ <span class="strong">78.57% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>4/11</span>
42
+ <span class='fraction'>11/14</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">50% </span>
47
+ <span class="strong">69.44% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>13/26</span>
49
+ <span class='fraction'>25/36</span>
50
50
  </div>
51
51
 
52
52
 
@@ -54,8 +54,14 @@
54
54
  <p class="quiet">
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
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
- <div class='status-line low'></div>
64
+ <div class='status-line medium'></div>
59
65
  <pre><table class="coverage">
60
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
61
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -129,9 +135,30 @@
129
135
  <a name='L70'></a><a href='#L70'>70</a>
130
136
  <a name='L71'></a><a href='#L71'>71</a>
131
137
  <a name='L72'></a><a href='#L72'>72</a>
132
- <a name='L73'></a><a href='#L73'>73</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
133
- <span class="cline-any cline-yes">1x</span>
134
- <span class="cline-any cline-yes">1x</span>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
159
+ <span class="cline-any cline-yes">3x</span>
160
+ <span class="cline-any cline-yes">3x</span>
161
+ <span class="cline-any cline-yes">3x</span>
135
162
  <span class="cline-any cline-neutral">&nbsp;</span>
136
163
  <span class="cline-any cline-neutral">&nbsp;</span>
137
164
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -140,36 +167,40 @@
140
167
  <span class="cline-any cline-neutral">&nbsp;</span>
141
168
  <span class="cline-any cline-neutral">&nbsp;</span>
142
169
  <span class="cline-any cline-neutral">&nbsp;</span>
143
- <span class="cline-any cline-yes">1x</span>
144
- <span class="cline-any cline-yes">7x</span>
145
- <span class="cline-any cline-yes">7x</span>
170
+ <span class="cline-any cline-yes">3x</span>
171
+ <span class="cline-any cline-yes">13x</span>
172
+ <span class="cline-any cline-yes">13x</span>
146
173
  <span class="cline-any cline-neutral">&nbsp;</span>
147
174
  <span class="cline-any cline-neutral">&nbsp;</span>
148
175
  <span class="cline-any cline-neutral">&nbsp;</span>
149
176
  <span class="cline-any cline-neutral">&nbsp;</span>
150
177
  <span class="cline-any cline-neutral">&nbsp;</span>
151
178
  <span class="cline-any cline-neutral">&nbsp;</span>
152
- <span class="cline-any cline-yes">7x</span>
179
+ <span class="cline-any cline-yes">13x</span>
153
180
  <span class="cline-any cline-neutral">&nbsp;</span>
154
181
  <span class="cline-any cline-neutral">&nbsp;</span>
155
182
  <span class="cline-any cline-neutral">&nbsp;</span>
156
183
  <span class="cline-any cline-neutral">&nbsp;</span>
157
184
  <span class="cline-any cline-neutral">&nbsp;</span>
158
- <span class="cline-any cline-yes">1x</span>
159
- <span class="cline-any cline-yes">1x</span>
160
- <span class="cline-any cline-no">&nbsp;</span>
185
+ <span class="cline-any cline-yes">5x</span>
186
+ <span class="cline-any cline-yes">5x</span>
187
+ <span class="cline-any cline-yes">4x</span>
161
188
  <span class="cline-any cline-neutral">&nbsp;</span>
162
189
  <span class="cline-any cline-neutral">&nbsp;</span>
163
190
  <span class="cline-any cline-neutral">&nbsp;</span>
164
191
  <span class="cline-any cline-neutral">&nbsp;</span>
165
- <span class="cline-any cline-no">&nbsp;</span>
192
+ <span class="cline-any cline-yes">4x</span>
166
193
  <span class="cline-any cline-neutral">&nbsp;</span>
167
194
  <span class="cline-any cline-neutral">&nbsp;</span>
168
195
  <span class="cline-any cline-neutral">&nbsp;</span>
169
- <span class="cline-any cline-yes">11x</span>
170
- <span class="cline-any cline-yes">11x</span>
171
- <span class="cline-any cline-yes">4x</span>
172
- <span class="cline-any cline-yes">4x</span>
196
+ <span class="cline-any cline-yes">29x</span>
197
+ <span class="cline-any cline-yes">13x</span>
198
+ <span class="cline-any cline-neutral">&nbsp;</span>
199
+ <span class="cline-any cline-neutral">&nbsp;</span>
200
+ <span class="cline-any cline-yes">16x</span>
201
+ <span class="cline-any cline-yes">16x</span>
202
+ <span class="cline-any cline-yes">16x</span>
203
+ <span class="cline-any cline-yes">16x</span>
173
204
  <span class="cline-any cline-neutral">&nbsp;</span>
174
205
  <span class="cline-any cline-no">&nbsp;</span>
175
206
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -177,6 +208,10 @@
177
208
  <span class="cline-any cline-neutral">&nbsp;</span>
178
209
  <span class="cline-any cline-neutral">&nbsp;</span>
179
210
  <span class="cline-any cline-neutral">&nbsp;</span>
211
+ <span class="cline-any cline-yes">4x</span>
212
+ <span class="cline-any cline-yes">4x</span>
213
+ <span class="cline-any cline-neutral">&nbsp;</span>
214
+ <span class="cline-any cline-neutral">&nbsp;</span>
180
215
  <span class="cline-any cline-no">&nbsp;</span>
181
216
  <span class="cline-any cline-neutral">&nbsp;</span>
182
217
  <span class="cline-any cline-no">&nbsp;</span>
@@ -201,7 +236,19 @@
201
236
  <span class="cline-any cline-no">&nbsp;</span>
202
237
  <span class="cline-any cline-neutral">&nbsp;</span>
203
238
  <span class="cline-any cline-neutral">&nbsp;</span>
204
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import './async/arrays';
239
+ <span class="cline-any cline-neutral">&nbsp;</span>
240
+ <span class="cline-any cline-yes">3x</span>
241
+ <span class="cline-any cline-yes">4x</span>
242
+ <span class="cline-any cline-yes">4x</span>
243
+ <span class="cline-any cline-yes">12x</span>
244
+ <span class="cline-any cline-yes">4x</span>
245
+ <span class="cline-any cline-yes">4x</span>
246
+ <span class="cline-any cline-neutral">&nbsp;</span>
247
+ <span class="cline-any cline-neutral">&nbsp;</span>
248
+ <span class="cline-any cline-neutral">&nbsp;</span>
249
+ <span class="cline-any cline-neutral">&nbsp;</span>
250
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import type { Predicate } from './types';
251
+ import './async/arrays';
205
252
  import { forEachAsync } from './async/arrays';
206
253
  import { ILogger, createLogger } from './logger';
207
254
  &nbsp;
@@ -228,16 +275,20 @@ export class Event&lt;T = any&gt; implements IEvent&lt;T&gt; {
228
275
  &nbsp;
229
276
  public on(handler: EventHandler&lt;T&gt;): () =&gt; void {
230
277
  this._handlers.push(handler);
231
- return <span class="fstat-no" title="function not covered" >() =</span>&gt; {
232
- <span class="cstat-no" title="statement not covered" > this.off(handler);</span>
278
+ return () =&gt; {
279
+ this.off(handler);
233
280
  };
234
281
  }
235
282
  &nbsp;
236
- public <span class="fstat-no" title="function not covered" >off(</span>handler: EventHandler&lt;T&gt;): void {
237
- <span class="cstat-no" title="statement not covered" > this._handlers = this._handlers.filter(<span class="fstat-no" title="function not covered" >h </span>=&gt; <span class="cstat-no" title="statement not covered" >h !== handler)</span>;</span>
283
+ public off(handler: EventHandler&lt;T&gt;): void {
284
+ this._handlers = this._handlers.filter(h =&gt; h !== handler);
238
285
  }
239
286
  &nbsp;
240
287
  public trigger(data?: T) {
288
+ if (!this._handlers.length) {
289
+ return;
290
+ }
291
+ &nbsp;
241
292
  const hh = this._handlers.slice(0);
242
293
  hh.forEach(cb =&gt; {
243
294
  try {
@@ -248,7 +299,11 @@ export class Event&lt;T = any&gt; implements IEvent&lt;T&gt; {
248
299
  });
249
300
  }
250
301
  &nbsp;
251
- public <span class="fstat-no" title="function not covered" >async </span>triggerAsync(data?: T): Promise&lt;Error[]&gt; {
302
+ public async triggerAsync(data?: T): Promise&lt;Error[]&gt; {
303
+ if (!this._handlers.length) {
304
+ return [];
305
+ }
306
+ &nbsp;
252
307
  const hh = <span class="cstat-no" title="statement not covered" >this._handlers.slice(0);</span>
253
308
  &nbsp;
254
309
  const errors: Error[] = <span class="cstat-no" title="statement not covered" >[];</span>
@@ -273,16 +328,26 @@ export class Event&lt;T = any&gt; implements IEvent&lt;T&gt; {
273
328
  <span class="cstat-no" title="statement not covered" > this._logger.error(`[Event.${typeof data}] Handler ${cb.name} thrown an exception: `, err);</span>
274
329
  }
275
330
  }
331
+ &nbsp;
332
+ export function oneTimeSubscription&lt;T&gt;(e: IEvent&lt;T&gt;, filter?: Predicate&lt;T&gt;): Promise&lt;T&gt; {
333
+ return new Promise&lt;T&gt;((resolve) =&gt; {
334
+ const unsub = e.on(v =&gt; {
335
+ if (!filter || filter(v)) {
336
+ unsub();
337
+ resolve(v);
338
+ }
339
+ });
340
+ });
341
+ }
276
342
  &nbsp;</pre></td></tr></table></pre>
277
343
 
278
344
  <div class='push'></div><!-- for sticky footer -->
279
345
  </div><!-- /wrapper -->
280
346
  <div class='footer quiet pad2 space-top1 center small'>
281
347
  Code coverage generated by
282
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
283
- at Thu Jul 07 2022 10:23:01 GMT+0000 (Coordinated Universal Time)
348
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
349
+ at 2022-09-08T13:27:57.517Z
284
350
  </div>
285
- </div>
286
351
  <script src="../prettify.js"></script>
287
352
  <script>
288
353
  window.onload = function () {
@@ -30,9 +30,9 @@
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">80.68% </span>
33
+ <span class="strong">81.48% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>71/88</span>
35
+ <span class='fraction'>66/81</span>
36
36
  </div>
37
37
 
38
38
 
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
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
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line medium'></div>
59
65
  <div class="pad1">
@@ -79,8 +85,8 @@
79
85
  </td>
80
86
  <td data-value="75.44" class="pct medium">75.44%</td>
81
87
  <td data-value="57" class="abs medium">43/57</td>
82
- <td data-value="80.68" class="pct high">80.68%</td>
83
- <td data-value="88" class="abs high">71/88</td>
88
+ <td data-value="81.48" class="pct high">81.48%</td>
89
+ <td data-value="81" class="abs high">66/81</td>
84
90
  <td data-value="45.45" class="pct low">45.45%</td>
85
91
  <td data-value="11" class="abs low">5/11</td>
86
92
  <td data-value="79.59" class="pct medium">79.59%</td>
@@ -94,10 +100,9 @@
94
100
  </div><!-- /wrapper -->
95
101
  <div class='footer quiet pad2 space-top1 center small'>
96
102
  Code coverage generated by
97
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
98
- at Thu Jul 07 2022 10:23:01 GMT+0000 (Coordinated Universal Time)
103
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
+ at 2022-09-08T13:27:57.517Z
99
105
  </div>
100
- </div>
101
106
  <script src="../../prettify.js"></script>
102
107
  <script>
103
108
  window.onload = function () {
@@ -30,9 +30,9 @@
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">80.68% </span>
33
+ <span class="strong">81.48% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>71/88</span>
35
+ <span class='fraction'>66/81</span>
36
36
  </div>
37
37
 
38
38
 
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
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
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line medium'></div>
59
65
  <pre><table class="coverage">
@@ -333,7 +339,7 @@ export function <span class="fstat-no" title="function not covered" >updateField
333
339
  &nbsp;
334
340
  let changed = <span class="cstat-no" title="statement not covered" >true;</span>
335
341
  &nbsp;
336
- <span class="cstat-no" title="statement not covered" > if (get(source) !== undefined &amp;&amp; hasChanged(source, target)) {</span>
342
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (get(source) !== undefined &amp;&amp; hasChanged(source, target)) {</span>
337
343
  <span class="cstat-no" title="statement not covered" > changed = true;</span>
338
344
  <span class="cstat-no" title="statement not covered" > set(diff, get(target));</span>
339
345
  <span class="cstat-no" title="statement not covered" > set(target, get(source));</span>
@@ -383,7 +389,7 @@ export function updateArray&lt;T&gt;(
383
389
  const onAdded = options?.hooks<span class="branch-1 cbranch-no" title="branch not covered" >?.onAdded;</span>
384
390
  &nbsp;
385
391
  // remove all missing elements
386
- <span class="missing-if-branch" title="else path not taken" >E</span>if (!options?.additive) {
392
+ if (!options?.additive) {
387
393
  for (let i = 0; i &lt; result.length; ++i) {
388
394
  if (source.find(item =&gt; comparator(item, result[i])) == null) {
389
395
  // DELETE
@@ -435,10 +441,9 @@ export function updateArray&lt;T&gt;(
435
441
  </div><!-- /wrapper -->
436
442
  <div class='footer quiet pad2 space-top1 center small'>
437
443
  Code coverage generated by
438
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
439
- at Thu Jul 07 2022 10:23:01 GMT+0000 (Coordinated Universal Time)
444
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
445
+ at 2022-09-08T13:27:57.517Z
440
446
  </div>
441
- </div>
442
447
  <script src="../../prettify.js"></script>
443
448
  <script>
444
449
  window.onload = function () {
@@ -30,9 +30,9 @@
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">50% </span>
33
+ <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>1/2</span>
35
+ <span class='fraction'>0/1</span>
36
36
  </div>
37
37
 
38
38
 
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
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
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line medium'></div>
59
65
  <pre><table class="coverage">
@@ -105,10 +111,9 @@ export function safeCall&lt;T extends (...args: any) =&gt; any&gt;(cb: T | undef
105
111
  </div><!-- /wrapper -->
106
112
  <div class='footer quiet pad2 space-top1 center small'>
107
113
  Code coverage generated by
108
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
109
- at Thu Jul 07 2022 10:23:01 GMT+0000 (Coordinated Universal Time)
114
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
115
+ at 2022-09-08T13:27:57.517Z
110
116
  </div>
111
- </div>
112
117
  <script src="../prettify.js"></script>
113
118
  <script>
114
119
  window.onload = function () {