@zajno/common 1.2.5 → 1.3.0-beta

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 (140) hide show
  1. package/coverage/clover.xml +453 -173
  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 +6 -6
  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 +2 -2
  24. package/coverage/lcov-report/src/logger/index.html +1 -1
  25. package/coverage/lcov-report/src/logger/index.ts.html +8 -8
  26. package/coverage/lcov-report/src/logger/named.ts.html +16 -16
  27. package/coverage/lcov-report/src/logger/proxy.ts.html +4 -4
  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 +192 -45
  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 +155 -44
  53. package/coverage/lcov.info +838 -229
  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 +6 -0
  59. package/lib/transitionObserver.d.ts.map +1 -1
  60. package/lib/transitionObserver.js +42 -0
  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/PromptModalViewModel.d.ts +20 -16
  79. package/lib/viewModels/PromptModalViewModel.d.ts.map +1 -1
  80. package/lib/viewModels/PromptModalViewModel.js +37 -36
  81. package/lib/viewModels/PromptModalViewModel.js.map +1 -1
  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 -17
  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 +39 -0
  108. package/src/timeHelper.ts +3 -0
  109. package/src/transitionObserver.ts +49 -0
  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/PromptModalViewModel.ts +43 -49
  115. package/src/viewModels/SelectModel.ts +125 -0
  116. package/src/viewModels/{TextInputViewModel.ts → TextModel.ts} +22 -25
  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/RadioButtonGroupViewModel.d.ts +0 -11
  126. package/lib/viewModels/RadioButtonGroupViewModel.d.ts.map +0 -1
  127. package/lib/viewModels/RadioButtonGroupViewModel.js +0 -51
  128. package/lib/viewModels/RadioButtonGroupViewModel.js.map +0 -1
  129. package/lib/viewModels/RadioButtonViewModel.d.ts +0 -9
  130. package/lib/viewModels/RadioButtonViewModel.d.ts.map +0 -1
  131. package/lib/viewModels/RadioButtonViewModel.js +0 -32
  132. package/lib/viewModels/RadioButtonViewModel.js.map +0 -1
  133. package/lib/viewModels/SelectViewModel.d.ts.map +0 -1
  134. package/lib/viewModels/SelectViewModel.js +0 -88
  135. package/lib/viewModels/SelectViewModel.js.map +0 -1
  136. package/lib/viewModels/TextInputViewModel.d.ts.map +0 -1
  137. package/lib/viewModels/TextInputViewModel.js.map +0 -1
  138. package/src/viewModels/RadioButtonGroupViewModel.ts +0 -47
  139. package/src/viewModels/RadioButtonViewModel.ts +0 -26
  140. 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 Mon Nov 22 2021 09:37:35 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">91.23% </span>
26
+ <span class="strong">91.25% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>52/57</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">92.59% </span>
33
+ <span class="strong">83.78% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>25/27</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">80% </span>
40
+ <span class="strong">85.71% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>12/15</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">91.23% </span>
47
+ <span class="strong">91.14% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>52/57</span>
49
+ <span class='fraction'>72/79</span>
50
50
  </div>
51
51
 
52
52
 
@@ -184,47 +184,85 @@
184
184
  <a name='L125'></a><a href='#L125'>125</a>
185
185
  <a name='L126'></a><a href='#L126'>126</a>
186
186
  <a name='L127'></a><a href='#L127'>127</a>
187
- <a name='L128'></a><a href='#L128'>128</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
187
+ <a name='L128'></a><a href='#L128'>128</a>
188
+ <a name='L129'></a><a href='#L129'>129</a>
189
+ <a name='L130'></a><a href='#L130'>130</a>
190
+ <a name='L131'></a><a href='#L131'>131</a>
191
+ <a name='L132'></a><a href='#L132'>132</a>
192
+ <a name='L133'></a><a href='#L133'>133</a>
193
+ <a name='L134'></a><a href='#L134'>134</a>
194
+ <a name='L135'></a><a href='#L135'>135</a>
195
+ <a name='L136'></a><a href='#L136'>136</a>
196
+ <a name='L137'></a><a href='#L137'>137</a>
197
+ <a name='L138'></a><a href='#L138'>138</a>
198
+ <a name='L139'></a><a href='#L139'>139</a>
199
+ <a name='L140'></a><a href='#L140'>140</a>
200
+ <a name='L141'></a><a href='#L141'>141</a>
201
+ <a name='L142'></a><a href='#L142'>142</a>
202
+ <a name='L143'></a><a href='#L143'>143</a>
203
+ <a name='L144'></a><a href='#L144'>144</a>
204
+ <a name='L145'></a><a href='#L145'>145</a>
205
+ <a name='L146'></a><a href='#L146'>146</a>
206
+ <a name='L147'></a><a href='#L147'>147</a>
207
+ <a name='L148'></a><a href='#L148'>148</a>
208
+ <a name='L149'></a><a href='#L149'>149</a>
209
+ <a name='L150'></a><a href='#L150'>150</a>
210
+ <a name='L151'></a><a href='#L151'>151</a>
211
+ <a name='L152'></a><a href='#L152'>152</a>
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>
188
225
  <span class="cline-any cline-yes">1x</span>
