@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,239 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/viewModels/wrappers.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/viewModels</a> wrappers.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">84.21% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>16/19</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'>0/0</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">70% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>7/10</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">84.21% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>16/19</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>
86
+ <a name='L27'></a><a href='#L27'>27</a>
87
+ <a name='L28'></a><a href='#L28'>28</a>
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>
113
+ <a name='L54'></a><a href='#L54'>54</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">3x</span>
114
+ <span class="cline-any cline-neutral">&nbsp;</span>
115
+ <span class="cline-any cline-neutral">&nbsp;</span>
116
+ <span class="cline-any cline-neutral">&nbsp;</span>
117
+ <span class="cline-any cline-neutral">&nbsp;</span>
118
+ <span class="cline-any cline-neutral">&nbsp;</span>
119
+ <span class="cline-any cline-neutral">&nbsp;</span>
120
+ <span class="cline-any cline-yes">3x</span>
121
+ <span class="cline-any cline-yes">6x</span>
122
+ <span class="cline-any cline-yes">6x</span>
123
+ <span class="cline-any cline-neutral">&nbsp;</span>
124
+ <span class="cline-any cline-neutral">&nbsp;</span>
125
+ <span class="cline-any cline-yes">13x</span>
126
+ <span class="cline-any cline-neutral">&nbsp;</span>
127
+ <span class="cline-any cline-neutral">&nbsp;</span>
128
+ <span class="cline-any cline-yes">6x</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-yes">3x</span>
132
+ <span class="cline-any cline-yes">3x</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-yes">6x</span>
136
+ <span class="cline-any cline-yes">3x</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">3x</span>
140
+ <span class="cline-any cline-neutral">&nbsp;</span>
141
+ <span class="cline-any cline-neutral">&nbsp;</span>
142
+ <span class="cline-any cline-yes">3x</span>
143
+ <span class="cline-any cline-no">&nbsp;</span>
144
+ <span class="cline-any cline-no">&nbsp;</span>
145
+ <span class="cline-any cline-no">&nbsp;</span>
146
+ <span class="cline-any cline-neutral">&nbsp;</span>
147
+ <span class="cline-any cline-neutral">&nbsp;</span>
148
+ <span class="cline-any cline-neutral">&nbsp;</span>
149
+ <span class="cline-any cline-neutral">&nbsp;</span>
150
+ <span class="cline-any cline-neutral">&nbsp;</span>
151
+ <span class="cline-any cline-neutral">&nbsp;</span>
152
+ <span class="cline-any cline-neutral">&nbsp;</span>
153
+ <span class="cline-any cline-neutral">&nbsp;</span>
154
+ <span class="cline-any cline-neutral">&nbsp;</span>
155
+ <span class="cline-any cline-yes">3x</span>
156
+ <span class="cline-any cline-neutral">&nbsp;</span>
157
+ <span class="cline-any cline-neutral">&nbsp;</span>
158
+ <span class="cline-any cline-neutral">&nbsp;</span>
159
+ <span class="cline-any cline-yes">2x</span>
160
+ <span class="cline-any cline-yes">2x</span>
161
+ <span class="cline-any cline-neutral">&nbsp;</span>
162
+ <span class="cline-any cline-neutral">&nbsp;</span>
163
+ <span class="cline-any cline-neutral">&nbsp;</span>
164
+ <span class="cline-any cline-yes">1x</span>
165
+ <span class="cline-any cline-neutral">&nbsp;</span>
166
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { Getter } from '../types';
167
+ import { IValueModel } from './ValuesCollector';
168
+ &nbsp;
169
+ export interface ILabel&lt;T&gt; {
170
+ readonly label: T;
171
+ }
172
+ &nbsp;
173
+ export function withLabel&lt;T, TModel extends IValueModel&lt;T&gt;, TLabel = string&gt;(model: TModel, label: Getter&lt;TLabel&gt;) {
174
+ const _label = label;
175
+ Object.defineProperty(model, 'label', {
176
+ configurable: true,
177
+ enumerable: false,
178
+ get() { return Getter.getValue(_label); },
179
+ });
180
+ &nbsp;
181
+ return model as TModel &amp; ILabel&lt;TLabel&gt;;
182
+ }
183
+ &nbsp;
184
+ export function inject&lt;T, TModel extends IValueModel&lt;T&gt;&gt;(model: TModel, source: IValueModel&lt;T&gt;) {
185
+ Object.defineProperty(model, 'value', {
186
+ configurable: true,
187
+ enumerable: false,
188
+ get() { return source.value; },
189
+ set(v: T) { source.value = v; },
190
+ });
191
+ &nbsp;
192
+ return model;
193
+ }
194
+ &nbsp;
195
+ export function <span class="fstat-no" title="function not covered" >wrap&lt;</span>T, TModel extends IValueModel&lt;T&gt;, TRes&gt;(model: TModel, getter: (m: TModel) =&gt; TRes, setter: (v: TRes, model: TModel) =&gt; void): IValueModel&lt;TRes&gt; {
196
+ <span class="cstat-no" title="statement not covered" > return {</span>
197
+ <span class="fstat-no" title="function not covered" > get v</span>alue() { <span class="cstat-no" title="statement not covered" >return getter(model); </span>},
198
+ <span class="fstat-no" title="function not covered" > set v</span>alue(v: TRes) { <span class="cstat-no" title="statement not covered" >setter(v, model); </span>},
199
+ };
200
+ }
201
+ &nbsp;
202
+ type LabeledModel&lt;T, TModel extends IValueModel&lt;T&gt;, TLabel = string&gt; = TModel &amp; ILabel&lt;TLabel&gt;;
203
+ &nbsp;
204
+ interface LabeledModelCtor&lt;T, TModel extends IValueModel&lt;T&gt;, TLabel = string&gt; {
205
+ new (label?: Getter&lt;TLabel&gt;, initial?: T): LabeledModel&lt;T, TModel, TLabel&gt;;
206
+ }
207
+ &nbsp;
208
+ export function mixinLabel&lt;T, TModel extends IValueModel&lt;T&gt;, TLabel = string&gt;(Superclass: new (initial?: T) =&gt; TModel): LabeledModelCtor&lt;T, TModel, TLabel&gt; {
209
+ // @ts-ignore
210
+ class Sub extends Superclass {
211
+ constructor(label: Getter&lt;TLabel&gt;, initial?: T) {
212
+ super(initial);
213
+ withLabel(this, label);
214
+ }
215
+ }
216
+ &nbsp;
217
+ return Sub as any;
218
+ }
219
+ &nbsp;</pre></td></tr></table></pre>
220
+
221
+ <div class='push'></div><!-- for sticky footer -->
222
+ </div><!-- /wrapper -->
223
+ <div class='footer quiet pad2 space-top1 center small'>
224
+ Code coverage generated by
225
+ <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
226
+ at Tue Nov 23 2021 19:51:11 GMT+0000 (Coordinated Universal Time)
227
+ </div>
228
+ </div>
229
+ <script src="../../prettify.js"></script>
230
+ <script>
231
+ window.onload = function () {
232
+ prettyPrint();
233
+ };
234
+ </script>
235
+ <script src="../../sorter.js"></script>
236
+ <script src="../../block-navigation.js"></script>
237
+ </body>
238
+ </html>
239
+
@@ -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">91.25% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>67/72</span>
28
+ <span class='fraction'>73/80</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">83.78% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>29/33</span>
35
+ <span class='fraction'>31/37</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">85.71% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>16/19</span>
42
+ <span class='fraction'>18/21</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">91.14% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>66/71</span>
49
+ <span class='fraction'>72/79</span>
50
50
  </div>
