@featurevisor/core 2.18.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.
- package/CHANGELOG.md +11 -0
- package/coverage/clover.xml +1581 -1119
- package/coverage/coverage-final.json +29 -22
- package/coverage/lcov-report/builder/allocator.ts.html +26 -26
- package/coverage/lcov-report/builder/buildDatafile.ts.html +2017 -0
- package/coverage/lcov-report/builder/buildScopedConditions.ts.html +35 -35
- package/coverage/lcov-report/builder/buildScopedDatafile.ts.html +213 -45
- package/coverage/lcov-report/builder/buildScopedSegments.ts.html +28 -28
- package/coverage/lcov-report/builder/convertToV1.ts.html +583 -0
- package/coverage/lcov-report/builder/getFeatureRanges.ts.html +268 -0
- package/coverage/lcov-report/builder/hashes.ts.html +412 -0
- package/coverage/lcov-report/builder/index.html +90 -30
- package/coverage/lcov-report/builder/mutateVariables.ts.html +66 -45
- package/coverage/lcov-report/builder/mutator.ts.html +95 -95
- package/coverage/lcov-report/builder/revision.ts.html +1 -1
- package/coverage/lcov-report/builder/traffic.ts.html +60 -57
- package/coverage/lcov-report/config/index.html +1 -1
- package/coverage/lcov-report/config/index.ts.html +2 -2
- package/coverage/lcov-report/config/projectConfig.ts.html +28 -28
- package/coverage/lcov-report/datasource/adapter.ts.html +2 -2
- package/coverage/lcov-report/datasource/datasource.ts.html +4 -4
- package/coverage/lcov-report/datasource/filesystemAdapter.ts.html +34 -34
- package/coverage/lcov-report/datasource/index.html +1 -1
- package/coverage/lcov-report/datasource/index.ts.html +1 -1
- package/coverage/lcov-report/index.html +39 -39
- package/coverage/lcov-report/linter/attributeSchema.ts.html +1 -1
- package/coverage/lcov-report/linter/checkCircularDependency.ts.html +1 -1
- package/coverage/lcov-report/linter/checkPercentageExceedingSlot.ts.html +1 -1
- package/coverage/lcov-report/linter/conditionSchema.ts.html +17 -17
- package/coverage/lcov-report/linter/featureSchema.ts.html +686 -401
- package/coverage/lcov-report/linter/groupSchema.ts.html +1 -1
- package/coverage/lcov-report/linter/index.html +27 -27
- package/coverage/lcov-report/linter/lintProject.ts.html +25 -25
- package/coverage/lcov-report/linter/mutationNotation.ts.html +191 -122
- package/coverage/lcov-report/linter/printError.ts.html +1 -1
- package/coverage/lcov-report/linter/schema.ts.html +72 -72
- package/coverage/lcov-report/linter/segmentSchema.ts.html +1 -1
- package/coverage/lcov-report/linter/testSchema.ts.html +5 -5
- package/coverage/lcov-report/list/index.html +1 -1
- package/coverage/lcov-report/list/matrix.ts.html +1 -1
- package/coverage/lcov-report/parsers/index.html +1 -1
- package/coverage/lcov-report/parsers/index.ts.html +4 -4
- package/coverage/lcov-report/parsers/json.ts.html +2 -2
- package/coverage/lcov-report/parsers/yml.ts.html +6 -6
- package/coverage/lcov-report/tester/cliFormat.ts.html +1 -1
- package/coverage/lcov-report/tester/helpers.ts.html +1 -1
- package/coverage/lcov-report/tester/index.html +1 -1
- package/coverage/lcov-report/utils/extractKeys.ts.html +493 -0
- package/coverage/lcov-report/utils/git.ts.html +3 -3
- package/coverage/lcov-report/utils/index.html +54 -9
- package/coverage/lcov-report/utils/index.ts.html +94 -0
- package/coverage/lcov-report/utils/pretty.ts.html +121 -0
- package/coverage/lcov.info +2955 -2095
- package/lib/builder/buildDatafile.js +50 -3
- package/lib/builder/buildDatafile.js.map +1 -1
- package/lib/builder/buildDatafile.spec.d.ts +1 -0
- package/lib/builder/buildDatafile.spec.js +233 -0
- package/lib/builder/buildDatafile.spec.js.map +1 -0
- package/lib/builder/buildScopedDatafile.js +37 -1
- package/lib/builder/buildScopedDatafile.js.map +1 -1
- package/lib/builder/buildScopedDatafile.spec.js +289 -0
- package/lib/builder/buildScopedDatafile.spec.js.map +1 -1
- package/lib/builder/mutateVariables.d.ts +1 -1
- package/lib/builder/mutateVariables.js +4 -1
- package/lib/builder/mutateVariables.js.map +1 -1
- package/lib/builder/mutateVariables.spec.js +29 -0
- package/lib/builder/mutateVariables.spec.js.map +1 -1
- package/lib/builder/traffic.js +1 -0
- package/lib/builder/traffic.js.map +1 -1
- package/lib/builder/traffic.spec.js +26 -0
- package/lib/builder/traffic.spec.js.map +1 -1
- package/lib/linter/featureSchema.d.ts +228 -22
- package/lib/linter/featureSchema.js +137 -76
- package/lib/linter/featureSchema.js.map +1 -1
- package/lib/linter/featureSchema.spec.js +175 -0
- package/lib/linter/featureSchema.spec.js.map +1 -1
- package/lib/linter/mutationNotation.js +35 -10
- package/lib/linter/mutationNotation.js.map +1 -1
- package/lib/linter/mutationNotation.spec.js +31 -0
- package/lib/linter/mutationNotation.spec.js.map +1 -1
- package/package.json +5 -5
- package/src/builder/buildDatafile.spec.ts +267 -0
- package/src/builder/buildDatafile.ts +85 -4
- package/src/builder/buildScopedDatafile.spec.ts +330 -0
- package/src/builder/buildScopedDatafile.ts +57 -1
- package/src/builder/mutateVariables.spec.ts +45 -0
- package/src/builder/mutateVariables.ts +7 -0
- package/src/builder/traffic.spec.ts +33 -0
- package/src/builder/traffic.ts +1 -0
- package/src/linter/featureSchema.spec.ts +197 -0
- package/src/linter/featureSchema.ts +204 -109
- package/src/linter/mutationNotation.spec.ts +39 -0
- package/src/linter/mutationNotation.ts +30 -7
|
@@ -23,16 +23,16 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">85.79% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>145/169</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">77.07% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>121/157</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">93.
|
|
47
|
+
<span class="strong">93.1% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>135/145</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -482,7 +482,30 @@
|
|
|
482
482
|
<a name='L417'></a><a href='#L417'>417</a>
|
|
483
483
|
<a name='L418'></a><a href='#L418'>418</a>
|
|
484
484
|
<a name='L419'></a><a href='#L419'>419</a>
|
|
485
|
-
<a name='L420'></a><a href='#L420'>420</a
|
|
485
|
+
<a name='L420'></a><a href='#L420'>420</a>
|
|
486
|
+
<a name='L421'></a><a href='#L421'>421</a>
|
|
487
|
+
<a name='L422'></a><a href='#L422'>422</a>
|
|
488
|
+
<a name='L423'></a><a href='#L423'>423</a>
|
|
489
|
+
<a name='L424'></a><a href='#L424'>424</a>
|
|
490
|
+
<a name='L425'></a><a href='#L425'>425</a>
|
|
491
|
+
<a name='L426'></a><a href='#L426'>426</a>
|
|
492
|
+
<a name='L427'></a><a href='#L427'>427</a>
|
|
493
|
+
<a name='L428'></a><a href='#L428'>428</a>
|
|
494
|
+
<a name='L429'></a><a href='#L429'>429</a>
|
|
495
|
+
<a name='L430'></a><a href='#L430'>430</a>
|
|
496
|
+
<a name='L431'></a><a href='#L431'>431</a>
|
|
497
|
+
<a name='L432'></a><a href='#L432'>432</a>
|
|
498
|
+
<a name='L433'></a><a href='#L433'>433</a>
|
|
499
|
+
<a name='L434'></a><a href='#L434'>434</a>
|
|
500
|
+
<a name='L435'></a><a href='#L435'>435</a>
|
|
501
|
+
<a name='L436'></a><a href='#L436'>436</a>
|
|
502
|
+
<a name='L437'></a><a href='#L437'>437</a>
|
|
503
|
+
<a name='L438'></a><a href='#L438'>438</a>
|
|
504
|
+
<a name='L439'></a><a href='#L439'>439</a>
|
|
505
|
+
<a name='L440'></a><a href='#L440'>440</a>
|
|
506
|
+
<a name='L441'></a><a href='#L441'>441</a>
|
|
507
|
+
<a name='L442'></a><a href='#L442'>442</a>
|
|
508
|
+
<a name='L443'></a><a href='#L443'>443</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
486
509
|
<span class="cline-any cline-neutral"> </span>
|
|
487
510
|
<span class="cline-any cline-yes">3x</span>
|
|
488
511
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -502,8 +525,8 @@
|
|
|
502
525
|
<span class="cline-any cline-neutral"> </span>
|
|
503
526
|
<span class="cline-any cline-neutral"> </span>
|
|
504
527
|
<span class="cline-any cline-yes">3x</span>
|
|
505
|
-
<span class="cline-any cline-yes">
|
|
506
|
-
<span class="cline-any cline-yes">
|
|
528
|
+
<span class="cline-any cline-yes">858x</span>
|
|
529
|
+
<span class="cline-any cline-yes">858x</span>
|
|
507
530
|
<span class="cline-any cline-neutral"> </span>
|
|
508
531
|
<span class="cline-any cline-neutral"> </span>
|
|
509
532
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -512,22 +535,22 @@
|
|
|
512
535
|
<span class="cline-any cline-neutral"> </span>
|
|
513
536
|
<span class="cline-any cline-neutral"> </span>
|
|
514
537
|
<span class="cline-any cline-yes">3x</span>
|
|
515
|
-
<span class="cline-any cline-yes">
|
|
516
|
-
<span class="cline-any cline-yes">
|
|
538
|
+
<span class="cline-any cline-yes">227x</span>
|
|
539
|
+
<span class="cline-any cline-yes">227x</span>
|
|
517
540
|
<span class="cline-any cline-neutral"> </span>
|
|
518
|
-
<span class="cline-any cline-yes">
|
|
519
|
-
<span class="cline-any cline-yes">
|
|
520
|
-
<span class="cline-any cline-yes">
|
|
541
|
+
<span class="cline-any cline-yes">222x</span>
|
|
542
|
+
<span class="cline-any cline-yes">222x</span>
|
|
543
|
+
<span class="cline-any cline-yes">222x</span>
|
|
521
544
|
<span class="cline-any cline-neutral"> </span>
|
|
522
|
-
<span class="cline-any cline-yes">
|
|
545
|
+
<span class="cline-any cline-yes">222x</span>
|
|
523
546
|
<span class="cline-any cline-neutral"> </span>
|
|
524
547
|
<span class="cline-any cline-neutral"> </span>
|
|
525
548
|
<span class="cline-any cline-neutral"> </span>
|
|
526
549
|
<span class="cline-any cline-neutral"> </span>
|
|
527
550
|
<span class="cline-any cline-neutral"> </span>
|
|
528
551
|
<span class="cline-any cline-neutral"> </span>
|
|
529
|
-
<span class="cline-any cline-yes">
|
|
530
|
-
<span class="cline-any cline-yes">
|
|
552
|
+
<span class="cline-any cline-yes">222x</span>
|
|
553
|
+
<span class="cline-any cline-yes">222x</span>
|
|
531
554
|
<span class="cline-any cline-neutral"> </span>
|
|
532
555
|
<span class="cline-any cline-neutral"> </span>
|
|
533
556
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -538,18 +561,18 @@
|
|
|
538
561
|
<span class="cline-any cline-neutral"> </span>
|
|
539
562
|
<span class="cline-any cline-neutral"> </span>
|
|
540
563
|
<span class="cline-any cline-neutral"> </span>
|
|
541
|
-
<span class="cline-any cline-yes">
|
|
542
|
-
<span class="cline-any cline-yes">
|
|
543
|
-
<span class="cline-any cline-yes">
|
|
564
|
+
<span class="cline-any cline-yes">1329x</span>
|
|
565
|
+
<span class="cline-any cline-yes">1327x</span>
|
|
566
|
+
<span class="cline-any cline-yes">104x</span>
|
|
544
567
|
<span class="cline-any cline-neutral"> </span>
|
|
545
|
-
<span class="cline-any cline-yes">
|
|
568
|
+
<span class="cline-any cline-yes">1223x</span>
|
|
546
569
|
<span class="cline-any cline-neutral"> </span>
|
|
547
570
|
<span class="cline-any cline-neutral"> </span>
|
|
548
571
|
<span class="cline-any cline-neutral"> </span>
|
|
549
572
|
<span class="cline-any cline-neutral"> </span>
|
|
550
573
|
<span class="cline-any cline-neutral"> </span>
|
|
551
574
|
<span class="cline-any cline-neutral"> </span>
|
|
552
|
-
<span class="cline-any cline-yes">
|
|
575
|
+
<span class="cline-any cline-yes">768x</span>
|
|
553
576
|
<span class="cline-any cline-neutral"> </span>
|
|
554
577
|
<span class="cline-any cline-neutral"> </span>
|
|
555
578
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -564,34 +587,34 @@
|
|
|
564
587
|
<span class="cline-any cline-neutral"> </span>
|
|
565
588
|
<span class="cline-any cline-neutral"> </span>
|
|
566
589
|
<span class="cline-any cline-neutral"> </span>
|
|
567
|
-
<span class="cline-any cline-yes">
|
|
568
|
-
<span class="cline-any cline-yes">
|
|
590
|
+
<span class="cline-any cline-yes">214x</span>
|
|
591
|
+
<span class="cline-any cline-yes">214x</span>
|
|
569
592
|
<span class="cline-any cline-neutral"> </span>
|
|
570
|
-
<span class="cline-any cline-yes">
|
|
571
|
-
<span class="cline-any cline-yes">
|
|
572
|
-
<span class="cline-any cline-yes">
|
|
573
|
-
<span class="cline-any cline-yes">
|
|
574
|
-
<span class="cline-any cline-yes">
|
|
575
|
-
<span class="cline-any cline-yes">
|
|
576
|
-
<span class="cline-any cline-yes">
|
|
577
|
-
<span class="cline-any cline-yes">
|
|
578
|
-
<span class="cline-any cline-yes">
|
|
593
|
+
<span class="cline-any cline-yes">212x</span>
|
|
594
|
+
<span class="cline-any cline-yes">301x</span>
|
|
595
|
+
<span class="cline-any cline-yes">300x</span>
|
|
596
|
+
<span class="cline-any cline-yes">273x</span>
|
|
597
|
+
<span class="cline-any cline-yes">270x</span>
|
|
598
|
+
<span class="cline-any cline-yes">270x</span>
|
|
599
|
+
<span class="cline-any cline-yes">270x</span>
|
|
600
|
+
<span class="cline-any cline-yes">270x</span>
|
|
601
|
+
<span class="cline-any cline-yes">9x</span>
|
|
579
602
|
<span class="cline-any cline-yes">2x</span>
|
|
580
603
|
<span class="cline-any cline-yes">2x</span>
|
|
581
604
|
<span class="cline-any cline-yes">2x</span>
|
|
582
605
|
<span class="cline-any cline-neutral"> </span>
|
|
583
|
-
<span class="cline-any cline-yes">
|
|
584
|
-
<span class="cline-any cline-yes">
|
|
606
|
+
<span class="cline-any cline-yes">261x</span>
|
|
607
|
+
<span class="cline-any cline-yes">261x</span>
|
|
585
608
|
<span class="cline-any cline-neutral"> </span>
|
|
586
|
-
<span class="cline-any cline-yes">
|
|
587
|
-
<span class="cline-any cline-yes">
|
|
588
|
-
<span class="cline-any cline-yes">
|
|
589
|
-
<span class="cline-any cline-yes">
|
|
590
|
-
<span class="cline-any cline-yes">
|
|
591
|
-
<span class="cline-any cline-yes">
|
|
609
|
+
<span class="cline-any cline-yes">288x</span>
|
|
610
|
+
<span class="cline-any cline-yes">43x</span>
|
|
611
|
+
<span class="cline-any cline-yes">42x</span>
|
|
612
|
+
<span class="cline-any cline-yes">42x</span>
|
|
613
|
+
<span class="cline-any cline-yes">42x</span>
|
|
614
|
+
<span class="cline-any cline-yes">42x</span>
|
|
592
615
|
<span class="cline-any cline-neutral"> </span>
|
|
593
616
|
<span class="cline-any cline-neutral"> </span>
|
|
594
|
-
<span class="cline-any cline-yes">
|
|
617
|
+
<span class="cline-any cline-yes">200x</span>
|
|
595
618
|
<span class="cline-any cline-neutral"> </span>
|
|
596
619
|
<span class="cline-any cline-neutral"> </span>
|
|
597
620
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -604,50 +627,73 @@
|
|
|
604
627
|
<span class="cline-any cline-neutral"> </span>
|
|
605
628
|
<span class="cline-any cline-neutral"> </span>
|
|
606
629
|
<span class="cline-any cline-neutral"> </span>
|
|
607
|
-
<span class="cline-any cline-yes">
|
|
630
|
+
<span class="cline-any cline-yes">199x</span>
|
|
608
631
|
<span class="cline-any cline-yes">10x</span>
|
|
609
632
|
<span class="cline-any cline-yes">10x</span>
|
|
610
633
|
<span class="cline-any cline-neutral"> </span>
|
|
611
634
|
<span class="cline-any cline-neutral"> </span>
|
|
612
635
|
<span class="cline-any cline-neutral"> </span>
|
|
613
|
-
<span class="cline-any cline-yes">
|
|
614
|
-
<span class="cline-any cline-yes">
|
|
615
|
-
<span class="cline-any cline-yes">
|
|
616
|
-
<span class="cline-any cline-yes">
|
|
617
|
-
<span class="cline-any cline-yes">
|
|
618
|
-
<span class="cline-any cline-yes">
|
|
619
|
-
<span class="cline-any cline-yes">
|
|
620
|
-
<span class="cline-any cline-yes">
|
|
621
|
-
<span class="cline-any cline-yes">
|
|
622
|
-
<span class="cline-any cline-yes">
|
|
623
|
-
<span class="cline-any cline-yes">
|
|
624
|
-
<span class="cline-any cline-
|
|
625
|
-
<span class="cline-any cline-yes">
|
|
626
|
-
<span class="cline-any cline-yes">26x</span>
|
|
627
|
-
<span class="cline-any cline-yes">26x</span>
|
|
628
|
-
<span class="cline-any cline-yes">26x</span>
|
|
629
|
-
<span class="cline-any cline-yes">26x</span>
|
|
636
|
+
<span class="cline-any cline-yes">189x</span>
|
|
637
|
+
<span class="cline-any cline-yes">189x</span>
|
|
638
|
+
<span class="cline-any cline-yes">189x</span>
|
|
639
|
+
<span class="cline-any cline-yes">189x</span>
|
|
640
|
+
<span class="cline-any cline-yes">189x</span>
|
|
641
|
+
<span class="cline-any cline-yes">100x</span>
|
|
642
|
+
<span class="cline-any cline-yes">100x</span>
|
|
643
|
+
<span class="cline-any cline-yes">90x</span>
|
|
644
|
+
<span class="cline-any cline-yes">90x</span>
|
|
645
|
+
<span class="cline-any cline-yes">90x</span>
|
|
646
|
+
<span class="cline-any cline-yes">90x</span>
|
|
647
|
+
<span class="cline-any cline-yes">90x</span>
|
|
648
|
+
<span class="cline-any cline-yes">1x</span>
|
|
630
649
|
<span class="cline-any cline-no"> </span>
|
|
631
650
|
<span class="cline-any cline-no"> </span>
|
|
632
651
|
<span class="cline-any cline-no"> </span>
|
|
652
|
+
<span class="cline-any cline-neutral"> </span>
|
|
653
|
+
<span class="cline-any cline-yes">89x</span>
|
|
654
|
+
<span class="cline-any cline-neutral"> </span>
|
|
655
|
+
<span class="cline-any cline-yes">99x</span>
|
|
656
|
+
<span class="cline-any cline-yes">20x</span>
|
|
657
|
+
<span class="cline-any cline-yes">20x</span>
|
|
658
|
+
<span class="cline-any cline-yes">20x</span>
|
|
659
|
+
<span class="cline-any cline-yes">20x</span>
|
|
660
|
+
<span class="cline-any cline-neutral"> </span>
|
|
661
|
+
<span class="cline-any cline-yes">99x</span>
|
|
662
|
+
<span class="cline-any cline-neutral"> </span>
|
|
663
|
+
<span class="cline-any cline-yes">188x</span>
|
|
664
|
+
<span class="cline-any cline-yes">188x</span>
|
|
665
|
+
<span class="cline-any cline-yes">188x</span>
|
|
666
|
+
<span class="cline-any cline-yes">21x</span>
|
|
667
|
+
<span class="cline-any cline-yes">21x</span>
|
|
668
|
+
<span class="cline-any cline-yes">7x</span>
|
|
669
|
+
<span class="cline-any cline-yes">7x</span>
|
|
670
|
+
<span class="cline-any cline-yes">7x</span>
|
|
671
|
+
<span class="cline-any cline-yes">7x</span>
|
|
672
|
+
<span class="cline-any cline-yes">7x</span>
|
|
673
|
+
<span class="cline-any cline-yes">1x</span>
|
|
633
674
|
<span class="cline-any cline-no"> </span>
|
|
634
675
|
<span class="cline-any cline-neutral"> </span>
|
|
635
|
-
<span class="cline-any cline-yes">
|
|
676
|
+
<span class="cline-any cline-yes">6x</span>
|
|
677
|
+
<span class="cline-any cline-neutral"> </span>
|
|
678
|
+
<span class="cline-any cline-yes">6x</span>
|
|
679
|
+
<span class="cline-any cline-neutral"> </span>
|
|
680
|
+
<span class="cline-any cline-neutral"> </span>
|
|
681
|
+
<span class="cline-any cline-yes">20x</span>
|
|
682
|
+
<span class="cline-any cline-neutral"> </span>
|
|
683
|
+
<span class="cline-any cline-neutral"> </span>
|
|
684
|
+
<span class="cline-any cline-yes">20x</span>
|
|
685
|
+
<span class="cline-any cline-neutral"> </span>
|
|
686
|
+
<span class="cline-any cline-neutral"> </span>
|
|
636
687
|
<span class="cline-any cline-neutral"> </span>
|
|
637
|
-
<span class="cline-any cline-yes">32x</span>
|
|
638
688
|
<span class="cline-any cline-neutral"> </span>
|
|
639
|
-
<span class="cline-any cline-yes">85x</span>
|
|
640
|
-
<span class="cline-any cline-yes">85x</span>
|
|
641
|
-
<span class="cline-any cline-yes">85x</span>
|
|
642
|
-
<span class="cline-any cline-yes">15x</span>
|
|
643
689
|
<span class="cline-any cline-neutral"> </span>
|
|
644
690
|
<span class="cline-any cline-neutral"> </span>
|
|
645
|
-
<span class="cline-any cline-yes">
|
|
691
|
+
<span class="cline-any cline-yes">167x</span>
|
|
646
692
|
<span class="cline-any cline-neutral"> </span>
|
|
647
|
-
<span class="cline-any cline-yes">
|
|
693
|
+
<span class="cline-any cline-yes">167x</span>
|
|
648
694
|
<span class="cline-any cline-neutral"> </span>
|
|
649
695
|
<span class="cline-any cline-neutral"> </span>
|
|
650
|
-
<span class="cline-any cline-yes">
|
|
696
|
+
<span class="cline-any cline-yes">167x</span>
|
|
651
697
|
<span class="cline-any cline-neutral"> </span>
|
|
652
698
|
<span class="cline-any cline-neutral"> </span>
|
|
653
699
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -669,8 +715,8 @@
|
|
|
669
715
|
<span class="cline-any cline-neutral"> </span>
|
|
670
716
|
<span class="cline-any cline-neutral"> </span>
|
|
671
717
|
<span class="cline-any cline-neutral"> </span>
|
|
672
|
-
<span class="cline-any cline-yes">
|
|
673
|
-
<span class="cline-any cline-yes">
|
|
718
|
+
<span class="cline-any cline-yes">204x</span>
|
|
719
|
+
<span class="cline-any cline-yes">204x</span>
|
|
674
720
|
<span class="cline-any cline-yes">1x</span>
|
|
675
721
|
<span class="cline-any cline-neutral"> </span>
|
|
676
722
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -680,8 +726,8 @@
|
|
|
680
726
|
<span class="cline-any cline-neutral"> </span>
|
|
681
727
|
<span class="cline-any cline-neutral"> </span>
|
|
682
728
|
<span class="cline-any cline-neutral"> </span>
|
|
683
|
-
<span class="cline-any cline-yes">
|
|
684
|
-
<span class="cline-any cline-yes">
|
|
729
|
+
<span class="cline-any cline-yes">203x</span>
|
|
730
|
+
<span class="cline-any cline-yes">203x</span>
|
|
685
731
|
<span class="cline-any cline-yes">1x</span>
|
|
686
732
|
<span class="cline-any cline-neutral"> </span>
|
|
687
733
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -691,8 +737,8 @@
|
|
|
691
737
|
<span class="cline-any cline-neutral"> </span>
|
|
692
738
|
<span class="cline-any cline-neutral"> </span>
|
|
693
739
|
<span class="cline-any cline-neutral"> </span>
|
|
694
|
-
<span class="cline-any cline-yes">
|
|
695
|
-
<span class="cline-any cline-yes">
|
|
740
|
+
<span class="cline-any cline-yes">202x</span>
|
|
741
|
+
<span class="cline-any cline-yes">202x</span>
|
|
696
742
|
<span class="cline-any cline-yes">2x</span>
|
|
697
743
|
<span class="cline-any cline-neutral"> </span>
|
|
698
744
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -702,8 +748,8 @@
|
|
|
702
748
|
<span class="cline-any cline-neutral"> </span>
|
|
703
749
|
<span class="cline-any cline-neutral"> </span>
|
|
704
750
|
<span class="cline-any cline-neutral"> </span>
|
|
705
|
-
<span class="cline-any cline-yes">
|
|
706
|
-
<span class="cline-any cline-yes">
|
|
751
|
+
<span class="cline-any cline-yes">200x</span>
|
|
752
|
+
<span class="cline-any cline-yes">200x</span>
|
|
707
753
|
<span class="cline-any cline-neutral"> </span>
|
|
708
754
|
<span class="cline-any cline-no"> </span>
|
|
709
755
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -720,7 +766,7 @@
|
|
|
720
766
|
<span class="cline-any cline-neutral"> </span>
|
|
721
767
|
<span class="cline-any cline-neutral"> </span>
|
|
722
768
|
<span class="cline-any cline-neutral"> </span>
|
|
723
|
-
<span class="cline-any cline-yes">
|
|
769
|
+
<span class="cline-any cline-yes">200x</span>
|
|
724
770
|
<span class="cline-any cline-yes">1x</span>
|
|
725
771
|
<span class="cline-any cline-neutral"> </span>
|
|
726
772
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -731,13 +777,13 @@
|
|
|
731
777
|
<span class="cline-any cline-neutral"> </span>
|
|
732
778
|
<span class="cline-any cline-neutral"> </span>
|
|
733
779
|
<span class="cline-any cline-neutral"> </span>
|
|
734
|
-
<span class="cline-any cline-yes">
|
|
735
|
-
<span class="cline-any cline-yes">
|
|
780
|
+
<span class="cline-any cline-yes">199x</span>
|
|
781
|
+
<span class="cline-any cline-yes">199x</span>
|
|
736
782
|
<span class="cline-any cline-neutral"> </span>
|
|
737
|
-
<span class="cline-any cline-yes">
|
|
783
|
+
<span class="cline-any cline-yes">199x</span>
|
|
738
784
|
<span class="cline-any cline-neutral"> </span>
|
|
739
785
|
<span class="cline-any cline-neutral"> </span>
|
|
740
|
-
<span class="cline-any cline-yes">
|
|
786
|
+
<span class="cline-any cline-yes">25x</span>
|
|
741
787
|
<span class="cline-any cline-yes">1x</span>
|
|
742
788
|
<span class="cline-any cline-neutral"> </span>
|
|
743
789
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -747,8 +793,8 @@
|
|
|
747
793
|
<span class="cline-any cline-neutral"> </span>
|
|
748
794
|
<span class="cline-any cline-neutral"> </span>
|
|
749
795
|
<span class="cline-any cline-neutral"> </span>
|
|
750
|
-
<span class="cline-any cline-yes">
|
|
751
|
-
<span class="cline-any cline-yes">
|
|
796
|
+
<span class="cline-any cline-yes">24x</span>
|
|
797
|
+
<span class="cline-any cline-yes">24x</span>
|
|
752
798
|
<span class="cline-any cline-yes">2x</span>
|
|
753
799
|
<span class="cline-any cline-neutral"> </span>
|
|
754
800
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -758,7 +804,7 @@
|
|
|
758
804
|
<span class="cline-any cline-neutral"> </span>
|
|
759
805
|
<span class="cline-any cline-neutral"> </span>
|
|
760
806
|
<span class="cline-any cline-neutral"> </span>
|
|
761
|
-
<span class="cline-any cline-yes">
|
|
807
|
+
<span class="cline-any cline-yes">22x</span>
|
|
762
808
|
<span class="cline-any cline-no"> </span>
|
|
763
809
|
<span class="cline-any cline-neutral"> </span>
|
|
764
810
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -769,10 +815,10 @@
|
|
|
769
815
|
<span class="cline-any cline-neutral"> </span>
|
|
770
816
|
<span class="cline-any cline-neutral"> </span>
|
|
771
817
|
<span class="cline-any cline-neutral"> </span>
|
|
772
|
-
<span class="cline-any cline-yes">
|
|
818
|
+
<span class="cline-any cline-yes">22x</span>
|
|
773
819
|
<span class="cline-any cline-neutral"> </span>
|
|
774
820
|
<span class="cline-any cline-neutral"> </span>
|
|
775
|
-
<span class="cline-any cline-yes">
|
|
821
|
+
<span class="cline-any cline-yes">22x</span>
|
|
776
822
|
<span class="cline-any cline-neutral"> </span>
|
|
777
823
|
<span class="cline-any cline-neutral"> </span>
|
|
778
824
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -783,8 +829,8 @@
|
|
|
783
829
|
<span class="cline-any cline-neutral"> </span>
|
|
784
830
|
<span class="cline-any cline-neutral"> </span>
|
|
785
831
|
<span class="cline-any cline-neutral"> </span>
|
|
786
|
-
<span class="cline-any cline-yes">
|
|
787
|
-
<span class="cline-any cline-yes">
|
|
832
|
+
<span class="cline-any cline-yes">24x</span>
|
|
833
|
+
<span class="cline-any cline-yes">2x</span>
|
|
788
834
|
<span class="cline-any cline-neutral"> </span>
|
|
789
835
|
<span class="cline-any cline-neutral"> </span>
|
|
790
836
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -793,10 +839,10 @@
|
|
|
793
839
|
<span class="cline-any cline-neutral"> </span>
|
|
794
840
|
<span class="cline-any cline-neutral"> </span>
|
|
795
841
|
<span class="cline-any cline-neutral"> </span>
|
|
796
|
-
<span class="cline-any cline-yes">
|
|
797
|
-
<span class="cline-any cline-yes">
|
|
798
|
-
<span class="cline-any cline-yes">
|
|
799
|
-
<span class="cline-any cline-
|
|
842
|
+
<span class="cline-any cline-yes">22x</span>
|
|
843
|
+
<span class="cline-any cline-yes">22x</span>
|
|
844
|
+
<span class="cline-any cline-yes">17x</span>
|
|
845
|
+
<span class="cline-any cline-no"> </span>
|
|
800
846
|
<span class="cline-any cline-neutral"> </span>
|
|
801
847
|
<span class="cline-any cline-neutral"> </span>
|
|
802
848
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -805,9 +851,9 @@
|
|
|
805
851
|
<span class="cline-any cline-neutral"> </span>
|
|
806
852
|
<span class="cline-any cline-neutral"> </span>
|
|
807
853
|
<span class="cline-any cline-neutral"> </span>
|
|
808
|
-
<span class="cline-any cline-yes">
|
|
809
|
-
<span class="cline-any cline-yes">
|
|
810
|
-
<span class="cline-any cline-yes">
|
|
854
|
+
<span class="cline-any cline-yes">17x</span>
|
|
855
|
+
<span class="cline-any cline-yes">10x</span>
|
|
856
|
+
<span class="cline-any cline-yes">10x</span>
|
|
811
857
|
<span class="cline-any cline-yes">1x</span>
|
|
812
858
|
<span class="cline-any cline-neutral"> </span>
|
|
813
859
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -818,14 +864,14 @@
|
|
|
818
864
|
<span class="cline-any cline-neutral"> </span>
|
|
819
865
|
<span class="cline-any cline-neutral"> </span>
|
|
820
866
|
<span class="cline-any cline-neutral"> </span>
|
|
821
|
-
<span class="cline-any cline-yes">
|
|
867
|
+
<span class="cline-any cline-yes">9x</span>
|
|
822
868
|
<span class="cline-any cline-neutral"> </span>
|
|
823
869
|
<span class="cline-any cline-neutral"> </span>
|
|
824
|
-
<span class="cline-any cline-yes">
|
|
870
|
+
<span class="cline-any cline-yes">9x</span>
|
|
825
871
|
<span class="cline-any cline-neutral"> </span>
|
|
826
|
-
<span class="cline-any cline-yes">
|
|
872
|
+
<span class="cline-any cline-yes">7x</span>
|
|
827
873
|
<span class="cline-any cline-neutral"> </span>
|
|
828
|
-
<span class="cline-any cline-yes">
|
|
874
|
+
<span class="cline-any cline-yes">5x</span>
|
|
829
875
|
<span class="cline-any cline-no"> </span>
|
|
830
876
|
<span class="cline-any cline-neutral"> </span>
|
|
831
877
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -835,8 +881,8 @@
|
|
|
835
881
|
<span class="cline-any cline-neutral"> </span>
|
|
836
882
|
<span class="cline-any cline-neutral"> </span>
|
|
837
883
|
<span class="cline-any cline-neutral"> </span>
|
|
838
|
-
<span class="cline-any cline-yes">
|
|
839
|
-
<span class="cline-any cline-yes">
|
|
884
|
+
<span class="cline-any cline-yes">5x</span>
|
|
885
|
+
<span class="cline-any cline-yes">5x</span>
|
|
840
886
|
<span class="cline-any cline-neutral"> </span>
|
|
841
887
|
<span class="cline-any cline-neutral"> </span>
|
|
842
888
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -850,11 +896,11 @@
|
|
|
850
896
|
<span class="cline-any cline-neutral"> </span>
|
|
851
897
|
<span class="cline-any cline-neutral"> </span>
|
|
852
898
|
<span class="cline-any cline-neutral"> </span>
|
|
853
|
-
<span class="cline-any cline-yes">
|
|
899
|
+
<span class="cline-any cline-yes">2x</span>
|
|
854
900
|
<span class="cline-any cline-neutral"> </span>
|
|
855
901
|
<span class="cline-any cline-neutral"> </span>
|
|
856
|
-
<span class="cline-any cline-yes">
|
|
857
|
-
<span class="cline-any cline-yes">
|
|
902
|
+
<span class="cline-any cline-yes">150x</span>
|
|
903
|
+
<span class="cline-any cline-yes">5x</span>
|
|
858
904
|
<span class="cline-any cline-neutral"> </span>
|
|
859
905
|
<span class="cline-any cline-neutral"> </span>
|
|
860
906
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -863,7 +909,7 @@
|
|
|
863
909
|
<span class="cline-any cline-neutral"> </span>
|
|
864
910
|
<span class="cline-any cline-neutral"> </span>
|
|
865
911
|
<span class="cline-any cline-neutral"> </span>
|
|
866
|
-
<span class="cline-any cline-yes">
|
|
912
|
+
<span class="cline-any cline-yes">145x</span>
|
|
867
913
|
<span class="cline-any cline-yes">1x</span>
|
|
868
914
|
<span class="cline-any cline-neutral"> </span>
|
|
869
915
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -873,7 +919,7 @@
|
|
|
873
919
|
<span class="cline-any cline-neutral"> </span>
|
|
874
920
|
<span class="cline-any cline-neutral"> </span>
|
|
875
921
|
<span class="cline-any cline-neutral"> </span>
|
|
876
|
-
<span class="cline-any cline-yes">
|
|
922
|
+
<span class="cline-any cline-yes">144x</span>
|
|
877
923
|
<span class="cline-any cline-neutral"> </span>
|
|
878
924
|
<span class="cline-any cline-neutral"> </span>
|
|
879
925
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -897,9 +943,9 @@
|
|
|
897
943
|
<span class="cline-any cline-neutral"> </span>
|
|
898
944
|
<span class="cline-any cline-neutral"> </span>
|
|
899
945
|
<span class="cline-any cline-yes">3x</span>
|
|
900
|
-
<span class="cline-any cline-yes">
|
|
901
|
-
<span class="cline-any cline-yes">
|
|
902
|
-
<span class="cline-any cline-yes">
|
|
946
|
+
<span class="cline-any cline-yes">7x</span>
|
|
947
|
+
<span class="cline-any cline-yes">7x</span>
|
|
948
|
+
<span class="cline-any cline-yes">5x</span>
|
|
903
949
|
<span class="cline-any cline-neutral"> </span>
|
|
904
950
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import type { Schema } from "@featurevisor/types";
|
|
905
951
|
|
|
@@ -1035,30 +1081,53 @@ function getContainerSchemaAtPath(
|
|
|
1035
1081
|
const lastSegment = pathSegments[pathSegments.length - 1];
|
|
1036
1082
|
for (const seg of pathWithoutLast) {
|
|
1037
1083
|
<span class="missing-if-branch" title="if path not taken" >I</span>if (isOneOfSchema(current)) <span class="cstat-no" title="statement not covered" >return null;</span>
|
|
1038
|
-
if (
|
|
1039
|
-
if (current.type !== "array") return null;
|
|
1040
|
-
const itemSchema = current.items;
|
|
1041
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!itemSchema || typeof itemSchema !== "object") <span class="cstat-no" title="statement not covered" >return null;</span>
|
|
1042
|
-
current = resolveSchemaRef(itemSchema, schemasByKey);
|
|
1043
|
-
} else {
|
|
1084
|
+
if (seg.key) {
|
|
1044
1085
|
<span class="missing-if-branch" title="if path not taken" >I</span>if (current.type !== "object") <span class="cstat-no" title="statement not covered" >return null;</span>
|
|
1045
1086
|
const props = current.properties;
|
|
1046
1087
|
const additional = current.additionalProperties;
|
|
1047
1088
|
const next = props && typeof props === "object" ? props[seg.key] : <span class="branch-1 cbranch-no" title="branch not covered" >undefined;</span>
|
|
1048
|
-
|
|
1049
|
-
|
|
1089
|
+
if (next === undefined) {
|
|
1090
|
+
if (!additional || <span class="branch-1 cbranch-no" title="branch not covered" >typeof additional !== "object")</span> return null;
|
|
1050
1091
|
<span class="cstat-no" title="statement not covered" > current = resolveSchemaRef(additional, schemasByKey);</span>
|
|
1051
1092
|
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!current) <span class="cstat-no" title="statement not covered" >return null;</span></span>
|
|
1052
1093
|
<span class="cstat-no" title="statement not covered" > continue;</span>
|
|
1053
1094
|
}
|
|
1054
1095
|
current = resolveSchemaRef(next, schemasByKey);
|
|
1055
1096
|
}
|
|
1097
|
+
if ("index" in seg || "selector" in seg) {
|
|
1098
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (current?.type !== "array") <span class="cstat-no" title="statement not covered" >return null;</span>
|
|
1099
|
+
const itemSchema = current.items;
|
|
1100
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!itemSchema || typeof itemSchema !== "object") <span class="cstat-no" title="statement not covered" >return null;</span>
|
|
1101
|
+
current = resolveSchemaRef(itemSchema, schemasByKey);
|
|
1102
|
+
}
|
|
1056
1103
|
<span class="missing-if-branch" title="if path not taken" >I</span>if (!current) <span class="cstat-no" title="statement not covered" >return null;</span>
|
|
1057
1104
|
}
|
|
1058
1105
|
<span class="missing-if-branch" title="if path not taken" >I</span>if (!current) <span class="cstat-no" title="statement not covered" >return null;</span>
|
|
1059
1106
|
const parentSchema = current;
|
|
1060
1107
|
if ("index" in lastSegment || "selector" in lastSegment) {
|
|
1061
|
-
|
|
1108
|
+
let arraySchema: Schema | null = parentSchema;
|
|
1109
|
+
if (lastSegment.key) {
|
|
1110
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (arraySchema.type !== "object") <span class="cstat-no" title="statement not covered" >return null;</span>
|
|
1111
|
+
const props = arraySchema.properties;
|
|
1112
|
+
const additional = arraySchema.additionalProperties;
|
|
1113
|
+
const next = props && typeof props === "object" ? props[lastSegment.key] : <span class="branch-1 cbranch-no" title="branch not covered" >undefined;</span>
|
|
1114
|
+
if (next === undefined) {
|
|
1115
|
+
if (!additional || <span class="branch-1 cbranch-no" title="branch not covered" >typeof additional !== "object")</span> return null;
|
|
1116
|
+
<span class="cstat-no" title="statement not covered" > arraySchema = resolveSchemaRef(additional, schemasByKey);</span>
|
|
1117
|
+
} else {
|
|
1118
|
+
arraySchema = resolveSchemaRef(next, schemasByKey);
|
|
1119
|
+
}
|
|
1120
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!arraySchema) <span class="cstat-no" title="statement not covered" >return null;</span>
|
|
1121
|
+
}
|
|
1122
|
+
const normalizedLastSegment =
|
|
1123
|
+
"index" in lastSegment
|
|
1124
|
+
? ({ key: "", index: lastSegment.index } as PathSegment)
|
|
1125
|
+
: ({ key: "", selector: lastSegment.selector } as PathSegment);
|
|
1126
|
+
return {
|
|
1127
|
+
containerSchema: arraySchema,
|
|
1128
|
+
lastSegment: normalizedLastSegment,
|
|
1129
|
+
parentSchema: arraySchema,
|
|
1130
|
+
};
|
|
1062
1131
|
}
|
|
1063
1132
|
const propSchema =
|
|
1064
1133
|
parentSchema.properties?.[lastSegment.key] ?? parentSchema.additionalProperties;
|
|
@@ -1214,8 +1283,8 @@ export function validateMutationKey(
|
|
|
1214
1283
|
}
|
|
1215
1284
|
const last = container.lastSegment;
|
|
1216
1285
|
if ("index" in last || "selector" in last) {
|
|
1217
|
-
if (container.parentSchema.type !== "array") {
|
|
1218
|
-
return {
|
|
1286
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (container.parentSchema.type !== "array") {
|
|
1287
|
+
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
1219
1288
|
valid: false,
|
|
1220
1289
|
rootKey,
|
|
1221
1290
|
pathSegments,
|
|
@@ -1327,7 +1396,7 @@ export function parsePathMapKey(relativePath: string): PathSegment[] | null {
|
|
|
1327
1396
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1328
1397
|
Code coverage generated by
|
|
1329
1398
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1330
|
-
at 2026-
|
|
1399
|
+
at 2026-03-01T20:34:15.761Z
|
|
1331
1400
|
</div>
|
|
1332
1401
|
<script src="../prettify.js"></script>
|
|
1333
1402
|
<script>
|
|
@@ -223,7 +223,7 @@ export function <span class="fstat-no" title="function not covered" >printZodErr
|
|
|
223
223
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
224
224
|
Code coverage generated by
|
|
225
225
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
226
|
-
at 2026-
|
|
226
|
+
at 2026-03-01T20:34:15.761Z
|
|
227
227
|
</div>
|
|
228
228
|
<script src="../prettify.js"></script>
|
|
229
229
|
<script>
|