189
226
  <span class="cline-any cline-yes">1x</span>
190
227
  <span class="cline-any cline-neutral">&nbsp;</span>
191
228
  <span class="cline-any cline-neutral">&nbsp;</span>
192
229
  <span class="cline-any cline-yes">1x</span>
193
230
  <span class="cline-any cline-neutral">&nbsp;</span>
194
- <span class="cline-any cline-yes">5x</span>
195
- <span class="cline-any cline-yes">5x</span>
231
+ <span class="cline-any cline-yes">7x</span>
232
+ <span class="cline-any cline-yes">7x</span>
196
233
  <span class="cline-any cline-neutral">&nbsp;</span>
197
234
  <span class="cline-any cline-neutral">&nbsp;</span>
198
- <span class="cline-any cline-yes">5x</span>
235
+ <span class="cline-any cline-yes">7x</span>
199
236
  <span class="cline-any cline-neutral">&nbsp;</span>
200
- <span class="cline-any cline-yes">5x</span>
201
- <span class="cline-any cline-yes">5x</span>
237
+ <span class="cline-any cline-yes">7x</span>
238
+ <span class="cline-any cline-yes">7x</span>
202
239
  <span class="cline-any cline-neutral">&nbsp;</span>
203
240
  <span class="cline-any cline-neutral">&nbsp;</span>
204
- <span class="cline-any cline-yes">5x</span>
241
+ <span class="cline-any cline-yes">7x</span>
205
242
  <span class="cline-any cline-neutral">&nbsp;</span>
206
- <span class="cline-any cline-yes">5x</span>
243
+ <span class="cline-any cline-yes">7x</span>
244
+ <span class="cline-any cline-yes">7x</span>
207
245
  <span class="cline-any cline-neutral">&nbsp;</span>
246
+ <span class="cline-any cline-yes">7x</span>
208
247
  <span class="cline-any cline-neutral">&nbsp;</span>
209
- <span class="cline-any cline-yes">5x</span>
210
- <span class="cline-any cline-yes">4x</span>
248
+ <span class="cline-any cline-neutral">&nbsp;</span>
249
+ <span class="cline-any cline-yes">7x</span>
250
+ <span class="cline-any cline-yes">6x</span>
211
251
  <span class="cline-any cline-neutral">&nbsp;</span>
212
252
  <span class="cline-any cline-neutral">&nbsp;</span>
213
253
  <span class="cline-any cline-neutral">&nbsp;</span>
214
254
  <span class="cline-any cline-yes">1x</span>
215
255
  <span class="cline-any cline-yes">3x</span>
216
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>
217
259
  <span class="cline-any cline-neutral">&nbsp;</span>
218
- <span class="cline-any cline-yes">5x</span>
219
- <span class="cline-any cline-yes">5x</span>
220
- <span class="cline-any cline-yes">5x</span>
221
- <span class="cline-any cline-yes">5x</span>
222
- <span class="cline-any cline-yes">5x</span>
223
260
  <span class="cline-any cline-neutral">&nbsp;</span>
224
- <span class="cline-any cline-neutral">&nbsp;</span>
225
- <span class="cline-any cline-neutral">&nbsp;</span>
226
- <span class="cline-any cline-yes">3x</span>
227
- <span class="cline-any cline-yes">3x</span>
261
+ <span class="cline-any cline-yes">7x</span>
262
+ <span class="cline-any cline-yes">7x</span>
263
+ <span class="cline-any cline-yes">7x</span>
264
+ <span class="cline-any cline-yes">7x</span>
265
+ <span class="cline-any cline-yes">7x</span>
228
266
  <span class="cline-any cline-neutral">&nbsp;</span>
229
267
  <span class="cline-any cline-neutral">&nbsp;</span>
230
268
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -238,6 +276,14 @@
238
276
  <span class="cline-any cline-neutral">&nbsp;</span>
239
277
  <span class="cline-any cline-neutral">&nbsp;</span>
240
278
  <span class="cline-any cline-neutral">&nbsp;</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>
