@featurevisor/core 2.25.0 → 2.26.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 (106) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/coverage/clover.xml +1499 -1476
  3. package/coverage/coverage-final.json +18 -17
  4. package/coverage/lcov-report/builder/allocator.ts.html +1 -1
  5. package/coverage/lcov-report/builder/buildDatafile.ts.html +1 -1
  6. package/coverage/lcov-report/builder/buildScopedConditions.ts.html +1 -1
  7. package/coverage/lcov-report/builder/buildScopedDatafile.ts.html +1 -1
  8. package/coverage/lcov-report/builder/buildScopedSegments.ts.html +1 -1
  9. package/coverage/lcov-report/builder/convertToV1.ts.html +1 -1
  10. package/coverage/lcov-report/builder/getFeatureRanges.ts.html +1 -1
  11. package/coverage/lcov-report/builder/hashes.ts.html +1 -1
  12. package/coverage/lcov-report/builder/index.html +1 -1
  13. package/coverage/lcov-report/builder/mutateVariables.ts.html +1 -1
  14. package/coverage/lcov-report/builder/mutator.ts.html +52 -52
  15. package/coverage/lcov-report/builder/revision.ts.html +1 -1
  16. package/coverage/lcov-report/builder/traffic.ts.html +1 -1
  17. package/coverage/lcov-report/config/index.html +1 -1
  18. package/coverage/lcov-report/config/index.ts.html +1 -1
  19. package/coverage/lcov-report/config/projectConfig.ts.html +15 -15
  20. package/coverage/lcov-report/datasource/adapter.ts.html +1 -1
  21. package/coverage/lcov-report/datasource/datasource.ts.html +18 -18
  22. package/coverage/lcov-report/datasource/filesystemAdapter.ts.html +43 -43
  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/generate-code/index.html +1 -1
  26. package/coverage/lcov-report/generate-code/typescript.ts.html +3 -3
  27. package/coverage/lcov-report/index.html +18 -18
  28. package/coverage/lcov-report/linter/attributeSchema.ts.html +130 -130
  29. package/coverage/lcov-report/linter/checkCircularDependency.ts.html +11 -11
  30. package/coverage/lcov-report/linter/checkPercentageExceedingSlot.ts.html +15 -15
  31. package/coverage/lcov-report/linter/conditionSchema.ts.html +150 -150
  32. package/coverage/lcov-report/linter/featureSchema.ts.html +458 -443
  33. package/coverage/lcov-report/linter/groupSchema.ts.html +24 -27
  34. package/coverage/lcov-report/linter/index.html +83 -68
  35. package/coverage/lcov-report/linter/lintProject.ts.html +158 -158
  36. package/coverage/lcov-report/linter/mutationNotation.ts.html +104 -104
  37. package/coverage/lcov-report/linter/printError.ts.html +79 -28
  38. package/coverage/lcov-report/linter/schema.ts.html +129 -135
  39. package/coverage/lcov-report/linter/segmentSchema.ts.html +15 -9
  40. package/coverage/lcov-report/linter/testSchema.ts.html +67 -94
  41. package/coverage/lcov-report/linter/zodHelpers.ts.html +133 -0
  42. package/coverage/lcov-report/list/index.html +1 -1
  43. package/coverage/lcov-report/list/matrix.ts.html +1 -1
  44. package/coverage/lcov-report/tester/cliFormat.ts.html +6 -6
  45. package/coverage/lcov-report/tester/helpers.ts.html +1 -1
  46. package/coverage/lcov-report/tester/index.html +1 -1
  47. package/coverage/lcov-report/utils/extractKeys.ts.html +1 -1
  48. package/coverage/lcov-report/utils/git.ts.html +1 -1
  49. package/coverage/lcov-report/utils/index.html +1 -1
  50. package/coverage/lcov-report/utils/index.ts.html +1 -1
  51. package/coverage/lcov-report/utils/pretty.ts.html +1 -1
  52. package/coverage/lcov.info +3031 -2984
  53. package/lib/generate-code/typescript.js +2 -2
  54. package/lib/linter/attributeSchema.d.ts +19 -352
  55. package/lib/linter/attributeSchema.spec.js.map +1 -1
  56. package/lib/linter/conditionSchema.d.ts +1 -1
  57. package/lib/linter/conditionSchema.js +2 -3
  58. package/lib/linter/conditionSchema.js.map +1 -1
  59. package/lib/linter/conditionSchema.spec.js.map +1 -1
  60. package/lib/linter/featureSchema.d.ts +75 -964
  61. package/lib/linter/featureSchema.js +64 -53
  62. package/lib/linter/featureSchema.js.map +1 -1
  63. package/lib/linter/featureSchema.spec.js +28 -0
  64. package/lib/linter/featureSchema.spec.js.map +1 -1
  65. package/lib/linter/groupSchema.d.ts +4 -28
  66. package/lib/linter/groupSchema.js +3 -5
  67. package/lib/linter/groupSchema.js.map +1 -1
  68. package/lib/linter/lintProject.spec.js +101 -13
  69. package/lib/linter/lintProject.spec.js.map +1 -1
  70. package/lib/linter/printError.js +21 -7
  71. package/lib/linter/printError.js.map +1 -1
  72. package/lib/linter/schema.d.ts +9 -2
  73. package/lib/linter/schema.js +2 -6
  74. package/lib/linter/schema.js.map +1 -1
  75. package/lib/linter/schema.spec.js +3 -2
  76. package/lib/linter/schema.spec.js.map +1 -1
  77. package/lib/linter/segmentSchema.d.ts +1 -9
  78. package/lib/linter/segmentSchema.js +3 -1
  79. package/lib/linter/segmentSchema.js.map +1 -1
  80. package/lib/linter/segmentSchema.spec.js.map +1 -1
  81. package/lib/linter/testSchema.d.ts +16 -222
  82. package/lib/linter/testSchema.js +23 -38
  83. package/lib/linter/testSchema.js.map +1 -1
  84. package/lib/linter/testSchema.spec.d.ts +1 -0
  85. package/lib/linter/testSchema.spec.js +162 -0
  86. package/lib/linter/testSchema.spec.js.map +1 -0
  87. package/lib/linter/zodHelpers.d.ts +2 -0
  88. package/lib/linter/zodHelpers.js +15 -0
  89. package/lib/linter/zodHelpers.js.map +1 -0
  90. package/package.json +3 -3
  91. package/src/generate-code/typescript.ts +2 -2
  92. package/src/linter/attributeSchema.spec.ts +3 -3
  93. package/src/linter/conditionSchema.spec.ts +3 -3
  94. package/src/linter/conditionSchema.ts +4 -4
  95. package/src/linter/featureSchema.spec.ts +39 -4
  96. package/src/linter/featureSchema.ts +82 -77
  97. package/src/linter/groupSchema.ts +11 -12
  98. package/src/linter/lintProject.spec.ts +121 -13
  99. package/src/linter/printError.ts +27 -10
  100. package/src/linter/schema.spec.ts +12 -11
  101. package/src/linter/schema.ts +7 -9
  102. package/src/linter/segmentSchema.spec.ts +5 -5
  103. package/src/linter/segmentSchema.ts +3 -1
  104. package/src/linter/testSchema.spec.ts +193 -0
  105. package/src/linter/testSchema.ts +36 -45
  106. package/src/linter/zodHelpers.ts +16 -0
