@zajno/common 1.2.6 → 1.3.0

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 (145) hide show
  1. package/coverage/clover.xml +410 -144
  2. package/coverage/coverage-final.json +38 -30
  3. package/coverage/lcov-report/index.html +34 -19
  4. package/coverage/lcov-report/src/__tests__/helpers/index.html +1 -1
  5. package/coverage/lcov-report/src/__tests__/helpers/main.ts.html +1 -1
  6. package/coverage/lcov-report/src/async/arrays.ts.html +5 -5
  7. package/coverage/lcov-report/src/async/index.html +1 -1
  8. package/coverage/lcov-report/src/dates/calc.ts.html +1 -1
  9. package/coverage/lcov-report/src/dates/convert.ts.html +1 -1
  10. package/coverage/lcov-report/src/dates/datex.ts.html +1 -1
  11. package/coverage/lcov-report/src/dates/format.ts.html +1 -1
  12. package/coverage/lcov-report/src/dates/index.html +1 -1
  13. package/coverage/lcov-report/src/dates/index.ts.html +1 -1
  14. package/coverage/lcov-report/src/dates/parse.ts.html +1 -1
  15. package/coverage/lcov-report/src/dates/period.ts.html +1 -1
  16. package/coverage/lcov-report/src/dates/shift.ts.html +1 -1
  17. package/coverage/lcov-report/src/dates/types.ts.html +1 -1
  18. package/coverage/lcov-report/src/dates/yearDate.ts.html +1 -1
  19. package/coverage/lcov-report/src/enumHelper.ts.html +11 -11
  20. package/coverage/lcov-report/src/event.ts.html +3 -3
  21. package/coverage/lcov-report/src/index.html +49 -19
  22. package/coverage/lcov-report/src/lazy.light.ts.html +155 -0
  23. package/coverage/lcov-report/src/logger/console.ts.html +1 -1
  24. package/coverage/lcov-report/src/logger/index.html +1 -1
  25. package/coverage/lcov-report/src/logger/index.ts.html +1 -1
  26. package/coverage/lcov-report/src/logger/named.ts.html +1 -1
  27. package/coverage/lcov-report/src/logger/proxy.ts.html +1 -1
  28. package/coverage/lcov-report/src/math/arrays.ts.html +1 -1
  29. package/coverage/lcov-report/src/math/calc.ts.html +1 -1
  30. package/coverage/lcov-report/src/math/distribution.ts.html +1 -1
  31. package/coverage/lcov-report/src/math/index.html +1 -1
  32. package/coverage/lcov-report/src/math/index.ts.html +1 -1
  33. package/coverage/lcov-report/src/transitionObserver.ts.html +113 -41
  34. package/coverage/lcov-report/src/types.ts.html +143 -0
  35. package/coverage/lcov-report/src/validation/ValidationErrors.ts.html +22 -22
  36. package/coverage/lcov-report/src/validation/creditCard.ts.html +4 -4
  37. package/coverage/lcov-report/src/validation/helpers.ts.html +6 -6
  38. package/coverage/lcov-report/src/validation/index.html +1 -1
  39. package/coverage/lcov-report/src/validation/index.ts.html +6 -6
  40. package/coverage/lcov-report/src/validation/types.ts.html +2 -2
  41. package/coverage/lcov-report/src/validation/validators.ts.html +5 -5
  42. package/coverage/lcov-report/src/validation/wrappers.ts.html +5 -5
  43. package/coverage/lcov-report/src/viewModels/FlagModel.ts.html +209 -0
  44. package/coverage/lcov-report/src/viewModels/LabeledFlagModel.ts.html +146 -0
  45. package/coverage/lcov-report/src/viewModels/MultiSelectModel.ts.html +530 -0
  46. package/coverage/lcov-report/src/viewModels/NumberModel.ts.html +188 -0
  47. package/coverage/lcov-report/{enumHelper.ts.html → src/viewModels/SelectModel.ts.html} +158 -152
  48. package/coverage/lcov-report/src/viewModels/SelectViewModel.ts.html +434 -0
  49. package/coverage/lcov-report/src/viewModels/Validatable.ts.html +329 -0
  50. package/coverage/lcov-report/src/viewModels/index.html +186 -0
  51. package/coverage/lcov-report/src/viewModels/wrappers.ts.html +239 -0
  52. package/coverage/lcov-report/transitionObserver.ts.html +77 -41
  53. package/coverage/lcov.info +765 -184
  54. package/lib/timeHelper.d.ts +3 -0
  55. package/lib/timeHelper.d.ts.map +1 -1
  56. package/lib/timeHelper.js +3 -0
  57. package/lib/timeHelper.js.map +1 -1
  58. package/lib/transitionObserver.d.ts +3 -1
  59. package/lib/transitionObserver.d.ts.map +1 -1
  60. package/lib/transitionObserver.js +25 -5
  61. package/lib/transitionObserver.js.map +1 -1
  62. package/lib/types.d.ts +5 -0
  63. package/lib/types.d.ts.map +1 -1
  64. package/lib/types.js +14 -0
  65. package/lib/types.js.map +1 -1
  66. package/lib/viewModels/FlagModel.d.ts +19 -0
  67. package/lib/viewModels/FlagModel.d.ts.map +1 -0
  68. package/lib/viewModels/FlagModel.js +38 -0
  69. package/lib/viewModels/FlagModel.js.map +1 -0
  70. package/lib/viewModels/MultiSelectModel.d.ts +41 -0
  71. package/lib/viewModels/MultiSelectModel.d.ts.map +1 -0
  72. package/lib/viewModels/MultiSelectModel.js +150 -0
  73. package/lib/viewModels/MultiSelectModel.js.map +1 -0
  74. package/lib/viewModels/NumberModel.d.ts +16 -0
  75. package/lib/viewModels/NumberModel.d.ts.map +1 -0
  76. package/lib/viewModels/NumberModel.js +40 -0
  77. package/lib/viewModels/NumberModel.js.map +1 -0
  78. package/lib/viewModels/PromptModal.d.ts +31 -0
  79. package/lib/viewModels/PromptModal.d.ts.map +1 -0
  80. package/lib/viewModels/PromptModal.js +57 -0
  81. package/lib/viewModels/PromptModal.js.map +1 -0
  82. package/lib/viewModels/{SelectViewModel.d.ts → SelectModel.d.ts} +14 -8
  83. package/lib/viewModels/SelectModel.d.ts.map +1 -0
  84. package/lib/viewModels/SelectModel.js +109 -0
  85. package/lib/viewModels/SelectModel.js.map +1 -0
  86. package/lib/viewModels/{TextInputViewModel.d.ts → TextModel.d.ts} +10 -9
  87. package/lib/viewModels/TextModel.d.ts.map +1 -0
  88. package/lib/viewModels/{TextInputViewModel.js → TextModel.js} +8 -23
  89. package/lib/viewModels/TextModel.js.map +1 -0
  90. package/lib/viewModels/Validatable.d.ts +9 -7
  91. package/lib/viewModels/Validatable.d.ts.map +1 -1
  92. package/lib/viewModels/Validatable.js +22 -8
  93. package/lib/viewModels/Validatable.js.map +1 -1
  94. package/lib/viewModels/ValuesCollector.d.ts +28 -0
  95. package/lib/viewModels/ValuesCollector.d.ts.map +1 -0
  96. package/lib/viewModels/ValuesCollector.js +51 -0
  97. package/lib/viewModels/ValuesCollector.js.map +1 -0
  98. package/lib/viewModels/index.d.ts +7 -5
  99. package/lib/viewModels/index.d.ts.map +1 -1
  100. package/lib/viewModels/index.js +7 -5
  101. package/lib/viewModels/index.js.map +1 -1
  102. package/lib/viewModels/wrappers.d.ts +15 -0
  103. package/lib/viewModels/wrappers.d.ts.map +1 -0
  104. package/lib/viewModels/wrappers.js +43 -0
  105. package/lib/viewModels/wrappers.js.map +1 -0
  106. package/package.json +1 -1
  107. package/src/__tests__/transitionObserver.test.ts +10 -5
  108. package/src/timeHelper.ts +3 -0
  109. package/src/transitionObserver.ts +32 -8
  110. package/src/types.ts +16 -0
  111. package/src/viewModels/FlagModel.ts +43 -0
  112. package/src/viewModels/MultiSelectModel.ts +150 -0
  113. package/src/viewModels/NumberModel.ts +36 -0
  114. package/src/viewModels/PromptModal.ts +65 -0
  115. package/src/viewModels/SelectModel.ts +125 -0
  116. package/src/viewModels/{TextInputViewModel.ts → TextModel.ts} +22 -26
  117. package/src/viewModels/Validatable.ts +26 -11
  118. package/src/viewModels/ValuesCollector.ts +84 -0
  119. package/src/viewModels/__tests__/multiSelect.test.ts +23 -0
  120. package/src/viewModels/__tests__/select.test.ts +71 -0
  121. package/src/viewModels/__tests__/wrappers.test.ts +79 -0
  122. package/src/viewModels/index.ts +9 -5
  123. package/src/viewModels/wrappers.ts +53 -0
  124. package/yarn-error.log +3709 -0
  125. package/lib/viewModels/PromptModalViewModel.d.ts +0 -27
  126. package/lib/viewModels/PromptModalViewModel.d.ts.map +0 -1
  127. package/lib/viewModels/PromptModalViewModel.js +0 -56
  128. package/lib/viewModels/PromptModalViewModel.js.map +0 -1
  129. package/lib/viewModels/RadioButtonGroupViewModel.d.ts +0 -11
  130. package/lib/viewModels/RadioButtonGroupViewModel.d.ts.map +0 -1
  131. package/lib/viewModels/RadioButtonGroupViewModel.js +0 -51
  132. package/lib/viewModels/RadioButtonGroupViewModel.js.map +0 -1
  133. package/lib/viewModels/RadioButtonViewModel.d.ts +0 -9
  134. package/lib/viewModels/RadioButtonViewModel.d.ts.map +0 -1
  135. package/lib/viewModels/RadioButtonViewModel.js +0 -32
  136. package/lib/viewModels/RadioButtonViewModel.js.map +0 -1
  137. package/lib/viewModels/SelectViewModel.d.ts.map +0 -1
  138. package/lib/viewModels/SelectViewModel.js +0 -88
  139. package/lib/viewModels/SelectViewModel.js.map +0 -1
  140. package/lib/viewModels/TextInputViewModel.d.ts.map +0 -1
  141. package/lib/viewModels/TextInputViewModel.js.map +0 -1
  142. package/src/viewModels/PromptModalViewModel.ts +0 -71
  143. package/src/viewModels/RadioButtonGroupViewModel.ts +0 -47
  144. package/src/viewModels/RadioButtonViewModel.ts +0 -26
  145. package/src/viewModels/SelectViewModel.ts +0 -88