51
51
 
52
52
 
@@ -209,7 +209,19 @@
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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
213
225
  <span class="cline-any cline-yes">1x</span>
214
226
  <span class="cline-any cline-yes">1x</span>
215
227
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -242,6 +254,9 @@
242
254
  <span class="cline-any cline-yes">1x</span>
243
255
  <span class="cline-any cline-yes">3x</span>
244
256
  <span class="cline-any cline-neutral">&nbsp;</span>
257
+ <span class="cline-any cline-yes">3x</span>
258
+ <span class="cline-any cline-yes">19x</span>
259
+ <span class="cline-any cline-neutral">&nbsp;</span>
245
260
  <span class="cline-any cline-neutral">&nbsp;</span>
246
261
  <span class="cline-any cline-yes">7x</span>
247
262
  <span class="cline-any cline-yes">7x</span>
@@ -261,8 +276,11 @@
261
276
  <span class="cline-any cline-neutral">&nbsp;</span>
262
277
  <span class="cline-any cline-neutral">&nbsp;</span>
263
278
  <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>
279
+ <span class="cline-any cline-yes">7x</span>
280
+ <span class="cline-any cline-no">&nbsp;</span>
281
+ <span class="cline-any cline-neutral">&nbsp;</span>
282
+ <span class="cline-any cline-yes">7x</span>
283
+ <span class="cline-any cline-yes">7x</span>
266
284
  <span class="cline-any cline-neutral">&nbsp;</span>
267
285
  <span class="cline-any cline-neutral">&nbsp;</span>