@@ -744,26 +744,26 @@
744
744
  <span class="cline-any cline-neutral">&nbsp;</span>
745
745
  <span class="cline-any cline-neutral">&nbsp;</span>
746
746
  <span class="cline-any cline-yes">5x</span>
747
- <span class="cline-any cline-yes">64x</span>
747
+ <span class="cline-any cline-yes">76x</span>
748
748
  <span class="cline-any cline-neutral">&nbsp;</span>
749
- <span class="cline-any cline-yes">64x</span>
749
+ <span class="cline-any cline-yes">76x</span>
750
750
  <span class="cline-any cline-yes">10x</span>
751
751
  <span class="cline-any cline-neutral">&nbsp;</span>
752
752
  <span class="cline-any cline-neutral">&nbsp;</span>
753
- <span class="cline-any cline-yes">54x</span>
753
+ <span class="cline-any cline-yes">66x</span>
754
754
  <span class="cline-any cline-neutral">&nbsp;</span>
755
- <span class="cline-any cline-yes">54x</span>
756
- <span class="cline-any cline-yes">581x</span>
757
- <span class="cline-any cline-yes">581x</span>
755
+ <span class="cline-any cline-yes">66x</span>
756
+ <span class="cline-any cline-yes">709x</span>
757
+ <span class="cline-any cline-yes">709x</span>
758
758
  <span class="cline-any cline-neutral">&nbsp;</span>
