@featurevisor/sdk 1.35.3 → 2.0.1

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 (86) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +2 -381
  3. package/coverage/clover.xml +707 -645
  4. package/coverage/coverage-final.json +11 -9
  5. package/coverage/lcov-report/{segments.ts.html → bucketer.ts.html} +155 -77
  6. package/coverage/lcov-report/child.ts.html +940 -0
  7. package/coverage/lcov-report/conditions.ts.html +107 -158
  8. package/coverage/lcov-report/datafileReader.ts.html +763 -103
  9. package/coverage/lcov-report/emitter.ts.html +77 -59
  10. package/coverage/lcov-report/evaluate.ts.html +689 -416
  11. package/coverage/lcov-report/events.ts.html +334 -0
  12. package/coverage/lcov-report/helpers.ts.html +184 -0
  13. package/coverage/lcov-report/{bucket.ts.html → hooks.ts.html} +86 -239
  14. package/coverage/lcov-report/index.html +119 -89
  15. package/coverage/lcov-report/instance.ts.html +341 -773
  16. package/coverage/lcov-report/logger.ts.html +64 -64
  17. package/coverage/lcov.info +1433 -1226
  18. package/dist/bucketer.d.ts +11 -0
  19. package/dist/child.d.ts +26 -0
  20. package/dist/compareVersions.d.ts +4 -0
  21. package/dist/conditions.d.ts +4 -4
  22. package/dist/datafileReader.d.ts +26 -6
  23. package/dist/emitter.d.ts +8 -9
  24. package/dist/evaluate.d.ts +31 -29
  25. package/dist/events.d.ts +5 -0
  26. package/dist/helpers.d.ts +5 -0
  27. package/dist/hooks.d.ts +45 -0
  28. package/dist/index.d.ts +3 -2
  29. package/dist/index.js +1 -1
  30. package/dist/index.js.map +1 -1
  31. package/dist/index.mjs +1 -1
  32. package/dist/index.mjs.gz +0 -0
  33. package/dist/index.mjs.map +1 -1
  34. package/dist/instance.d.ts +40 -72
  35. package/dist/logger.d.ts +6 -5
  36. package/dist/murmurhash.d.ts +1 -0
  37. package/jest.config.js +2 -0
  38. package/lib/bucketer.d.ts +11 -0
  39. package/lib/child.d.ts +26 -0
  40. package/lib/compareVersions.d.ts +4 -0
  41. package/lib/conditions.d.ts +4 -4
  42. package/lib/datafileReader.d.ts +26 -6
  43. package/lib/emitter.d.ts +8 -9
  44. package/lib/evaluate.d.ts +31 -29
  45. package/lib/events.d.ts +5 -0
  46. package/lib/helpers.d.ts +5 -0
  47. package/lib/hooks.d.ts +45 -0
  48. package/lib/index.d.ts +3 -2
  49. package/lib/instance.d.ts +40 -72
  50. package/lib/logger.d.ts +6 -5
  51. package/lib/murmurhash.d.ts +1 -0
  52. package/package.json +3 -5
  53. package/src/bucketer.spec.ts +165 -0
  54. package/src/bucketer.ts +84 -0
  55. package/src/child.spec.ts +267 -0
  56. package/src/child.ts +285 -0
  57. package/src/compareVersions.ts +93 -0
  58. package/src/conditions.spec.ts +563 -353
  59. package/src/conditions.ts +46 -63
  60. package/src/datafileReader.spec.ts +396 -84
  61. package/src/datafileReader.ts +280 -60
  62. package/src/emitter.spec.ts +27 -86
  63. package/src/emitter.ts +38 -32
  64. package/src/evaluate.ts +349 -258
  65. package/src/events.spec.ts +154 -0
  66. package/src/events.ts +83 -0
  67. package/src/helpers.ts +33 -0
  68. package/src/hooks.ts +88 -0
  69. package/src/index.ts +3 -2
  70. package/src/instance.spec.ts +305 -489
  71. package/src/instance.ts +247 -391
  72. package/src/logger.spec.ts +212 -134
  73. package/src/logger.ts +36 -36
  74. package/src/murmurhash.ts +71 -0
  75. package/coverage/lcov-report/feature.ts.html +0 -508
  76. package/dist/bucket.d.ts +0 -30
  77. package/dist/feature.d.ts +0 -16
  78. package/dist/segments.d.ts +0 -5
  79. package/lib/bucket.d.ts +0 -30
  80. package/lib/feature.d.ts +0 -16
  81. package/lib/segments.d.ts +0 -5
  82. package/src/bucket.spec.ts +0 -37
  83. package/src/bucket.ts +0 -139
  84. package/src/feature.ts +0 -141
  85. package/src/segments.spec.ts +0 -468
  86. package/src/segments.ts +0 -58
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">92.3% </span>
26
+ <span class="strong">90.52% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>600/650</span>
28
+ <span class='fraction'>640/707</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">86.15% </span>
33
+ <span class="strong">84.46% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>305/354</span>
35
+ <span class='fraction'>386/457</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">93.06% </span>
40
+ <span class="strong">90.51% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>94/101</span>
42
+ <span class='fraction'>105/116</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">92.33% </span>
47
+ <span class="strong">90.64% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>590/639</span>
49
+ <span class='fraction'>630/695</span>
50
50
  </div>