268
286
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -287,13 +305,18 @@
287
305
  <span class="cline-any cline-neutral">&nbsp;</span>
288
306
  <span class="cline-any cline-neutral">&nbsp;</span>
289
307
  <span class="cline-any cline-neutral">&nbsp;</span>
290
- <span class="cline-any cline-yes">2x</span>
291
- <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>
308
+ <span class="cline-any cline-yes">3x</span>
309
+ <span class="cline-any cline-yes">3x</span>
310
+ <span class="cline-any cline-no">&nbsp;</span>
294
311
  <span class="cline-any cline-neutral">&nbsp;</span>
295
312
  <span class="cline-any cline-neutral">&nbsp;</span>
296
- <span class="cline-any cline-yes">2x</span>
313
+ <span class="cline-any cline-yes">3x</span>
314
+ <span class="cline-any cline-yes">3x</span>
315
+ <span class="cline-any cline-yes">3x</span>
316
+ <span class="cline-any cline-neutral">&nbsp;</span>
317
+ <span class="cline-any cline-yes">3x</span>
318
+ <span class="cline-any cline-neutral">&nbsp;</span>
319
+ <span class="cline-any cline-yes">3x</span>
297
320
  <span class="cline-any cline-neutral">&nbsp;</span>
298
321
  <span class="cline-any cline-neutral">&nbsp;</span>
299
322
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -311,6 +334,7 @@
311
334
  <span class="cline-any cline-yes">12x</span>
312
335
  <span class="cline-any cline-yes">12x</span>
313
336
  <span class="cline-any cline-yes">5x</span>
337
+ <span class="cline-any cline-yes">5x</span>
314
338
  <span class="cline-any cline-neutral">&nbsp;</span>
315
339
  <span class="cline-any cline-yes">12x</span>
316
340
  <span class="cline-any cline-yes">1x</span>
@@ -318,14 +342,14 @@
318
342
  <span class="cline-any cline-neutral">&nbsp;</span>
319
343
  <span class="cline-any cline-neutral">&nbsp;</span>
320
344
  <span class="cline-any cline-yes">7x</span>
321
- <span class="cline-any cline-yes">17x</span>
345
+ <span class="cline-any cline-yes">19x</span>
322
346
  <span class="cline-any cline-neutral">&nbsp;</span>
323
- <span class="cline-any cline-yes">17x</span>
347
+ <span class="cline-any cline-yes">19x</span>
324
348
  <span class="cline-any cline-neutral">&nbsp;</span>
325
349
  <span class="cline-any cline-yes">4x</span>
326
- <span class="cline-any cline-yes">13x</span>
350
+ <span class="cline-any cline-yes">15x</span>
327
351
  <span class="cline-any cline-neutral">&nbsp;</span>
328
- <span class="cline-any cline-yes">9x</span>
352
+ <span class="cline-any cline-yes">11x</span>
329
353
  <span class="cline-any cline-neutral">&nbsp;</span>
330
354
  <span class="cline-any cline-neutral">&nbsp;</span>
331
355
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -333,31 +357,31 @@
333
357
  <span class="cline-any cline-yes">4x</span>
334
358
  <span class="cline-any cline-neutral">&nbsp;</span>
335
359
  <span class="cline-any cline-neutral">&nbsp;</span>
336
- <span class="cline-any cline-yes">17x</span>
360
+ <span class="cline-any cline-yes">19x</span>
337
361
  <span class="cline-any cline-neutral">&nbsp;</span>
338
- <span class="cline-any cline-yes">17x</span>
362
+ <span class="cline-any cline-yes">19x</span>
339
363
  <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>
364
+ <span class="cline-any cline-yes">19x</span>
365
+ <span class="cline-any cline-yes">11x</span>
342
366
  <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>
367
+ <span class="cline-any cline-yes">11x</span>
368
+ <span class="cline-any cline-yes">11x</span>
345
369
  <span class="cline-any cline-neutral">&nbsp;</span>
346
370
  <span class="cline-any cline-neutral">&nbsp;</span>
347
- <span class="cline-any cline-yes">10x</span>
371
+ <span class="cline-any cline-yes">11x</span>
348
372
  <span class="cline-any cline-yes">1x</span>
349
373
  <span class="cline-any cline-neutral">&nbsp;</span>
350
374
  <span class="cline-any cline-neutral">&nbsp;</span>
351
375
  <span class="cline-any cline-neutral">&nbsp;</span>
352
- <span class="cline-any cline-yes">17x</span>
376
+ <span class="cline-any cline-yes">19x</span>
353
377
  <span class="cline-any cline-neutral">&nbsp;</span>
354
378
  <span class="cline-any cline-neutral">&nbsp;</span>
