@featurevisor/core 2.17.0 → 2.19.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 (106) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/coverage/clover.xml +1692 -1196
  3. package/coverage/coverage-final.json +29 -22
  4. package/coverage/lcov-report/builder/allocator.ts.html +26 -26
  5. package/coverage/lcov-report/builder/buildDatafile.ts.html +2017 -0
  6. package/coverage/lcov-report/builder/buildScopedConditions.ts.html +35 -35
  7. package/coverage/lcov-report/builder/buildScopedDatafile.ts.html +213 -45
  8. package/coverage/lcov-report/builder/buildScopedSegments.ts.html +28 -28
  9. package/coverage/lcov-report/builder/convertToV1.ts.html +583 -0
  10. package/coverage/lcov-report/builder/getFeatureRanges.ts.html +268 -0
  11. package/coverage/lcov-report/builder/hashes.ts.html +412 -0
  12. package/coverage/lcov-report/builder/index.html +90 -30
  13. package/coverage/lcov-report/builder/mutateVariables.ts.html +66 -45
  14. package/coverage/lcov-report/builder/mutator.ts.html +95 -95
  15. package/coverage/lcov-report/builder/revision.ts.html +1 -1
  16. package/coverage/lcov-report/builder/traffic.ts.html +60 -57
  17. package/coverage/lcov-report/config/index.html +1 -1
  18. package/coverage/lcov-report/config/index.ts.html +2 -2
  19. package/coverage/lcov-report/config/projectConfig.ts.html +28 -28
  20. package/coverage/lcov-report/datasource/adapter.ts.html +2 -2
  21. package/coverage/lcov-report/datasource/datasource.ts.html +4 -4
  22. package/coverage/lcov-report/datasource/filesystemAdapter.ts.html +34 -34
  23. package/coverage/lcov-report/datasource/index.html +1 -1
  24. package/coverage/lcov-report/datasource/index.ts.html +1 -1
  25. package/coverage/lcov-report/index.html +39 -39
  26. package/coverage/lcov-report/linter/attributeSchema.ts.html +1 -1
  27. package/coverage/lcov-report/linter/checkCircularDependency.ts.html +1 -1
  28. package/coverage/lcov-report/linter/checkPercentageExceedingSlot.ts.html +1 -1
  29. package/coverage/lcov-report/linter/conditionSchema.ts.html +17 -17
  30. package/coverage/lcov-report/linter/featureSchema.ts.html +879 -417
  31. package/coverage/lcov-report/linter/groupSchema.ts.html +1 -1
  32. package/coverage/lcov-report/linter/index.html +34 -34
  33. package/coverage/lcov-report/linter/lintProject.ts.html +25 -25
  34. package/coverage/lcov-report/linter/mutationNotation.ts.html +224 -122
  35. package/coverage/lcov-report/linter/printError.ts.html +1 -1
  36. package/coverage/lcov-report/linter/schema.ts.html +175 -85
  37. package/coverage/lcov-report/linter/segmentSchema.ts.html +1 -1
  38. package/coverage/lcov-report/linter/testSchema.ts.html +5 -5
  39. package/coverage/lcov-report/list/index.html +1 -1
  40. package/coverage/lcov-report/list/matrix.ts.html +1 -1
  41. package/coverage/lcov-report/parsers/index.html +1 -1
  42. package/coverage/lcov-report/parsers/index.ts.html +4 -4
  43. package/coverage/lcov-report/parsers/json.ts.html +2 -2
  44. package/coverage/lcov-report/parsers/yml.ts.html +6 -6
  45. package/coverage/lcov-report/tester/cliFormat.ts.html +1 -1
  46. package/coverage/lcov-report/tester/helpers.ts.html +1 -1
  47. package/coverage/lcov-report/tester/index.html +1 -1
  48. package/coverage/lcov-report/utils/extractKeys.ts.html +493 -0
  49. package/coverage/lcov-report/utils/git.ts.html +3 -3
  50. package/coverage/lcov-report/utils/index.html +54 -9
  51. package/coverage/lcov-report/utils/index.ts.html +94 -0
  52. package/coverage/lcov-report/utils/pretty.ts.html +121 -0
  53. package/coverage/lcov.info +3206 -2260
  54. package/json-schema/attribute.json +25 -9
  55. package/json-schema/feature.json +319 -238
  56. package/json-schema/segment.json +76 -45
  57. package/lib/builder/buildDatafile.js +50 -3
  58. package/lib/builder/buildDatafile.js.map +1 -1
  59. package/lib/builder/buildDatafile.spec.d.ts +1 -0
  60. package/lib/builder/buildDatafile.spec.js +233 -0
  61. package/lib/builder/buildDatafile.spec.js.map +1 -0
  62. package/lib/builder/buildScopedDatafile.js +37 -1
  63. package/lib/builder/buildScopedDatafile.js.map +1 -1
  64. package/lib/builder/buildScopedDatafile.spec.js +289 -0
  65. package/lib/builder/buildScopedDatafile.spec.js.map +1 -1
  66. package/lib/builder/mutateVariables.d.ts +1 -1
  67. package/lib/builder/mutateVariables.js +4 -1
  68. package/lib/builder/mutateVariables.js.map +1 -1
  69. package/lib/builder/mutateVariables.spec.js +29 -0
  70. package/lib/builder/mutateVariables.spec.js.map +1 -1
  71. package/lib/builder/traffic.js +1 -0
  72. package/lib/builder/traffic.js.map +1 -1
  73. package/lib/builder/traffic.spec.js +26 -0
  74. package/lib/builder/traffic.spec.js.map +1 -1
  75. package/lib/generate-code/typescript.js +63 -20
  76. package/lib/generate-code/typescript.js.map +1 -1
  77. package/lib/linter/featureSchema.d.ts +237 -22
  78. package/lib/linter/featureSchema.js +175 -84
  79. package/lib/linter/featureSchema.js.map +1 -1
  80. package/lib/linter/featureSchema.spec.js +268 -0
  81. package/lib/linter/featureSchema.spec.js.map +1 -1
  82. package/lib/linter/mutationNotation.js +54 -19
  83. package/lib/linter/mutationNotation.js.map +1 -1
  84. package/lib/linter/mutationNotation.spec.js +49 -0
  85. package/lib/linter/mutationNotation.spec.js.map +1 -1
  86. package/lib/linter/schema.d.ts +1 -0
  87. package/lib/linter/schema.js +13 -0
  88. package/lib/linter/schema.js.map +1 -1
  89. package/lib/linter/schema.spec.js +51 -0
  90. package/lib/linter/schema.spec.js.map +1 -1
  91. package/package.json +5 -5
  92. package/src/builder/buildDatafile.spec.ts +267 -0
  93. package/src/builder/buildDatafile.ts +85 -4
  94. package/src/builder/buildScopedDatafile.spec.ts +330 -0
  95. package/src/builder/buildScopedDatafile.ts +57 -1
  96. package/src/builder/mutateVariables.spec.ts +45 -0
  97. package/src/builder/mutateVariables.ts +7 -0
  98. package/src/builder/traffic.spec.ts +33 -0
  99. package/src/builder/traffic.ts +1 -0
  100. package/src/generate-code/typescript.ts +87 -20
  101. package/src/linter/featureSchema.spec.ts +315 -0
  102. package/src/linter/featureSchema.ts +269 -115
  103. package/src/linter/mutationNotation.spec.ts +62 -0
  104. package/src/linter/mutationNotation.ts +47 -13
  105. package/src/linter/schema.spec.ts +72 -0
  106. package/src/linter/schema.ts +30 -0