51
51
 
52
52
 
@@ -79,108 +79,153 @@
79
79
  </tr>
80
80
  </thead>
81
81
  <tbody><tr>
82
- <td class="file high" data-value="bucket.ts"><a href="bucket.ts.html">bucket.ts</a></td>
83
- <td data-value="95.45" class="pic high">
84
- <div class="chart"><div class="cover-fill" style="width: 95%"></div><div class="cover-empty" style="width: 5%"></div></div>
82
+ <td class="file high" data-value="bucketer.ts"><a href="bucketer.ts.html">bucketer.ts</a></td>
83
+ <td data-value="94.11" class="pic high">
84
+ <div class="chart"><div class="cover-fill" style="width: 94%"></div><div class="cover-empty" style="width: 6%"></div></div>
85
85
  </td>
86
- <td data-value="95.45" class="pct high">95.45%</td>
87
- <td data-value="44" class="abs high">42/44</td>
88
- <td data-value="88.23" class="pct high">88.23%</td>
89
- <td data-value="17" class="abs high">15/17</td>
86
+ <td data-value="94.11" class="pct high">94.11%</td>
87
+ <td data-value="34" class="abs high">32/34</td>
88
+ <td data-value="92.85" class="pct high">92.85%</td>
89
+ <td data-value="14" class="abs high">13/14</td>
90
90
  <td data-value="100" class="pct high">100%</td>
91
- <td data-value="4" class="abs high">4/4</td>
92
- <td data-value="95.45" class="pct high">95.45%</td>
93
- <td data-value="44" class="abs high">42/44</td>
91
+ <td data-value="3" class="abs high">3/3</td>
92
+ <td data-value="94.11" class="pct high">94.11%</td>
93
+ <td data-value="34" class="abs high">32/34</td>
94
+ </tr>
95
+
96
+ <tr>
97
+ <td class="file high" data-value="child.ts"><a href="child.ts.html">child.ts</a></td>
98
+ <td data-value="90.9" class="pic high">
99
+ <div class="chart"><div class="cover-fill" style="width: 90%"></div><div class="cover-empty" style="width: 10%"></div></div>
100
+ </td>
101
+ <td data-value="90.9" class="pct high">90.9%</td>
102
+ <td data-value="33" class="abs high">30/33</td>
103
+ <td data-value="88.88" class="pct high">88.88%</td>
104
+ <td data-value="36" class="abs high">32/36</td>
105
+ <td data-value="100" class="pct high">100%</td>
106
+ <td data-value="17" class="abs high">17/17</td>
107
+ <td data-value="90.9" class="pct high">90.9%</td>
108
+ <td data-value="33" class="abs high">30/33</td>
94
109
  </tr>
95
110
 
96
111
  <tr>
97
112
  <td class="file high" data-value="conditions.ts"><a href="conditions.ts.html">conditions.ts</a></td>