284
+ <span class="cline-any cline-neutral">&nbsp;</span>
285
+ <span class="cline-any cline-neutral">&nbsp;</span>
286
+ <span class="cline-any cline-neutral">&nbsp;</span>
241
287
  <span class="cline-any cline-yes">1x</span>
242
288
  <span class="cline-any cline-yes">1x</span>
243
289
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -259,6 +305,21 @@
259
305
  <span class="cline-any cline-neutral">&nbsp;</span>
260
306
  <span class="cline-any cline-neutral">&nbsp;</span>
261
307
  <span class="cline-any cline-neutral">&nbsp;</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>
311
+ <span class="cline-any cline-neutral">&nbsp;</span>
312
+ <span class="cline-any cline-neutral">&nbsp;</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>
320
+ <span class="cline-any cline-neutral">&nbsp;</span>
321
+ <span class="cline-any cline-neutral">&nbsp;</span>
322
+ <span class="cline-any cline-neutral">&nbsp;</span>
262
323
  <span class="cline-any cline-no">&nbsp;</span>
263
324
  <span class="cline-any cline-neutral">&nbsp;</span>
264
325
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -269,22 +330,26 @@
269
330
  <span class="cline-any cline-no">&nbsp;</span>
270
331
  <span class="cline-any cline-neutral">&nbsp;</span>
271
332
  <span class="cline-any cline-neutral">&nbsp;</span>
333
+ <span class="cline-any cline-yes">7x</span>
334
+ <span class="cline-any cline-yes">12x</span>
335
+ <span class="cline-any cline-yes">12x</span>
336
+ <span class="cline-any cline-yes">5x</span>
272
337
  <span class="cline-any cline-yes">5x</span>
273
- <span class="cline-any cline-yes">9x</span>
274
- <span class="cline-any cline-yes">9x</span>
275
- <span class="cline-any cline-yes">4x</span>
276
338
  <span class="cline-any cline-neutral">&nbsp;</span>
339
+ <span class="cline-any cline-yes">12x</span>
340
+ <span class="cline-any cline-yes">1x</span>
277
341
  <span class="cline-any cline-neutral">&nbsp;</span>
278
342
  <span class="cline-any cline-neutral">&nbsp;</span>
279
- <span class="cline-any cline-yes">5x</span>
280
- <span class="cline-any cline-yes">16x</span>
281
343
  <span class="cline-any cline-neutral">&nbsp;</span>
282
- <span class="cline-any cline-yes">16x</span>
344
+ <span class="cline-any cline-yes">7x</span>
345
+ <span class="cline-any cline-yes">19x</span>
346
+ <span class="cline-any cline-neutral">&nbsp;</span>
347
+ <span class="cline-any cline-yes">19x</span>
283
348
  <span class="cline-any cline-neutral">&nbsp;</span>
284
349
  <span class="cline-any cline-yes">4x</span>
285
- <span class="cline-any cline-yes">12x</span>
350
+ <span class="cline-any cline-yes">15x</span>
286
351
  <span class="cline-any cline-neutral">&nbsp;</span>
287
- <span class="cline-any cline-yes">8x</span>
352
+ <span class="cline-any cline-yes">11x</span>
288
353
  <span class="cline-any cline-neutral">&nbsp;</span>
289
354
  <span class="cline-any cline-neutral">&nbsp;</span>
290
355
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -292,23 +357,32 @@
292
357
  <span class="cline-any cline-yes">4x</span>
293
358
  <span class="cline-any cline-neutral">&nbsp;</span>
294
359
  <span class="cline-any cline-neutral">&nbsp;</span>
295
- <span class="cline-any cline-yes">16x</span>
360
+ <span class="cline-any cline-yes">19x</span>
296
361
  <span class="cline-any cline-neutral">&nbsp;</span>
297
- <span class="cline-any cline-yes">16x</span>
362
+ <span class="cline-any cline-yes">19x</span>
298
363
  <span class="cline-any cline-neutral">&nbsp;</span>
299
- <span class="cline-any cline-yes">16x</span>
300
- <span class="cline-any cline-yes">9x</span>
364
+ <span class="cline-any cline-yes">19x</span>
365
+ <span class="cline-any cline-yes">11x</span>
301
366
  <span class="cline-any cline-neutral">&nbsp;</span>
302
- <span class="cline-any cline-yes">9x</span>
303
- <span class="cline-any cline-yes">9x</span>
367
+ <span class="cline-any cline-yes">11x</span>
368
+ <span class="cline-any cline-yes">11x</span>
304
369
  <span class="cline-any cline-neutral">&nbsp;</span>
305
370
  <span class="cline-any cline-neutral">&nbsp;</span>
