@zajno/common 1.5.2 → 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 (82) hide show
  1. package/coverage/clover.xml +45 -37
  2. package/coverage/coverage-final.json +3 -3
  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 +19 -19
  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 +1 -1
  50. package/coverage/lcov-report/src/validation/index.html +1 -1
  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 +85 -64
  73. package/lib/viewModels/LoadingModel.d.ts +12 -3
  74. package/lib/viewModels/LoadingModel.d.ts.map +1 -1
  75. package/lib/viewModels/LoadingModel.js +33 -16
  76. package/lib/viewModels/LoadingModel.js.map +1 -1
  77. package/lib/viewModels/types.d.ts +4 -1
  78. package/lib/viewModels/types.d.ts.map +1 -1
  79. package/package.json +1 -1
  80. package/src/viewModels/LoadingModel.ts +41 -17
  81. package/src/viewModels/__tests__/common.test.ts +27 -8
  82. package/src/viewModels/types.ts +5 -1
@@ -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 Tue May 24 2022 13:49:19 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 Tue May 24 2022 13:49:19 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 Tue May 24 2022 13:49:19 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 Tue May 24 2022 13:49:19 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>
@@ -205,7 +205,7 @@ export function <span class="fstat-no" title="function not covered" >validateObj
205
205
  <div class='footer quiet pad2 space-top1 center small'>
206
206
  Code coverage generated by
207
207
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
208
- at Tue May 24 2022 13:49:19 GMT+0000 (Coordinated Universal Time)
208
+ at Sat Jun 04 2022 17:04:51 GMT+0000 (Coordinated Universal Time)
209
209
  </div>
210
210
  </div>
211
211
  <script src="../../prettify.js"></script>
@@ -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 Tue May 24 2022 13:49:19 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 Tue May 24 2022 13:49:19 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 Tue May 24 2022 13:49:19 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 Tue May 24 2022 13:49:19 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 Tue May 24 2022 13:49:19 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 Tue May 24 2022 13:49:19 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 Tue May 24 2022 13:49:19 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 Tue May 24 2022 13:49:19 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 Tue May 24 2022 13:49:19 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 Tue May 24 2022 13:49:19 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 Tue May 24 2022 13:49:19 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 Tue May 24 2022 13:49:19 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 Tue May 24 2022 13:49:19 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 Tue May 24 2022 13:49:19 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 Tue May 24 2022 13:49:19 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>
@@ -95,7 +95,7 @@
95
95
  <div class='footer quiet pad2 space-top1 center small'>
96
96
  Code coverage generated by
97
97
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
98
- at Fri Mar 18 2022 08:45:35 GMT+0000 (Coordinated Universal Time)
98
+ at Sat Jun 04 2022 17:01:00 GMT+0000 (Coordinated Universal Time)
99
99
  </div>
100
100
  </div>
101
101
  <script src="../prettify.js"></script>
@@ -66,11 +66,11 @@
66
66
  <a name='L7'></a><a href='#L7'>7</a>
67
67
  <a name='L8'></a><a href='#L8'>8</a>
68
68
  <a name='L9'></a><a href='#L9'>9</a>
69
- <a name='L10'></a><a href='#L10'>10</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">3x</span>
70
- <span class="cline-any cline-yes">3x</span>
71
- <span class="cline-any cline-yes">3x</span>
72
- <span class="cline-any cline-yes">3x</span>
73
- <span class="cline-any cline-yes">3x</span>
69
+ <a name='L10'></a><a href='#L10'>10</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">5x</span>
70
+ <span class="cline-any cline-yes">5x</span>
71
+ <span class="cline-any cline-yes">5x</span>
72
+ <span class="cline-any cline-yes">5x</span>
73
+ <span class="cline-any cline-yes">5x</span>
74
74
  <span class="cline-any cline-neutral">&nbsp;</span>
75
75
  <span class="cline-any cline-neutral">&nbsp;</span>
76
76
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -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 Fri Mar 18 2022 08:45:35 GMT+0000 (Coordinated Universal Time)
94
+ at Sat Jun 04 2022 17:01:00 GMT+0000 (Coordinated Universal Time)
95
95
  </div>
96
96
  </div>
97
97
  <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 Fri Mar 18 2022 08:45:35 GMT+0000 (Coordinated Universal Time)
202
+ at Sat Jun 04 2022 17:01:00 GMT+0000 (Coordinated Universal Time)
203
203
  </div>
204
204
  </div>
205
205
  <script src="../prettify.js"></script>