759
- <span class="cline-any cline-yes">581x</span>
760
- <span class="cline-any cline-yes">25x</span>
761
- <span class="cline-any cline-yes">556x</span>
762
- <span class="cline-any cline-yes">556x</span>
759
+ <span class="cline-any cline-yes">709x</span>
760
+ <span class="cline-any cline-yes">31x</span>
761
+ <span class="cline-any cline-yes">678x</span>
762
+ <span class="cline-any cline-yes">678x</span>
763
763
  <span class="cline-any cline-neutral">&nbsp;</span>
764
764
  <span class="cline-any cline-neutral">&nbsp;</span>
765
765
  <span class="cline-any cline-neutral">&nbsp;</span>
766
- <span class="cline-any cline-yes">54x</span>
766
+ <span class="cline-any cline-yes">66x</span>
767
767
  <span class="cline-any cline-neutral">&nbsp;</span>
768
768
  <span class="cline-any cline-neutral">&nbsp;</span>
769
769
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -776,37 +776,37 @@
776
776
  <span class="cline-any cline-neutral">&nbsp;</span>
777
777
  <span class="cline-any cline-neutral">&nbsp;</span>
778
778
  <span class="cline-any cline-neutral">&nbsp;</span>
779
- <span class="cline-any cline-yes">11x</span>
780
- <span class="cline-any cline-yes">11x</span>
779
+ <span class="cline-any cline-yes">12x</span>
780
+ <span class="cline-any cline-yes">12x</span>
781
781
  <span class="cline-any cline-neutral">&nbsp;</span>
782
- <span class="cline-any cline-yes">11x</span>
782
+ <span class="cline-any cline-yes">12x</span>
783
783
  <span class="cline-any cline-neutral">&nbsp;</span>
784
- <span class="cline-any cline-yes">11x</span>
784
+ <span class="cline-any cline-yes">12x</span>
785
785
  <span class="cline-any cline-neutral">&nbsp;</span>
786
786
  <span class="cline-any cline-neutral">&nbsp;</span>
787
787
  <span class="cline-any cline-neutral">&nbsp;</span>
788
- <span class="cline-any cline-yes">512x</span>
789
- <span class="cline-any cline-yes">102x</span>
790
- <span class="cline-any cline-yes">410x</span>
791
- <span class="cline-any cline-yes">8x</span>
792
- <span class="cline-any cline-yes">402x</span>
793
- <span class="cline-any cline-yes">50x</span>
794
- <span class="cline-any cline-yes">352x</span>
795
- <span class="cline-any cline-yes">147x</span>
796
- <span class="cline-any cline-yes">205x</span>
797
- <span class="cline-any cline-yes">112x</span>
788
+ <span class="cline-any cline-yes">664x</span>
789
+ <span class="cline-any cline-yes">134x</span>
790
+ <span class="cline-any cline-yes">530x</span>
791
+ <span class="cline-any cline-yes">10x</span>
792
+ <span class="cline-any cline-yes">520x</span>
793
+ <span class="cline-any cline-yes">73x</span>
794
+ <span class="cline-any cline-yes">447x</span>
795
+ <span class="cline-any cline-yes">188x</span>
796
+ <span class="cline-any cline-yes">259x</span>
797
+ <span class="cline-any cline-yes">148x</span>
798
798
  <span class="cline-any cline-neutral">&nbsp;</span>
799
799
  <span class="cline-any cline-neutral">&nbsp;</span>
800
- <span class="cline-any cline-yes">93x</span>
800
+ <span class="cline-any cline-yes">111x</span>
801
801
  <span class="cline-any cline-neutral">&nbsp;</span>
802
802
  <span class="cline-any cline-neutral">&nbsp;</span>
803
803
  <span class="cline-any cline-neutral">&nbsp;</span>
804
- <span class="cline-any cline-yes">473x</span>
804
+ <span class="cline-any cline-yes">619x</span>
805
805
  <span class="cline-any cline-neutral">&nbsp;</span>
806
806
  <span class="cline-any cline-neutral">&nbsp;</span>
807
- <span class="cline-any cline-yes">473x</span>
807
+ <span class="cline-any cline-yes">619x</span>
808
808
  <span class="cline-any cline-neutral">&nbsp;</span>
