@zajno/common 1.5.0 → 1.5.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 (92) hide show
  1. package/coverage/clover.xml +57 -49
  2. package/coverage/coverage-final.json +4 -4
  3. package/coverage/lcov-report/async/index.html +1 -1
  4. package/coverage/lcov-report/async/timeout.ts.html +12 -12
  5. package/coverage/lcov-report/index.html +21 -21
  6. package/coverage/lcov-report/src/__tests__/helpers/index.html +1 -1
  7. package/coverage/lcov-report/src/__tests__/helpers/main.ts.html +1 -1
  8. package/coverage/lcov-report/src/async/arrays.ts.html +1 -1
  9. package/coverage/lcov-report/src/async/index.html +1 -1
  10. package/coverage/lcov-report/src/async/timeout.ts.html +10 -10
  11. package/coverage/lcov-report/src/cache.ts.html +1 -1
  12. package/coverage/lcov-report/src/dates/calc.ts.html +1 -1
  13. package/coverage/lcov-report/src/dates/convert.ts.html +1 -1
  14. package/coverage/lcov-report/src/dates/datex.ts.html +1 -1
  15. package/coverage/lcov-report/src/dates/format.ts.html +1 -1
  16. package/coverage/lcov-report/src/dates/index.html +1 -1
  17. package/coverage/lcov-report/src/dates/index.ts.html +1 -1
  18. package/coverage/lcov-report/src/dates/parse.ts.html +1 -1
  19. package/coverage/lcov-report/src/dates/period.ts.html +1 -1
  20. package/coverage/lcov-report/src/dates/shift.ts.html +1 -1
  21. package/coverage/lcov-report/src/dates/types.ts.html +1 -1
  22. package/coverage/lcov-report/src/dates/yearDate.ts.html +1 -1
  23. package/coverage/lcov-report/src/disposer.ts.html +1 -1
  24. package/coverage/lcov-report/src/enumHelper.ts.html +1 -1
  25. package/coverage/lcov-report/src/event.ts.html +1 -1
  26. package/coverage/lcov-report/src/fields/index.html +1 -1
  27. package/coverage/lcov-report/src/fields/update.ts.html +1 -1
  28. package/coverage/lcov-report/src/functions.ts.html +1 -1
  29. package/coverage/lcov-report/src/index.html +1 -1
  30. package/coverage/lcov-report/src/lazy.light.ts.html +1 -1
  31. package/coverage/lcov-report/src/logger/batch.ts.html +1 -1
  32. package/coverage/lcov-report/src/logger/console.ts.html +1 -1
  33. package/coverage/lcov-report/src/logger/index.html +1 -1
  34. package/coverage/lcov-report/src/logger/index.ts.html +1 -1
  35. package/coverage/lcov-report/src/logger/named.ts.html +1 -1
  36. package/coverage/lcov-report/src/logger/proxy.ts.html +1 -1
  37. package/coverage/lcov-report/src/math/arrays.ts.html +1 -1
  38. package/coverage/lcov-report/src/math/calc.ts.html +1 -1
  39. package/coverage/lcov-report/src/math/distribution.ts.html +1 -1
  40. package/coverage/lcov-report/src/math/index.html +1 -1
  41. package/coverage/lcov-report/src/math/index.ts.html +1 -1
  42. package/coverage/lcov-report/src/observersMap.ts.html +1 -1
  43. package/coverage/lcov-report/src/observingCache.ts.html +1 -1
  44. package/coverage/lcov-report/src/tempoCache.ts.html +1 -1
  45. package/coverage/lcov-report/src/transitionObserver.ts.html +1 -1
  46. package/coverage/lcov-report/src/types.ts.html +1 -1
  47. package/coverage/lcov-report/src/validation/ValidationErrors.ts.html +1 -1
  48. package/coverage/lcov-report/src/validation/creditCard.ts.html +1 -1
  49. package/coverage/lcov-report/src/validation/helpers.ts.html +7 -4
  50. package/coverage/lcov-report/src/validation/index.html +4 -4
  51. package/coverage/lcov-report/src/validation/index.ts.html +1 -1
  52. package/coverage/lcov-report/src/validation/types.ts.html +1 -1
  53. package/coverage/lcov-report/src/validation/validators.ts.html +1 -1
  54. package/coverage/lcov-report/src/validation/wrappers.ts.html +1 -1
  55. package/coverage/lcov-report/src/viewModels/CommonModel.ts.html +1 -1
  56. package/coverage/lcov-report/src/viewModels/FlagModel.ts.html +1 -1
  57. package/coverage/lcov-report/src/viewModels/LoadingModel.ts.html +106 -34
  58. package/coverage/lcov-report/src/viewModels/MultiSelectModel.ts.html +1 -1
  59. package/coverage/lcov-report/src/viewModels/NumberModel.ts.html +13 -13
  60. package/coverage/lcov-report/src/viewModels/SelectModel.ts.html +1 -1
  61. package/coverage/lcov-report/src/viewModels/TextModel.ts.html +1 -1
  62. package/coverage/lcov-report/src/viewModels/Validatable.ts.html +1 -1
  63. package/coverage/lcov-report/src/viewModels/index.html +19 -19
  64. package/coverage/lcov-report/src/viewModels/wrappers.ts.html +1 -1
  65. package/coverage/lcov-report/validation/index.html +1 -1
  66. package/coverage/lcov-report/validation/index.ts.html +6 -6
  67. package/coverage/lcov-report/viewModels/CommonModel.ts.html +1 -1
  68. package/coverage/lcov-report/viewModels/LoadingModel.ts.html +129 -21
  69. package/coverage/lcov-report/viewModels/SelectModel.ts.html +54 -21
  70. package/coverage/lcov-report/viewModels/TextModel.ts.html +1 -1
  71. package/coverage/lcov-report/viewModels/index.html +23 -83
  72. package/coverage/lcov.info +100 -77
  73. package/lib/services/storage/index.d.ts +4 -0
  74. package/lib/services/storage/index.d.ts.map +1 -1
  75. package/lib/services/storage/index.js +13 -1
  76. package/lib/services/storage/index.js.map +1 -1
  77. package/lib/validation/helpers.d.ts +1 -1
  78. package/lib/validation/helpers.d.ts.map +1 -1
  79. package/lib/validation/helpers.js +2 -2
  80. package/lib/validation/helpers.js.map +1 -1
  81. package/lib/viewModels/LoadingModel.d.ts +12 -3
  82. package/lib/viewModels/LoadingModel.d.ts.map +1 -1
  83. package/lib/viewModels/LoadingModel.js +33 -16
  84. package/lib/viewModels/LoadingModel.js.map +1 -1
  85. package/lib/viewModels/types.d.ts +4 -1
  86. package/lib/viewModels/types.d.ts.map +1 -1
  87. package/package.json +1 -1
  88. package/src/services/storage/index.ts +17 -1
  89. package/src/validation/helpers.ts +2 -1
  90. package/src/viewModels/LoadingModel.ts +41 -17
  91. package/src/viewModels/__tests__/common.test.ts +27 -8
  92. package/src/viewModels/types.ts +5 -1
