@zajno/common 1.4.2 → 1.4.6

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 (91) hide show
  1. package/.nvmrc +1 -1
  2. package/README.md +5 -5
  3. package/coverage/clover.xml +394 -107
  4. package/coverage/coverage-final.json +18 -13
  5. package/coverage/lcov-report/index.html +38 -38
  6. package/coverage/lcov-report/src/__tests__/helpers/index.html +1 -1
  7. package/coverage/lcov-report/src/__tests__/helpers/main.ts.html +1 -1
  8. package/coverage/lcov-report/src/async/arrays.ts.html +1 -1
  9. package/coverage/lcov-report/src/async/index.html +24 -9
  10. package/coverage/lcov-report/src/async/timeout.ts.html +230 -0
  11. package/coverage/lcov-report/src/cache.ts.html +623 -0
  12. package/coverage/lcov-report/src/dates/calc.ts.html +1 -1
  13. package/coverage/lcov-report/src/dates/convert.ts.html +1 -1
  14. package/coverage/lcov-report/src/dates/datex.ts.html +1 -1
  15. package/coverage/lcov-report/src/dates/format.ts.html +1 -1
  16. package/coverage/lcov-report/src/dates/index.html +1 -1
  17. package/coverage/lcov-report/src/dates/index.ts.html +1 -1
  18. package/coverage/lcov-report/src/dates/parse.ts.html +1 -1
  19. package/coverage/lcov-report/src/dates/period.ts.html +1 -1
  20. package/coverage/lcov-report/src/dates/shift.ts.html +1 -1
  21. package/coverage/lcov-report/src/dates/types.ts.html +1 -1
  22. package/coverage/lcov-report/src/dates/yearDate.ts.html +1 -1
  23. package/coverage/lcov-report/src/disposer.ts.html +332 -0
  24. package/coverage/lcov-report/src/enumHelper.ts.html +1 -1
  25. package/coverage/lcov-report/src/event.ts.html +1 -1
  26. package/coverage/lcov-report/src/fields/index.html +1 -1
  27. package/coverage/lcov-report/src/fields/update.ts.html +1 -1
  28. package/coverage/lcov-report/src/functions.ts.html +1 -1
  29. package/coverage/lcov-report/src/index.html +78 -18
  30. package/coverage/lcov-report/src/lazy.light.ts.html +1 -1
  31. package/coverage/lcov-report/src/logger/batch.ts.html +2 -2
  32. package/coverage/lcov-report/src/logger/console.ts.html +5 -5
  33. package/coverage/lcov-report/src/logger/index.html +1 -1
  34. package/coverage/lcov-report/src/logger/index.ts.html +22 -22
  35. package/coverage/lcov-report/src/logger/named.ts.html +13 -13
  36. package/coverage/lcov-report/src/logger/proxy.ts.html +7 -7
  37. package/coverage/lcov-report/src/math/arrays.ts.html +23 -23
  38. package/coverage/lcov-report/src/math/calc.ts.html +9 -9
  39. package/coverage/lcov-report/src/math/distribution.ts.html +2 -2
  40. package/coverage/lcov-report/src/math/index.html +1 -1
  41. package/coverage/lcov-report/src/math/index.ts.html +6 -6
  42. package/coverage/lcov-report/src/observers.ts.html +368 -0
  43. package/coverage/lcov-report/src/observersMap.ts.html +395 -0
  44. package/coverage/lcov-report/src/observingCache.ts.html +530 -0
  45. package/coverage/lcov-report/src/transitionObserver.ts.html +29 -8
  46. package/coverage/lcov-report/src/types.ts.html +5 -5
  47. package/coverage/lcov-report/src/validation/ValidationErrors.ts.html +1 -1
  48. package/coverage/lcov-report/src/validation/creditCard.ts.html +1 -1
  49. package/coverage/lcov-report/src/validation/helpers.ts.html +1 -1
  50. package/coverage/lcov-report/src/validation/index.html +1 -1
  51. package/coverage/lcov-report/src/validation/index.ts.html +1 -1
  52. package/coverage/lcov-report/src/validation/types.ts.html +1 -1
  53. package/coverage/lcov-report/src/validation/validators.ts.html +2 -2
  54. package/coverage/lcov-report/src/validation/wrappers.ts.html +1 -1
  55. package/coverage/lcov-report/src/viewModels/FlagModel.ts.html +1 -1
  56. package/coverage/lcov-report/src/viewModels/MultiSelectModel.ts.html +1 -1
  57. package/coverage/lcov-report/src/viewModels/NumberModel.ts.html +24 -24
  58. package/coverage/lcov-report/src/viewModels/SelectModel.ts.html +1 -1
  59. package/coverage/lcov-report/src/viewModels/Validatable.ts.html +1 -1
  60. package/coverage/lcov-report/src/viewModels/index.html +15 -15
  61. package/coverage/lcov-report/src/viewModels/wrappers.ts.html +1 -1
  62. package/coverage/lcov.info +741 -133
  63. package/lib/cache.d.ts +6 -2
  64. package/lib/cache.d.ts.map +1 -1
  65. package/lib/cache.js +20 -4
  66. package/lib/cache.js.map +1 -1
  67. package/lib/observersMap.d.ts +22 -0
  68. package/lib/observersMap.d.ts.map +1 -0
  69. package/lib/observersMap.js +93 -0
  70. package/lib/observersMap.js.map +1 -0
  71. package/lib/observingCache.d.ts +31 -0
  72. package/lib/observingCache.d.ts.map +1 -0
  73. package/lib/observingCache.js +118 -0
  74. package/lib/observingCache.js.map +1 -0
  75. package/lib/transitionObserver.d.ts +1 -0
  76. package/lib/transitionObserver.d.ts.map +1 -1
  77. package/lib/transitionObserver.js +8 -1
  78. package/lib/transitionObserver.js.map +1 -1
  79. package/lib/validation/validators.js +1 -1
  80. package/lib/viewModels/InitializableModel.d.ts +6 -0
  81. package/lib/viewModels/InitializableModel.d.ts.map +1 -0
  82. package/lib/viewModels/InitializableModel.js +23 -0
  83. package/lib/viewModels/InitializableModel.js.map +1 -0
  84. package/package.json +1 -1
  85. package/src/__tests__/observingCache.test.ts +127 -0
  86. package/src/cache.ts +25 -4
  87. package/src/observersMap.ts +105 -0
  88. package/src/observingCache.ts +150 -0
  89. package/src/transitionObserver.ts +7 -0
  90. package/src/validation/validators.ts +1 -1
  91. package/src/viewModels/InitializableModel.ts +17 -0
