@featurevisor/core 1.7.1 → 1.7.2

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/.eslintcache CHANGED
@@ -1 +1 @@
1
- [{"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/allocator.spec.ts":"1","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/allocator.ts":"2","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/buildDatafile.ts":"3","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/buildProject.ts":"4","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/getFeatureRanges.ts":"5","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/index.ts":"6","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/traffic.spec.ts":"7","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/traffic.ts":"8","/home/runner/work/featurevisor/featurevisor/packages/core/src/config/index.ts":"9","/home/runner/work/featurevisor/featurevisor/packages/core/src/config/parsers.ts":"10","/home/runner/work/featurevisor/featurevisor/packages/core/src/config/projectConfig.ts":"11","/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/adapter.ts":"12","/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/datasource.ts":"13","/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/filesystemAdapter.ts":"14","/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/index.ts":"15","/home/runner/work/featurevisor/featurevisor/packages/core/src/dependencies.ts":"16","/home/runner/work/featurevisor/featurevisor/packages/core/src/find-duplicate-segments/findDuplicateSegments.ts":"17","/home/runner/work/featurevisor/featurevisor/packages/core/src/find-duplicate-segments/index.ts":"18","/home/runner/work/featurevisor/featurevisor/packages/core/src/generate-code/index.ts":"19","/home/runner/work/featurevisor/featurevisor/packages/core/src/generate-code/typescript.ts":"20","/home/runner/work/featurevisor/featurevisor/packages/core/src/index.ts":"21","/home/runner/work/featurevisor/featurevisor/packages/core/src/init/index.ts":"22","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/attributeSchema.ts":"23","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/checkCircularDependency.ts":"24","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/checkPercentageExceedingSlot.ts":"25","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/conditionSchema.ts":"26","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/featureSchema.ts":"27","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/groupSchema.ts":"28","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/index.ts":"29","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/lintProject.ts":"30","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/printError.ts":"31","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/segmentSchema.ts":"32","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/testSchema.ts":"33","/home/runner/work/featurevisor/featurevisor/packages/core/src/restore/index.ts":"34","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/exportSite.ts":"35","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/generateHistory.ts":"36","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/generateSiteSearchIndex.ts":"37","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getLastModifiedFromHistory.ts":"38","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getOwnerAndRepoFromUrl.ts":"39","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getRelativePaths.ts":"40","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getRepoDetails.ts":"41","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/index.ts":"42","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/serveSite.ts":"43","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/checkIfArraysAreEqual.ts":"44","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/checkIfObjectsAreEqual.spec.ts":"45","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/checkIfObjectsAreEqual.ts":"46","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/cliFormat.ts":"47","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/index.ts":"48","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/matrix.spec.ts":"49","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/matrix.ts":"50","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/prettyDuration.ts":"51","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/printTestResult.ts":"52","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/testFeature.ts":"53","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/testProject.ts":"54","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/testSegment.ts":"55","/home/runner/work/featurevisor/featurevisor/packages/core/src/utils/extractKeys.ts":"56","/home/runner/work/featurevisor/featurevisor/packages/core/src/utils/git.ts":"57","/home/runner/work/featurevisor/featurevisor/packages/core/src/utils/index.ts":"58"},{"size":3214,"mtime":1708015756692,"results":"59","hashOfConfig":"60"},{"size":1014,"mtime":1708015756692,"results":"61","hashOfConfig":"60"},{"size":9170,"mtime":1708015756692,"results":"62","hashOfConfig":"60"},{"size":2410,"mtime":1708015756692,"results":"63","hashOfConfig":"60"},{"size":1755,"mtime":1708015756692,"results":"64","hashOfConfig":"60"},{"size":65,"mtime":1708015756692,"results":"65","hashOfConfig":"60"},{"size":12889,"mtime":1708015756692,"results":"66","hashOfConfig":"60"},{"size":5052,"mtime":1708015756692,"results":"67","hashOfConfig":"60"},{"size":60,"mtime":1708015756692,"results":"68","hashOfConfig":"60"},{"size":1035,"mtime":1708015756692,"results":"69","hashOfConfig":"60"},{"size":3464,"mtime":1708015756692,"results":"70","hashOfConfig":"60"},{"size":1305,"mtime":1708015756692,"results":"71","hashOfConfig":"60"},{"size":5028,"mtime":1708015756692,"results":"72","hashOfConfig":"60"},{"size":9261,"mtime":1708015756692,"results":"73","hashOfConfig":"60"},{"size":94,"mtime":1708015756692,"results":"74","hashOfConfig":"60"},{"size":279,"mtime":1708015756692,"results":"75","hashOfConfig":"60"},{"size":1033,"mtime":1708015756692,"results":"76","hashOfConfig":"60"},{"size":540,"mtime":1708015756692,"results":"77","hashOfConfig":"60"},{"size":1476,"mtime":1708015756692,"results":"78","hashOfConfig":"60"},{"size":6250,"mtime":1708015756692,"results":"79","hashOfConfig":"60"},{"size":318,"mtime":1708015756692,"results":"80","hashOfConfig":"60"},{"size":1308,"mtime":1708015756692,"results":"81","hashOfConfig":"60"},{"size":359,"mtime":1708015756692,"results":"82","hashOfConfig":"60"},{"size":1119,"mtime":1708015756692,"results":"83","hashOfConfig":"60"},{"size":1464,"mtime":1708015756692,"results":"84","hashOfConfig":"60"},{"size":4007,"mtime":1708015756692,"results":"85","hashOfConfig":"60"},{"size":7758,"mtime":1708015756692,"results":"86","hashOfConfig":"60"},{"size":1221,"mtime":1708015756692,"results":"87","hashOfConfig":"60"},{"size":31,"mtime":1708015756692,"results":"88","hashOfConfig":"60"},{"size":8340,"mtime":1708015756692,"results":"89","hashOfConfig":"60"},{"size":569,"mtime":1708015756692,"results":"90","hashOfConfig":"60"},{"size":364,"mtime":1708015756692,"results":"91","hashOfConfig":"60"},{"size":2295,"mtime":1708015756692,"results":"92","hashOfConfig":"60"},{"size":641,"mtime":1708015756692,"results":"93","hashOfConfig":"60"},{"size":1481,"mtime":1708015756692,"results":"94","hashOfConfig":"60"},{"size":1178,"mtime":1708015756692,"results":"95","hashOfConfig":"60"},{"size":6187,"mtime":1708015756692,"results":"96","hashOfConfig":"60"},{"size":516,"mtime":1708015756692,"results":"97","hashOfConfig":"60"},{"size":496,"mtime":1708015756692,"results":"98","hashOfConfig":"60"},{"size":607,"mtime":1708015756692,"results":"99","hashOfConfig":"60"},{"size":1560,"mtime":1708015756692,"results":"100","hashOfConfig":"60"},{"size":59,"mtime":1708015756692,"results":"101","hashOfConfig":"60"},{"size":1681,"mtime":1708015756692,"results":"102","hashOfConfig":"60"},{"size":298,"mtime":1708015756692,"results":"103","hashOfConfig":"60"},{"size":932,"mtime":1708015756692,"results":"104","hashOfConfig":"60"},{"size":468,"mtime":1708015756692,"results":"105","hashOfConfig":"60"},{"size":212,"mtime":1708015756692,"results":"106","hashOfConfig":"60"},{"size":62,"mtime":1708015756692,"results":"107","hashOfConfig":"60"},{"size":1188,"mtime":1708015756692,"results":"108","hashOfConfig":"60"},{"size":5021,"mtime":1708015756692,"results":"109","hashOfConfig":"60"},{"size":516,"mtime":1708015756692,"results":"110","hashOfConfig":"60"},{"size":1691,"mtime":1708015756692,"results":"111","hashOfConfig":"60"},{"size":7394,"mtime":1708015756692,"results":"112","hashOfConfig":"60"},{"size":4420,"mtime":1708015756692,"results":"113","hashOfConfig":"60"},{"size":2273,"mtime":1708015756692,"results":"114","hashOfConfig":"60"},{"size":1993,"mtime":1708015756692,"results":"115","hashOfConfig":"60"},{"size":3641,"mtime":1708015756692,"results":"116","hashOfConfig":"60"},{"size":54,"mtime":1708015756692,"results":"117","hashOfConfig":"60"},{"filePath":"118","messages":"119","suppressedMessages":"120","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"o8ti19",{"filePath":"121","messages":"122","suppressedMessages":"123","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"124","messages":"125","suppressedMessages":"126","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"127","messages":"128","suppressedMessages":"129","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"130","messages":"131","suppressedMessages":"132","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"133","messages":"134","suppressedMessages":"135","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"136","messages":"137","suppressedMessages":"138","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"139","messages":"140","suppressedMessages":"141","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"142","messages":"143","suppressedMessages":"144","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"145","messages":"146","suppressedMessages":"147","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"148","messages":"149","suppressedMessages":"150","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"151","messages":"152","suppressedMessages":"153","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"154","messages":"155","suppressedMessages":"156","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"157","messages":"158","suppressedMessages":"159","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"160","messages":"161","suppressedMessages":"162","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"163","messages":"164","suppressedMessages":"165","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"166","messages":"167","suppressedMessages":"168","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"169","messages":"170","suppressedMessages":"171","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"172","messages":"173","suppressedMessages":"174","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"175","messages":"176","suppressedMessages":"177","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"178","messages":"179","suppressedMessages":"180","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"181","messages":"182","suppressedMessages":"183","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"184","messages":"185","suppressedMessages":"186","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"187","messages":"188","suppressedMessages":"189","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"190","messages":"191","suppressedMessages":"192","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"193","messages":"194","suppressedMessages":"195","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"196","messages":"197","suppressedMessages":"198","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"199","messages":"200","suppressedMessages":"201","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"202","messages":"203","suppressedMessages":"204","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"205","messages":"206","suppressedMessages":"207","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"208","messages":"209","suppressedMessages":"210","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"211","messages":"212","suppressedMessages":"213","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"214","messages":"215","suppressedMessages":"216","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"217","messages":"218","suppressedMessages":"219","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"220","messages":"221","suppressedMessages":"222","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"223","messages":"224","suppressedMessages":"225","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"226","messages":"227","suppressedMessages":"228","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"229","messages":"230","suppressedMessages":"231","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"232","messages":"233","suppressedMessages":"234","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"235","messages":"236","suppressedMessages":"237","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"238","messages":"239","suppressedMessages":"240","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"241","messages":"242","suppressedMessages":"243","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"244","messages":"245","suppressedMessages":"246","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"247","messages":"248","suppressedMessages":"249","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"250","messages":"251","suppressedMessages":"252","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"253","messages":"254","suppressedMessages":"255","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"256","messages":"257","suppressedMessages":"258","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"259","messages":"260","suppressedMessages":"261","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"262","messages":"263","suppressedMessages":"264","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"265","messages":"266","suppressedMessages":"267","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"268","messages":"269","suppressedMessages":"270","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"271","messages":"272","suppressedMessages":"273","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"274","messages":"275","suppressedMessages":"276","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"277","messages":"278","suppressedMessages":"279","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"280","messages":"281","suppressedMessages":"282","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"283","messages":"284","suppressedMessages":"285","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"286","messages":"287","suppressedMessages":"288","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"289","messages":"290","suppressedMessages":"291","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/allocator.spec.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/allocator.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/buildDatafile.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/buildProject.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/getFeatureRanges.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/traffic.spec.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/traffic.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/config/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/config/parsers.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/config/projectConfig.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/adapter.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/datasource.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/filesystemAdapter.ts",[],["292","293"],"/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/dependencies.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/find-duplicate-segments/findDuplicateSegments.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/find-duplicate-segments/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/generate-code/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/generate-code/typescript.ts",[],["294"],"/home/runner/work/featurevisor/featurevisor/packages/core/src/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/init/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/attributeSchema.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/checkCircularDependency.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/checkPercentageExceedingSlot.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/conditionSchema.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/featureSchema.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/groupSchema.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/lintProject.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/printError.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/segmentSchema.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/testSchema.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/restore/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/exportSite.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/generateHistory.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/generateSiteSearchIndex.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getLastModifiedFromHistory.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getOwnerAndRepoFromUrl.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getRelativePaths.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getRepoDetails.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/serveSite.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/checkIfArraysAreEqual.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/checkIfObjectsAreEqual.spec.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/checkIfObjectsAreEqual.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/cliFormat.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/matrix.spec.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/matrix.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/prettyDuration.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/printTestResult.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/testFeature.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/testProject.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/testSegment.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/utils/extractKeys.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/utils/git.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/utils/index.ts",[],[],{"ruleId":"295","severity":2,"message":"296","line":22,"column":7,"nodeType":"297","messageId":"298","endLine":22,"endColumn":18,"suppressions":"299"},{"ruleId":"300","severity":2,"message":"301","line":22,"column":21,"nodeType":"302","messageId":"303","endLine":22,"endColumn":81,"fix":"304","suppressions":"305"},{"ruleId":"295","severity":2,"message":"306","line":51,"column":10,"nodeType":"297","messageId":"298","endLine":51,"endColumn":38,"suppressions":"307"},"@typescript-eslint/no-unused-vars","'commitRegex' is assigned a value but never used.","Identifier","unusedVar",["308"],"no-regex-spaces","Spaces are hard to count. Use {3}.","Literal","multipleSpaces",{"range":"309","text":"310"},["311"],"'getFeaturevisorTypeFromValue' is defined but never used.",["312"],{"kind":"313","justification":"314"},[515,518]," {3}",{"kind":"313","justification":"314"},{"kind":"313","justification":"314"},"directive",""]
1
+ [{"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/allocator.spec.ts":"1","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/allocator.ts":"2","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/buildDatafile.ts":"3","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/buildProject.ts":"4","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/getFeatureRanges.ts":"5","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/index.ts":"6","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/traffic.spec.ts":"7","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/traffic.ts":"8","/home/runner/work/featurevisor/featurevisor/packages/core/src/config/index.ts":"9","/home/runner/work/featurevisor/featurevisor/packages/core/src/config/parsers.ts":"10","/home/runner/work/featurevisor/featurevisor/packages/core/src/config/projectConfig.ts":"11","/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/adapter.ts":"12","/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/datasource.ts":"13","/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/filesystemAdapter.ts":"14","/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/index.ts":"15","/home/runner/work/featurevisor/featurevisor/packages/core/src/dependencies.ts":"16","/home/runner/work/featurevisor/featurevisor/packages/core/src/find-duplicate-segments/findDuplicateSegments.ts":"17","/home/runner/work/featurevisor/featurevisor/packages/core/src/find-duplicate-segments/index.ts":"18","/home/runner/work/featurevisor/featurevisor/packages/core/src/generate-code/index.ts":"19","/home/runner/work/featurevisor/featurevisor/packages/core/src/generate-code/typescript.ts":"20","/home/runner/work/featurevisor/featurevisor/packages/core/src/index.ts":"21","/home/runner/work/featurevisor/featurevisor/packages/core/src/init/index.ts":"22","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/attributeSchema.ts":"23","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/checkCircularDependency.ts":"24","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/checkPercentageExceedingSlot.ts":"25","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/conditionSchema.ts":"26","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/featureSchema.ts":"27","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/groupSchema.ts":"28","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/index.ts":"29","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/lintProject.ts":"30","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/printError.ts":"31","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/segmentSchema.ts":"32","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/testSchema.ts":"33","/home/runner/work/featurevisor/featurevisor/packages/core/src/restore/index.ts":"34","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/exportSite.ts":"35","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/generateHistory.ts":"36","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/generateSiteSearchIndex.ts":"37","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getLastModifiedFromHistory.ts":"38","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getOwnerAndRepoFromUrl.ts":"39","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getRelativePaths.ts":"40","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getRepoDetails.ts":"41","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/index.ts":"42","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/serveSite.ts":"43","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/checkIfArraysAreEqual.ts":"44","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/checkIfObjectsAreEqual.spec.ts":"45","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/checkIfObjectsAreEqual.ts":"46","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/cliFormat.ts":"47","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/index.ts":"48","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/matrix.spec.ts":"49","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/matrix.ts":"50","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/prettyDuration.ts":"51","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/printTestResult.ts":"52","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/testFeature.ts":"53","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/testProject.ts":"54","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/testSegment.ts":"55","/home/runner/work/featurevisor/featurevisor/packages/core/src/utils/extractKeys.ts":"56","/home/runner/work/featurevisor/featurevisor/packages/core/src/utils/git.ts":"57","/home/runner/work/featurevisor/featurevisor/packages/core/src/utils/index.ts":"58"},{"size":3214,"mtime":1708539864012,"results":"59","hashOfConfig":"60"},{"size":1014,"mtime":1708539864012,"results":"61","hashOfConfig":"60"},{"size":9170,"mtime":1708539864012,"results":"62","hashOfConfig":"60"},{"size":2410,"mtime":1708539864012,"results":"63","hashOfConfig":"60"},{"size":1755,"mtime":1708539864012,"results":"64","hashOfConfig":"60"},{"size":65,"mtime":1708539864012,"results":"65","hashOfConfig":"60"},{"size":12889,"mtime":1708539864012,"results":"66","hashOfConfig":"60"},{"size":5052,"mtime":1708539864012,"results":"67","hashOfConfig":"60"},{"size":60,"mtime":1708539864012,"results":"68","hashOfConfig":"60"},{"size":1035,"mtime":1708539864012,"results":"69","hashOfConfig":"60"},{"size":3464,"mtime":1708539864012,"results":"70","hashOfConfig":"60"},{"size":1305,"mtime":1708539864012,"results":"71","hashOfConfig":"60"},{"size":5028,"mtime":1708539864012,"results":"72","hashOfConfig":"60"},{"size":9261,"mtime":1708539864012,"results":"73","hashOfConfig":"60"},{"size":94,"mtime":1708539864012,"results":"74","hashOfConfig":"60"},{"size":279,"mtime":1708539864012,"results":"75","hashOfConfig":"60"},{"size":1033,"mtime":1708539864012,"results":"76","hashOfConfig":"60"},{"size":540,"mtime":1708539864012,"results":"77","hashOfConfig":"60"},{"size":1476,"mtime":1708539864012,"results":"78","hashOfConfig":"60"},{"size":6250,"mtime":1708539864012,"results":"79","hashOfConfig":"60"},{"size":318,"mtime":1708539864012,"results":"80","hashOfConfig":"60"},{"size":1308,"mtime":1708539864012,"results":"81","hashOfConfig":"60"},{"size":359,"mtime":1708539864012,"results":"82","hashOfConfig":"60"},{"size":1119,"mtime":1708539864012,"results":"83","hashOfConfig":"60"},{"size":1464,"mtime":1708539864012,"results":"84","hashOfConfig":"60"},{"size":4007,"mtime":1708539864012,"results":"85","hashOfConfig":"60"},{"size":7758,"mtime":1708539864012,"results":"86","hashOfConfig":"60"},{"size":1221,"mtime":1708539864012,"results":"87","hashOfConfig":"60"},{"size":31,"mtime":1708539864012,"results":"88","hashOfConfig":"60"},{"size":8340,"mtime":1708539864012,"results":"89","hashOfConfig":"60"},{"size":982,"mtime":1708539864012,"results":"90","hashOfConfig":"60"},{"size":364,"mtime":1708539864012,"results":"91","hashOfConfig":"60"},{"size":2432,"mtime":1708539864012,"results":"92","hashOfConfig":"60"},{"size":641,"mtime":1708539864016,"results":"93","hashOfConfig":"60"},{"size":1481,"mtime":1708539864016,"results":"94","hashOfConfig":"60"},{"size":1178,"mtime":1708539864016,"results":"95","hashOfConfig":"60"},{"size":6187,"mtime":1708539864016,"results":"96","hashOfConfig":"60"},{"size":516,"mtime":1708539864016,"results":"97","hashOfConfig":"60"},{"size":496,"mtime":1708539864016,"results":"98","hashOfConfig":"60"},{"size":607,"mtime":1708539864016,"results":"99","hashOfConfig":"60"},{"size":1560,"mtime":1708539864016,"results":"100","hashOfConfig":"60"},{"size":59,"mtime":1708539864016,"results":"101","hashOfConfig":"60"},{"size":1681,"mtime":1708539864016,"results":"102","hashOfConfig":"60"},{"size":298,"mtime":1708539864016,"results":"103","hashOfConfig":"60"},{"size":932,"mtime":1708539864016,"results":"104","hashOfConfig":"60"},{"size":468,"mtime":1708539864016,"results":"105","hashOfConfig":"60"},{"size":212,"mtime":1708539864016,"results":"106","hashOfConfig":"60"},{"size":62,"mtime":1708539864016,"results":"107","hashOfConfig":"60"},{"size":1188,"mtime":1708539864016,"results":"108","hashOfConfig":"60"},{"size":5021,"mtime":1708539864016,"results":"109","hashOfConfig":"60"},{"size":516,"mtime":1708539864016,"results":"110","hashOfConfig":"60"},{"size":1691,"mtime":1708539864016,"results":"111","hashOfConfig":"60"},{"size":7394,"mtime":1708539864016,"results":"112","hashOfConfig":"60"},{"size":4420,"mtime":1708539864016,"results":"113","hashOfConfig":"60"},{"size":2273,"mtime":1708539864016,"results":"114","hashOfConfig":"60"},{"size":1993,"mtime":1708539864016,"results":"115","hashOfConfig":"60"},{"size":3641,"mtime":1708539864016,"results":"116","hashOfConfig":"60"},{"size":54,"mtime":1708539864016,"results":"117","hashOfConfig":"60"},{"filePath":"118","messages":"119","suppressedMessages":"120","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"2syfed",{"filePath":"121","messages":"122","suppressedMessages":"123","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"124","messages":"125","suppressedMessages":"126","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"127","messages":"128","suppressedMessages":"129","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"130","messages":"131","suppressedMessages":"132","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"133","messages":"134","suppressedMessages":"135","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"136","messages":"137","suppressedMessages":"138","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"139","messages":"140","suppressedMessages":"141","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"142","messages":"143","suppressedMessages":"144","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"145","messages":"146","suppressedMessages":"147","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"148","messages":"149","suppressedMessages":"150","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"151","messages":"152","suppressedMessages":"153","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"154","messages":"155","suppressedMessages":"156","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"157","messages":"158","suppressedMessages":"159","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"160","messages":"161","suppressedMessages":"162","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"163","messages":"164","suppressedMessages":"165","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"166","messages":"167","suppressedMessages":"168","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"169","messages":"170","suppressedMessages":"171","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"172","messages":"173","suppressedMessages":"174","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"175","messages":"176","suppressedMessages":"177","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"178","messages":"179","suppressedMessages":"180","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"181","messages":"182","suppressedMessages":"183","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"184","messages":"185","suppressedMessages":"186","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"187","messages":"188","suppressedMessages":"189","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"190","messages":"191","suppressedMessages":"192","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"193","messages":"194","suppressedMessages":"195","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"196","messages":"197","suppressedMessages":"198","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"199","messages":"200","suppressedMessages":"201","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"202","messages":"203","suppressedMessages":"204","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"205","messages":"206","suppressedMessages":"207","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"208","messages":"209","suppressedMessages":"210","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"211","messages":"212","suppressedMessages":"213","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"214","messages":"215","suppressedMessages":"216","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"217","messages":"218","suppressedMessages":"219","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"220","messages":"221","suppressedMessages":"222","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"223","messages":"224","suppressedMessages":"225","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"226","messages":"227","suppressedMessages":"228","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"229","messages":"230","suppressedMessages":"231","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"232","messages":"233","suppressedMessages":"234","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"235","messages":"236","suppressedMessages":"237","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"238","messages":"239","suppressedMessages":"240","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"241","messages":"242","suppressedMessages":"243","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"244","messages":"245","suppressedMessages":"246","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"247","messages":"248","suppressedMessages":"249","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"250","messages":"251","suppressedMessages":"252","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"253","messages":"254","suppressedMessages":"255","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"256","messages":"257","suppressedMessages":"258","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"259","messages":"260","suppressedMessages":"261","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"262","messages":"263","suppressedMessages":"264","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"265","messages":"266","suppressedMessages":"267","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"268","messages":"269","suppressedMessages":"270","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"271","messages":"272","suppressedMessages":"273","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"274","messages":"275","suppressedMessages":"276","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"277","messages":"278","suppressedMessages":"279","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"280","messages":"281","suppressedMessages":"282","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"283","messages":"284","suppressedMessages":"285","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"286","messages":"287","suppressedMessages":"288","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"289","messages":"290","suppressedMessages":"291","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/allocator.spec.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/allocator.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/buildDatafile.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/buildProject.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/getFeatureRanges.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/traffic.spec.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/traffic.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/config/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/config/parsers.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/config/projectConfig.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/adapter.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/datasource.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/filesystemAdapter.ts",[],["292","293"],"/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/dependencies.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/find-duplicate-segments/findDuplicateSegments.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/find-duplicate-segments/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/generate-code/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/generate-code/typescript.ts",[],["294"],"/home/runner/work/featurevisor/featurevisor/packages/core/src/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/init/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/attributeSchema.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/checkCircularDependency.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/checkPercentageExceedingSlot.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/conditionSchema.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/featureSchema.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/groupSchema.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/lintProject.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/printError.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/segmentSchema.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/testSchema.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/restore/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/exportSite.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/generateHistory.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/generateSiteSearchIndex.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getLastModifiedFromHistory.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getOwnerAndRepoFromUrl.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getRelativePaths.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getRepoDetails.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/serveSite.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/checkIfArraysAreEqual.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/checkIfObjectsAreEqual.spec.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/checkIfObjectsAreEqual.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/cliFormat.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/matrix.spec.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/matrix.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/prettyDuration.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/printTestResult.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/testFeature.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/testProject.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/testSegment.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/utils/extractKeys.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/utils/git.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/utils/index.ts",[],[],{"ruleId":"295","severity":2,"message":"296","line":22,"column":7,"nodeType":"297","messageId":"298","endLine":22,"endColumn":18,"suppressions":"299"},{"ruleId":"300","severity":2,"message":"301","line":22,"column":21,"nodeType":"302","messageId":"303","endLine":22,"endColumn":81,"fix":"304","suppressions":"305"},{"ruleId":"295","severity":2,"message":"306","line":51,"column":10,"nodeType":"297","messageId":"298","endLine":51,"endColumn":38,"suppressions":"307"},"@typescript-eslint/no-unused-vars","'commitRegex' is assigned a value but never used.","Identifier","unusedVar",["308"],"no-regex-spaces","Spaces are hard to count. Use {3}.","Literal","multipleSpaces",{"range":"309","text":"310"},["311"],"'getFeaturevisorTypeFromValue' is defined but never used.",["312"],{"kind":"313","justification":"314"},[515,518]," {3}",{"kind":"313","justification":"314"},{"kind":"313","justification":"314"},"directive",""]
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [1.7.2](https://github.com/featurevisor/featurevisor/compare/v1.7.1...v1.7.2) (2024-02-21)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * linting should pick up non-array matrix values in tests ([#265](https://github.com/featurevisor/featurevisor/issues/265)) ([f89c7c3](https://github.com/featurevisor/featurevisor/commit/f89c7c3eb19886dd60acf9e4f0ba80d11f12d0e0))
12
+
13
+
14
+
15
+
16
+
6
17
  ## [1.7.1](https://github.com/featurevisor/featurevisor/compare/v1.7.0...v1.7.1) (2024-02-15)
7
18
 
8
19
  **Note:** Version bump only for package @featurevisor/core
@@ -1,6 +1,6 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <coverage generated="1708015901918" clover="3.2.0">
3
- <project timestamp="1708015901919" name="All files">
2
+ <coverage generated="1708540011329" clover="3.2.0">
3
+ <project timestamp="1708540011329" name="All files">
4
4
  <metrics statements="355" coveredstatements="236" conditionals="181" coveredconditionals="109" methods="52" coveredmethods="35" elements="588" coveredelements="380" complexity="0" loc="355" ncloc="355" packages="4" files="8" classes="8"/>
5
5
  <package name="lib.builder">
6
6
  <metrics statements="92" coveredstatements="87" conditionals="52" coveredconditionals="42" methods="14" coveredmethods="14"/>
@@ -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 2024-02-15T16:51:41.870Z
149
+ at 2024-02-21T18:26:51.276Z
150
150
  </div>
151
151
  <script src="prettify.js"></script>
152
152
  <script>
@@ -175,7 +175,7 @@ exports.getUpdatedAvailableRangesAfterFilling = getUpdatedAvailableRangesAfterFi
175
175
  <div class='footer quiet pad2 space-top1 center small'>
176
176
  Code coverage generated by
177
177
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
178
- at 2024-02-15T16:51:41.870Z
178
+ at 2024-02-21T18:26:51.276Z
179
179
  </div>
180
180
  <script src="../../prettify.js"></script>
181
181
  <script>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at 2024-02-15T16:51:41.870Z
119
+ at 2024-02-21T18:26:51.276Z
120
120
  </div>
121
121
  <script src="../../prettify.js"></script>
122
122
  <script>
@@ -460,7 +460,7 @@ exports.getTraffic = getTraffic;
460
460
  <div class='footer quiet pad2 space-top1 center small'>
461
461
  Code coverage generated by
462
462
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
463
- at 2024-02-15T16:51:41.870Z
463
+ at 2024-02-21T18:26:51.276Z
464
464
  </div>
465
465
  <script src="../../prettify.js"></script>
466
466
  <script>
@@ -139,7 +139,7 @@ exports.checkIfObjectsAreEqual = checkIfObjectsAreEqual;
139
139
  <div class='footer quiet pad2 space-top1 center small'>
140
140
  Code coverage generated by
141
141
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
142
- at 2024-02-15T16:51:41.870Z
142
+ at 2024-02-21T18:26:51.276Z
143
143
  </div>
144
144
  <script src="../../prettify.js"></script>
145
145
  <script>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at 2024-02-15T16:51:41.870Z
119
+ at 2024-02-21T18:26:51.276Z
120
120
  </div>
121
121
  <script src="../../prettify.js"></script>
122
122
  <script>
@@ -472,7 +472,7 @@ exports.getSegmentAssertionsFromMatrix = getSegmentAssertionsFromMatrix;
472
472
  <div class='footer quiet pad2 space-top1 center small'>
473
473
  Code coverage generated by
474
474
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
475
- at 2024-02-15T16:51:41.870Z
475
+ at 2024-02-21T18:26:51.276Z
476
476
  </div>
477
477
  <script src="../../prettify.js"></script>
478
478
  <script>
@@ -193,7 +193,7 @@ export function getUpdatedAvailableRangesAfterFilling(
193
193
  <div class='footer quiet pad2 space-top1 center small'>
194
194
  Code coverage generated by
195
195
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
196
- at 2024-02-15T16:51:41.870Z
196
+ at 2024-02-21T18:26:51.276Z
197
197
  </div>
198
198
  <script src="../../prettify.js"></script>
199
199
  <script>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at 2024-02-15T16:51:41.870Z
119
+ at 2024-02-21T18:26:51.276Z
120
120
  </div>
121
121
  <script src="../../prettify.js"></script>
122
122
  <script>
@@ -574,7 +574,7 @@ export function getTraffic(
574
574
  <div class='footer quiet pad2 space-top1 center small'>
575
575
  Code coverage generated by
576
576
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
577
- at 2024-02-15T16:51:41.870Z
577
+ at 2024-02-21T18:26:51.276Z
578
578
  </div>
579
579
  <script src="../../prettify.js"></script>
580
580
  <script>
@@ -142,7 +142,7 @@
142
142
  <div class='footer quiet pad2 space-top1 center small'>
143
143
  Code coverage generated by
144
144
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
145
- at 2024-02-15T16:51:41.870Z
145
+ at 2024-02-21T18:26:51.276Z
146
146
  </div>
147
147
  <script src="../../prettify.js"></script>
148
148
  <script>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at 2024-02-15T16:51:41.870Z
119
+ at 2024-02-21T18:26:51.276Z
120
120
  </div>
121
121
  <script src="../../prettify.js"></script>
122
122
  <script>
@@ -625,7 +625,7 @@ export function <span class="fstat-no" title="function not covered" >getSegmentA
625
625
  <div class='footer quiet pad2 space-top1 center small'>
626
626
  Code coverage generated by
627
627
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
628
- at 2024-02-15T16:51:41.870Z
628
+ at 2024-02-21T18:26:51.276Z
629
629
  </div>
630
630
  <script src="../../prettify.js"></script>
631
631
  <script>
@@ -5,11 +5,20 @@ var cliFormat_1 = require("../tester/cliFormat");
5
5
  function printZodError(e) {
6
6
  var issues = e.issues;
7
7
  issues.forEach(function (issue) {
8
- console.error(cliFormat_1.CLI_FORMAT_RED, " => Error: ".concat(issue.message));
9
- console.error(" Path:", issue.path.join("."));
10
- var receivedValue = issue.received;
11
- if (typeof receivedValue !== "undefined" && receivedValue !== "undefined") {
12
- console.error(" Value:", receivedValue);
8
+ if (issue.code === "invalid_union" && issue.path.length === 0 && issue.unionErrors.length > 0) {
9
+ // invalid_union
10
+ var lastUnionError = issue.unionErrors[issue.unionErrors.length - 1];
11
+ console.error(cliFormat_1.CLI_FORMAT_RED, " => Error: ".concat(lastUnionError.issues[0].message));
12
+ console.error(" Path:", lastUnionError.issues[0].path.join("."));
13
+ }
14
+ else {
15
+ // others
16
+ console.error(cliFormat_1.CLI_FORMAT_RED, " => Error: ".concat(issue.message));
17
+ console.error(" Path:", issue.path.join("."));
18
+ var receivedValue = issue.received;
19
+ if (typeof receivedValue !== "undefined" && receivedValue !== "undefined") {
20
+ console.error(" Value:", receivedValue);
21
+ }
13
22
  }
14
23
  if (issues.length > 1) {
15
24
  console.error("");
@@ -1 +1 @@
1
- {"version":3,"file":"printError.js","sourceRoot":"","sources":["../../src/linter/printError.ts"],"names":[],"mappings":";;;AAEA,iDAAqD;AAErD,SAAgB,aAAa,CAAC,CAAW;IAC/B,IAAA,MAAM,GAAK,CAAC,OAAN,CAAO;IAErB,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK;QACnB,OAAO,CAAC,KAAK,CAAC,0BAAc,EAAE,sBAAe,KAAK,CAAC,OAAO,CAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAElD,IAAM,aAAa,GAAI,KAAa,CAAC,QAAQ,CAAC;QAC9C,IAAI,OAAO,aAAa,KAAK,WAAW,IAAI,aAAa,KAAK,WAAW,EAAE;YACzE,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;SAC7C;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SACnB;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAhBD,sCAgBC"}
1
+ {"version":3,"file":"printError.js","sourceRoot":"","sources":["../../src/linter/printError.ts"],"names":[],"mappings":";;;AAEA,iDAAqD;AAErD,SAAgB,aAAa,CAAC,CAAW;IAC/B,IAAA,MAAM,GAAK,CAAC,OAAN,CAAO;IAErB,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK;QACnB,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7F,gBAAgB;YAChB,IAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACvE,OAAO,CAAC,KAAK,CAAC,0BAAc,EAAE,sBAAe,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAE,CAAC,CAAC;YACjF,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;SACtE;aAAM;YACL,SAAS;YACT,OAAO,CAAC,KAAK,CAAC,0BAAc,EAAE,sBAAe,KAAK,CAAC,OAAO,CAAE,CAAC,CAAC;YAC9D,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAElD,IAAM,aAAa,GAAI,KAAa,CAAC,QAAQ,CAAC;YAC9C,IAAI,OAAO,aAAa,KAAK,WAAW,IAAI,aAAa,KAAK,WAAW,EAAE;gBACzE,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;aAC7C;SACF;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SACnB;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAxBD,sCAwBC"}
@@ -3,17 +3,17 @@ import { ProjectConfig } from "../config";
3
3
  export declare function getTestsZodSchema(projectConfig: ProjectConfig, availableFeatureKeys: [string, ...string[]], availableSegmentKeys: [string, ...string[]]): z.ZodUnion<[z.ZodObject<{
4
4
  segment: z.ZodEffects<z.ZodString, string, string>;
5
5
  assertions: z.ZodArray<z.ZodObject<{
6
- matrix: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
6
+ matrix: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>, "many">>>;
7
7
  description: z.ZodOptional<z.ZodString>;
8
8
  context: z.ZodRecord<z.ZodString, z.ZodUnknown>;
9
9
  expectedToMatch: z.ZodBoolean;
10
10
  }, "strict", z.ZodTypeAny, {
11
- matrix?: Record<string, unknown>;
11
+ matrix?: Record<string, (string | number | boolean)[]>;
12
12
  description?: string;
13
13
  context?: Record<string, unknown>;
14
14
  expectedToMatch?: boolean;
15
15
  }, {
16
- matrix?: Record<string, unknown>;
16
+ matrix?: Record<string, (string | number | boolean)[]>;
17
17
  description?: string;
18
18
  context?: Record<string, unknown>;
19
19
  expectedToMatch?: boolean;
@@ -21,7 +21,7 @@ export declare function getTestsZodSchema(projectConfig: ProjectConfig, availabl
21
21
  }, "strict", z.ZodTypeAny, {
22
22
  segment?: string;
23
23
  assertions?: {
24
- matrix?: Record<string, unknown>;
24
+ matrix?: Record<string, (string | number | boolean)[]>;
25
25
  description?: string;
26
26
  context?: Record<string, unknown>;
27
27
  expectedToMatch?: boolean;
@@ -29,7 +29,7 @@ export declare function getTestsZodSchema(projectConfig: ProjectConfig, availabl
29
29
  }, {
30
30
  segment?: string;
31
31
  assertions?: {
32
- matrix?: Record<string, unknown>;
32
+ matrix?: Record<string, (string | number | boolean)[]>;
33
33
  description?: string;
34
34
  context?: Record<string, unknown>;
35
35
  expectedToMatch?: boolean;
@@ -37,7 +37,7 @@ export declare function getTestsZodSchema(projectConfig: ProjectConfig, availabl
37
37
  }>, z.ZodObject<{
38
38
  feature: z.ZodEffects<z.ZodString, string, string>;
39
39
  assertions: z.ZodArray<z.ZodObject<{
40
- matrix: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
40
+ matrix: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>, "many">>>;
41
41
  description: z.ZodOptional<z.ZodString>;
42
42
  at: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
43
43
  environment: z.ZodEffects<z.ZodString, string, string>;
@@ -46,7 +46,7 @@ export declare function getTestsZodSchema(projectConfig: ProjectConfig, availabl
46
46
  expectedVariation: z.ZodOptional<z.ZodString>;
47
47
  expectedVariables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
48
48
  }, "strict", z.ZodTypeAny, {
49
- matrix?: Record<string, unknown>;
49
+ matrix?: Record<string, (string | number | boolean)[]>;
50
50
  description?: string;
51
51
  at?: string | number;
52
52
  environment?: string;
@@ -55,7 +55,7 @@ export declare function getTestsZodSchema(projectConfig: ProjectConfig, availabl
55
55
  expectedVariation?: string;
56
56
  expectedVariables?: Record<string, unknown>;
57
57
  }, {
58
- matrix?: Record<string, unknown>;
58
+ matrix?: Record<string, (string | number | boolean)[]>;
59
59
  description?: string;
60
60
  at?: string | number;
61
61
  environment?: string;
@@ -67,7 +67,7 @@ export declare function getTestsZodSchema(projectConfig: ProjectConfig, availabl
67
67
  }, "strict", z.ZodTypeAny, {
68
68
  feature?: string;
69
69
  assertions?: {
70
- matrix?: Record<string, unknown>;
70
+ matrix?: Record<string, (string | number | boolean)[]>;
71
71
  description?: string;
72
72
  at?: string | number;
73
73
  environment?: string;
@@ -79,7 +79,7 @@ export declare function getTestsZodSchema(projectConfig: ProjectConfig, availabl
79
79
  }, {
80
80
  feature?: string;
81
81
  assertions?: {
82
- matrix?: Record<string, unknown>;
82
+ matrix?: Record<string, (string | number | boolean)[]>;
83
83
  description?: string;
84
84
  at?: string | number;
85
85
  environment?: string;
@@ -3,6 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getTestsZodSchema = void 0;
4
4
  var zod_1 = require("zod");
5
5
  function getTestsZodSchema(projectConfig, availableFeatureKeys, availableSegmentKeys) {
6
+ var matrixZodSchema = zod_1.z.record(zod_1.z.array(zod_1.z.union([
7
+ // allowed values in arrays
8
+ zod_1.z.string(),
9
+ zod_1.z.number(),
10
+ zod_1.z.boolean(),
11
+ zod_1.z.null(),
12
+ ])));
6
13
  var segmentTestZodSchema = zod_1.z
7
14
  .object({
8
15
  segment: zod_1.z.string().refine(function (value) { return availableSegmentKeys.includes(value); }, function (value) { return ({
@@ -10,7 +17,7 @@ function getTestsZodSchema(projectConfig, availableFeatureKeys, availableSegment
10
17
  }); }),
11
18
  assertions: zod_1.z.array(zod_1.z
12
19
  .object({
13
- matrix: zod_1.z.record(zod_1.z.unknown()).optional(),
20
+ matrix: matrixZodSchema.optional(),
14
21
  description: zod_1.z.string().optional(),
15
22
  context: zod_1.z.record(zod_1.z.unknown()),
16
23
  expectedToMatch: zod_1.z.boolean(),
@@ -25,7 +32,7 @@ function getTestsZodSchema(projectConfig, availableFeatureKeys, availableSegment
25
32
  }); }),
26
33
  assertions: zod_1.z.array(zod_1.z
27
34
  .object({
28
- matrix: zod_1.z.record(zod_1.z.unknown()).optional(),
35
+ matrix: matrixZodSchema.optional(),
29
36
  description: zod_1.z.string().optional(),
30
37
  at: zod_1.z.union([
31
38
  zod_1.z.number().min(0).max(100),
@@ -1 +1 @@
1
- {"version":3,"file":"testSchema.js","sourceRoot":"","sources":["../../src/linter/testSchema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testSchema.js","sourceRoot":"","sources":["../../src/linter/testSchema.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@featurevisor/core",
3
- "version": "1.7.1",
3
+ "version": "1.7.2",
4
4
  "description": "Core package of Featurevisor for Node.js usage",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -57,5 +57,5 @@
57
57
  "@types/js-yaml": "^4.0.5",
58
58
  "@types/tar": "^6.1.4"
59
59
  },
60
- "gitHead": "331b2cb8a034eb27a7d395d0b6d14eb5ae8ebadf"
60
+ "gitHead": "c6ea5767c24263a215a4134beef16831467a8c49"
61
61
  }
@@ -6,12 +6,20 @@ export function printZodError(e: ZodError) {
6
6
  const { issues } = e;
7
7
 
8
8
  issues.forEach((issue) => {
9
- console.error(CLI_FORMAT_RED, ` => Error: ${issue.message}`);
10
- console.error(" Path:", issue.path.join("."));
9
+ if (issue.code === "invalid_union" && issue.path.length === 0 && issue.unionErrors.length > 0) {
10
+ // invalid_union
11
+ const lastUnionError = issue.unionErrors[issue.unionErrors.length - 1];
12
+ console.error(CLI_FORMAT_RED, ` => Error: ${lastUnionError.issues[0].message}`);
13
+ console.error(" Path:", lastUnionError.issues[0].path.join("."));
14
+ } else {
15
+ // others
16
+ console.error(CLI_FORMAT_RED, ` => Error: ${issue.message}`);
17
+ console.error(" Path:", issue.path.join("."));
11
18
 
12
- const receivedValue = (issue as any).received;
13
- if (typeof receivedValue !== "undefined" && receivedValue !== "undefined") {
14
- console.error(" Value:", receivedValue);
19
+ const receivedValue = (issue as any).received;
20
+ if (typeof receivedValue !== "undefined" && receivedValue !== "undefined") {
21
+ console.error(" Value:", receivedValue);
22
+ }
15
23
  }
16
24
 
17
25
  if (issues.length > 1) {
@@ -7,6 +7,18 @@ export function getTestsZodSchema(
7
7
  availableFeatureKeys: [string, ...string[]],
8
8
  availableSegmentKeys: [string, ...string[]],
9
9
  ) {
10
+ const matrixZodSchema = z.record(
11
+ z.array(
12
+ z.union([
13
+ // allowed values in arrays
14
+ z.string(),
15
+ z.number(),
16
+ z.boolean(),
17
+ z.null(),
18
+ ]),
19
+ ),
20
+ );
21
+
10
22
  const segmentTestZodSchema = z
11
23
  .object({
12
24
  segment: z.string().refine(
@@ -18,7 +30,7 @@ export function getTestsZodSchema(
18
30
  assertions: z.array(
19
31
  z
20
32
  .object({
21
- matrix: z.record(z.unknown()).optional(), // @TODO: make it stricter
33
+ matrix: matrixZodSchema.optional(),
22
34
  description: z.string().optional(),
23
35
  context: z.record(z.unknown()),
24
36
  expectedToMatch: z.boolean(),
@@ -39,7 +51,7 @@ export function getTestsZodSchema(
39
51
  assertions: z.array(
40
52
  z
41
53
  .object({
42
- matrix: z.record(z.unknown()).optional(), // @TODO: make it stricter
54
+ matrix: matrixZodSchema.optional(),
43
55
  description: z.string().optional(),
44
56
  at: z.union([
45
57
  z.number().min(0).max(100),