355
379
  <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>
380
+ <span class="cline-any cline-yes">3x</span>
381
+ <span class="cline-any cline-yes">3x</span>
382
+ <span class="cline-any cline-yes">3x</span>
383
+ <span class="cline-any cline-yes">3x</span>
384
+ <span class="cline-any cline-yes">3x</span>
361
385
  <span class="cline-any cline-neutral">&nbsp;</span>
362
386
  <span class="cline-any cline-neutral">&nbsp;</span>
363
387
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -380,8 +404,8 @@ export class TransitionObserver&lt;T&gt; implements IDisposable {
380
404
  private _cb: (v: T) =&gt; any;
381
405
  private _fireOnce = false;
382
406
  &nbsp;
383
- private _promise: Promise&lt;void&gt; = null;
384
- private _promiseReject: (err: Error) =&gt; any = null;
407
+ private _promise: Promise&lt;T&gt; = null;
408
+ private _promiseReject: (err?: any) =&gt; any = null;
385
409
  &nbsp;
386
410
  private logger: ILogger = createLogger('', true);
387
411
  &nbsp;
@@ -393,6 +417,9 @@ export class TransitionObserver&lt;T&gt; implements IDisposable {
393
417
  &nbsp;
394
418
  public get event(): IEvent&lt;T&gt; { return this._event; }
395
419
  public get currentValue() { return this._prev; }
420
+ &nbsp;
421
+ public get isObserving() { return this._disposer != null; }
422
+ private get isPromising() { return this._promiseReject != null; }
396
423
  &nbsp;
397
424
  observe(getter: () =&gt; T) {
398
425
  this.dispose();
@@ -413,6 +440,9 @@ export class TransitionObserver&lt;T&gt; implements IDisposable {
413
440
  }
414
441
  &nbsp;
415
442
  cb(cb: (v: T) =&gt; any) {
443
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (this.isPromising) {
444
+ <span class="cstat-no" title="statement not covered" > throw new Error('Cannot set callback when promise is running');</span>
445
+ }
416
446
  this._cb = cb;
417
447
  return this;
418
448
  }
@@ -440,10 +470,15 @@ export class TransitionObserver&lt;T&gt; implements IDisposable {
440
470
  &nbsp;
441
471
  getPromise() {
442
472
  <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; {
473
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.isObserving) {
474
+ <span class="cstat-no" title="statement not covered" > return Promise.reject(new Error('Cannot get promise for disposed TransitionObserver'));</span>
475
+ }
476
+ &nbsp;
477
+ this._promise = new Promise&lt;T&gt;((resolve, reject) =&gt; {
444
478
  this._promiseReject = reject;
445
- this.cb(() =&gt; this._finishPromise(resolve));
479
+ this._cb = (v =&gt; this._finishPromise(resolve, v));
446
480
  });
481
+ this.logger.log('started a new promise...');
447
482
  }
448
483
  return this._promise;
449
484
  }
@@ -463,8 +498,9 @@ export class TransitionObserver&lt;T&gt; implements IDisposable {
463
498
  this.logger.log(' disposing... ');
464
499
  if (this._disposer) {
465
500
  this._disposer();
501
+ this._disposer = null;
466
502
  }
467
- if (this._promiseReject) {
503
+ if (this.isPromising) {
468
504
  this._finishPromise(this._promiseReject, new Error('TransitionObserver Aborted'));
469
505
  }
470
506
  };
@@ -504,12 +540,12 @@ export class TransitionObserver&lt;T&gt; implements IDisposable {
504
540
  return trigger;
505
541
  };
506
542
  &nbsp;
507
- private _finishPromise(cb: (e?: any) =&gt; any, err?: Error) {
543
+ private _finishPromise&lt;T&gt;(cb: (a?: T) =&gt; any, arg?: T) {
508
544
  this._promise = null;
509
545
  this._promiseReject = null;
510
546
  this._cb = null;
511
547
  <span class="missing-if-branch" title="else path not taken" >E</span>if (cb) {
512
- cb(err);
548
+ cb(arg);
513
549
  }
514
550
  }
515
551
  }
@@ -520,7 +556,7 @@ export class TransitionObserver&lt;T&gt; implements IDisposable {
520
556
  <div class='footer quiet pad2 space-top1 center small'>
521
557
  Code coverage generated by
522
558
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
523
- at Mon Nov 01 2021 21:48:46 GMT+0000 (Coordinated Universal Time)
559
+ at Tue Nov 02 2021 16:09:11 GMT+0000 (Coordinated Universal Time)
524
560
  </div>
525
561
  </div>
526
562
  <script src="prettify.js"></script>