@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
@@ -24,6 +24,31 @@ var addSorting = (function() {
24
24
  return getTableHeader().querySelectorAll('th')[n];
25
25
  }
26
26
 
27
+ function onFilterInput() {
28
+ const searchValue = document.getElementById('fileSearch').value;
29
+ const rows = document.getElementsByTagName('tbody')[0].children;
30
+ for (let i = 0; i < rows.length; i++) {
31
+ const row = rows[i];
32
+ if (
33
+ row.textContent
34
+ .toLowerCase()
35
+ .includes(searchValue.toLowerCase())
36
+ ) {
37
+ row.style.display = '';
38
+ } else {
39
+ row.style.display = 'none';
40
+ }
41
+ }
42
+ }
43
+
44
+ // loads the search box
45
+ function addSearchBox() {
46
+ var template = document.getElementById('filterTemplate');
47
+ var templateClone = template.content.cloneNode(true);
48
+ templateClone.getElementById('fileSearch').oninput = onFilterInput;
49
+ template.parentElement.appendChild(templateClone);
50
+ }
51
+
27
52
  // loads all columns
28
53
  function loadColumns() {
29
54
  var colNodes = getTableHeader().querySelectorAll('th'),
@@ -162,6 +187,7 @@ var addSorting = (function() {
162
187
  }
163
188
  cols = loadColumns();
164
189
  loadData();
190
+ addSearchBox();
165
191
  addSortIndicators();
166
192
  enableUI();
167
193
  };
@@ -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
  <div class="pad1">
@@ -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 () {
@@ -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">
@@ -99,10 +105,9 @@ export const toArbitrary = (fakerGen) =&gt; {
99
105
  </div><!-- /wrapper -->
100
106
  <div class='footer quiet pad2 space-top1 center small'>
101
107
  Code coverage generated by
102
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
103
- at Thu Jul 07 2022 10:23:01 GMT+0000 (Coordinated Universal Time)
108
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
109
+ at 2022-09-08T13:27:57.517Z
104
110
  </div>
105
- </div>
106
111
  <script src="../../../prettify.js"></script>
107
112
  <script>
108
113
  window.onload = function () {
@@ -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/4</span>
35
+ <span class='fraction'>0/2</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 low'></div>
59
65
  <pre><table class="coverage">
@@ -97,7 +103,7 @@
97
103
  <a name='L38'></a><a href='#L38'>38</a>
98
104
  <a name='L39'></a><a href='#L39'>39</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
99
105
  <span class="cline-any cline-neutral">&nbsp;</span>
100
- <span class="cline-any cline-yes">4x</span>
106
+ <span class="cline-any cline-yes">6x</span>
101
107
  <span class="cline-any cline-no">&nbsp;</span>
102
108
  <span class="cline-any cline-no">&nbsp;</span>
103
109
  <span class="cline-any cline-no">&nbsp;</span>
@@ -108,7 +114,7 @@
108
114
  <span class="cline-any cline-no">&nbsp;</span>
109
115
  <span class="cline-any cline-neutral">&nbsp;</span>
110
116
  <span class="cline-any cline-neutral">&nbsp;</span>
111
- <span class="cline-any cline-yes">4x</span>
117
+ <span class="cline-any cline-yes">6x</span>
112
118
  <span class="cline-any cline-no">&nbsp;</span>
113
119
  <span class="cline-any cline-no">&nbsp;</span>
114
120
  <span class="cline-any cline-no">&nbsp;</span>
@@ -119,13 +125,13 @@
119
125
  <span class="cline-any cline-no">&nbsp;</span>
120
126
  <span class="cline-any cline-neutral">&nbsp;</span>
121
127
  <span class="cline-any cline-neutral">&nbsp;</span>
122
- <span class="cline-any cline-yes">4x</span>
128
+ <span class="cline-any cline-yes">6x</span>
123
129
  <span class="cline-any cline-no">&nbsp;</span>
124
130
  <span class="cline-any cline-no">&nbsp;</span>
125
131
  <span class="cline-any cline-neutral">&nbsp;</span>
126
132
  <span class="cline-any cline-neutral">&nbsp;</span>
127
133
  <span class="cline-any cline-neutral">&nbsp;</span>
128
- <span class="cline-any cline-yes">4x</span>
134
+ <span class="cline-any cline-yes">6x</span>
129
135
  <span class="cline-any cline-no">&nbsp;</span>
130
136
  <span class="cline-any cline-no">&nbsp;</span>
131
137
  <span class="cline-any cline-no">&nbsp;</span>
@@ -138,7 +144,7 @@
138
144
  export async function <span class="fstat-no" title="function not covered" >someAsync&lt;</span>T&gt;(target: ReadonlyArray&lt;T&gt;, condition: (v: T, index?: number, arr?: ReadonlyArray&lt;T&gt;) =&gt; Promise&lt;boolean&gt;): Promise&lt;boolean&gt; {
139
145
  <span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i &lt; target.length; ++i) {</span>
140
146
  const ok = <span class="cstat-no" title="statement not covered" >await condition(target[i], i, target);</span>
141
- <span class="cstat-no" title="statement not covered" > if (ok) {</span>
147
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (ok) {</span>
142
148
  <span class="cstat-no" title="statement not covered" > return true;</span>
143
149
  }
144
150
  }
@@ -149,7 +155,7 @@ export async function <span class="fstat-no" title="function not covered" >someA
149
155
  export async function <span class="fstat-no" title="function not covered" >everyAsync&lt;</span>T&gt;(target: ReadonlyArray&lt;T&gt;, condition: (v: T, index?: number, arr?: ReadonlyArray&lt;T&gt;) =&gt; Promise&lt;boolean&gt;): Promise&lt;boolean&gt; {
150
156
  <span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i &lt; target.length; ++i) {</span>
151
157
  const ok = <span class="cstat-no" title="statement not covered" >await condition(target[i], i, target);</span>
152
- <span class="cstat-no" title="statement not covered" > if (!ok) {</span>
158
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!ok) {</span>
153
159
  <span class="cstat-no" title="statement not covered" > return false;</span>
154
160
  }
155
161
  }
@@ -177,10 +183,9 @@ export async function <span class="fstat-no" title="function not covered" >mapAs
177
183
  </div><!-- /wrapper -->
178
184
  <div class='footer quiet pad2 space-top1 center small'>
179
185
  Code coverage generated by
180
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
181
- at Thu Jul 07 2022 10:23:01 GMT+0000 (Coordinated Universal Time)
186
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
187
+ at 2022-09-08T13:27:57.517Z
182
188
  </div>
183
- </div>
184
189
  <script src="../../prettify.js"></script>
185
190
  <script>
186
191
  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">29.41% </span>
26
+ <span class="strong">50% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>15/51</span>
28
+ <span class='fraction'>36/72</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">17.65% </span>
33
+ <span class="strong">43.75% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>3/17</span>
35
+ <span class='fraction'>7/16</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">27.27% </span>
40
+ <span class="strong">55.56% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>3/11</span>
42
+ <span class='fraction'>10/18</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">31.91% </span>
47
+ <span class="strong">51.52% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>15/47</span>
49
+ <span class='fraction'>34/66</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
  <div class="pad1">
60
66
  <table class="coverage-summary">
61
67
  <thead>
@@ -80,7 +86,7 @@
80
86
  <td data-value="16" class="pct low">16%</td>
81
87
  <td data-value="25" class="abs low">4/25</td>
82
88
  <td data-value="0" class="pct low">0%</td>
83
- <td data-value="4" class="abs low">0/4</td>
89
+ <td data-value="2" class="abs low">0/2</td>
84
90
  <td data-value="0" class="pct low">0%</td>
85
91
  <td data-value="4" class="abs low">0/4</td>
86
92
  <td data-value="19.05" class="pct low">19.05%</td>
@@ -88,18 +94,18 @@
88
94
  </tr>
89
95
 
90
96
  <tr>
91
- <td class="file low" data-value="timeout.ts"><a href="timeout.ts.html">timeout.ts</a></td>
92
- <td data-value="42.31" class="pic low">
93
- <div class="chart"><div class="cover-fill" style="width: 42%"></div><div class="cover-empty" style="width: 58%"></div></div>
97
+ <td class="file medium" data-value="timeout.ts"><a href="timeout.ts.html">timeout.ts</a></td>
98
+ <td data-value="68.09" class="pic medium">
99
+ <div class="chart"><div class="cover-fill" style="width: 68%"></div><div class="cover-empty" style="width: 32%"></div></div>
94
100
  </td>
95
- <td data-value="42.31" class="pct low">42.31%</td>
96
- <td data-value="26" class="abs low">11/26</td>
97
- <td data-value="23.08" class="pct low">23.08%</td>
98
- <td data-value="13" class="abs low">3/13</td>
99
- <td data-value="42.86" class="pct low">42.86%</td>
100
- <td data-value="7" class="abs low">3/7</td>
101
- <td data-value="42.31" class="pct low">42.31%</td>
102
- <td data-value="26" class="abs low">11/26</td>
101
+ <td data-value="68.09" class="pct medium">68.09%</td>
102
+ <td data-value="47" class="abs medium">32/47</td>
103
+ <td data-value="50" class="pct medium">50%</td>
104
+ <td data-value="14" class="abs medium">7/14</td>
105
+ <td data-value="71.43" class="pct medium">71.43%</td>
106
+ <td data-value="14" class="abs medium">10/14</td>
107
+ <td data-value="66.67" class="pct medium">66.67%</td>
108
+ <td data-value="45" class="abs medium">30/45</td>
103
109
  </tr>
104
110
 
105
111
  </tbody>
@@ -109,10 +115,9 @@
109
115
  </div><!-- /wrapper -->
110
116
  <div class='footer quiet pad2 space-top1 center small'>
111
117
  Code coverage generated by
112
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
113
- at Thu Jul 07 2022 10:23:01 GMT+0000 (Coordinated Universal Time)
118
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
+ at 2022-09-08T13:27:57.517Z
114
120
  </div>
115
- </div>
116
121
  <script src="../../prettify.js"></script>
117
122
  <script>
118
123
  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">42.31% </span>
26
+ <span class="strong">68.09% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>11/26</span>
28
+ <span class='fraction'>32/47</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">23.08% </span>
33
+ <span class="strong">50% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>3/13</span>
35
+ <span class='fraction'>7/14</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">42.86% </span>
40
+ <span class="strong">71.43% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>3/7</span>
42
+ <span class='fraction'>10/14</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">42.31% </span>
47
+ <span class="strong">66.67% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>11/26</span>
49
+ <span class='fraction'>30/45</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>
@@ -107,22 +113,56 @@
107
113
  <a name='L48'></a><a href='#L48'>48</a>
108
114
  <a name='L49'></a><a href='#L49'>49</a>
109
115
  <a name='L50'></a><a href='#L50'>50</a>
110
- <a name='L51'></a><a href='#L51'>51</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
111
- <span class="cline-any cline-yes">3x</span>
112
- <span class="cline-any cline-yes">10x</span>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
151
+ <span class="cline-any cline-yes">5x</span>
152
+ <span class="cline-any cline-yes">16x</span>
113
153
  <span class="cline-any cline-neutral">&nbsp;</span>
114
154
  <span class="cline-any cline-neutral">&nbsp;</span>
115
- <span class="cline-any cline-yes">10x</span>
116
- <span class="cline-any cline-yes">10x</span>
117
- <span class="cline-any cline-yes">10x</span>
118
- <span class="cline-any cline-yes">10x</span>
119
- <span class="cline-any cline-yes">10x</span>
120
- <span class="cline-any cline-yes">10x</span>
155
+ <span class="cline-any cline-yes">16x</span>
156
+ <span class="cline-any cline-yes">16x</span>
157
+ <span class="cline-any cline-yes">16x</span>
158
+ <span class="cline-any cline-yes">16x</span>
159
+ <span class="cline-any cline-yes">16x</span>
160
+ <span class="cline-any cline-yes">16x</span>
121
161
  <span class="cline-any cline-neutral">&nbsp;</span>
122
162
  <span class="cline-any cline-neutral">&nbsp;</span>
123
163
  <span class="cline-any cline-neutral">&nbsp;</span>
124
164
  <span class="cline-any cline-neutral">&nbsp;</span>
125
- <span class="cline-any cline-yes">10x</span>
165
+ <span class="cline-any cline-yes">16x</span>
126
166
  <span class="cline-any cline-no">&nbsp;</span>
127
167
  <span class="cline-any cline-no">&nbsp;</span>
128
168
  <span class="cline-any cline-no">&nbsp;</span>
@@ -133,12 +173,12 @@
133
173
  <span class="cline-any cline-no">&nbsp;</span>
134
174
  <span class="cline-any cline-neutral">&nbsp;</span>
135
175
  <span class="cline-any cline-neutral">&nbsp;</span>
136
- <span class="cline-any cline-yes">10x</span>
176
+ <span class="cline-any cline-yes">16x</span>
137
177
  <span class="cline-any cline-neutral">&nbsp;</span>
138
178
  <span class="cline-any cline-neutral">&nbsp;</span>
139
179
  <span class="cline-any cline-neutral">&nbsp;</span>
140
180
  <span class="cline-any cline-neutral">&nbsp;</span>
141
- <span class="cline-any cline-yes">3x</span>
181
+ <span class="cline-any cline-yes">5x</span>
142
182
  <span class="cline-any cline-no">&nbsp;</span>
143
183
  <span class="cline-any cline-no">&nbsp;</span>
144
184
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -157,6 +197,40 @@
157
197
  <span class="cline-any cline-no">&nbsp;</span>
158
198
  <span class="cline-any cline-neutral">&nbsp;</span>
159
199
  <span class="cline-any cline-neutral">&nbsp;</span>
200
+ <span class="cline-any cline-neutral">&nbsp;</span>
201
+ <span class="cline-any cline-yes">5x</span>
202
+ <span class="cline-any cline-yes">3x</span>
203
+ <span class="cline-any cline-neutral">&nbsp;</span>
204
+ <span class="cline-any cline-yes">3x</span>
205
+ <span class="cline-any cline-yes">3x</span>
206
+ <span class="cline-any cline-yes">3x</span>
207
+ <span class="cline-any cline-yes">4x</span>
208
+ <span class="cline-any cline-yes">1x</span>
209
+ <span class="cline-any cline-neutral">&nbsp;</span>
210
+ <span class="cline-any cline-neutral">&nbsp;</span>
211
+ <span class="cline-any cline-yes">3x</span>
212
+ <span class="cline-any cline-neutral">&nbsp;</span>
213
+ <span class="cline-any cline-yes">4x</span>
214
+ <span class="cline-any cline-yes">3x</span>
215
+ <span class="cline-any cline-neutral">&nbsp;</span>
216
+ <span class="cline-any cline-yes">3x</span>
217
+ <span class="cline-any cline-yes">3x</span>
218
+ <span class="cline-any cline-yes">1x</span>
219
+ <span class="cline-any cline-neutral">&nbsp;</span>
220
+ <span class="cline-any cline-yes">2x</span>
221
+ <span class="cline-any cline-neutral">&nbsp;</span>
222
+ <span class="cline-any cline-neutral">&nbsp;</span>
223
+ <span class="cline-any cline-neutral">&nbsp;</span>
224
+ <span class="cline-any cline-yes">3x</span>
225
+ <span class="cline-any cline-yes">1x</span>
226
+ <span class="cline-any cline-neutral">&nbsp;</span>
227
+ <span class="cline-any cline-neutral">&nbsp;</span>
228
+ <span class="cline-any cline-yes">3x</span>
229
+ <span class="cline-any cline-yes">3x</span>
230
+ <span class="cline-any cline-yes">3x</span>
231
+ <span class="cline-any cline-neutral">&nbsp;</span>
232
+ <span class="cline-any cline-neutral">&nbsp;</span>
233
+ <span class="cline-any cline-neutral">&nbsp;</span>
160
234
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">&nbsp;
161
235
  export function setTimeoutAsync(ms: number, useCancel: (cb: () =&gt; void) =&gt; void = null) {
162
236
  let canceled = false;
@@ -166,7 +240,7 @@ export function setTimeoutAsync(ms: number, useCancel: (cb: () =&gt; void) =&gt;
166
240
  _reject = reject;
167
241
  token = setTimeout(() =&gt; {
168
242
  _reject = null;
169
- <span class="missing-if-branch" title="else path not taken" >E</span>if (!canceled) {
243
+ if (!canceled) {
170
244
  resolve();
171
245
  }
172
246
  }, ms);
@@ -176,7 +250,7 @@ export function setTimeoutAsync(ms: number, useCancel: (cb: () =&gt; void) =&gt;
176
250
  const cancelCb = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >() =</span>&gt; {</span>
177
251
  <span class="cstat-no" title="statement not covered" > clearTimeout(token);</span>
178
252
  <span class="cstat-no" title="statement not covered" > canceled = true;</span>
179
- <span class="cstat-no" title="statement not covered" > if (_reject) {</span>
253
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (_reject) {</span>
180
254
  <span class="cstat-no" title="statement not covered" > _reject();</span>
181
255
  }
182
256
  };
@@ -189,7 +263,7 @@ export function setTimeoutAsync(ms: number, useCancel: (cb: () =&gt; void) =&gt;
189
263
  /* global requestAnimationFrame */
190
264
  &nbsp;
191
265
  export function <span class="fstat-no" title="function not covered" >setTimeoutFramesAsync(</span>frames: number) {
192
- <span class="cstat-no" title="statement not covered" > if (typeof requestAnimationFrame === 'undefined') {</span>
266
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof requestAnimationFrame === 'undefined') {</span>
193
267
  <span class="cstat-no" title="statement not covered" > throw new Error('setTimeoutFramesAsync is not supported because "requestAnimationFrame" is not defined.');</span>
194
268
  }
195
269
  &nbsp;
@@ -207,16 +281,49 @@ export function <span class="fstat-no" title="function not covered" >setTimeoutF
207
281
  <span class="cstat-no" title="statement not covered" > cb();</span>
208
282
  });
209
283
  }
284
+ &nbsp;
285
+ export function timeoutPromise&lt;T&gt;(p: Promise&lt;T&gt;, timeoutMs: number, waitForMinElapsed?: number): Promise&lt;{ resolved: T, timedOut?: boolean, elapsed: number }&gt; {
286
+ const started = Date.now();
287
+ &nbsp;
288
+ return new Promise((resolve, reject) =&gt; {
289
+ let finished = false;
290
+ const finish = (res: T, timedOut: boolean) =&gt; {
291
+ if (finished) {
292
+ return;
293
+ }
294
+ &nbsp;
295
+ finished = true;
296
+ &nbsp;
297
+ const getElapsed = () =&gt; (Date.now() - started);
298
+ const doFinish = () =&gt; resolve({ resolved: res, timedOut: timedOut, elapsed: getElapsed() });
299
+ &nbsp;
300
+ const left = waitForMinElapsed != null ? (waitForMinElapsed - getElapsed()) : -1;
301
+ if (left &gt;= 0) {
302
+ setTimeout(doFinish, left);
303
+ } else {
304
+ doFinish();
305
+ }
306
+ };
307
+ &nbsp;
308
+ const timeoutRef = setTimeout(() =&gt; {
309
+ finish(undefined, true);
310
+ }, timeoutMs);
311
+ &nbsp;
312
+ p.then(res =&gt; {
313
+ clearTimeout(timeoutRef);
314
+ finish(res, false);
315
+ }).catch(reject);
316
+ });
317
+ }
210
318
  &nbsp;</pre></td></tr></table></pre>
211
319
 
212
320
  <div class='push'></div><!-- for sticky footer -->
213
321
  </div><!-- /wrapper -->
214
322
  <div class='footer quiet pad2 space-top1 center small'>
215
323
  Code coverage generated by
216
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
217
- at Thu Jul 07 2022 10:23:01 GMT+0000 (Coordinated Universal Time)
324
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
325
+ at 2022-09-08T13:27:57.517Z
218
326
  </div>
219
- </div>
220
327
  <script src="../../prettify.js"></script>
221
328
  <script>
222
329
  window.onload = function () {
@@ -30,9 +30,9 @@
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">56.52% </span>
33
+ <span class="strong">60.53% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>26/46</span>
35
+ <span class='fraction'>23/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">
@@ -476,11 +482,11 @@ export class PromiseCache&lt;T, K = string&gt; {
476
482
  <span class="cstat-no" title="statement not covered" > throw new Error('PromiseCache: null keys are not supported');</span>
477
483
  }
478
484
  &nbsp;
479
- <span class="missing-if-branch" title="else path not taken" >E</span>if (typeof k === 'string') {
485
+ if (typeof k === 'string') {
480
486
  return k;
481
487
  }
482
488
  &nbsp;
483
- <span class="cstat-no" title="statement not covered" > if (!this.keyAdapter) {</span>
489
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.keyAdapter) {</span>
484
490
  <span class="cstat-no" title="statement not covered" > throw new Error('Provide key adapter for non-string keys');</span>
485
491
  }
486
492
  &nbsp;
@@ -509,7 +515,7 @@ export class PromiseCache&lt;T, K = string&gt; {
509
515
  getCurrent(id: K, initiateFetch = true): T {
510
516
  const key = this._pk(id);
511
517
  const item = this._itemsCache[key];
512
- <span class="missing-if-branch" title="else path not taken" >E</span>if (initiateFetch) {
518
+ if (initiateFetch) {
513
519
  this.get(id);
514
520
  }
515
521
  this._logger<span class="branch-1 cbranch-no" title="branch not covered" ><span class="branch-1 cbranch-no" title="branch not covered" >?.l</span>og(key, 'getCurrent returns', item);</span>
@@ -541,7 +547,7 @@ export class PromiseCache&lt;T, K = string&gt; {
541
547
  try {
542
548
  this._busyCount.increment();
543
549
  const res = await this.fetcher(id);
544
- <span class="missing-if-branch" title="else path not taken" >E</span>if (this._fetchCache[key]) {
550
+ if (this._fetchCache[key]) {
545
551
  this._logger<span class="branch-1 cbranch-no" title="branch not covered" ><span class="branch-1 cbranch-no" title="branch not covered" >?.l</span>og(key, 'item\'s &lt;promise&gt; resolved to', res);</span>
546
552
  const result = res
547
553
  ? (this._observeItems ? <span class="branch-0 cbranch-no" title="branch not covered" >observable.object(res) </span>: res)
@@ -578,7 +584,7 @@ export class PromiseCache&lt;T, K = string&gt; {
578
584
  }
579
585
  &nbsp;
580
586
  <span class="fstat-no" title="function not covered" > keysParsed(</span>) {
581
- <span class="cstat-no" title="statement not covered" > if (!this.keyParser) {</span>
587
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.keyParser) {</span>
582
588
  <span class="cstat-no" title="statement not covered" > return null;</span>
583
589
  }
584
590
  &nbsp;
@@ -606,10 +612,9 @@ function _setX&lt;T&gt;(key: string, obj: Record&lt;string, T&gt;, val: T) {
606
612
  </div><!-- /wrapper -->
607
613
  <div class='footer quiet pad2 space-top1 center small'>
608
614
  Code coverage generated by
609
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
610
- at Thu Jul 07 2022 10:23:01 GMT+0000 (Coordinated Universal Time)
615
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
616
+ at 2022-09-08T13:27:57.517Z
611
617
  </div>
612
- </div>
613
618
  <script src="../prettify.js"></script>
614
619
  <script>
615
620
  window.onload = function () {