@featurevisor/core 2.5.0 → 2.6.7
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.
- package/CHANGELOG.md +59 -0
- package/LICENSE +1 -1
- package/coverage/clover.xml +444 -78
- package/coverage/coverage-final.json +9 -3
- package/coverage/lcov-report/index.html +42 -42
- package/coverage/lcov-report/lib/builder/allocator.js.html +1 -1
- package/coverage/lcov-report/lib/builder/buildScopedConditions.js.html +373 -0
- package/coverage/lcov-report/lib/builder/buildScopedDatafile.js.html +403 -0
- package/coverage/lcov-report/lib/builder/buildScopedSegments.js.html +379 -0
- package/coverage/lcov-report/lib/builder/index.html +53 -8
- package/coverage/lcov-report/lib/builder/revision.js.html +1 -1
- package/coverage/lcov-report/lib/builder/traffic.js.html +1 -1
- package/coverage/lcov-report/lib/list/index.html +14 -14
- package/coverage/lcov-report/lib/list/matrix.js.html +23 -8
- package/coverage/lcov-report/lib/tester/helpers.js.html +1 -1
- package/coverage/lcov-report/lib/tester/index.html +1 -1
- package/coverage/lcov-report/src/builder/allocator.ts.html +1 -1
- package/coverage/lcov-report/src/builder/buildScopedConditions.ts.html +487 -0
- package/coverage/lcov-report/src/builder/buildScopedDatafile.ts.html +604 -0
- package/coverage/lcov-report/src/builder/buildScopedSegments.ts.html +544 -0
- package/coverage/lcov-report/src/builder/index.html +55 -10
- package/coverage/lcov-report/src/builder/revision.ts.html +1 -1
- package/coverage/lcov-report/src/builder/traffic.ts.html +3 -3
- package/coverage/lcov-report/src/list/index.html +14 -14
- package/coverage/lcov-report/src/list/matrix.ts.html +33 -12
- package/coverage/lcov-report/src/tester/helpers.ts.html +1 -1
- package/coverage/lcov-report/src/tester/index.html +1 -1
- package/coverage/lcov.info +810 -129
- package/jest.config.js +8 -0
- package/lib/builder/buildDatafile.d.ts +10 -0
- package/lib/builder/buildDatafile.js +27 -0
- package/lib/builder/buildDatafile.js.map +1 -1
- package/lib/builder/buildProject.d.ts +2 -0
- package/lib/builder/buildProject.js +38 -4
- package/lib/builder/buildProject.js.map +1 -1
- package/lib/builder/buildScopedConditions.d.ts +5 -0
- package/lib/builder/buildScopedConditions.js +97 -0
- package/lib/builder/buildScopedConditions.js.map +1 -0
- package/lib/builder/buildScopedConditions.spec.d.ts +1 -0
- package/lib/builder/buildScopedConditions.spec.js +2167 -0
- package/lib/builder/buildScopedConditions.spec.js.map +1 -0
- package/lib/builder/buildScopedDatafile.d.ts +2 -0
- package/lib/builder/buildScopedDatafile.js +107 -0
- package/lib/builder/buildScopedDatafile.js.map +1 -0
- package/lib/builder/buildScopedDatafile.spec.d.ts +1 -0
- package/lib/builder/buildScopedDatafile.spec.js +1988 -0
- package/lib/builder/buildScopedDatafile.spec.js.map +1 -0
- package/lib/builder/buildScopedSegments.d.ts +5 -0
- package/lib/builder/buildScopedSegments.js +99 -0
- package/lib/builder/buildScopedSegments.js.map +1 -0
- package/lib/builder/buildScopedSegments.spec.d.ts +1 -0
- package/lib/builder/buildScopedSegments.spec.js +1062 -0
- package/lib/builder/buildScopedSegments.spec.js.map +1 -0
- package/lib/builder/index.d.ts +1 -0
- package/lib/builder/index.js +1 -0
- package/lib/builder/index.js.map +1 -1
- package/lib/config/projectConfig.d.ts +9 -1
- package/lib/config/projectConfig.js +1 -0
- package/lib/config/projectConfig.js.map +1 -1
- package/lib/datasource/adapter.d.ts +3 -1
- package/lib/datasource/adapter.js.map +1 -1
- package/lib/datasource/filesystemAdapter.js +3 -1
- package/lib/datasource/filesystemAdapter.js.map +1 -1
- package/lib/linter/testSchema.d.ts +5 -0
- package/lib/linter/testSchema.js +8 -0
- package/lib/linter/testSchema.js.map +1 -1
- package/lib/list/matrix.js +5 -0
- package/lib/list/matrix.js.map +1 -1
- package/lib/tester/testFeature.d.ts +5 -3
- package/lib/tester/testFeature.js +34 -9
- package/lib/tester/testFeature.js.map +1 -1
- package/lib/tester/testProject.d.ts +3 -2
- package/lib/tester/testProject.js +40 -6
- package/lib/tester/testProject.js.map +1 -1
- package/package.json +5 -5
- package/src/builder/buildDatafile.ts +47 -0
- package/src/builder/buildProject.ts +58 -3
- package/src/builder/buildScopedConditions.spec.ts +2659 -0
- package/src/builder/buildScopedConditions.ts +134 -0
- package/src/builder/buildScopedDatafile.spec.ts +2236 -0
- package/src/builder/buildScopedDatafile.ts +173 -0
- package/src/builder/buildScopedSegments.spec.ts +1573 -0
- package/src/builder/buildScopedSegments.ts +153 -0
- package/src/builder/index.ts +1 -0
- package/src/config/projectConfig.ts +11 -1
- package/src/datasource/adapter.ts +4 -1
- package/src/datasource/filesystemAdapter.ts +4 -1
- package/src/linter/testSchema.ts +12 -0
- package/src/list/matrix.ts +7 -0
- package/src/tester/testFeature.ts +50 -16
- package/src/tester/testProject.ts +68 -8
|
@@ -136,7 +136,7 @@
|
|
|
136
136
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
137
137
|
Code coverage generated by
|
|
138
138
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
139
|
-
at
|
|
139
|
+
at 2026-02-05T22:45:36.569Z
|
|
140
140
|
</div>
|
|
141
141
|
<script src="../../prettify.js"></script>
|
|
142
142
|
<script>
|
|
@@ -30,9 +30,9 @@
|
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">76.31% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>29/38</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
@@ -643,7 +643,7 @@ export function getTraffic(
|
|
|
643
643
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
644
644
|
Code coverage generated by
|
|
645
645
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
646
|
-
at
|
|
646
|
+
at 2026-02-05T22:45:36.569Z
|
|
647
647
|
</div>
|
|
648
648
|
<script src="../../prettify.js"></script>
|
|
649
649
|
<script>
|
|
@@ -23,16 +23,16 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">23.
|
|
26
|
+
<span class="strong">23.25% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>20/
|
|
28
|
+
<span class='fraction'>20/86</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">10.34% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>3/
|
|
35
|
+
<span class='fraction'>3/29</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">23.
|
|
47
|
+
<span class="strong">23.17% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>19/
|
|
49
|
+
<span class='fraction'>19/82</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -80,17 +80,17 @@
|
|
|
80
80
|
</thead>
|
|
81
81
|
<tbody><tr>
|
|
82
82
|
<td class="file low" data-value="matrix.ts"><a href="matrix.ts.html">matrix.ts</a></td>
|
|
83
|
-
<td data-value="23.
|
|
83
|
+
<td data-value="23.25" class="pic low">
|
|
84
84
|
<div class="chart"><div class="cover-fill" style="width: 23%"></div><div class="cover-empty" style="width: 77%"></div></div>
|
|
85
85
|
</td>
|
|
86
|
-
<td data-value="23.
|
|
87
|
-
<td data-value="
|
|
88
|
-
<td data-value="
|
|
89
|
-
<td data-value="
|
|
86
|
+
<td data-value="23.25" class="pct low">23.25%</td>
|
|
87
|
+
<td data-value="86" class="abs low">20/86</td>
|
|
88
|
+
<td data-value="10.34" class="pct low">10.34%</td>
|
|
89
|
+
<td data-value="29" class="abs low">3/29</td>
|
|
90
90
|
<td data-value="20" class="pct low">20%</td>
|
|
91
91
|
<td data-value="10" class="abs low">2/10</td>
|
|
92
|
-
<td data-value="23.
|
|
93
|
-
<td data-value="
|
|
92
|
+
<td data-value="23.17" class="pct low">23.17%</td>
|
|
93
|
+
<td data-value="82" class="abs low">19/82</td>
|
|
94
94
|
</tr>
|
|
95
95
|
|
|
96
96
|
</tbody>
|
|
@@ -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
|
|
104
|
+
at 2026-02-05T22:45:36.569Z
|
|
105
105
|
</div>
|
|
106
106
|
<script src="../../prettify.js"></script>
|
|
107
107
|
<script>
|
|
@@ -23,16 +23,16 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">23.
|
|
26
|
+
<span class="strong">23.25% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>20/
|
|
28
|
+
<span class='fraction'>20/86</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">10.34% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>3/
|
|
35
|
+
<span class='fraction'>3/29</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">23.
|
|
47
|
+
<span class="strong">23.17% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>19/
|
|
49
|
+
<span class='fraction'>19/82</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -270,7 +270,14 @@
|
|
|
270
270
|
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
271
|
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
272
|
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
-
<a name='L208'></a><a href='#L208'>208</a
|
|
273
|
+
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
+
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
+
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
+
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
+
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
+
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
+
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
+
<a name='L215'></a><a href='#L215'>215</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
274
281
|
<span class="cline-any cline-neutral"> </span>
|
|
275
282
|
<span class="cline-any cline-neutral"> </span>
|
|
276
283
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -368,6 +375,13 @@
|
|
|
368
375
|
<span class="cline-any cline-neutral"> </span>
|
|
369
376
|
<span class="cline-any cline-neutral"> </span>
|
|
370
377
|
<span class="cline-any cline-neutral"> </span>
|
|
378
|
+
<span class="cline-any cline-neutral"> </span>
|
|
379
|
+
<span class="cline-any cline-no"> </span>
|
|
380
|
+
<span class="cline-any cline-no"> </span>
|
|
381
|
+
<span class="cline-any cline-neutral"> </span>
|
|
382
|
+
<span class="cline-any cline-neutral"> </span>
|
|
383
|
+
<span class="cline-any cline-neutral"> </span>
|
|
384
|
+
<span class="cline-any cline-neutral"> </span>
|
|
371
385
|
<span class="cline-any cline-no"> </span>
|
|
372
386
|
<span class="cline-any cline-neutral"> </span>
|
|
373
387
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -543,7 +557,7 @@ export function <span class="fstat-no" title="function not covered" >applyCombin
|
|
|
543
557
|
combination: any,
|
|
544
558
|
assertion: FeatureAssertion,
|
|
545
559
|
): FeatureAssertion {
|
|
546
|
-
const flattenedAssertion<span class="cstat-no" title="statement not covered" >
|
|
560
|
+
const flattenedAssertion = <span class="cstat-no" title="statement not covered" >{ ...assertion };</span>
|
|
547
561
|
|
|
548
562
|
// environment
|
|
549
563
|
<span class="cstat-no" title="statement not covered" > flattenedAssertion.environment = applyCombinationToValue(</span>
|
|
@@ -574,6 +588,13 @@ export function <span class="fstat-no" title="function not covered" >applyCombin
|
|
|
574
588
|
combination,
|
|
575
589
|
);
|
|
576
590
|
}
|
|
591
|
+
|
|
592
|
+
// scope
|
|
593
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (flattenedAssertion.scope) {</span>
|
|
594
|
+
<span class="cstat-no" title="statement not covered" > flattenedAssertion.scope = applyCombinationToValue(flattenedAssertion.scope, combination);</span>
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
// @TODO: support `tag` later, similar to `scope` above
|
|
577
598
|
|
|
578
599
|
<span class="cstat-no" title="statement not covered" > return flattenedAssertion;</span>
|
|
579
600
|
}
|
|
@@ -583,7 +604,7 @@ export function <span class="fstat-no" title="function not covered" >getFeatureA
|
|
|
583
604
|
assertionWithMatrix: FeatureAssertion,
|
|
584
605
|
): FeatureAssertion[] {
|
|
585
606
|
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!assertionWithMatrix.matrix) {</span>
|
|
586
|
-
const assertion<span class="cstat-no" title="statement not covered" >
|
|
607
|
+
const assertion = <span class="cstat-no" title="statement not covered" >{ ...assertionWithMatrix };</span>
|
|
587
608
|
|
|
588
609
|
let suffix;
|
|
589
610
|
|
|
@@ -636,7 +657,7 @@ export function <span class="fstat-no" title="function not covered" >applyCombin
|
|
|
636
657
|
combination: any,
|
|
637
658
|
assertion: SegmentAssertion,
|
|
638
659
|
): SegmentAssertion {
|
|
639
|
-
const flattenedAssertion<span class="cstat-no" title="statement not covered" >
|
|
660
|
+
const flattenedAssertion = <span class="cstat-no" title="statement not covered" >{ ...assertion };</span>
|
|
640
661
|
|
|
641
662
|
// context
|
|
642
663
|
<span class="cstat-no" title="statement not covered" > flattenedAssertion.context = Object.keys(flattenedAssertion.context).reduce(<span class="fstat-no" title="function not covered" >(a</span>cc, key) => {</span>
|
|
@@ -661,7 +682,7 @@ export function <span class="fstat-no" title="function not covered" >getSegmentA
|
|
|
661
682
|
assertionWithMatrix: SegmentAssertion,
|
|
662
683
|
): SegmentAssertion[] {
|
|
663
684
|
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!assertionWithMatrix.matrix) {</span>
|
|
664
|
-
const assertion<span class="cstat-no" title="statement not covered" >
|
|
685
|
+
const assertion = <span class="cstat-no" title="statement not covered" >{ ...assertionWithMatrix };</span>
|
|
665
686
|
<span class="cstat-no" title="statement not covered" > assertion.description = `Assertion #${aIndex + 1}${</span>
|
|
666
687
|
assertion.description ? `: ${assertion.description}` : ""
|
|
667
688
|
}`;
|
|
@@ -691,7 +712,7 @@ export function <span class="fstat-no" title="function not covered" >getSegmentA
|
|
|
691
712
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
692
713
|
Code coverage generated by
|
|
693
714
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
694
|
-
at
|
|
715
|
+
at 2026-02-05T22:45:36.569Z
|
|
695
716
|
</div>
|
|
696
717
|
<script src="../../prettify.js"></script>
|
|
697
718
|
<script>
|
|
@@ -298,7 +298,7 @@ export function checkIfArraysAreEqual(arr1: any[], arr2: any[]): boolean {
|
|
|
298
298
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
299
299
|
Code coverage generated by
|
|
300
300
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
301
|
-
at
|
|
301
|
+
at 2026-02-05T22:45:36.569Z
|
|
302
302
|
</div>
|
|
303
303
|
<script src="../../prettify.js"></script>
|
|
304
304
|
<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
|
|
104
|
+
at 2026-02-05T22:45:36.569Z
|
|
105
105
|
</div>
|
|
106
106
|
<script src="../../prettify.js"></script>
|
|
107
107
|
<script>
|