98
- <td data-value="94.28" class="pic high">
99
- <div class="chart"><div class="cover-fill" style="width: 94%"></div><div class="cover-empty" style="width: 6%"></div></div>
113
+ <td data-value="98.63" class="pic high">
114
+ <div class="chart"><div class="cover-fill" style="width: 98%"></div><div class="cover-empty" style="width: 2%"></div></div>
100
115
  </td>
101
- <td data-value="94.28" class="pct high">94.28%</td>
102
- <td data-value="70" class="abs high">66/70</td>
103
- <td data-value="96.96" class="pct high">96.96%</td>
104
- <td data-value="66" class="abs high">64/66</td>
116
+ <td data-value="98.63" class="pct high">98.63%</td>
117
+ <td data-value="73" class="abs high">72/73</td>
118
+ <td data-value="96.1" class="pct high">96.1%</td>
119
+ <td data-value="77" class="abs high">74/77</td>
105
120
  <td data-value="100" class="pct high">100%</td>
106
- <td data-value="6" class="abs high">6/6</td>
107
- <td data-value="94.02" class="pct high">94.02%</td>
108
- <td data-value="67" class="abs high">63/67</td>
121
+ <td data-value="3" class="abs high">3/3</td>
122
+ <td data-value="98.61" class="pct high">98.61%</td>
123
+ <td data-value="72" class="abs high">71/72</td>
109
124
  </tr>
110
125
 
111
126
  <tr>
112
127
  <td class="file high" data-value="datafileReader.ts"><a href="datafileReader.ts.html">datafileReader.ts</a></td>
113
- <td data-value="97.5" class="pic high">
114
- <div class="chart"><div class="cover-fill" style="width: 97%"></div><div class="cover-empty" style="width: 3%"></div></div>
128
+ <td data-value="90.59" class="pic high">
129
+ <div class="chart"><div class="cover-fill" style="width: 90%"></div><div class="cover-empty" style="width: 10%"></div></div>
115
130
  </td>
116
- <td data-value="97.5" class="pct high">97.5%</td>
117
- <td data-value="40" class="abs high">39/40</td>
131
+ <td data-value="90.59" class="pct high">90.59%</td>
132
+ <td data-value="117" class="abs high">106/117</td>
133
+ <td data-value="91.66" class="pct high">91.66%</td>
134
+ <td data-value="60" class="abs high">55/60</td>
118
135
  <td data-value="100" class="pct high">100%</td>
119
- <td data-value="7" class="abs high">7/7</td>
120
- <td data-value="100" class="pct high">100%</td>
121
- <td data-value="13" class="abs high">13/13</td>
122
- <td data-value="97.5" class="pct high">97.5%</td>
123
- <td data-value="40" class="abs high">39/40</td>
136
+ <td data-value="27" class="abs high">27/27</td>
137
+ <td data-value="90.26" class="pct high">90.26%</td>
138
+ <td data-value="113" class="abs high">102/113</td>
124
139
  </tr>
125
140
 
126
141
  <tr>
127
142
  <td class="file high" data-value="emitter.ts"><a href="emitter.ts.html">emitter.ts</a></td>
128
- <td data-value="100" class="pic high">
129
- <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
143
+ <td data-value="90.9" class="pic high">
144
+ <div class="chart"><div class="cover-fill" style="width: 90%"></div><div class="cover-empty" style="width: 10%"></div></div>
130
145
  </td>
131
- <td data-value="100" class="pct high">100%</td>
132
- <td data-value="18" class="abs high">18/18</td>
146
+ <td data-value="90.9" class="pct high">90.9%</td>
147
+ <td data-value="22" class="abs high">20/22</td>
148
+ <td data-value="60" class="pct medium">60%</td>
149
+ <td data-value="5" class="abs medium">3/5</td>
133
150
  <td data-value="100" class="pct high">100%</td>
134
151
  <td data-value="6" class="abs high">6/6</td>
135
- <td data-value="100" class="pct high">100%</td>
136
- <td data-value="7" class="abs high">7/7</td>
137
- <td data-value="100" class="pct high">100%</td>
138
- <td data-value="18" class="abs high">18/18</td>
152
+ <td data-value="90.9" class="pct high">90.9%</td>
153
+ <td data-value="22" class="abs high">20/22</td>
139
154
  </tr>
140
155
 
141
156
  <tr>
