@featurevisor/sdk 1.35.3 → 2.0.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 (85) hide show
  1. package/README.md +2 -381
  2. package/coverage/clover.xml +707 -645
  3. package/coverage/coverage-final.json +11 -9
  4. package/coverage/lcov-report/{segments.ts.html → bucketer.ts.html} +155 -77
  5. package/coverage/lcov-report/child.ts.html +940 -0
  6. package/coverage/lcov-report/conditions.ts.html +107 -158
  7. package/coverage/lcov-report/datafileReader.ts.html +763 -103
  8. package/coverage/lcov-report/emitter.ts.html +77 -59
  9. package/coverage/lcov-report/evaluate.ts.html +689 -416
  10. package/coverage/lcov-report/events.ts.html +334 -0
  11. package/coverage/lcov-report/helpers.ts.html +184 -0
  12. package/coverage/lcov-report/{bucket.ts.html → hooks.ts.html} +86 -239
  13. package/coverage/lcov-report/index.html +119 -89
  14. package/coverage/lcov-report/instance.ts.html +341 -773
  15. package/coverage/lcov-report/logger.ts.html +64 -64
  16. package/coverage/lcov.info +1433 -1226
  17. package/dist/bucketer.d.ts +11 -0
  18. package/dist/child.d.ts +26 -0
  19. package/dist/compareVersions.d.ts +4 -0
  20. package/dist/conditions.d.ts +4 -4
  21. package/dist/datafileReader.d.ts +26 -6
  22. package/dist/emitter.d.ts +8 -9
  23. package/dist/evaluate.d.ts +31 -29
  24. package/dist/events.d.ts +5 -0
  25. package/dist/helpers.d.ts +5 -0
  26. package/dist/hooks.d.ts +45 -0
  27. package/dist/index.d.ts +3 -2
  28. package/dist/index.js +1 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/index.mjs +1 -1
  31. package/dist/index.mjs.gz +0 -0
  32. package/dist/index.mjs.map +1 -1
  33. package/dist/instance.d.ts +40 -72
  34. package/dist/logger.d.ts +6 -5
  35. package/dist/murmurhash.d.ts +1 -0
  36. package/jest.config.js +2 -0
  37. package/lib/bucketer.d.ts +11 -0
  38. package/lib/child.d.ts +26 -0
  39. package/lib/compareVersions.d.ts +4 -0
  40. package/lib/conditions.d.ts +4 -4
  41. package/lib/datafileReader.d.ts +26 -6
  42. package/lib/emitter.d.ts +8 -9
  43. package/lib/evaluate.d.ts +31 -29
  44. package/lib/events.d.ts +5 -0
  45. package/lib/helpers.d.ts +5 -0
  46. package/lib/hooks.d.ts +45 -0
  47. package/lib/index.d.ts +3 -2
  48. package/lib/instance.d.ts +40 -72
  49. package/lib/logger.d.ts +6 -5
  50. package/lib/murmurhash.d.ts +1 -0
  51. package/package.json +3 -5
  52. package/src/bucketer.spec.ts +165 -0
  53. package/src/bucketer.ts +84 -0
  54. package/src/child.spec.ts +267 -0
  55. package/src/child.ts +285 -0
  56. package/src/compareVersions.ts +93 -0
  57. package/src/conditions.spec.ts +563 -353
  58. package/src/conditions.ts +46 -63
  59. package/src/datafileReader.spec.ts +396 -84
  60. package/src/datafileReader.ts +280 -60
  61. package/src/emitter.spec.ts +27 -86
  62. package/src/emitter.ts +38 -32
  63. package/src/evaluate.ts +349 -258
  64. package/src/events.spec.ts +154 -0
  65. package/src/events.ts +83 -0
  66. package/src/helpers.ts +33 -0
  67. package/src/hooks.ts +88 -0
  68. package/src/index.ts +3 -2
  69. package/src/instance.spec.ts +305 -489
  70. package/src/instance.ts +247 -391
  71. package/src/logger.spec.ts +212 -134
  72. package/src/logger.ts +36 -36
  73. package/src/murmurhash.ts +71 -0
  74. package/coverage/lcov-report/feature.ts.html +0 -508
  75. package/dist/bucket.d.ts +0 -30
  76. package/dist/feature.d.ts +0 -16
  77. package/dist/segments.d.ts +0 -5
  78. package/lib/bucket.d.ts +0 -30
  79. package/lib/feature.d.ts +0 -16
  80. package/lib/segments.d.ts +0 -5
  81. package/src/bucket.spec.ts +0 -37
  82. package/src/bucket.ts +0 -139
  83. package/src/feature.ts +0 -141
  84. package/src/segments.spec.ts +0 -468
  85. 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-13T22:31:55.309Z
225
255
  </div>
226
256
  <script src="prettify.js"></script>
227
257
  <script>