@@ -0,0 +1,155 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/lazy.light.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../prettify.css" />
9
+ <link rel="stylesheet" href="../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../index.html">All files</a> / <a href="index.html">src</a> lazy.light.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">85.71% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>6/7</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">100% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>2/2</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">75% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>3/4</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">85.71% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>6/7</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
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
+ </p>
57
+ </div>
58
+ <div class='status-line high'></div>
59
+ <pre><table class="coverage">
60
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
61
+ <a name='L2'></a><a href='#L2'>2</a>
62
+ <a name='L3'></a><a href='#L3'>3</a>
63
+ <a name='L4'></a><a href='#L4'>4</a>
64
+ <a name='L5'></a><a href='#L5'>5</a>
65
+ <a name='L6'></a><a href='#L6'>6</a>
66
+ <a name='L7'></a><a href='#L7'>7</a>
67
+ <a name='L8'></a><a href='#L8'>8</a>
68
+ <a name='L9'></a><a href='#L9'>9</a>
69
+ <a name='L10'></a><a href='#L10'>10</a>
70
+ <a name='L11'></a><a href='#L11'>11</a>
71
+ <a name='L12'></a><a href='#L12'>12</a>
72
+ <a name='L13'></a><a href='#L13'>13</a>
73
+ <a name='L14'></a><a href='#L14'>14</a>
74
+ <a name='L15'></a><a href='#L15'>15</a>
75
+ <a name='L16'></a><a href='#L16'>16</a>
76
+ <a name='L17'></a><a href='#L17'>17</a>
77
+ <a name='L18'></a><a href='#L18'>18</a>
78
+ <a name='L19'></a><a href='#L19'>19</a>
79
+ <a name='L20'></a><a href='#L20'>20</a>
80
+ <a name='L21'></a><a href='#L21'>21</a>
81
+ <a name='L22'></a><a href='#L22'>22</a>
82
+ <a name='L23'></a><a href='#L23'>23</a>
83
+ <a name='L24'></a><a href='#L24'>24</a>
84
+ <a name='L25'></a><a href='#L25'>25</a>
85
+ <a name='L26'></a><a href='#L26'>26</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
86
+ <span class="cline-any cline-neutral">&nbsp;</span>
87
+ <span class="cline-any cline-neutral">&nbsp;</span>
88
+ <span class="cline-any cline-neutral">&nbsp;</span>
89
+ <span class="cline-any cline-neutral">&nbsp;</span>
90
+ <span class="cline-any cline-neutral">&nbsp;</span>
91
+ <span class="cline-any cline-neutral">&nbsp;</span>
92
+ <span class="cline-any cline-neutral">&nbsp;</span>
93
+ <span class="cline-any cline-yes">2x</span>
94
+ <span class="cline-any cline-yes">8x</span>
95
+ <span class="cline-any cline-neutral">&nbsp;</span>
96
+ <span class="cline-any cline-neutral">&nbsp;</span>
97
+ <span class="cline-any cline-neutral">&nbsp;</span>
98
+ <span class="cline-any cline-yes">19x</span>
99
+ <span class="cline-any cline-yes">1x</span>
100
+ <span class="cline-any cline-neutral">&nbsp;</span>
101
+ <span class="cline-any cline-yes">19x</span>
102
+ <span class="cline-any cline-neutral">&nbsp;</span>
103
+ <span class="cline-any cline-yes">12x</span>
104
+ <span class="cline-any cline-neutral">&nbsp;</span>
105
+ <span class="cline-any cline-no">&nbsp;</span>
106
+ <span class="cline-any cline-neutral">&nbsp;</span>
107
+ <span class="cline-any cline-neutral">&nbsp;</span>
108
+ <span class="cline-any cline-neutral">&nbsp;</span>
109
+ <span class="cline-any cline-neutral">&nbsp;</span>
110
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">&nbsp;
111
+ export type LazyLight&lt;T&gt; = {
112
+ readonly value: T;
113
+ readonly hasValue: boolean;
114
+ &nbsp;
115
+ reset(): void;
116
+ };
117
+ &nbsp;
118
+ export function createLazy&lt;T&gt;(factory: () =&gt; T) {
119
+ return {
120
+ _factory: factory,
121
+ _instance: undefined as T,
122
+ get value() {
123
+ if (this._instance === undefined) {
124
+ this._instance = this._factory();
125
+ }
126
+ return this._instance;
127
+ },
128
+ get hasValue() { return this._instance !== undefined; },
129
+ <span class="fstat-no" title="function not covered" > reset(</span>) {
130
+ <span class="cstat-no" title="statement not covered" > this._instance = undefined;</span>
131
+ },
132
+ &nbsp;
133
+ } as LazyLight&lt;T&gt;;
134
+ }
135
+ &nbsp;</pre></td></tr></table></pre>
136
+
137
+ <div class='push'></div><!-- for sticky footer -->
138
+ </div><!-- /wrapper -->
139
+ <div class='footer quiet pad2 space-top1 center small'>
140
+ Code coverage generated by
141
+ <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
142
+ at Tue Nov 23 2021 19:51:11 GMT+0000 (Coordinated Universal Time)
143
+ </div>
144
+ </div>
145
+ <script src="../prettify.js"></script>
146
+ <script>
147
+ window.onload = function () {
148
+ prettyPrint();
149
+ };
150
+ </script>
151
+ <script src="../sorter.js"></script>
152
+ <script src="../block-navigation.js"></script>
153
+ </body>
154
+ </html>
155
+
@@ -235,7 +235,7 @@ export class BufferedConsoleLogger implements ILogger {
235
235
  <div class='footer quiet pad2 space-top1 center small'>
236
236
  Code coverage generated by
237
237
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
238
- at Mon Nov 01 2021 21:49:47 GMT+0000 (Coordinated Universal Time)
238
+ at Tue Nov 23 2021 19:51:11 GMT+0000 (Coordinated Universal Time)
239
239
  </div>
240
240
  </div>
241
241
  <script src="../../prettify.js"></script>
@@ -140,7 +140,7 @@
140
140
  <div class='footer quiet pad2 space-top1 center small'>
141
141
  Code coverage generated by
142
142
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
143
- at Mon Nov 01 2021 21:49:47 GMT+0000 (Coordinated Universal Time)
143
+ at Tue Nov 23 2021 19:51:11 GMT+0000 (Coordinated Universal Time)
144
144
  </div>
145
145
  </div>
146
146
  <script src="../../prettify.js"></script>
@@ -250,7 +250,7 @@ export default logger;
250
250
  <div class='footer quiet pad2 space-top1 center small'>
251
251
  Code coverage generated by
252
252
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
253
- at Mon Nov 01 2021 21:49:47 GMT+0000 (Coordinated Universal Time)
253
+ at Tue Nov 23 2021 19:51:11 GMT+0000 (Coordinated Universal Time)
254
254
  </div>
255
255
  </div>
256
256
  <script src="../../prettify.js"></script>
@@ -205,7 +205,7 @@ export abstract class NamedLogger implements ILogger, ILoggerSwitchable {
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 Mon Nov 01 2021 21:49:47 GMT+0000 (Coordinated Universal Time)
208
+ at Tue Nov 23 2021 19:51:11 GMT+0000 (Coordinated Universal Time)
209
209
  </div>
210
210
  </div>
211
211
  <script src="../../prettify.js"></script>
@@ -151,7 +151,7 @@ export class ProxyLogger extends NamedLogger {
151
151
  <div class='footer quiet pad2 space-top1 center small'>
152
152
  Code coverage generated by
153
153
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
154
- at Mon Nov 01 2021 21:49:47 GMT+0000 (Coordinated Universal Time)
154
+ at Tue Nov 23 2021 19:51:11 GMT+0000 (Coordinated Universal Time)
155
155
  </div>
156
156
  </div>
157
157
  <script src="../../prettify.js"></script>
@@ -586,7 +586,7 @@ export function findIndexLeast(num: number, arr: number[], sort = false) {
586
586
  <div class='footer quiet pad2 space-top1 center small'>
587
587
  Code coverage generated by
588
588
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
589
- at Mon Nov 01 2021 21:49:47 GMT+0000 (Coordinated Universal Time)
589
+ at Tue Nov 23 2021 19:51:11 GMT+0000 (Coordinated Universal Time)
590
590
  </div>
591
591
  </div>
592
592
  <script src="../../prettify.js"></script>
@@ -262,7 +262,7 @@ export function random(min: number = <span class="branch-0 cbranch-no" title="br
262
262
  <div class='footer quiet pad2 space-top1 center small'>
263
263
  Code coverage generated by
264
264
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
265
- at Mon Nov 01 2021 21:49:47 GMT+0000 (Coordinated Universal Time)
265
+ at Tue Nov 23 2021 19:51:11 GMT+0000 (Coordinated Universal Time)
266
266
  </div>
267
267
  </div>
268
268
  <script src="../../prettify.js"></script>
@@ -124,7 +124,7 @@ export function extendDistribution&lt;T extends keyof any&gt;(count: number, typ
124
124
  <div class='footer quiet pad2 space-top1 center small'>
125
125
  Code coverage generated by
126
126
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
127
- at Mon Nov 01 2021 21:49:47 GMT+0000 (Coordinated Universal Time)
127
+ at Tue Nov 23 2021 19:51:11 GMT+0000 (Coordinated Universal Time)
128
128
  </div>
129
129
  </div>
130
130
  <script src="../../prettify.js"></script>
@@ -140,7 +140,7 @@
140
140
  <div class='footer quiet pad2 space-top1 center small'>
141
141
  Code coverage generated by
142
142
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
143
- at Mon Nov 01 2021 21:49:47 GMT+0000 (Coordinated Universal Time)
143
+ at Tue Nov 23 2021 19:51:11 GMT+0000 (Coordinated Universal Time)
144
144
  </div>
145
145
  </div>
146
146
  <script src="../../prettify.js"></script>
@@ -145,7 +145,7 @@ export function format(n: number, digits?: number) {
145
145
  <div class='footer quiet pad2 space-top1 center small'>
146
146
  Code coverage generated by
147
147
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
148
- at Mon Nov 01 2021 21:49:47 GMT+0000 (Coordinated Universal Time)
148
+ at Tue Nov 23 2021 19:51:11 GMT+0000 (Coordinated Universal Time)
149
149
  </div>
150
150
  </div>
151
151
  <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">93.06% </span>
26
+ <span class="strong">89.53% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>67/72</span>
28
+ <span class='fraction'>77/86</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">87.88% </span>
33
+ <span class="strong">82.5% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>29/33</span>
35
+ <span class='fraction'>33/40</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">84.21% </span>
40
+ <span class="strong">81.82% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>16/19</span>
42
+ <span class='fraction'>18/22</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">92.96% </span>
47
+ <span class="strong">89.53% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>66/71</span>
49
+ <span class='fraction'>77/86</span>
50
50
  </div>
51
51
 
52
52
 
@@ -209,7 +209,31 @@
209
209
  <a name='L150'></a><a href='#L150'>150</a>
210
210
  <a name='L151'></a><a href='#L151'>151</a>
211
211
  <a name='L152'></a><a href='#L152'>152</a>
212
- <a name='L153'></a><a href='#L153'>153</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
212
+ <a name='L153'></a><a href='#L153'>153</a>
213
+ <a name='L154'></a><a href='#L154'>154</a>
214
+ <a name='L155'></a><a href='#L155'>155</a>
215
+ <a name='L156'></a><a href='#L156'>156</a>
216
+ <a name='L157'></a><a href='#L157'>157</a>
217
+ <a name='L158'></a><a href='#L158'>158</a>
218
+ <a name='L159'></a><a href='#L159'>159</a>
219
+ <a name='L160'></a><a href='#L160'>160</a>
220
+ <a name='L161'></a><a href='#L161'>161</a>
221
+ <a name='L162'></a><a href='#L162'>162</a>
222
+ <a name='L163'></a><a href='#L163'>163</a>
223
+ <a name='L164'></a><a href='#L164'>164</a>
224
+ <a name='L165'></a><a href='#L165'>165</a>
225
+ <a name='L166'></a><a href='#L166'>166</a>
226
+ <a name='L167'></a><a href='#L167'>167</a>
227
+ <a name='L168'></a><a href='#L168'>168</a>
228
+ <a name='L169'></a><a href='#L169'>169</a>
229
+ <a name='L170'></a><a href='#L170'>170</a>
230
+ <a name='L171'></a><a href='#L171'>171</a>
231
+ <a name='L172'></a><a href='#L172'>172</a>
232
+ <a name='L173'></a><a href='#L173'>173</a>
233
+ <a name='L174'></a><a href='#L174'>174</a>
234
+ <a name='L175'></a><a href='#L175'>175</a>
235
+ <a name='L176'></a><a href='#L176'>176</a>
236
+ <a name='L177'></a><a href='#L177'>177</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
213
237
  <span class="cline-any cline-yes">1x</span>
214
238
  <span class="cline-any cline-yes">1x</span>
215
239
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -242,6 +266,9 @@
242
266
  <span class="cline-any cline-yes">1x</span>
243
267
  <span class="cline-any cline-yes">3x</span>
244
268
  <span class="cline-any cline-neutral">&nbsp;</span>
269
+ <span class="cline-any cline-yes">3x</span>
270
+ <span class="cline-any cline-yes">19x</span>
271
+ <span class="cline-any cline-neutral">&nbsp;</span>
245
272
  <span class="cline-any cline-neutral">&nbsp;</span>
246
273
  <span class="cline-any cline-yes">7x</span>
247
274
  <span class="cline-any cline-yes">7x</span>
@@ -261,8 +288,11 @@
261
288
  <span class="cline-any cline-neutral">&nbsp;</span>
262
289
  <span class="cline-any cline-neutral">&nbsp;</span>
263
290
  <span class="cline-any cline-neutral">&nbsp;</span>
264
- <span class="cline-any cline-yes">9x</span>
265
- <span class="cline-any cline-yes">9x</span>
291
+ <span class="cline-any cline-yes">7x</span>
292
+ <span class="cline-any cline-no">&nbsp;</span>
293
+ <span class="cline-any cline-neutral">&nbsp;</span>
294
+ <span class="cline-any cline-yes">7x</span>
295
+ <span class="cline-any cline-yes">7x</span>
266
296
  <span class="cline-any cline-neutral">&nbsp;</span>
267
297
  <span class="cline-any cline-neutral">&nbsp;</span>
268
298
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -278,7 +308,7 @@
278
308
  <span class="cline-any cline-neutral">&nbsp;</span>
279
309
  <span class="cline-any cline-neutral">&nbsp;</span>
280
310
  <span class="cline-any cline-neutral">&nbsp;</span>
281
- <span class="cline-any cline-yes">1x</span>
311
+ <span class="cline-any cline-yes">4x</span>
282
312
  <span class="cline-any cline-neutral">&nbsp;</span>
283
313
  <span class="cline-any cline-neutral">&nbsp;</span>
284
314
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -287,13 +317,30 @@
287
317
  <span class="cline-any cline-neutral">&nbsp;</span>
288
318
  <span class="cline-any cline-neutral">&nbsp;</span>
289
319
  <span class="cline-any cline-neutral">&nbsp;</span>
320
+ <span class="cline-any cline-yes">3x</span>
321
+ <span class="cline-any cline-yes">3x</span>
322
+ <span class="cline-any cline-no">&nbsp;</span>
323
+ <span class="cline-any cline-neutral">&nbsp;</span>
324
+ <span class="cline-any cline-neutral">&nbsp;</span>
325
+ <span class="cline-any cline-yes">3x</span>
326
+ <span class="cline-any cline-yes">3x</span>
327
+ <span class="cline-any cline-neutral">&nbsp;</span>
328
+ <span class="cline-any cline-yes">3x</span>
329
+ <span class="cline-any cline-yes">3x</span>
330
+ <span class="cline-any cline-no">&nbsp;</span>
331
+ <span class="cline-any cline-no">&nbsp;</span>
332
+ <span class="cline-any cline-neutral">&nbsp;</span>
333
+ <span class="cline-any cline-neutral">&nbsp;</span>
334
+ <span class="cline-any cline-neutral">&nbsp;</span>
335
+ <span class="cline-any cline-yes">3x</span>
290
336
  <span class="cline-any cline-yes">2x</span>
291
337
  <span class="cline-any cline-yes">2x</span>
292
- <span class="cline-any cline-yes">2x</span>
293
- <span class="cline-any cline-yes">2x</span>
294
338
  <span class="cline-any cline-neutral">&nbsp;</span>
339
+ <span class="cline-any cline-yes">3x</span>
340
+ <span class="cline-any cline-neutral">&nbsp;</span>
341
+ <span class="cline-any cline-yes">3x</span>
295
342
  <span class="cline-any cline-neutral">&nbsp;</span>
296
- <span class="cline-any cline-yes">2x</span>
343
+ <span class="cline-any cline-yes">3x</span>
297
344
  <span class="cline-any cline-neutral">&nbsp;</span>
298
345
  <span class="cline-any cline-neutral">&nbsp;</span>
299
346
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -311,6 +358,7 @@
311
358
  <span class="cline-any cline-yes">12x</span>
312
359
  <span class="cline-any cline-yes">12x</span>
313
360
  <span class="cline-any cline-yes">5x</span>
361
+ <span class="cline-any cline-yes">5x</span>
314
362
  <span class="cline-any cline-neutral">&nbsp;</span>
315
363
  <span class="cline-any cline-yes">12x</span>
316
364
  <span class="cline-any cline-yes">1x</span>
@@ -318,14 +366,14 @@
318
366
  <span class="cline-any cline-neutral">&nbsp;</span>
319
367
  <span class="cline-any cline-neutral">&nbsp;</span>
320
368
  <span class="cline-any cline-yes">7x</span>
321
- <span class="cline-any cline-yes">17x</span>
369
+ <span class="cline-any cline-yes">22x</span>
322
370
  <span class="cline-any cline-neutral">&nbsp;</span>
323
- <span class="cline-any cline-yes">17x</span>
371
+ <span class="cline-any cline-yes">22x</span>
324
372
  <span class="cline-any cline-neutral">&nbsp;</span>
325
373
  <span class="cline-any cline-yes">4x</span>
326
- <span class="cline-any cline-yes">13x</span>
374
+ <span class="cline-any cline-yes">18x</span>
327
375
  <span class="cline-any cline-neutral">&nbsp;</span>
328
- <span class="cline-any cline-yes">9x</span>
376
+ <span class="cline-any cline-yes">14x</span>
329
377
  <span class="cline-any cline-neutral">&nbsp;</span>
330
378
  <span class="cline-any cline-neutral">&nbsp;</span>
331
379
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -333,31 +381,31 @@
333
381
  <span class="cline-any cline-yes">4x</span>
334
382
  <span class="cline-any cline-neutral">&nbsp;</span>
335
383
  <span class="cline-any cline-neutral">&nbsp;</span>
336
- <span class="cline-any cline-yes">17x</span>
384
+ <span class="cline-any cline-yes">22x</span>
337
385
  <span class="cline-any cline-neutral">&nbsp;</span>
338
- <span class="cline-any cline-yes">17x</span>
386
+ <span class="cline-any cline-yes">22x</span>
339
387
  <span class="cline-any cline-neutral">&nbsp;</span>
340
- <span class="cline-any cline-yes">17x</span>
341
- <span class="cline-any cline-yes">10x</span>
388
+ <span class="cline-any cline-yes">22x</span>
389
+ <span class="cline-any cline-yes">11x</span>
342
390
  <span class="cline-any cline-neutral">&nbsp;</span>
343
- <span class="cline-any cline-yes">10x</span>
344
- <span class="cline-any cline-yes">10x</span>
391
+ <span class="cline-any cline-yes">11x</span>
392
+ <span class="cline-any cline-yes">11x</span>
345
393
  <span class="cline-any cline-neutral">&nbsp;</span>
346
394
  <span class="cline-any cline-neutral">&nbsp;</span>
347
- <span class="cline-any cline-yes">10x</span>
395
+ <span class="cline-any cline-yes">11x</span>
348
396
  <span class="cline-any cline-yes">1x</span>
349
397
  <span class="cline-any cline-neutral">&nbsp;</span>
350
398
  <span class="cline-any cline-neutral">&nbsp;</span>
351
399
  <span class="cline-any cline-neutral">&nbsp;</span>
352
- <span class="cline-any cline-yes">17x</span>
400
+ <span class="cline-any cline-yes">22x</span>
353
401
  <span class="cline-any cline-neutral">&nbsp;</span>
354
402
  <span class="cline-any cline-neutral">&nbsp;</span>
355
403
  <span class="cline-any cline-neutral">&nbsp;</span>
356
- <span class="cline-any cline-yes">2x</span>
357
- <span class="cline-any cline-yes">2x</span>
358
- <span class="cline-any cline-yes">2x</span>
359
- <span class="cline-any cline-yes">2x</span>
360
- <span class="cline-any cline-yes">2x</span>
404
+ <span class="cline-any cline-yes">3x</span>
405
+ <span class="cline-any cline-yes">3x</span>
406
+ <span class="cline-any cline-yes">3x</span>
407
+ <span class="cline-any cline-yes">3x</span>
408
+ <span class="cline-any cline-yes">3x</span>
361
409
  <span class="cline-any cline-neutral">&nbsp;</span>
362
410
  <span class="cline-any cline-neutral">&nbsp;</span>
363
411
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -380,8 +428,8 @@ export class TransitionObserver&lt;T&gt; implements IDisposable {
380
428
  private _cb: (v: T) =&gt; any;
381
429
  private _fireOnce = false;
382
430
  &nbsp;
383
- private _promise: Promise&lt;void&gt; = null;
384
- private _promiseReject: (err: Error) =&gt; any = null;
431
+ private _promise: Promise&lt;T&gt; = null;
432
+ private _promiseReject: (err?: any) =&gt; any = null;
385
433
  &nbsp;
386
434
  private logger: ILogger = createLogger('', true);
387
435
  &nbsp;
@@ -393,6 +441,9 @@ export class TransitionObserver&lt;T&gt; implements IDisposable {
393
441
  &nbsp;
394
442
  public get event(): IEvent&lt;T&gt; { return this._event; }
395
443
  public get currentValue() { return this._prev; }
444
+ &nbsp;
445
+ public get isObserving() { return this._disposer != null; }
446
+ private get isPromising() { return this._promiseReject != null; }
396
447
  &nbsp;
397
448
  observe(getter: () =&gt; T) {
398
449
  this.dispose();
@@ -413,6 +464,9 @@ export class TransitionObserver&lt;T&gt; implements IDisposable {
413
464
  }
414
465
  &nbsp;
415
466
  cb(cb: (v: T) =&gt; any) {
467
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (this.isPromising) {
468
+ <span class="cstat-no" title="statement not covered" > throw new Error('Cannot set callback when promise is running');</span>
469
+ }
416
470
  this._cb = cb;
417
471
  return this;
418
472
  }
@@ -438,12 +492,29 @@ export class TransitionObserver&lt;T&gt; implements IDisposable {
438
492
  <span class="cstat-no" title="statement not covered" > return this;</span>
439
493
  }
440
494
  &nbsp;
441
- getPromise() {
495
+ getPromise(timeout: number = null) {
442
496
  <span class="missing-if-branch" title="else path not taken" >E</span>if (!this._promise) {
443
- this._promise = new Promise&lt;void&gt;((resolve, reject) =&gt; {
497
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.isObserving) {
498
+ <span class="cstat-no" title="statement not covered" > return Promise.reject(new Error('Cannot get promise for disposed TransitionObserver'));</span>
499
+ }
500
+ &nbsp;
501
+ this._promise = new Promise&lt;T&gt;((resolve, reject) =&gt; {
444
502
  this._promiseReject = reject;
445
- this.cb(() =&gt; this._finishPromise(resolve));
503
+ &nbsp;
504
+ let timeoutHandle: any = null;
505
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (timeout) {
506
+ <span class="cstat-no" title="statement not covered" > timeoutHandle = setTimeout(<span class="fstat-no" title="function not covered" >() =</span>&gt; {</span>
507
+ <span class="cstat-no" title="statement not covered" > this._finishPromise(this._promiseReject, new Error(`TransitionObserver Aborted – timed out after ${timeout}ms`));</span>
508
+ }, timeout);
509
+ }
510
+ &nbsp;
511
+ this._cb = (v =&gt; {
512
+ clearTimeout(timeoutHandle);
513
+ this._finishPromise(resolve, v);
514
+ });
515
+ this.forceCheck();
446
516
  });
517
+ this.logger.log('started a new promise...');
447
518
  }
448
519
  return this._promise;
449
520
  }
@@ -463,8 +534,9 @@ export class TransitionObserver&lt;T&gt; implements IDisposable {
463
534
  this.logger.log(' disposing... ');
464
535
  if (this._disposer) {
465
536
  this._disposer();
537
+ this._disposer = null;
466
538
  }
467
- if (this._promiseReject) {
539
+ if (this.isPromising) {
468
540
  this._finishPromise(this._promiseReject, new Error('TransitionObserver Aborted'));
469
541
  }
470
542
  };
@@ -504,12 +576,12 @@ export class TransitionObserver&lt;T&gt; implements IDisposable {
504
576
  return trigger;
505
577
  };
506
578
  &nbsp;
507
- private _finishPromise(cb: (e?: any) =&gt; any, err?: Error) {
579
+ private _finishPromise&lt;T&gt;(cb: (a?: T) =&gt; any, arg?: T) {
508
580
  this._promise = null;
509
581
  this._promiseReject = null;
510
582
  this._cb = null;
511
583
  <span class="missing-if-branch" title="else path not taken" >E</span>if (cb) {
512
- cb(err);
584
+ cb(arg);
513
585
  }
514
586
  }
515
587
  }
@@ -520,7 +592,7 @@ export class TransitionObserver&lt;T&gt; implements IDisposable {
520
592
  <div class='footer quiet pad2 space-top1 center small'>
521
593
  Code coverage generated by
522
594
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
523
- at Mon Nov 01 2021 21:49:47 GMT+0000 (Coordinated Universal Time)
595
+ at Tue Nov 23 2021 19:51:11 GMT+0000 (Coordinated Universal Time)
524
596
  </div>
525
597
  </div>
526
598
  <script src="../prettify.js"></script>