142
157
  <td class="file high" data-value="evaluate.ts"><a href="evaluate.ts.html">evaluate.ts</a></td>
143
- <td data-value="95.3" class="pic high">
144
- <div class="chart"><div class="cover-fill" style="width: 95%"></div><div class="cover-empty" style="width: 5%"></div></div>
158
+ <td data-value="91.13" class="pic high">
159
+ <div class="chart"><div class="cover-fill" style="width: 91%"></div><div class="cover-empty" style="width: 9%"></div></div>
145
160
  </td>
146
- <td data-value="95.3" class="pct high">95.3%</td>
147
- <td data-value="213" class="abs high">203/213</td>
148
- <td data-value="91.6" class="pct high">91.6%</td>
149
- <td data-value="143" class="abs high">131/143</td>
161
+ <td data-value="91.13" class="pct high">91.13%</td>
162
+ <td data-value="237" class="abs high">216/237</td>
163
+ <td data-value="88.23" class="pct high">88.23%</td>
164
+ <td data-value="153" class="abs high">135/153</td>
150
165
  <td data-value="100" class="pct high">100%</td>
151
166
  <td data-value="10" class="abs high">10/10</td>
152
- <td data-value="95.19" class="pct high">95.19%</td>
153
- <td data-value="208" class="abs high">198/208</td>
167
+ <td data-value="90.98" class="pct high">90.98%</td>
168
+ <td data-value="233" class="abs high">212/233</td>
154
169
  </tr>
155
170
 
156
171
  <tr>
157
- <td class="file high" data-value="feature.ts"><a href="feature.ts.html">feature.ts</a></td>
158
- <td data-value="95.55" class="pic high">
159
- <div class="chart"><div class="cover-fill" style="width: 95%"></div><div class="cover-empty" style="width: 5%"></div></div>
172
+ <td class="file high" data-value="events.ts"><a href="events.ts.html">events.ts</a></td>
173
+ <td data-value="100" class="pic high">
174
+ <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
160
175
  </td>
161
- <td data-value="95.55" class="pct high">95.55%</td>
162
- <td data-value="45" class="abs high">43/45</td>
163
- <td data-value="90.47" class="pct high">90.47%</td>
164
- <td data-value="21" class="abs high">19/21</td>
165
176
  <td data-value="100" class="pct high">100%</td>
166
- <td data-value="7" class="abs high">7/7</td>
167
- <td data-value="95.45" class="pct high">95.45%</td>
168
- <td data-value="44" class="abs high">42/44</td>
177
+ <td data-value="30" class="abs high">30/30</td>
178
+ <td data-value="69.23" class="pct medium">69.23%</td>
179
+ <td data-value="13" class="abs medium">9/13</td>
180
+ <td data-value="100" class="pct high">100%</td>
181
+ <td data-value="4" class="abs high">4/4</td>
182
+ <td data-value="100" class="pct high">100%</td>
183
+ <td data-value="30" class="abs high">30/30</td>
184
+ </tr>
185
+
186
+ <tr>
187
+ <td class="file high" data-value="helpers.ts"><a href="helpers.ts.html">helpers.ts</a></td>
188
+ <td data-value="84.61" class="pic high">
189
+ <div class="chart"><div class="cover-fill" style="width: 84%"></div><div class="cover-empty" style="width: 16%"></div></div>
190
+ </td>
191
+ <td data-value="84.61" class="pct high">84.61%</td>
192
+ <td data-value="13" class="abs high">11/13</td>
193
+ <td data-value="71.42" class="pct medium">71.42%</td>
194
+ <td data-value="14" class="abs medium">10/14</td>
195
+ <td data-value="100" class="pct high">100%</td>
196
+ <td data-value="1" class="abs high">1/1</td>
197
+ <td data-value="84.61" class="pct high">84.61%</td>
198
+ <td data-value="13" class="abs high">11/13</td>
199
+ </tr>
200
+
201
+ <tr>
202
+ <td class="file medium" data-value="hooks.ts"><a href="hooks.ts.html">hooks.ts</a></td>
203
+ <td data-value="62.5" class="pic medium">
204
+ <div class="chart"><div class="cover-fill" style="width: 62%"></div><div class="cover-empty" style="width: 38%"></div></div>
205
+ </td>
206
+ <td data-value="62.5" class="pct medium">62.5%</td>
207
+ <td data-value="16" class="abs medium">10/16</td>
208
+ <td data-value="50" class="pct medium">50%</td>
209
+ <td data-value="2" class="abs medium">1/2</td>
210
+ <td data-value="50" class="pct medium">50%</td>
211
+ <td data-value="8" class="abs medium">4/8</td>
212
+ <td data-value="71.42" class="pct medium">71.42%</td>
213
+ <td data-value="14" class="abs medium">10/14</td>
169
214
  </tr>