@@ -118,7 +118,7 @@ export class TempoCache<T> {
118
118
  <div class='footer quiet pad2 space-top1 center small'>
119
119
  Code coverage generated by
120
120
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
121
- at Sun May 22 2022 18:34:38 GMT+0000 (Coordinated Universal Time)
121
+ at Sat Jun 04 2022 17:04:51 GMT+0000 (Coordinated Universal Time)
122
122
  </div>
123
123
  </div>
124
124
  <script src="../prettify.js"></script>
@@ -613,7 +613,7 @@ export function <span class="fstat-no" title="function not covered" >waitFor&lt;
613
613
  <div class='footer quiet pad2 space-top1 center small'>
614
614
  Code coverage generated by
615
615
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
616
- at Sun May 22 2022 18:34:38 GMT+0000 (Coordinated Universal Time)
616
+ at Sat Jun 04 2022 17:04:51 GMT+0000 (Coordinated Universal Time)
617
617
  </div>
618
618
  </div>
619
619
  <script src="../prettify.js"></script>
@@ -154,7 +154,7 @@ export type TypedKeys&lt;T extends Object, K&gt; = {
154
154
  <div class='footer quiet pad2 space-top1 center small'>
155
155
  Code coverage generated by
156
156
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
157
- at Sun May 22 2022 18:34:38 GMT+0000 (Coordinated Universal Time)
157
+ at Sat Jun 04 2022 17:04:51 GMT+0000 (Coordinated Universal Time)
158
158
  </div>
159
159
  </div>
160
160
  <script src="../prettify.js"></script>
@@ -142,7 +142,7 @@ export namespace <span class="branch-1 cbranch-no" title="branch not covered" >V
142
142
  <div class='footer quiet pad2 space-top1 center small'>
143
143
  Code coverage generated by
144
144
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
145
- at Sun May 22 2022 18:34:38 GMT+0000 (Coordinated Universal Time)
145
+ at Sat Jun 04 2022 17:04:51 GMT+0000 (Coordinated Universal Time)
146
146
  </div>
147
147
  </div>
148
148
  <script src="../../prettify.js"></script>
@@ -139,7 +139,7 @@ export default {
139
139
  <div class='footer quiet pad2 space-top1 center small'>
140
140
  Code coverage generated by
141
141
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
142
- at Sun May 22 2022 18:34:38 GMT+0000 (Coordinated Universal Time)
142
+ at Sat Jun 04 2022 17:04:51 GMT+0000 (Coordinated Universal Time)
143
143
  </div>
144
144
  </div>
145
145
  <script src="../../prettify.js"></script>
@@ -32,7 +32,7 @@
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/14</span>
35
+ <span class='fraction'>0/16</span>
36
36
  </div>
37
37
 
38
38
 
@@ -103,7 +103,8 @@
103
103
  <a name='L44'></a><a href='#L44'>44</a>
104
104
  <a name='L45'></a><a href='#L45'>45</a>
105
105
  <a name='L46'></a><a href='#L46'>46</a>
106
- <a name='L47'></a><a href='#L47'>47</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">5x</span>
106
+ <a name='L47'></a><a href='#L47'>47</a>
107
+ <a name='L48'></a><a href='#L48'>48</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">5x</span>
107
108
  <span class="cline-any cline-yes">5x</span>
108
109
  <span class="cline-any cline-neutral">&nbsp;</span>
109
110
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -127,6 +128,7 @@
127
128
  <span class="cline-any cline-neutral">&nbsp;</span>
128
129
  <span class="cline-any cline-neutral">&nbsp;</span>
129
130
  <span class="cline-any cline-neutral">&nbsp;</span>
131
+ <span class="cline-any cline-neutral">&nbsp;</span>
130
132
  <span class="cline-any cline-no">&nbsp;</span>
131
133
  <span class="cline-any cline-neutral">&nbsp;</span>
132
134
  <span class="cline-any cline-no">&nbsp;</span>
@@ -171,6 +173,7 @@ export function <span class="fstat-no" title="function not covered" >validateObj
171
173
  obj: T,
172
174
  validators: ValidationConfig&lt;T, TErrors&gt;,
173
175
  onlyTruethy = <span class="branch-0 cbranch-no" title="branch not covered" >false,</span>
176
+ context?: T,
174
177
  ): ValidationResults&lt;T, TErrors&gt; {
175
178
  &nbsp;
176
179
  const res: ValidationResults&lt;T, TErrors&gt; = <span class="cstat-no" title="statement not covered" >{ };</span>
@@ -187,7 +190,7 @@ export function <span class="fstat-no" title="function not covered" >validateObj
187
190
  <span class="cstat-no" title="statement not covered" > return;</span>
188
191
  }
189
192
  &nbsp;
190
- const err = <span class="cstat-no" title="statement not covered" >validator(v, obj);</span>
193
+ const err = <span class="cstat-no" title="statement not covered" >validator(v, context || obj);</span>
191
194
  <span class="cstat-no" title="statement not covered" > if (err) {</span>
192
195
  <span class="cstat-no" title="statement not covered" > res[kk] = err;</span>
193
196
  }
@@ -202,7 +205,7 @@ export function <span class="fstat-no" title="function not covered" >validateObj
202
205
  <div class='footer quiet pad2 space-top1 center small'>
203
206
  Code coverage generated by
204
207
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
205
- at Sun May 22 2022 18:34:38 GMT+0000 (Coordinated Universal Time)
208
+ at Sat Jun 04 2022 17:04:51 GMT+0000 (Coordinated Universal Time)
206
209
  </div>
207
210
  </div>
208
211
  <script src="../../prettify.js"></script>
@@ -30,9 +30,9 @@
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">9.52% </span>
33
+ <span class="strong">9.23% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>6/63</span>
35
+ <span class='fraction'>6/65</span>
36
36
  </div>
37
37
 
38
38
 
@@ -110,7 +110,7 @@
110
110
  <td data-value="22.73" class="pct low">22.73%</td>
111
111
  <td data-value="22" class="abs low">5/22</td>
112
112
  <td data-value="0" class="pct low">0%</td>
113
- <td data-value="14" class="abs low">0/14</td>
113
+ <td data-value="16" class="abs low">0/16</td>
114
114
  <td data-value="0" class="pct low">0%</td>
115
115
  <td data-value="5" class="abs low">0/5</td>
116
116
  <td data-value="23.81" class="pct low">23.81%</td>
@@ -185,7 +185,7 @@
185
185
  <div class='footer quiet pad2 space-top1 center small'>
186
186
  Code coverage generated by
187
187
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
188
- at Sun May 22 2022 18:34:38 GMT+0000 (Coordinated Universal Time)
188
+ at Sat Jun 04 2022 17:04:51 GMT+0000 (Coordinated Universal Time)
189
189
  </div>
190
190
  </div>
191
191
  <script src="../../prettify.js"></script>
@@ -91,7 +91,7 @@ export * from './helpers';
91
91
  <div class='footer quiet pad2 space-top1 center small'>
92
92
  Code coverage generated by
93
93
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
94
- at Sun May 22 2022 18:34:38 GMT+0000 (Coordinated Universal Time)
94
+ at Sat Jun 04 2022 17:04:51 GMT+0000 (Coordinated Universal Time)
95
95
  </div>
96
96
  </div>
97
97
  <script src="../../prettify.js"></script>
@@ -118,7 +118,7 @@ export class ValidationError&lt;TErrors = ValidationErrors&gt; extends Error {
118
118
  <div class='footer quiet pad2 space-top1 center small'>
119
119
  Code coverage generated by
120
120
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
121
- at Sun May 22 2022 18:34:38 GMT+0000 (Coordinated Universal Time)
121
+ at Sat Jun 04 2022 17:04:51 GMT+0000 (Coordinated Universal Time)
122
122
  </div>
123
123
  </div>
124
124
  <script src="../../prettify.js"></script>
@@ -229,7 +229,7 @@ export const Validators = {
229
229
  <div class='footer quiet pad2 space-top1 center small'>
230
230
  Code coverage generated by
231
231
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
232
- at Sun May 22 2022 18:34:38 GMT+0000 (Coordinated Universal Time)
232
+ at Sat Jun 04 2022 17:04:51 GMT+0000 (Coordinated Universal Time)
233
233
  </div>
234
234
  </div>
235
235
  <script src="../../prettify.js"></script>
@@ -142,7 +142,7 @@ export const Wrappers = {
142
142
  <div class='footer quiet pad2 space-top1 center small'>
143
143
  Code coverage generated by
144
144
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
145
- at Sun May 22 2022 18:34:38 GMT+0000 (Coordinated Universal Time)
145
+ at Sat Jun 04 2022 17:04:51 GMT+0000 (Coordinated Universal Time)
146
146
  </div>
147
147
  </div>
148
148
  <script src="../../prettify.js"></script>
@@ -199,7 +199,7 @@ export class CommonModel&lt;T = any&gt; extends ValidatableModel&lt;T&gt; {
199
199
  <div class='footer quiet pad2 space-top1 center small'>
200
200
  Code coverage generated by
201
201
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
202
- at Sun May 22 2022 18:34:38 GMT+0000 (Coordinated Universal Time)
202
+ at Sat Jun 04 2022 17:04:51 GMT+0000 (Coordinated Universal Time)
203
203
  </div>
204
204
  </div>
205
205
  <script src="../../prettify.js"></script>
@@ -274,7 +274,7 @@ export class FlagModel implements IFlagModel, IFlagModelReadonly {
274
274
  <div class='footer quiet pad2 space-top1 center small'>
275
275
  Code coverage generated by
276
276
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
277
- at Sun May 22 2022 18:34:38 GMT+0000 (Coordinated Universal Time)
277
+ at Sat Jun 04 2022 17:04:51 GMT+0000 (Coordinated Universal Time)
278
278
  </div>
279
279
  </div>
280
280
  <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">75% </span>
26
+ <span class="strong">95.24% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>9/12</span>
28
+ <span class='fraction'>20/21</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">42.86% </span>
33
+ <span class="strong">90% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>3/7</span>
35
+ <span class='fraction'>9/10</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
40
+ <span class="strong">85.71% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>2/2</span>
42
+ <span class='fraction'>6/7</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">75% </span>
47
+ <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>9/12</span>
49
+ <span class='fraction'>20/20</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 medium'></div>
58
+ <div class='status-line high'></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>
@@ -85,60 +85,132 @@
85
85
  <a name='L26'></a><a href='#L26'>26</a>
86
86
  <a name='L27'></a><a href='#L27'>27</a>
87
87
  <a name='L28'></a><a href='#L28'>28</a>
88
- <a name='L29'></a><a href='#L29'>29</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
88
+ <a name='L29'></a><a href='#L29'>29</a>
89
+ <a name='L30'></a><a href='#L30'>30</a>
90
+ <a name='L31'></a><a href='#L31'>31</a>
91
+ <a name='L32'></a><a href='#L32'>32</a>
92
+ <a name='L33'></a><a href='#L33'>33</a>
93
+ <a name='L34'></a><a href='#L34'>34</a>
94
+ <a name='L35'></a><a href='#L35'>35</a>
95
+ <a name='L36'></a><a href='#L36'>36</a>
96
+ <a name='L37'></a><a href='#L37'>37</a>
97
+ <a name='L38'></a><a href='#L38'>38</a>
98
+ <a name='L39'></a><a href='#L39'>39</a>
99
+ <a name='L40'></a><a href='#L40'>40</a>
100
+ <a name='L41'></a><a href='#L41'>41</a>
101
+ <a name='L42'></a><a href='#L42'>42</a>
102
+ <a name='L43'></a><a href='#L43'>43</a>
103
+ <a name='L44'></a><a href='#L44'>44</a>
104
+ <a name='L45'></a><a href='#L45'>45</a>
105
+ <a name='L46'></a><a href='#L46'>46</a>
106
+ <a name='L47'></a><a href='#L47'>47</a>
107
+ <a name='L48'></a><a href='#L48'>48</a>
108
+ <a name='L49'></a><a href='#L49'>49</a>
109
+ <a name='L50'></a><a href='#L50'>50</a>
110
+ <a name='L51'></a><a href='#L51'>51</a>
111
+ <a name='L52'></a><a href='#L52'>52</a>
112
+ <a name='L53'></a><a href='#L53'>53</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
113
+ <span class="cline-any cline-neutral">&nbsp;</span>
89
114
  <span class="cline-any cline-neutral">&nbsp;</span>
90
115
  <span class="cline-any cline-yes">1x</span>
91
116
  <span class="cline-any cline-neutral">&nbsp;</span>
92
- <span class="cline-any cline-yes">3x</span>
117
+ <span class="cline-any cline-yes">2x</span>
93
118
  <span class="cline-any cline-neutral">&nbsp;</span>
119
+ <span class="cline-any cline-yes">12x</span>
94
120
  <span class="cline-any cline-neutral">&nbsp;</span>
121
+ <span class="cline-any cline-yes">5x</span>
95
122
  <span class="cline-any cline-neutral">&nbsp;</span>
123
+ <span class="cline-any cline-yes">4x</span>
124
+ <span class="cline-any cline-yes">2x</span>
125
+ <span class="cline-any cline-neutral">&nbsp;</span>
126
+ <span class="cline-any cline-yes">2x</span>
127
+ <span class="cline-any cline-neutral">&nbsp;</span>
128
+ <span class="cline-any cline-neutral">&nbsp;</span>
129
+ <span class="cline-any cline-neutral">&nbsp;</span>
130
+ <span class="cline-any cline-neutral">&nbsp;</span>
131
+ <span class="cline-any cline-neutral">&nbsp;</span>
132
+ <span class="cline-any cline-neutral">&nbsp;</span>
133
+ <span class="cline-any cline-neutral">&nbsp;</span>
134
+ <span class="cline-any cline-neutral">&nbsp;</span>
135
+ <span class="cline-any cline-neutral">&nbsp;</span>
136
+ <span class="cline-any cline-yes">4x</span>
137
+ <span class="cline-any cline-neutral">&nbsp;</span>
138
+ <span class="cline-any cline-neutral">&nbsp;</span>
139
+ <span class="cline-any cline-yes">2x</span>
96
140
  <span class="cline-any cline-neutral">&nbsp;</span>
97
141
  <span class="cline-any cline-neutral">&nbsp;</span>
98
142
  <span class="cline-any cline-neutral">&nbsp;</span>
99
- <span class="cline-any cline-yes">1x</span>
100
- <span class="cline-any cline-no">&nbsp;</span>
101
- <span class="cline-any cline-no">&nbsp;</span>
102
143
  <span class="cline-any cline-neutral">&nbsp;</span>
103
- <span class="cline-any cline-no">&nbsp;</span>
104
144
  <span class="cline-any cline-neutral">&nbsp;</span>
105
145
  <span class="cline-any cline-neutral">&nbsp;</span>
106
- <span class="cline-any cline-yes">1x</span>
107
146
  <span class="cline-any cline-neutral">&nbsp;</span>
108
147
  <span class="cline-any cline-yes">1x</span>
109
- <span class="cline-any cline-yes">1x</span>
148
+ <span class="cline-any cline-yes">4x</span>
149
+ <span class="cline-any cline-yes">2x</span>
110
150
  <span class="cline-any cline-yes">1x</span>
111
151
  <span class="cline-any cline-neutral">&nbsp;</span>
112
152
  <span class="cline-any cline-yes">1x</span>
113
153
  <span class="cline-any cline-neutral">&nbsp;</span>
114
154
  <span class="cline-any cline-neutral">&nbsp;</span>
155
+ <span class="cline-any cline-yes">2x</span>
156
+ <span class="cline-any cline-neutral">&nbsp;</span>
157
+ <span class="cline-any cline-yes">2x</span>
158
+ <span class="cline-any cline-yes">2x</span>
159
+ <span class="cline-any cline-yes">2x</span>
160
+ <span class="cline-any cline-neutral">&nbsp;</span>
161
+ <span class="cline-any cline-yes">2x</span>
162
+ <span class="cline-any cline-neutral">&nbsp;</span>
115
163
  <span class="cline-any cline-neutral">&nbsp;</span>
116
164
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { NumberModel } from './NumberModel';
165
+ import { IResetableModel, IValueModel } from './types';
166
+ &nbsp;
167
+ export class LoadingModel implements IValueModel&lt;boolean&gt;, IResetableModel {
117
168
  &nbsp;
118
- export class LoadingModel extends NumberModel {
169
+ private readonly _number = new NumberModel(0);
119
170
  &nbsp;
120
- public get isLoading() { return this.value &gt; 0; }
171
+ public get isLoading() { return this._number.value &gt; 0; }
172
+ &nbsp;
173
+ public get value(): boolean { return this.isLoading; }
174
+ public set value(v: boolean) {
175
+ if (v) {
176
+ this._number.increment();
177
+ } else {
178
+ this._number.decrement();
179
+ }
180
+ }
121
181
  &nbsp;
122
182
  public async useLoading&lt;T&gt;(cb: () =&gt; (T | Promise&lt;T&gt;)): Promise&lt;T&gt;;
123
183
  public async useLoading&lt;T&gt;(cb: () =&gt; (T | Promise&lt;T&gt;), exclusive: false): Promise&lt;T&gt;;
124
- public async useLoading&lt;T&gt;(cb: () =&gt; (T | Promise&lt;T&gt;), exclusive: true | 'throw'): Promise&lt;T | false&gt;;
184
+ public async useLoading&lt;T&gt;(cb: () =&gt; (T | Promise&lt;T&gt;), exclusive: true): Promise&lt;T | false&gt;;
185
+ public async useLoading&lt;T&gt;(cb: () =&gt; (T | Promise&lt;T&gt;), exclusive: 'throw'): Promise&lt;T&gt;;
125
186
  &nbsp;
126
- public async useLoading&lt;T&gt;(cb: () =&gt; (T | Promise&lt;T&gt;), exclusive: boolean | 'throw' = false): Promise&lt;T | false&gt; {
127
- <span class="missing-if-branch" title="if path not taken" >I</span>if (exclusive &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >this.isLoading)</span> {
128
- <span class="cstat-no" title="statement not covered" > if (exclusive === 'throw') {</span>
129
- <span class="cstat-no" title="statement not covered" > throw new Error('Operation cannot be started because another one is in progress already.');</span>
130
- }
131
- <span class="cstat-no" title="statement not covered" > return false;</span>
132
- }
187
+ public useLoading&lt;T&gt;(cb: () =&gt; (T | Promise&lt;T&gt;), exclusive: boolean | 'throw' = false): Promise&lt;T | false&gt; {
188
+ return withLoading(this, cb, exclusive as any);
189
+ }
190
+ &nbsp;
191
+ public reset = <span class="fstat-no" title="function not covered" >() =</span>&gt; <span class="cstat-no" title="statement not covered" >this._number.reset();</span>
192
+ }
133
193
  &nbsp;
134
- this.increment();
194
+ export function withLoading&lt;T&gt;(model: IValueModel&lt;boolean&gt;, cb: () =&gt; (T | Promise&lt;T&gt;)): Promise&lt;T&gt;;
195
+ export function withLoading&lt;T&gt;(model: IValueModel&lt;boolean&gt;, cb: () =&gt; (T | Promise&lt;T&gt;), exclusive: false): Promise&lt;T&gt;;
196
+ export function withLoading&lt;T&gt;(model: IValueModel&lt;boolean&gt;, cb: () =&gt; (T | Promise&lt;T&gt;), exclusive: true): Promise&lt;T | false&gt;;
197
+ export function withLoading&lt;T&gt;(model: IValueModel&lt;boolean&gt;, cb: () =&gt; (T | Promise&lt;T&gt;), exclusive: 'throw'): Promise&lt;T&gt;;
135
198
  &nbsp;
136
- try {
137
- const res = await cb();
138
- return res;
139
- } finally {
140
- this.decrement();
199
+ export async function withLoading&lt;T&gt;(this: void, model: IValueModel&lt;boolean&gt;, cb: () =&gt; (T | Promise&lt;T&gt;), exclusive: boolean | 'throw' = <span class="branch-0 cbranch-no" title="branch not covered" >false)</span>: Promise&lt;T | false&gt; {
200
+ if (exclusive &amp;&amp; model.value) {
201
+ if (exclusive === 'throw') {
202
+ throw new Error('Operation cannot be started because another one is in progress already.');
141
203
  }
204
+ return false;
205
+ }
206
+ &nbsp;
207
+ model.value = true;
208
+ &nbsp;
209
+ try {
210
+ const res = await cb();
211
+ return res;
212
+ } finally {
213
+ model.value = false;
142
214
  }
143
215
  }
144
216
  &nbsp;</pre></td></tr></table></pre>
@@ -148,7 +220,7 @@ export class LoadingModel extends NumberModel {
148
220
  <div class='footer quiet pad2 space-top1 center small'>
149
221
  Code coverage generated by
150
222
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
151
- at Sun May 22 2022 18:34:38 GMT+0000 (Coordinated Universal Time)
223
+ at Sat Jun 04 2022 17:04:51 GMT+0000 (Coordinated Universal Time)
152
224
  </div>
153
225
  </div>
154
226
  <script src="../../prettify.js"></script>
@@ -598,7 +598,7 @@ export class MultiSelectString&lt;T extends string = string&gt; extends MultiSel
598
598
  <div class='footer quiet pad2 space-top1 center small'>
599
599
  Code coverage generated by
600
600
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
601
- at Sun May 22 2022 18:34:38 GMT+0000 (Coordinated Universal Time)
601
+ at Sat Jun 04 2022 17:04:51 GMT+0000 (Coordinated Universal Time)
602
602
  </div>
603
603
  </div>
604
604
  <script src="../../prettify.js"></script>
@@ -118,42 +118,42 @@
118
118
  <span class="cline-any cline-yes">3x</span>
119
119
  <span class="cline-any cline-neutral">&nbsp;</span>
120
120
  <span class="cline-any cline-neutral">&nbsp;</span>
121
- <span class="cline-any cline-yes">8x</span>
121
+ <span class="cline-any cline-yes">9x</span>
122
122
  <span class="cline-any cline-neutral">&nbsp;</span>
123
- <span class="cline-any cline-yes">8x</span>
123
+ <span class="cline-any cline-yes">9x</span>
124
124
  <span class="cline-any cline-neutral">&nbsp;</span>
125
125
  <span class="cline-any cline-neutral">&nbsp;</span>
126
- <span class="cline-any cline-yes">8x</span>
126
+ <span class="cline-any cline-yes">9x</span>
127
127
  <span class="cline-any cline-neutral">&nbsp;</span>
128
128
  <span class="cline-any cline-neutral">&nbsp;</span>
129
129
  <span class="cline-any cline-neutral">&nbsp;</span>
130
130
  <span class="cline-any cline-neutral">&nbsp;</span>
131
131
  <span class="cline-any cline-neutral">&nbsp;</span>
132
132
  <span class="cline-any cline-neutral">&nbsp;</span>
133
- <span class="cline-any cline-yes">8x</span>
134
- <span class="cline-any cline-yes">8x</span>
133
+ <span class="cline-any cline-yes">9x</span>
134
+ <span class="cline-any cline-yes">9x</span>
135
135
  <span class="cline-any cline-neutral">&nbsp;</span>
136
136
  <span class="cline-any cline-neutral">&nbsp;</span>
137
- <span class="cline-any cline-yes">13x</span>
138
- <span class="cline-any cline-yes">8x</span>
137
+ <span class="cline-any cline-yes">23x</span>
138
+ <span class="cline-any cline-yes">10x</span>
139
139
  <span class="cline-any cline-neutral">&nbsp;</span>
140
140
  <span class="cline-any cline-neutral">&nbsp;</span>
141
- <span class="cline-any cline-yes">8x</span>
142
- <span class="cline-any cline-yes">10x</span>
141
+ <span class="cline-any cline-yes">9x</span>
142
+ <span class="cline-any cline-yes">12x</span>
143
143
  <span class="cline-any cline-neutral">&nbsp;</span>
144
144
  <span class="cline-any cline-neutral">&nbsp;</span>
145
145
  <span class="cline-any cline-no">&nbsp;</span>
146
146
  <span class="cline-any cline-neutral">&nbsp;</span>
147
147
  <span class="cline-any cline-neutral">&nbsp;</span>
148
- <span class="cline-any cline-yes">8x</span>
148
+ <span class="cline-any cline-yes">9x</span>
149
149
  <span class="cline-any cline-no">&nbsp;</span>
150
150
  <span class="cline-any cline-neutral">&nbsp;</span>
151
151
  <span class="cline-any cline-neutral">&nbsp;</span>
152
152
  <span class="cline-any cline-neutral">&nbsp;</span>
153
- <span class="cline-any cline-yes">8x</span>
153
+ <span class="cline-any cline-yes">9x</span>
154
154
  <span class="cline-any cline-neutral">&nbsp;</span>
155
155
  <span class="cline-any cline-neutral">&nbsp;</span>
156
- <span class="cline-any cline-yes">8x</span>
156
+ <span class="cline-any cline-yes">9x</span>
157
157
  <span class="cline-any cline-neutral">&nbsp;</span>
158
158
  <span class="cline-any cline-neutral">&nbsp;</span>
159
159
  <span class="cline-any cline-yes">3x</span>
@@ -214,7 +214,7 @@ export default NumberModel;
214
214
  <div class='footer quiet pad2 space-top1 center small'>
215
215
  Code coverage generated by
216
216
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
217
- at Sun May 22 2022 18:34:38 GMT+0000 (Coordinated Universal Time)
217
+ at Sat Jun 04 2022 17:04:51 GMT+0000 (Coordinated Universal Time)
218
218
  </div>
219
219
  </div>
220
220
  <script src="../../prettify.js"></script>
@@ -520,7 +520,7 @@ export class SelectString&lt;T extends string = string&gt; extends Select&lt;T&g
520
520
  <div class='footer quiet pad2 space-top1 center small'>
521
521
  Code coverage generated by
522
522
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
523
- at Sun May 22 2022 18:34:38 GMT+0000 (Coordinated Universal Time)
523
+ at Sat Jun 04 2022 17:04:51 GMT+0000 (Coordinated Universal Time)
524
524
  </div>
525
525
  </div>
526
526
  <script src="../../prettify.js"></script>
@@ -445,7 +445,7 @@ export class TextInputVM extends ValidatableModel&lt;string&gt; implements IValu
445
445
  <div class='footer quiet pad2 space-top1 center small'>
446
446
  Code coverage generated by
447
447
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
448
- at Sun May 22 2022 18:34:38 GMT+0000 (Coordinated Universal Time)
448
+ at Sat Jun 04 2022 17:04:51 GMT+0000 (Coordinated Universal Time)
449
449
  </div>
450
450
  </div>
451
451
  <script src="../../prettify.js"></script>
@@ -370,7 +370,7 @@ export abstract class ValidatableModel&lt;T = string&gt; {
370
370
  <div class='footer quiet pad2 space-top1 center small'>
371
371
  Code coverage generated by
372
372
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
373
- at Sun May 22 2022 18:34:38 GMT+0000 (Coordinated Universal Time)
373
+ at Sat Jun 04 2022 17:04:51 GMT+0000 (Coordinated Universal Time)
374
374
  </div>
375
375
  </div>
376
376
  <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">74.16% </span>
26
+ <span class="strong">75.34% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>264/356</span>
28
+ <span class='fraction'>275/365</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">54.9% </span>
33
+ <span class="strong">59.05% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>56/102</span>
35
+ <span class='fraction'>62/105</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">62.59% </span>
40
+ <span class="strong">63.19% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>87/139</span>
42
+ <span class='fraction'>91/144</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">74.54% </span>
47
+ <span class="strong">76.05% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>243/326</span>
49
+ <span class='fraction'>254/334</span>
50
50
  </div>
51
51
 
52
52
 
@@ -103,18 +103,18 @@
103
103
  </tr>
104
104
 
105
105
  <tr>
106
- <td class="file medium" data-value="LoadingModel.ts"><a href="LoadingModel.ts.html">LoadingModel.ts</a></td>
107
- <td data-value="75" class="pic medium">
108
- <div class="chart"><div class="cover-fill" style="width: 75%"></div><div class="cover-empty" style="width: 25%"></div></div>
106
+ <td class="file high" data-value="LoadingModel.ts"><a href="LoadingModel.ts.html">LoadingModel.ts</a></td>
107
+ <td data-value="95.24" class="pic high">
108
+ <div class="chart"><div class="cover-fill" style="width: 95%"></div><div class="cover-empty" style="width: 5%"></div></div>
109
109
  </td>
110
- <td data-value="75" class="pct medium">75%</td>
111
- <td data-value="12" class="abs medium">9/12</td>
112
- <td data-value="42.86" class="pct low">42.86%</td>
113
- <td data-value="7" class="abs low">3/7</td>
110
+ <td data-value="95.24" class="pct high">95.24%</td>
111
+ <td data-value="21" class="abs high">20/21</td>
112
+ <td data-value="90" class="pct high">90%</td>
113
+ <td data-value="10" class="abs high">9/10</td>
114
+ <td data-value="85.71" class="pct high">85.71%</td>
115
+ <td data-value="7" class="abs high">6/7</td>
114
116
  <td data-value="100" class="pct high">100%</td>
115
- <td data-value="2" class="abs high">2/2</td>
116
- <td data-value="75" class="pct medium">75%</td>
117
- <td data-value="12" class="abs medium">9/12</td>
117
+ <td data-value="20" class="abs high">20/20</td>
118
118
  </tr>
119
119
 
120
120
  <tr>
@@ -215,7 +215,7 @@
215
215
  <div class='footer quiet pad2 space-top1 center small'>
216
216
  Code coverage generated by
217
217
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
218
- at Sun May 22 2022 18:34:38 GMT+0000 (Coordinated Universal Time)
218
+ at Sat Jun 04 2022 17:04:51 GMT+0000 (Coordinated Universal Time)
219
219
  </div>
220
220
  </div>
221
221
  <script src="../../prettify.js"></script>
@@ -211,7 +211,7 @@ export function mixinLabel&lt;T, TModel extends IValueModel&lt;T&gt;, TLabel = s
211
211
  <div class='footer quiet pad2 space-top1 center small'>
212
212
  Code coverage generated by
213
213
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
214
- at Sun May 22 2022 18:34:38 GMT+0000 (Coordinated Universal Time)
214
+ at Sat Jun 04 2022 17:04:51 GMT+0000 (Coordinated Universal Time)
215
215
  </div>
216
216
  </div>
217
217
  <script src="../../prettify.js"></script>