809
- <span class="cline-any cline-yes">473x</span>
809
+ <span class="cline-any cline-yes">619x</span>
810
810
  <span class="cline-any cline-neutral">&nbsp;</span>
811
811
  <span class="cline-any cline-neutral">&nbsp;</span>
812
812
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -861,33 +861,33 @@
861
861
  <span class="cline-any cline-neutral">&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">39x</span>
865
- <span class="cline-any cline-yes">39x</span>
864
+ <span class="cline-any cline-yes">45x</span>
865
+ <span class="cline-any cline-yes">45x</span>
866
866
  <span class="cline-any cline-neutral">&nbsp;</span>
867
- <span class="cline-any cline-yes">39x</span>
867
+ <span class="cline-any cline-yes">45x</span>
868
868
  <span class="cline-any cline-neutral">&nbsp;</span>
869
869
  <span class="cline-any cline-neutral">&nbsp;</span>
870
- <span class="cline-any cline-yes">556x</span>
870
+ <span class="cline-any cline-yes">678x</span>
871
871
  <span class="cline-any cline-neutral">&nbsp;</span>
872
872
  <span class="cline-any cline-neutral">&nbsp;</span>
873
- <span class="cline-any cline-yes">556x</span>
873
+ <span class="cline-any cline-yes">678x</span>
874
874
  <span class="cline-any cline-neutral">&nbsp;</span>
875
875
  <span class="cline-any cline-neutral">&nbsp;</span>
876
- <span class="cline-any cline-yes">556x</span>
876
+ <span class="cline-any cline-yes">678x</span>
877
877
  <span class="cline-any cline-neutral">&nbsp;</span>
878
878
  <span class="cline-any cline-neutral">&nbsp;</span>
879
- <span class="cline-any cline-yes">556x</span>
879
+ <span class="cline-any cline-yes">678x</span>
880
880
  <span class="cline-any cline-neutral">&nbsp;</span>
881
881
  <span class="cline-any cline-neutral">&nbsp;</span>
882
882
  <span class="cline-any cline-neutral">&nbsp;</span>
883
883
  <span class="cline-any cline-neutral">&nbsp;</span>
884
- <span class="cline-any cline-yes">2x</span>
884
+ <span class="cline-any cline-yes">3x</span>
885
885
  <span class="cline-any cline-neutral">&nbsp;</span>
886
- <span class="cline-any cline-yes">2x</span>
886
+ <span class="cline-any cline-yes">3x</span>
887
887
  <span class="cline-any cline-neutral">&nbsp;</span>
888
888
  <span class="cline-any cline-neutral">&nbsp;</span>
889
889
  <span class="cline-any cline-neutral">&nbsp;</span>
890
- <span class="cline-any cline-yes">471x</span>
890
+ <span class="cline-any cline-yes">616x</span>
891
891
  <span class="cline-any cline-yes">6x</span>
892
892
  <span class="cline-any cline-yes">6x</span>
893
893
  <span class="cline-any cline-yes">6x</span>
@@ -931,10 +931,10 @@
931
931
  <span class="cline-any cline-yes">2x</span>
932
932
  <span class="cline-any cline-neutral">&nbsp;</span>
933
933
  <span class="cline-any cline-neutral">&nbsp;</span>
934
- <span class="cline-any cline-yes">465x</span>
935
- <span class="cline-any cline-yes">465x</span>
934
+ <span class="cline-any cline-yes">610x</span>
935
+ <span class="cline-any cline-yes">610x</span>
936
936
  <span class="cline-any cline-neutral">&nbsp;</span>
937
- <span class="cline-any cline-yes">465x</span>
937
+ <span class="cline-any cline-yes">610x</span>
938
938
  <span class="cline-any cline-neutral">&nbsp;</span>
939
939
  <span class="cline-any cline-neutral">&nbsp;</span>