@@ -0,0 +1,530 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/observingCache.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> observingCache.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">68.66% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>46/67</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">62.5% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>15/24</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">55% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>11/20</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">69.23% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>45/65</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 medium'></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>
114
+ <a name='L55'></a><a href='#L55'>55</a>
115
+ <a name='L56'></a><a href='#L56'>56</a>
116
+ <a name='L57'></a><a href='#L57'>57</a>
117
+ <a name='L58'></a><a href='#L58'>58</a>
118
+ <a name='L59'></a><a href='#L59'>59</a>
119
+ <a name='L60'></a><a href='#L60'>60</a>
120
+ <a name='L61'></a><a href='#L61'>61</a>
121
+ <a name='L62'></a><a href='#L62'>62</a>
122
+ <a name='L63'></a><a href='#L63'>63</a>
123
+ <a name='L64'></a><a href='#L64'>64</a>
124
+ <a name='L65'></a><a href='#L65'>65</a>
125
+ <a name='L66'></a><a href='#L66'>66</a>
126
+ <a name='L67'></a><a href='#L67'>67</a>
127
+ <a name='L68'></a><a href='#L68'>68</a>
128
+ <a name='L69'></a><a href='#L69'>69</a>
129
+ <a name='L70'></a><a href='#L70'>70</a>
130
+ <a name='L71'></a><a href='#L71'>71</a>
131
+ <a name='L72'></a><a href='#L72'>72</a>
132
+ <a name='L73'></a><a href='#L73'>73</a>
133
+ <a name='L74'></a><a href='#L74'>74</a>
134
+ <a name='L75'></a><a href='#L75'>75</a>
135
+ <a name='L76'></a><a href='#L76'>76</a>
136
+ <a name='L77'></a><a href='#L77'>77</a>
137
+ <a name='L78'></a><a href='#L78'>78</a>
138
+ <a name='L79'></a><a href='#L79'>79</a>
139
+ <a name='L80'></a><a href='#L80'>80</a>
140
+ <a name='L81'></a><a href='#L81'>81</a>
141
+ <a name='L82'></a><a href='#L82'>82</a>
142
+ <a name='L83'></a><a href='#L83'>83</a>
143
+ <a name='L84'></a><a href='#L84'>84</a>
144
+ <a name='L85'></a><a href='#L85'>85</a>
145
+ <a name='L86'></a><a href='#L86'>86</a>
146
+ <a name='L87'></a><a href='#L87'>87</a>
147
+ <a name='L88'></a><a href='#L88'>88</a>
148
+ <a name='L89'></a><a href='#L89'>89</a>
149
+ <a name='L90'></a><a href='#L90'>90</a>
150
+ <a name='L91'></a><a href='#L91'>91</a>
151
+ <a name='L92'></a><a href='#L92'>92</a>
152
+ <a name='L93'></a><a href='#L93'>93</a>
153
+ <a name='L94'></a><a href='#L94'>94</a>
154
+ <a name='L95'></a><a href='#L95'>95</a>
155
+ <a name='L96'></a><a href='#L96'>96</a>
156
+ <a name='L97'></a><a href='#L97'>97</a>
157
+ <a name='L98'></a><a href='#L98'>98</a>
158
+ <a name='L99'></a><a href='#L99'>99</a>
159
+ <a name='L100'></a><a href='#L100'>100</a>
160
+ <a name='L101'></a><a href='#L101'>101</a>
161
+ <a name='L102'></a><a href='#L102'>102</a>
162
+ <a name='L103'></a><a href='#L103'>103</a>
163
+ <a name='L104'></a><a href='#L104'>104</a>
164
+ <a name='L105'></a><a href='#L105'>105</a>
165
+ <a name='L106'></a><a href='#L106'>106</a>
166
+ <a name='L107'></a><a href='#L107'>107</a>
167
+ <a name='L108'></a><a href='#L108'>108</a>
168
+ <a name='L109'></a><a href='#L109'>109</a>
169
+ <a name='L110'></a><a href='#L110'>110</a>
170
+ <a name='L111'></a><a href='#L111'>111</a>
171
+ <a name='L112'></a><a href='#L112'>112</a>
172
+ <a name='L113'></a><a href='#L113'>113</a>
173
+ <a name='L114'></a><a href='#L114'>114</a>
174
+ <a name='L115'></a><a href='#L115'>115</a>
175
+ <a name='L116'></a><a href='#L116'>116</a>
176
+ <a name='L117'></a><a href='#L117'>117</a>
177
+ <a name='L118'></a><a href='#L118'>118</a>
178
+ <a name='L119'></a><a href='#L119'>119</a>
179
+ <a name='L120'></a><a href='#L120'>120</a>
180
+ <a name='L121'></a><a href='#L121'>121</a>
181
+ <a name='L122'></a><a href='#L122'>122</a>
182
+ <a name='L123'></a><a href='#L123'>123</a>
183
+ <a name='L124'></a><a href='#L124'>124</a>
184
+ <a name='L125'></a><a href='#L125'>125</a>
185
+ <a name='L126'></a><a href='#L126'>126</a>
186
+ <a name='L127'></a><a href='#L127'>127</a>
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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
211
+ <span class="cline-any cline-yes">1x</span>
212
+ <span class="cline-any cline-yes">1x</span>
213
+ <span class="cline-any cline-yes">1x</span>
214
+ <span class="cline-any cline-neutral">&nbsp;</span>
215
+ <span class="cline-any cline-neutral">&nbsp;</span>
216
+ <span class="cline-any cline-neutral">&nbsp;</span>
217
+ <span class="cline-any cline-neutral">&nbsp;</span>
218
+ <span class="cline-any cline-neutral">&nbsp;</span>
219
+ <span class="cline-any cline-neutral">&nbsp;</span>
220
+ <span class="cline-any cline-neutral">&nbsp;</span>
221
+ <span class="cline-any cline-neutral">&nbsp;</span>
222
+ <span class="cline-any cline-neutral">&nbsp;</span>
223
+ <span class="cline-any cline-neutral">&nbsp;</span>
224
+ <span class="cline-any cline-neutral">&nbsp;</span>
225
+ <span class="cline-any cline-yes">1x</span>
226
+ <span class="cline-any cline-neutral">&nbsp;</span>
227
+ <span class="cline-any cline-neutral">&nbsp;</span>
228
+ <span class="cline-any cline-neutral">&nbsp;</span>
229
+ <span class="cline-any cline-neutral">&nbsp;</span>
230
+ <span class="cline-any cline-yes">2x</span>
231
+ <span class="cline-any cline-yes">2x</span>
232
+ <span class="cline-any cline-neutral">&nbsp;</span>
233
+ <span class="cline-any cline-yes">2x</span>
234
+ <span class="cline-any cline-neutral">&nbsp;</span>
235
+ <span class="cline-any cline-yes">2x</span>
236
+ <span class="cline-any cline-yes">2x</span>
237
+ <span class="cline-any cline-neutral">&nbsp;</span>
238
+ <span class="cline-any cline-yes">2x</span>
239
+ <span class="cline-any cline-yes">2x</span>
240
+ <span class="cline-any cline-neutral">&nbsp;</span>
241
+ <span class="cline-any cline-yes">2x</span>
242
+ <span class="cline-any cline-neutral">&nbsp;</span>
243
+ <span class="cline-any cline-neutral">&nbsp;</span>
244
+ <span class="cline-any cline-no">&nbsp;</span>
245
+ <span class="cline-any cline-no">&nbsp;</span>
246
+ <span class="cline-any cline-neutral">&nbsp;</span>
247
+ <span class="cline-any cline-neutral">&nbsp;</span>
248
+ <span class="cline-any cline-yes">1x</span>
249
+ <span class="cline-any cline-yes">1x</span>
250
+ <span class="cline-any cline-no">&nbsp;</span>
251
+ <span class="cline-any cline-neutral">&nbsp;</span>
252
+ <span class="cline-any cline-yes">1x</span>
253
+ <span class="cline-any cline-yes">1x</span>
254
+ <span class="cline-any cline-yes">1x</span>
255
+ <span class="cline-any cline-neutral">&nbsp;</span>
256
+ <span class="cline-any cline-neutral">&nbsp;</span>
257
+ <span class="cline-any cline-yes">1x</span>
258
+ <span class="cline-any cline-neutral">&nbsp;</span>
259
+ <span class="cline-any cline-neutral">&nbsp;</span>
260
+ <span class="cline-any cline-neutral">&nbsp;</span>
261
+ <span class="cline-any cline-no">&nbsp;</span>
262
+ <span class="cline-any cline-no">&nbsp;</span>
263
+ <span class="cline-any cline-no">&nbsp;</span>
264
+ <span class="cline-any cline-neutral">&nbsp;</span>
265
+ <span class="cline-any cline-neutral">&nbsp;</span>
266
+ <span class="cline-any cline-neutral">&nbsp;</span>
267
+ <span class="cline-any cline-no">&nbsp;</span>
268
+ <span class="cline-any cline-neutral">&nbsp;</span>
269
+ <span class="cline-any cline-neutral">&nbsp;</span>
270
+ <span class="cline-any cline-neutral">&nbsp;</span>
271
+ <span class="cline-any cline-no">&nbsp;</span>
272
+ <span class="cline-any cline-neutral">&nbsp;</span>
273
+ <span class="cline-any cline-neutral">&nbsp;</span>
274
+ <span class="cline-any cline-neutral">&nbsp;</span>
275
+ <span class="cline-any cline-yes">2x</span>
276
+ <span class="cline-any cline-no">&nbsp;</span>
277
+ <span class="cline-any cline-neutral">&nbsp;</span>
278
+ <span class="cline-any cline-neutral">&nbsp;</span>
279
+ <span class="cline-any cline-yes">2x</span>
280
+ <span class="cline-any cline-neutral">&nbsp;</span>
281
+ <span class="cline-any cline-yes">2x</span>
282
+ <span class="cline-any cline-neutral">&nbsp;</span>
283
+ <span class="cline-any cline-yes">1x</span>
284
+ <span class="cline-any cline-neutral">&nbsp;</span>
285
+ <span class="cline-any cline-no">&nbsp;</span>
286
+ <span class="cline-any cline-no">&nbsp;</span>
287
+ <span class="cline-any cline-neutral">&nbsp;</span>
288
+ <span class="cline-any cline-neutral">&nbsp;</span>
289
+ <span class="cline-any cline-neutral">&nbsp;</span>
290
+ <span class="cline-any cline-yes">2x</span>
291
+ <span class="cline-any cline-neutral">&nbsp;</span>
292
+ <span class="cline-any cline-neutral">&nbsp;</span>
293
+ <span class="cline-any cline-yes">2x</span>
294
+ <span class="cline-any cline-no">&nbsp;</span>
295
+ <span class="cline-any cline-neutral">&nbsp;</span>
296
+ <span class="cline-any cline-neutral">&nbsp;</span>
297
+ <span class="cline-any cline-yes">2x</span>
298
+ <span class="cline-any cline-yes">2x</span>
299
+ <span class="cline-any cline-neutral">&nbsp;</span>
300
+ <span class="cline-any cline-yes">2x</span>
301
+ <span class="cline-any cline-yes">2x</span>
302
+ <span class="cline-any cline-neutral">&nbsp;</span>
303
+ <span class="cline-any cline-yes">3x</span>
304
+ <span class="cline-any cline-yes">2x</span>
305
+ <span class="cline-any cline-yes">2x</span>
306
+ <span class="cline-any cline-neutral">&nbsp;</span>
307
+ <span class="cline-any cline-yes">1x</span>
308
+ <span class="cline-any cline-neutral">&nbsp;</span>
309
+ <span class="cline-any cline-neutral">&nbsp;</span>
310
+ <span class="cline-any cline-neutral">&nbsp;</span>
311
+ <span class="cline-any cline-yes">2x</span>
312
+ <span class="cline-any cline-yes">2x</span>
313
+ <span class="cline-any cline-neutral">&nbsp;</span>
314
+ <span class="cline-any cline-yes">1x</span>
315
+ <span class="cline-any cline-neutral">&nbsp;</span>
316
+ <span class="cline-any cline-yes">1x</span>
317
+ <span class="cline-any cline-yes">1x</span>
318
+ <span class="cline-any cline-neutral">&nbsp;</span>
319
+ <span class="cline-any cline-neutral">&nbsp;</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>
323
+ <span class="cline-any cline-yes">2x</span>
324
+ <span class="cline-any cline-no">&nbsp;</span>
325
+ <span class="cline-any cline-no">&nbsp;</span>
326
+ <span class="cline-any cline-neutral">&nbsp;</span>
327
+ <span class="cline-any cline-neutral">&nbsp;</span>
328
+ <span class="cline-any cline-neutral">&nbsp;</span>
329
+ <span class="cline-any cline-yes">2x</span>
330
+ <span class="cline-any cline-yes">1x</span>
331
+ <span class="cline-any cline-no">&nbsp;</span>
332
+ <span class="cline-any cline-no">&nbsp;</span>
333
+ <span class="cline-any cline-no">&nbsp;</span>
334
+ <span class="cline-any cline-neutral">&nbsp;</span>
335
+ <span class="cline-any cline-no">&nbsp;</span>
336
+ <span class="cline-any cline-no">&nbsp;</span>
337
+ <span class="cline-any cline-neutral">&nbsp;</span>
338
+ <span class="cline-any cline-neutral">&nbsp;</span>
339
+ <span class="cline-any cline-neutral">&nbsp;</span>
340
+ <span class="cline-any cline-yes">1x</span>
341
+ <span class="cline-any cline-neutral">&nbsp;</span>
342
+ <span class="cline-any cline-neutral">&nbsp;</span>
343
+ <span class="cline-any cline-neutral">&nbsp;</span>
344
+ <span class="cline-any cline-neutral">&nbsp;</span>
345
+ <span class="cline-any cline-yes">2x</span>
346
+ <span class="cline-any cline-no">&nbsp;</span>
347
+ <span class="cline-any cline-neutral">&nbsp;</span>
348
+ <span class="cline-any cline-neutral">&nbsp;</span>
349
+ <span class="cline-any cline-yes">2x</span>
350
+ <span class="cline-any cline-neutral">&nbsp;</span>
351
+ <span class="cline-any cline-neutral">&nbsp;</span>
352
+ <span class="cline-any cline-neutral">&nbsp;</span>
353
+ <span class="cline-any cline-neutral">&nbsp;</span>
354
+ <span class="cline-any cline-neutral">&nbsp;</span>
355
+ <span class="cline-any cline-neutral">&nbsp;</span>
356
+ <span class="cline-any cline-neutral">&nbsp;</span>
357
+ <span class="cline-any cline-neutral">&nbsp;</span>
358
+ <span class="cline-any cline-yes">8x</span>
359
+ <span class="cline-any cline-neutral">&nbsp;</span>
360
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { action } from 'mobx';
361
+ import { Disposable } from './disposer';
362
+ import { PromiseCache, DeferredGetter } from './cache';
363
+ import { ObserversMap } from './observersMap';
364
+ import { Fields } from './fields';
365
+ &nbsp;
366
+ export type Unsub = () =&gt; void;
367
+ export type Fetcher&lt;T&gt; = (key: string, cb: (val: T) =&gt; Promise&lt;void&gt; | void) =&gt; Unsub | Promise&lt;Unsub&gt;;
368
+ &nbsp;
369
+ type ObserveStrategy = boolean | 'short' | number;
370
+ &nbsp;
371
+ export interface IObservingCache&lt;T&gt; {
372
+ get(key: string): DeferredGetter&lt;T&gt;;
373
+ }
374
+ &nbsp;
375
+ export class ObservingCache&lt;T&gt; extends Disposable implements IObservingCache&lt;T&gt; {
376
+ &nbsp;
377
+ private readonly _cache: PromiseCache&lt;T&gt;;
378
+ private readonly _observers: ObserversMap;
379
+ &nbsp;
380
+ private _observeStrategy: ObserveStrategy = null;
381
+ private readonly _observeStrategyOverrides: Record&lt;string, ObserveStrategy&gt; = { };
382
+ &nbsp;
383
+ private _updater: Fields.Updater&lt;T&gt; = null;
384
+ &nbsp;
385
+ constructor(readonly fetcher: Fetcher&lt;T&gt;) {
386
+ super();
387
+ &nbsp;
388
+ this._cache = new PromiseCache(this._fetch);
389
+ this._observers = new ObserversMap(this._subscribe);
390
+ &nbsp;
391
+ this.disposer.add(this._observers);
392
+ }
393
+ &nbsp;
394
+ <span class="fstat-no" title="function not covered" > public get l</span>oadingCount() { <span class="cstat-no" title="statement not covered" >return this._cache.busyCount; </span>}
395
+ <span class="fstat-no" title="function not covered" > public get o</span>bserversCount() { <span class="cstat-no" title="statement not covered" >return this._observers.count; </span>}
396
+ &nbsp;
397
+ useObservingStrategy(observe: ObserveStrategy) {
398
+ this._observeStrategy = observe;
399
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!this._observeStrategy) {
400
+ <span class="cstat-no" title="statement not covered" > this._observers.clear();</span>
401
+ } else {
402
+ const currentKeys = this._cache.keys();
403
+ const timeout = getObserveTimeout(this._observeStrategy);
404
+ currentKeys.forEach(<span class="fstat-no" title="function not covered" >key </span>=&gt; <span class="cstat-no" title="statement not covered" >this._observers.enable(key, true, timeout))</span>;
405
+ }
406
+ &nbsp;
407
+ return this;
408
+ }
409
+ &nbsp;
410
+ <span class="fstat-no" title="function not covered" > useUpdater(</span>updater: Fields.Updater&lt;T&gt;) {
411
+ <span class="cstat-no" title="statement not covered" > this._updater = updater;</span>
412
+ <span class="cstat-no" title="statement not covered" > this._cache.useObserveItems(updater != null);</span>
413
+ <span class="cstat-no" title="statement not covered" > return this;</span>
414
+ }
415
+ &nbsp;
416
+ <span class="fstat-no" title="function not covered" > getIsCached(</span>key: string) {
417
+ <span class="cstat-no" title="statement not covered" > return this._cache.hasKey(key);</span>
418
+ }
419
+ &nbsp;
420
+ <span class="fstat-no" title="function not covered" > getCurent(</span>key: string) {
421
+ <span class="cstat-no" title="statement not covered" > return this._cache.getCurrent(key, false);</span>
422
+ }
423
+ &nbsp;
424
+ get(key: string, overrideStrategy?: ObserveStrategy): DeferredGetter&lt;T&gt; {
425
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (overrideStrategy !== undefined) {
426
+ <span class="cstat-no" title="statement not covered" > this._observeStrategyOverrides[key] = overrideStrategy;</span>
427
+ }
428
+ &nbsp;
429
+ const strategy = firstDefined(this._observeStrategyOverrides[key], this._observeStrategy);
430
+ &nbsp;
431
+ if (strategy &amp;&amp; !this._observers.getIsObserving(key)) {
432
+ // ensure observe
433
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (this._cache.hasKey(key)) {
434
+ // the request has been initiated already
435
+ const timeout = <span class="cstat-no" title="statement not covered" >getObserveTimeout(strategy);</span>
436
+ <span class="cstat-no" title="statement not covered" > this._observers.enable(key, true, timeout);</span>
437
+ }
438
+ }
439
+ &nbsp;
440
+ return this._cache.getDeferred(key);
441
+ }
442
+ &nbsp;
443
+ populate = <span class="fstat-no" title="function not covered" >(k</span>ey: string, item: T) =&gt; {
444
+ <span class="cstat-no" title="statement not covered" > this._updateItem(key, item);</span>
445
+ };
446
+ &nbsp;
447
+ private _fetch = async (key: string): Promise&lt;T&gt; =&gt; {
448
+ let firstLoad = true;
449
+ &nbsp;
450
+ return new Promise&lt;T&gt;((resolve) =&gt; {
451
+ Promise.resolve&lt;Unsub&gt;(
452
+ this.fetcher(key, item =&gt; {
453
+ if (firstLoad) {
454
+ resolve(item);
455
+ firstLoad = false;
456
+ } else {
457
+ this._updateItem(key, item);
458
+ }
459
+ })
460
+ ).then(unsub =&gt; {
461
+ const strategy = firstDefined(this._observeStrategyOverrides[key], this._observeStrategy);
462
+ if (!strategy) {
463
+ // immediate unsub in case no observing strategy has been set
464
+ unsub();
465
+ } else {
466
+ const timeout = getObserveTimeout(strategy);
467
+ this._observers.enable(key, true, timeout, [unsub]);
468
+ }
469
+ });
470
+ });
471
+ };
472
+ &nbsp;
473
+ private _subscribe = <span class="fstat-no" title="function not covered" >(k</span>ey: string) =&gt; {
474
+ <span class="cstat-no" title="statement not covered" > return Promise.all([</span>
475
+ this.fetcher(key, <span class="fstat-no" title="function not covered" >item </span>=&gt; <span class="cstat-no" title="statement not covered" >this._updateItem(key, item))</span>,
476
+ ]);
477
+ };
478
+ &nbsp;
479
+ private _updateItem = action((key: string, item: T) =&gt; {
480
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (this._updater != null) {
481
+ const current = <span class="cstat-no" title="statement not covered" >this._cache.getCurrent(key, false);</span>
482
+ <span class="cstat-no" title="statement not covered" > if (current != null) {</span>
483
+ const result = <span class="cstat-no" title="statement not covered" >this._updater(current, item);</span>
484
+ // re-set existing item but with updated contents
485
+ <span class="cstat-no" title="statement not covered" > this._cache.updateValueDirectly(key, result);</span>
486
+ <span class="cstat-no" title="statement not covered" > return;</span>
487
+ }
488
+ }
489
+ &nbsp;
490
+ this._cache.updateValueDirectly(key, item);
491
+ });
492
+ }
493
+ &nbsp;
494
+ function getObserveTimeout(s: ObserveStrategy) {
495
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!s) {
496
+ <span class="cstat-no" title="statement not covered" > return undefined;</span>
497
+ }
498
+ &nbsp;
499
+ return typeof s === 'number'
500
+ ? <span class="branch-0 cbranch-no" title="branch not covered" >s</span>
501
+ : (s === 'short'
502
+ ? <span class="branch-0 cbranch-no" title="branch not covered" >5 * 60 * 1000</span>
503
+ : null
504
+ );
505
+ }
506
+ &nbsp;
507
+ function firstDefined&lt;T&gt;(...values: (T | undefined)[]) {
508
+ return values.find(v =&gt; v !== undefined);
509
+ }
510
+ &nbsp;</pre></td></tr></table></pre>
511
+
512
+ <div class='push'></div><!-- for sticky footer -->
513
+ </div><!-- /wrapper -->
514
+ <div class='footer quiet pad2 space-top1 center small'>
515
+ Code coverage generated by
516
+ <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
517
+ at Sun Feb 13 2022 23:33:48 GMT+0000 (Coordinated Universal Time)
518
+ </div>
519
+ </div>
520
+ <script src="../prettify.js"></script>
521
+ <script>
522
+ window.onload = function () {
523
+ prettyPrint();
524
+ };
525
+ </script>
526
+ <script src="../sorter.js"></script>
527
+ <script src="../block-navigation.js"></script>
528
+ </body>
529
+ </html>
530
+
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">89.53% </span>
26
+ <span class="strong">88.64% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>77/86</span>
28
+ <span class='fraction'>78/88</span>
29
29
  </div>