@@ -211,7 +211,7 @@ export function getGroupZodSchema(
211
211
  <div class='footer quiet pad2 space-top1 center small'>
212
212
  Code coverage generated by
213
213
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
214
- at 2026-02-27T17:47:18.936Z
214
+ at 2026-03-01T20:34:15.761Z
215
215
  </div>
216
216
  <script src="../prettify.js"></script>
217
217
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">76.18% </span>
26
+ <span class="strong">76.87% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>950/1247</span>
28
+ <span class='fraction'>1007/1310</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">69.46% </span>
33
+ <span class="strong">70.63% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>628/904</span>
35
+ <span class='fraction'>695/984</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">74.84% </span>
40
+ <span class="strong">74.69% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>119/159</span>
42
+ <span class='fraction'>121/162</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">79.58% </span>
47
+ <span class="strong">80.13% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>916/1151</span>
49
+ <span class='fraction'>972/1213</span>
50
50
  </div>
51
51
 
52
52
 
@@ -140,17 +140,17 @@
140
140
 
141
141
  <tr>
142
142
  <td class="file medium" data-value="featureSchema.ts"><a href="featureSchema.ts.html">featureSchema.ts</a></td>
143
- <td data-value="70.96" class="pic medium">
144
- <div class="chart"><div class="cover-fill" style="width: 70%"></div><div class="cover-empty" style="width: 30%"></div></div>
143
+ <td data-value="72.95" class="pic medium">
144
+ <div class="chart"><div class="cover-fill" style="width: 72%"></div><div class="cover-empty" style="width: 28%"></div></div>
145
145
  </td>
146
- <td data-value="70.96" class="pct medium">70.96%</td>
147
- <td data-value="520" class="abs medium">369/520</td>
148
- <td data-value="61.49" class="pct medium">61.49%</td>
149
- <td data-value="361" class="abs medium">222/361</td>
150
- <td data-value="76.38" class="pct medium">76.38%</td>
151
- <td data-value="72" class="abs medium">55/72</td>
152
- <td data-value="75.1" class="pct medium">75.1%</td>
153
- <td data-value="474" class="abs medium">356/474</td>
146
+ <td data-value="72.95" class="pct medium">72.95%</td>
147
+ <td data-value="551" class="abs medium">402/551</td>
148
+ <td data-value="64.26" class="pct medium">64.26%</td>
149
+ <td data-value="403" class="abs medium">259/403</td>
150
+ <td data-value="76" class="pct medium">76%</td>
151
+ <td data-value="75" class="abs medium">57/75</td>
152
+ <td data-value="76.52" class="pct medium">76.52%</td>
153
+ <td data-value="507" class="abs medium">388/507</td>
154
154
  </tr>
155
155
 
156
156
  <tr>
@@ -185,17 +185,17 @@
185
185
 
186
186
  <tr>
187
187
  <td class="file high" data-value="mutationNotation.ts"><a href="mutationNotation.ts.html">mutationNotation.ts</a></td>
188
- <td data-value="88.96" class="pic high">
189
- <div class="chart"><div class="cover-fill" style="width: 88%"></div><div class="cover-empty" style="width: 12%"></div></div>
188
+ <td data-value="85.79" class="pic high">
189
+ <div class="chart"><div class="cover-fill" style="width: 85%"></div><div class="cover-empty" style="width: 15%"></div></div>
190
190
  </td>
191
- <td data-value="88.96" class="pct high">88.96%</td>
192
- <td data-value="145" class="abs high">129/145</td>
193
- <td data-value="78.62" class="pct medium">78.62%</td>
194
- <td data-value="131" class="abs medium">103/131</td>
191
+ <td data-value="85.79" class="pct high">85.79%</td>
192
+ <td data-value="169" class="abs high">145/169</td>
193
+ <td data-value="77.07" class="pct medium">77.07%</td>
194
+ <td data-value="157" class="abs medium">121/157</td>
195
195
  <td data-value="100" class="pct high">100%</td>
196
196
  <td data-value="8" class="abs high">8/8</td>
197
- <td data-value="95.96" class="pct high">95.96%</td>
198
- <td data-value="124" class="abs high">119/124</td>
197
+ <td data-value="93.1" class="pct high">93.1%</td>
198
+ <td data-value="145" class="abs high">135/145</td>
199
199
  </tr>
200
200
 
201
201
  <tr>
@@ -215,17 +215,17 @@
215
215
 
216
216
  <tr>
217
217
  <td class="file high" data-value="schema.ts"><a href="schema.ts.html">schema.ts</a></td>
218
- <td data-value="86.01" class="pic high">
218
+ <td data-value="86.56" class="pic high">
219
219
  <div class="chart"><div class="cover-fill" style="width: 86%"></div><div class="cover-empty" style="width: 14%"></div></div>
220
220
  </td>
221
- <td data-value="86.01" class="pct high">86.01%</td>
222
- <td data-value="193" class="abs high">166/193</td>
223
- <td data-value="85.39" class="pct high">85.39%</td>
224
- <td data-value="178" class="abs high">152/178</td>
221
+ <td data-value="86.56" class="pct high">86.56%</td>
222
+ <td data-value="201" class="abs high">174/201</td>
223
+ <td data-value="86.31" class="pct high">86.31%</td>
224
+ <td data-value="190" class="abs high">164/190</td>
225
225
  <td data-value="88" class="pct high">88%</td>
226
226
  <td data-value="25" class="abs high">22/25</td>
227
- <td data-value="90.22" class="pct high">90.22%</td>
228
- <td data-value="174" class="abs high">157/174</td>
227
+ <td data-value="90.65" class="pct high">90.65%</td>
228
+ <td data-value="182" class="abs high">165/182</td>
229
229
  </tr>
230
230
 
231
231
  <tr>
@@ -266,7 +266,7 @@
266
266
  <div class='footer quiet pad2 space-top1 center small'>
267
267
  Code coverage generated by
268
268
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
269
- at 2026-02-27T17:47:18.936Z
269
+ at 2026-03-01T20:34:15.761Z
270
270
  </div>
271
271
  <script src="../prettify.js"></script>
272
272
  <script>
@@ -840,28 +840,28 @@
840
840
  <span class="cline-any cline-neutral">&nbsp;</span>
841
841
  <span class="cline-any cline-neutral">&nbsp;</span>
842
842
  <span class="cline-any cline-neutral">&nbsp;</span>
843
- <span class="cline-any cline-yes">247x</span>
844
- <span class="cline-any cline-yes">247x</span>
843
+ <span class="cline-any cline-yes">252x</span>
844
+ <span class="cline-any cline-yes">252x</span>
845
845
  <span class="cline-any cline-neutral">&nbsp;</span>
846
- <span class="cline-any cline-yes">247x</span>
846
+ <span class="cline-any cline-yes">252x</span>
847
847
  <span class="cline-any cline-yes">34x</span>
848
- <span class="cline-any cline-yes">213x</span>
848
+ <span class="cline-any cline-yes">218x</span>
849
849
  <span class="cline-any cline-yes">32x</span>
850
- <span class="cline-any cline-yes">181x</span>
851
- <span class="cline-any cline-yes">54x</span>
852
- <span class="cline-any cline-yes">127x</span>
850
+ <span class="cline-any cline-yes">186x</span>
851
+ <span class="cline-any cline-yes">56x</span>
852
+ <span class="cline-any cline-yes">130x</span>
853
853
  <span class="cline-any cline-yes">2x</span>
854
- <span class="cline-any cline-yes">125x</span>
854
+ <span class="cline-any cline-yes">128x</span>
855
855
  <span class="cline-any cline-yes">40x</span>
856
856
  <span class="cline-any cline-neutral">&nbsp;</span>
857
- <span class="cline-any cline-yes">85x</span>
857
+ <span class="cline-any cline-yes">88x</span>
858
858
  <span class="cline-any cline-neutral">&nbsp;</span>
859
859
  <span class="cline-any cline-neutral">&nbsp;</span>
860
- <span class="cline-any cline-yes">247x</span>
860
+ <span class="cline-any cline-yes">252x</span>
861
861
  <span class="cline-any cline-no">&nbsp;</span>
862
862
  <span class="cline-any cline-neutral">&nbsp;</span>
863
863
  <span class="cline-any cline-neutral">&nbsp;</span>
864
- <span class="cline-any cline-yes">247x</span>
864
+ <span class="cline-any cline-yes">252x</span>
865
865
  <span class="cline-any cline-neutral">&nbsp;</span>
866
866
  <span class="cline-any cline-neutral">&nbsp;</span>
867
867
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1206,9 +1206,9 @@
1206
1206
  <span class="cline-any cline-neutral">&nbsp;</span>
1207
1207
  <span class="cline-any cline-neutral">&nbsp;</span>
1208
1208
  <span class="cline-any cline-yes">4x</span>
1209
- <span class="cline-any cline-yes">50x</span>
1209
+ <span class="cline-any cline-yes">52x</span>
1210
1210
  <span class="cline-any cline-neutral">&nbsp;</span>
1211
- <span class="cline-any cline-yes">50x</span>
1211
+ <span class="cline-any cline-yes">52x</span>
1212
1212
  <span class="cline-any cline-no">&nbsp;</span>
1213
1213
  <span class="cline-any cline-neutral">&nbsp;</span>
1214
1214
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1221,19 +1221,19 @@
1221
1221
  <span class="cline-any cline-neutral">&nbsp;</span>
1222
1222
  <span class="cline-any cline-neutral">&nbsp;</span>
1223
1223
  <span class="cline-any cline-neutral">&nbsp;</span>
1224
- <span class="cline-any cline-yes">50x</span>
1225
- <span class="cline-any cline-yes">50x</span>
1224
+ <span class="cline-any cline-yes">52x</span>
1225
+ <span class="cline-any cline-yes">52x</span>
1226
1226
  <span class="cline-any cline-neutral">&nbsp;</span>
1227
- <span class="cline-any cline-yes">49x</span>
1227
+ <span class="cline-any cline-yes">51x</span>
1228
1228
  <span class="cline-any cline-neutral">&nbsp;</span>
1229
- <span class="cline-any cline-yes">49x</span>
1229
+ <span class="cline-any cline-yes">51x</span>
1230
1230
  <span class="cline-any cline-yes">1x</span>
1231
1231
  <span class="cline-any cline-neutral">&nbsp;</span>
1232
1232
  <span class="cline-any cline-neutral">&nbsp;</span>
1233
1233
  <span class="cline-any cline-yes">1x</span>
1234
1234
  <span class="cline-any cline-neutral">&nbsp;</span>
1235
1235
  <span class="cline-any cline-neutral">&nbsp;</span>
1236
- <span class="cline-any cline-yes">50x</span>
1236
+ <span class="cline-any cline-yes">52x</span>
1237
1237
  <span class="cline-any cline-yes">2x</span>
1238
1238
  <span class="cline-any cline-yes">2x</span>
1239
1239
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1361,9 +1361,9 @@
1361
1361
  <span class="cline-any cline-neutral">&nbsp;</span>
1362
1362
  <span class="cline-any cline-neutral">&nbsp;</span>
1363
1363
  <span class="cline-any cline-yes">3x</span>
1364
- <span class="cline-any cline-yes">85x</span>
1364
+ <span class="cline-any cline-yes">88x</span>
1365
1365
  <span class="cline-any cline-neutral">&nbsp;</span>
1366
- <span class="cline-any cline-yes">85x</span>
1366
+ <span class="cline-any cline-yes">88x</span>
1367
1367
  <span class="cline-any cline-no">&nbsp;</span>
1368
1368
  <span class="cline-any cline-neutral">&nbsp;</span>
1369
1369
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1374,12 +1374,12 @@
1374
1374
  <span class="cline-any cline-neutral">&nbsp;</span>
1375
1375
  <span class="cline-any cline-neutral">&nbsp;</span>
1376
1376
  <span class="cline-any cline-neutral">&nbsp;</span>
1377
- <span class="cline-any cline-yes">85x</span>
1378
- <span class="cline-any cline-yes">85x</span>
1377
+ <span class="cline-any cline-yes">88x</span>
1378
+ <span class="cline-any cline-yes">88x</span>
1379
1379
  <span class="cline-any cline-neutral">&nbsp;</span>
1380
- <span class="cline-any cline-yes">85x</span>
1380
+ <span class="cline-any cline-yes">88x</span>
1381
1381
  <span class="cline-any cline-neutral">&nbsp;</span>
1382
- <span class="cline-any cline-yes">85x</span>
1382
+ <span class="cline-any cline-yes">88x</span>
1383
1383
  <span class="cline-any cline-yes">1x</span>
1384
1384
  <span class="cline-any cline-neutral">&nbsp;</span>
1385
1385
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -2170,7 +2170,7 @@ export const lintPlugin: Plugin = {
2170
2170
  <div class='footer quiet pad2 space-top1 center small'>
2171
2171
  Code coverage generated by
2172
2172
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2173
- at 2026-02-27T17:47:18.936Z
2173
+ at 2026-03-01T20:34:15.761Z
2174
2174
  </div>
2175
2175
  <script src="../prettify.js"></script>
2176
2176
  <script>