940
940
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1963,7 +1963,7 @@ export class FilesystemAdapter extends Adapter {
1963
1963
  <div class='footer quiet pad2 space-top1 center small'>
1964
1964
  Code coverage generated by
1965
1965
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1966
- at 2026-04-16T19:15:59.143Z
1966
+ at 2026-04-26T16:47:51.164Z
1967
1967
  </div>
1968
1968
  <script src="../prettify.js"></script>
1969
1969
  <script>
@@ -146,7 +146,7 @@
146
146
  <div class='footer quiet pad2 space-top1 center small'>
147
147
  Code coverage generated by
148
148
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
149
- at 2026-04-16T19:15:59.143Z
149
+ at 2026-04-26T16:47:51.164Z
150
150
  </div>
151
151
  <script src="../prettify.js"></script>
152
152
  <script>
@@ -79,7 +79,7 @@ export * from "./filesystemAdapter";
79
79
  <div class='footer quiet pad2 space-top1 center small'>
80
80
  Code coverage generated by
81
81
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
82
- at 2026-04-16T19:15:59.143Z
82
+ at 2026-04-26T16:47:51.164Z
83
83
  </div>
84
84
  <script src="../prettify.js"></script>
85
85
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2026-04-16T19:15:59.143Z
104
+ at 2026-04-26T16:47:51.164Z
105
105
  </div>
106
106
  <script src="../prettify.js"></script>
107
107
  <script>
@@ -2937,8 +2937,8 @@ import {
2937
2937
  useVariable as useVariableOriginal,
2938
2938
  } from "@featurevisor/react";
2939
2939
  &nbsp;
2940
- import { FeatureKey, Variation, VariableKey, VariableType } from "./features";
2941
- import { Context } from "./context";
2940
+ import type { FeatureKey, Variation, VariableKey, VariableType } from "./features";
2941
+ import type { Context } from "./context";
2942
2942
  &nbsp;
2943
2943
  export function useFlag(featureKey: FeatureKey, context: Context = {}): boolean {
2944
2944
  return useFlagOriginal(featureKey, context);
@@ -2989,7 +2989,7 @@ export function useVariable&lt;F extends FeatureKey, V extends VariableKey&lt;F&
2989
2989
  <div class='footer quiet pad2 space-top1 center small'>
2990
2990
  Code coverage generated by
2991
2991
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2992
- at 2026-04-16T19:15:59.143Z
2992
+ at 2026-04-26T16:47:51.164Z
2993
2993
  </div>
2994
2994
  <script src="../prettify.js"></script>
2995
2995
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">69.94% </span>
26
+ <span class="strong">70.25% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>2541/3633</span>
28
+ <span class='fraction'>2567/3654</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">65.57% </span>
33
+ <span class="strong">65.64% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>1566/2388</span>
35
+ <span class='fraction'>1578/2404</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">68.18% </span>
40
+ <span class="strong">70.01% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>345/506</span>
42
+ <span class='fraction'>355/507</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">71.67% </span>
47
+ <span class="strong">71.98% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>2457/3428</span>
49
+ <span class='fraction'>2482/3448</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="linter"><a href="linter/index.html">linter</a></td>
143
- <td data-value="75.07" class="pic medium">
143
+ <td data-value="75.65" class="pic medium">
144
144
  <div class="chart"><div class="cover-fill" style="width: 75%"></div><div class="cover-empty" style="width: 25%"></div></div>
145
145
  </td>
146
- <td data-value="75.07" class="pct medium">75.07%</td>
147
- <td data-value="1745" class="abs medium">1310/1745</td>
148
- <td data-value="70.5" class="pct medium">70.5%</td>
149
- <td data-value="1400" class="abs medium">987/1400</td>
150
- <td data-value="77.77" class="pct medium">77.77%</td>
151
- <td data-value="234" class="abs medium">182/234</td>
152
- <td data-value="78.35" class="pct medium">78.35%</td>
153
- <td data-value="1617" class="abs medium">1267/1617</td>
146
+ <td data-value="75.65" class="pct medium">75.65%</td>
147
+ <td data-value="1766" class="abs medium">1336/1766</td>
148
+ <td data-value="70.55" class="pct medium">70.55%</td>
149
+ <td data-value="1416" class="abs medium">999/1416</td>
150
+ <td data-value="81.7" class="pct high">81.7%</td>
151
+ <td data-value="235" class="abs high">192/235</td>
152
+ <td data-value="78.92" class="pct medium">78.92%</td>
153
+ <td data-value="1637" class="abs medium">1292/1637</td>
154
154
  </tr>
155
155
 
156
156
  <tr>
@@ -206,7 +206,7 @@
206
206
  <div class='footer quiet pad2 space-top1 center small'>
207
207
  Code coverage generated by
208
208
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
209
- at 2026-04-16T19:15:59.143Z
209
+ at 2026-04-26T16:47:51.164Z
210
210
  </div>
211
211
  <script src="prettify.js"></script>
212
212
  <script>