170
215
 
171
216
  <tr>
172
217
  <td class="file high" data-value="instance.ts"><a href="instance.ts.html">instance.ts</a></td>
173
- <td data-value="82.73" class="pic high">
174
- <div class="chart"><div class="cover-fill" style="width: 82%"></div><div class="cover-empty" style="width: 18%"></div></div>
218
+ <td data-value="81.9" class="pic high">
219
+ <div class="chart"><div class="cover-fill" style="width: 81%"></div><div class="cover-empty" style="width: 19%"></div></div>
175
220
  </td>
176
- <td data-value="82.73" class="pct high">82.73%</td>
177
- <td data-value="168" class="abs high">139/168</td>
178
- <td data-value="55.07" class="pct medium">55.07%</td>
179
- <td data-value="69" class="abs medium">38/69</td>
180
- <td data-value="82.05" class="pct high">82.05%</td>
181
- <td data-value="39" class="abs high">32/39</td>
182
- <td data-value="83.23" class="pct high">83.23%</td>
183
- <td data-value="167" class="abs high">139/167</td>
221
+ <td data-value="81.9" class="pct high">81.9%</td>
222
+ <td data-value="105" class="abs high">86/105</td>
223
+ <td data-value="59.15" class="pct medium">59.15%</td>
224
+ <td data-value="71" class="abs medium">42/71</td>
225
+ <td data-value="75" class="pct medium">75%</td>
226
+ <td data-value="28" class="abs medium">21/28</td>
227
+ <td data-value="81.9" class="pct high">81.9%</td>
228
+ <td data-value="105" class="abs high">86/105</td>
184
229
  </tr>
185
230
 
186
231
  <tr>
@@ -191,28 +236,13 @@
191
236
  <td data-value="100" class="pct high">100%</td>
192
237
  <td data-value="27" class="abs high">27/27</td>
193
238
  <td data-value="100" class="pct high">100%</td>
194
- <td data-value="11" class="abs high">11/11</td>
239
+ <td data-value="12" class="abs high">12/12</td>
195
240
  <td data-value="100" class="pct high">100%</td>
196
241
  <td data-value="9" class="abs high">9/9</td>
197
242
  <td data-value="100" class="pct high">100%</td>
198
243
  <td data-value="26" class="abs high">26/26</td>
199
244
  </tr>
200
245
 
201
- <tr>
202
- <td class="file high" data-value="segments.ts"><a href="segments.ts.html">segments.ts</a></td>
203
- <td data-value="92" class="pic high">
204
- <div class="chart"><div class="cover-fill" style="width: 92%"></div><div class="cover-empty" style="width: 8%"></div></div>
205
- </td>
206
- <td data-value="92" class="pct high">92%</td>
207
- <td data-value="25" class="abs high">23/25</td>
208
- <td data-value="100" class="pct high">100%</td>
209
- <td data-value="14" class="abs high">14/14</td>
210
- <td data-value="100" class="pct high">100%</td>
211
- <td data-value="6" class="abs high">6/6</td>
212
- <td data-value="92" class="pct high">92%</td>
213
- <td data-value="25" class="abs high">23/25</td>
214
- </tr>
215
-
216
246
  </tbody>
217
247
  </table>
218
248
  </div>
@@ -221,7 +251,7 @@
221
251
  <div class='footer quiet pad2 space-top1 center small'>
222
252
  Code coverage generated by
223
253
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
224
- at 2025-04-12T20:34:55.662Z
254
+ at 2025-07-19T20:24:32.581Z
225
255
  </div>
226
256
  <script src="prettify.js"></script>
227
257
  <script>