306
- <span class="cline-any cline-yes">9x</span>
371
+ <span class="cline-any cline-yes">11x</span>
307
372
  <span class="cline-any cline-yes">1x</span>
308
373
  <span class="cline-any cline-neutral">&nbsp;</span>
309
374
  <span class="cline-any cline-neutral">&nbsp;</span>
310
375
  <span class="cline-any cline-neutral">&nbsp;</span>
311
- <span class="cline-any cline-yes">16x</span>
376
+ <span class="cline-any cline-yes">19x</span>
377
+ <span class="cline-any cline-neutral">&nbsp;</span>
378
+ <span class="cline-any cline-neutral">&nbsp;</span>
379
+ <span class="cline-any cline-neutral">&nbsp;</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>
385
+ <span class="cline-any cline-neutral">&nbsp;</span>
312
386
  <span class="cline-any cline-neutral">&nbsp;</span>
313
387
  <span class="cline-any cline-neutral">&nbsp;</span>
314
388
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { reaction } from 'mobx';
@@ -329,6 +403,9 @@ export class TransitionObserver&lt;T&gt; implements IDisposable {
329
403
  &nbsp;
330
404
  private _cb: (v: T) =&gt; any;
331
405
  private _fireOnce = false;
406
+ &nbsp;
407
+ private _promise: Promise&lt;T&gt; = null;
408
+ private _promiseReject: (err?: any) =&gt; any = null;
332
409
  &nbsp;
333
410
  private logger: ILogger = createLogger('', true);
334
411
  &nbsp;
@@ -340,6 +417,9 @@ export class TransitionObserver&lt;T&gt; implements IDisposable {
340
417
  &nbsp;
341
418
  public get event(): IEvent&lt;T&gt; { return this._event; }
342
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; }
343
423
  &nbsp;
344
424
  observe(getter: () =&gt; T) {
345
425
  this.dispose();
@@ -360,6 +440,9 @@ export class TransitionObserver&lt;T&gt; implements IDisposable {
360
440
  }
361
441
  &nbsp;
362
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
+ }
363
446
  this._cb = cb;
364
447
  return this;
365
448
  }
@@ -384,6 +467,21 @@ export class TransitionObserver&lt;T&gt; implements IDisposable {
384
467
  <span class="cstat-no" title="statement not covered" > this.forceCheck();</span>
385
468
  <span class="cstat-no" title="statement not covered" > return this;</span>
386
469
  }
470
+ &nbsp;
471
+ getPromise() {
472
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (!this._promise) {
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; {
478
+ this._promiseReject = reject;
479
+ this._cb = (v =&gt; this._finishPromise(resolve, v));
480
+ });
481
+ this.logger.log('started a new promise...');
482
+ }
483
+ return this._promise;
484
+ }
387
485
  &nbsp;
388
486
  <span class="fstat-no" title="function not covered" > reverse(</span>) {
389
487
  <span class="cstat-no" title="statement not covered" > return new TransitionObserver&lt;T&gt;(this._getter)</span>
@@ -400,6 +498,10 @@ export class TransitionObserver&lt;T&gt; implements IDisposable {
400
498
  this.logger.log(' disposing... ');
401
499
  if (this._disposer) {
402
500
  this._disposer();
501
+ this._disposer = null;
502
+ }
503
+ if (this.isPromising) {
504
+ this._finishPromise(this._promiseReject, new Error('TransitionObserver Aborted'));
403
505
  }
404
506
  };
405
507
  &nbsp;
@@ -437,6 +539,15 @@ export class TransitionObserver&lt;T&gt; implements IDisposable {
437
539
  &nbsp;
438
540
  return trigger;
439
541
  };
542
+ &nbsp;
543
+ private _finishPromise&lt;T&gt;(cb: (a?: T) =&gt; any, arg?: T) {
544
+ this._promise = null;
545
+ this._promiseReject = null;
546
+ this._cb = null;
547
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (cb) {
548
+ cb(arg);
549
+ }
550
+ }
440
551
  }
441
552
  &nbsp;</pre></td></tr></table></pre>
442
553
 
@@ -445,7 +556,7 @@ export class TransitionObserver&lt;T&gt; implements IDisposable {
445
556
  <div class='footer quiet pad2 space-top1 center small'>
446
557
  Code coverage generated by
447
558
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
448
- at Mon Nov 01 2021 21:27:30 GMT+0000 (Coordinated Universal Time)
559
+ at Tue Nov 02 2021 16:09:11 GMT+0000 (Coordinated Universal Time)
449
560
  </div>
450
561
  </div>
451
562
  <script src="prettify.js"></script>