30
30
 
31
31
 
@@ -37,16 +37,16 @@
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">81.82% </span>
40
+ <span class="strong">78.26% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>18/22</span>
42
+ <span class='fraction'>18/23</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">89.53% </span>
47
+ <span class="strong">88.64% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>77/86</span>
49
+ <span class='fraction'>78/88</span>
50
50
  </div>
51
51
 
52
52
 
@@ -233,7 +233,14 @@
233
233
  <a name='L174'></a><a href='#L174'>174</a>
234
234
  <a name='L175'></a><a href='#L175'>175</a>
235
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>
236
+ <a name='L177'></a><a href='#L177'>177</a>
237
+ <a name='L178'></a><a href='#L178'>178</a>
238
+ <a name='L179'></a><a href='#L179'>179</a>
239
+ <a name='L180'></a><a href='#L180'>180</a>
240
+ <a name='L181'></a><a href='#L181'>181</a>
241
+ <a name='L182'></a><a href='#L182'>182</a>
242
+ <a name='L183'></a><a href='#L183'>183</a>
243
+ <a name='L184'></a><a href='#L184'>184</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
237
244
  <span class="cline-any cline-yes">1x</span>
238
245
  <span class="cline-any cline-yes">1x</span>
239
246
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -409,6 +416,13 @@
409
416
  <span class="cline-any cline-neutral">&nbsp;</span>
410
417
  <span class="cline-any cline-neutral">&nbsp;</span>
411
418
  <span class="cline-any cline-neutral">&nbsp;</span>
419
+ <span class="cline-any cline-neutral">&nbsp;</span>
420
+ <span class="cline-any cline-yes">1x</span>
421
+ <span class="cline-any cline-no">&nbsp;</span>
422
+ <span class="cline-any cline-neutral">&nbsp;</span>
423
+ <span class="cline-any cline-neutral">&nbsp;</span>
424
+ <span class="cline-any cline-neutral">&nbsp;</span>
425
+ <span class="cline-any cline-neutral">&nbsp;</span>
412
426
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { reaction } from 'mobx';
413
427
  import { IEvent, Event } from './event';
414
428
  import { ILogger, createLogger } from './logger';
@@ -585,6 +599,13 @@ export class TransitionObserver&lt;T&gt; implements IDisposable {
585
599
  }
586
600
  }
587
601
  }
602
+ &nbsp;
603
+ export function <span class="fstat-no" title="function not covered" >waitFor&lt;</span>T&gt;(current: () =&gt; T, toBe: T) {
604
+ <span class="cstat-no" title="statement not covered" > return new TransitionObserver(current)</span>
605
+ .to(toBe)
606
+ .fireOnce()
607
+ .getPromise();
608
+ }
588
609
  &nbsp;</pre></td></tr></table></pre>
589
610
 
590
611
  <div class='push'></div><!-- for sticky footer -->
@@ -592,7 +613,7 @@ export class TransitionObserver&lt;T&gt; implements IDisposable {
592
613
  <div class='footer quiet pad2 space-top1 center small'>
593
614
  Code coverage generated by
594
615
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
595
- at Mon Jan 31 2022 16:39:21 GMT+0000 (Coordinated Universal Time)
616
+ at Sun Feb 13 2022 23:33:48 GMT+0000 (Coordinated Universal Time)
596
617
  </div>
597
618
  </div>
598
619
  <script src="../prettify.js"></script>