@opensip-cli/fitness 0.1.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/LICENSE +202 -0
- package/NOTICE +8 -0
- package/README.md +31 -0
- package/dist/__tests__/baseline-plane.test.d.ts +12 -0
- package/dist/__tests__/baseline-plane.test.d.ts.map +1 -0
- package/dist/__tests__/baseline-plane.test.js +63 -0
- package/dist/__tests__/baseline-plane.test.js.map +1 -0
- package/dist/__tests__/check-utils.test.d.ts +10 -0
- package/dist/__tests__/check-utils.test.d.ts.map +1 -0
- package/dist/__tests__/check-utils.test.js +193 -0
- package/dist/__tests__/check-utils.test.js.map +1 -0
- package/dist/__tests__/fingerprint-parity.test.d.ts +14 -0
- package/dist/__tests__/fingerprint-parity.test.d.ts.map +1 -0
- package/dist/__tests__/fingerprint-parity.test.js +59 -0
- package/dist/__tests__/fingerprint-parity.test.js.map +1 -0
- package/dist/__tests__/fit-execute-opts.test.d.ts +15 -0
- package/dist/__tests__/fit-execute-opts.test.d.ts.map +1 -0
- package/dist/__tests__/fit-execute-opts.test.js +124 -0
- package/dist/__tests__/fit-execute-opts.test.js.map +1 -0
- package/dist/__tests__/public-api.test.d.ts +19 -0
- package/dist/__tests__/public-api.test.d.ts.map +1 -0
- package/dist/__tests__/public-api.test.js +85 -0
- package/dist/__tests__/public-api.test.js.map +1 -0
- package/dist/__tests__/tool.test.d.ts +10 -0
- package/dist/__tests__/tool.test.d.ts.map +1 -0
- package/dist/__tests__/tool.test.js +57 -0
- package/dist/__tests__/tool.test.js.map +1 -0
- package/dist/baseline-strategy.d.ts +21 -0
- package/dist/baseline-strategy.d.ts.map +1 -0
- package/dist/baseline-strategy.js +21 -0
- package/dist/baseline-strategy.js.map +1 -0
- package/dist/check-utils/display.d.ts +52 -0
- package/dist/check-utils/display.d.ts.map +1 -0
- package/dist/check-utils/display.js +66 -0
- package/dist/check-utils/display.js.map +1 -0
- package/dist/check-utils/index.d.ts +17 -0
- package/dist/check-utils/index.d.ts.map +1 -0
- package/dist/check-utils/index.js +13 -0
- package/dist/check-utils/index.js.map +1 -0
- package/dist/check-utils/path-matching.d.ts +40 -0
- package/dist/check-utils/path-matching.d.ts.map +1 -0
- package/dist/check-utils/path-matching.js +38 -0
- package/dist/check-utils/path-matching.js.map +1 -0
- package/dist/check-utils/source-analysis.d.ts +36 -0
- package/dist/check-utils/source-analysis.d.ts.map +1 -0
- package/dist/check-utils/source-analysis.js +44 -0
- package/dist/check-utils/source-analysis.js.map +1 -0
- package/dist/check-utils/test-helpers.d.ts +57 -0
- package/dist/check-utils/test-helpers.d.ts.map +1 -0
- package/dist/check-utils/test-helpers.js +71 -0
- package/dist/check-utils/test-helpers.js.map +1 -0
- package/dist/cli/__tests__/fit-gate-mode.test.d.ts +14 -0
- package/dist/cli/__tests__/fit-gate-mode.test.d.ts.map +1 -0
- package/dist/cli/__tests__/fit-gate-mode.test.js +110 -0
- package/dist/cli/__tests__/fit-gate-mode.test.js.map +1 -0
- package/dist/cli/__tests__/fit-modes-live.test.d.ts +13 -0
- package/dist/cli/__tests__/fit-modes-live.test.d.ts.map +1 -0
- package/dist/cli/__tests__/fit-modes-live.test.js +182 -0
- package/dist/cli/__tests__/fit-modes-live.test.js.map +1 -0
- package/dist/cli/__tests__/report-data.test.d.ts +12 -0
- package/dist/cli/__tests__/report-data.test.d.ts.map +1 -0
- package/dist/cli/__tests__/report-data.test.js +113 -0
- package/dist/cli/__tests__/report-data.test.js.map +1 -0
- package/dist/cli/fit/__tests__/display-fold.test.d.ts +8 -0
- package/dist/cli/fit/__tests__/display-fold.test.d.ts.map +1 -0
- package/dist/cli/fit/__tests__/display-fold.test.js +87 -0
- package/dist/cli/fit/__tests__/display-fold.test.js.map +1 -0
- package/dist/cli/fit/__tests__/gate-resolved-config.test.d.ts +16 -0
- package/dist/cli/fit/__tests__/gate-resolved-config.test.d.ts.map +1 -0
- package/dist/cli/fit/__tests__/gate-resolved-config.test.js +62 -0
- package/dist/cli/fit/__tests__/gate-resolved-config.test.js.map +1 -0
- package/dist/cli/fit/check-loader.d.ts +37 -0
- package/dist/cli/fit/check-loader.d.ts.map +1 -0
- package/dist/cli/fit/check-loader.js +154 -0
- package/dist/cli/fit/check-loader.js.map +1 -0
- package/dist/cli/fit/config-loader.d.ts +55 -0
- package/dist/cli/fit/config-loader.d.ts.map +1 -0
- package/dist/cli/fit/config-loader.js +107 -0
- package/dist/cli/fit/config-loader.js.map +1 -0
- package/dist/cli/fit/display-registry.d.ts +19 -0
- package/dist/cli/fit/display-registry.d.ts.map +1 -0
- package/dist/cli/fit/display-registry.js +33 -0
- package/dist/cli/fit/display-registry.js.map +1 -0
- package/dist/cli/fit/envelope-view.d.ts +49 -0
- package/dist/cli/fit/envelope-view.d.ts.map +1 -0
- package/dist/cli/fit/envelope-view.js +85 -0
- package/dist/cli/fit/envelope-view.js.map +1 -0
- package/dist/cli/fit/fit-aux-command-specs.d.ts +35 -0
- package/dist/cli/fit/fit-aux-command-specs.d.ts.map +1 -0
- package/dist/cli/fit/fit-aux-command-specs.js +110 -0
- package/dist/cli/fit/fit-aux-command-specs.js.map +1 -0
- package/dist/cli/fit/fit-command-spec.d.ts +24 -0
- package/dist/cli/fit/fit-command-spec.d.ts.map +1 -0
- package/dist/cli/fit/fit-command-spec.js +131 -0
- package/dist/cli/fit/fit-command-spec.js.map +1 -0
- package/dist/cli/fit/gate-compare-render.d.ts +13 -0
- package/dist/cli/fit/gate-compare-render.d.ts.map +1 -0
- package/dist/cli/fit/gate-compare-render.js +87 -0
- package/dist/cli/fit/gate-compare-render.js.map +1 -0
- package/dist/cli/fit/recipe-selector.d.ts +53 -0
- package/dist/cli/fit/recipe-selector.d.ts.map +1 -0
- package/dist/cli/fit/recipe-selector.js +106 -0
- package/dist/cli/fit/recipe-selector.js.map +1 -0
- package/dist/cli/fit/recipe-selector.test.d.ts +2 -0
- package/dist/cli/fit/recipe-selector.test.d.ts.map +1 -0
- package/dist/cli/fit/recipe-selector.test.js +69 -0
- package/dist/cli/fit/recipe-selector.test.js.map +1 -0
- package/dist/cli/fit/resolved-fitness-config.d.ts +48 -0
- package/dist/cli/fit/resolved-fitness-config.d.ts.map +1 -0
- package/dist/cli/fit/resolved-fitness-config.js +46 -0
- package/dist/cli/fit/resolved-fitness-config.js.map +1 -0
- package/dist/cli/fit/result-builders.d.ts +91 -0
- package/dist/cli/fit/result-builders.d.ts.map +1 -0
- package/dist/cli/fit/result-builders.js +206 -0
- package/dist/cli/fit/result-builders.js.map +1 -0
- package/dist/cli/fit-list.d.ts +7 -0
- package/dist/cli/fit-list.d.ts.map +1 -0
- package/dist/cli/fit-list.js +24 -0
- package/dist/cli/fit-list.js.map +1 -0
- package/dist/cli/fit-modes.d.ts +42 -0
- package/dist/cli/fit-modes.d.ts.map +1 -0
- package/dist/cli/fit-modes.js +322 -0
- package/dist/cli/fit-modes.js.map +1 -0
- package/dist/cli/fit-recipes.d.ts +7 -0
- package/dist/cli/fit-recipes.d.ts.map +1 -0
- package/dist/cli/fit-recipes.js +34 -0
- package/dist/cli/fit-recipes.js.map +1 -0
- package/dist/cli/fit-runner-views.d.ts +33 -0
- package/dist/cli/fit-runner-views.d.ts.map +1 -0
- package/dist/cli/fit-runner-views.js +92 -0
- package/dist/cli/fit-runner-views.js.map +1 -0
- package/dist/cli/fit-runner.d.ts +44 -0
- package/dist/cli/fit-runner.d.ts.map +1 -0
- package/dist/cli/fit-runner.js +250 -0
- package/dist/cli/fit-runner.js.map +1 -0
- package/dist/cli/fit-worker.d.ts +26 -0
- package/dist/cli/fit-worker.d.ts.map +1 -0
- package/dist/cli/fit-worker.js +67 -0
- package/dist/cli/fit-worker.js.map +1 -0
- package/dist/cli/fit.d.ts +74 -0
- package/dist/cli/fit.d.ts.map +1 -0
- package/dist/cli/fit.js +149 -0
- package/dist/cli/fit.js.map +1 -0
- package/dist/cli/report-data.d.ts +44 -0
- package/dist/cli/report-data.d.ts.map +1 -0
- package/dist/cli/report-data.js +89 -0
- package/dist/cli/report-data.js.map +1 -0
- package/dist/config/__tests__/fitness-config-schema.test.d.ts +6 -0
- package/dist/config/__tests__/fitness-config-schema.test.d.ts.map +1 -0
- package/dist/config/__tests__/fitness-config-schema.test.js +37 -0
- package/dist/config/__tests__/fitness-config-schema.test.js.map +1 -0
- package/dist/config/fitness-config-schema.d.ts +48 -0
- package/dist/config/fitness-config-schema.d.ts.map +1 -0
- package/dist/config/fitness-config-schema.js +62 -0
- package/dist/config/fitness-config-schema.js.map +1 -0
- package/dist/framework/__tests__/abortable-exec.test.d.ts +9 -0
- package/dist/framework/__tests__/abortable-exec.test.d.ts.map +1 -0
- package/dist/framework/__tests__/abortable-exec.test.js +102 -0
- package/dist/framework/__tests__/abortable-exec.test.js.map +1 -0
- package/dist/framework/__tests__/check-config.test.d.ts +2 -0
- package/dist/framework/__tests__/check-config.test.d.ts.map +1 -0
- package/dist/framework/__tests__/check-config.test.js +56 -0
- package/dist/framework/__tests__/check-config.test.js.map +1 -0
- package/dist/framework/__tests__/check-types.test.d.ts +2 -0
- package/dist/framework/__tests__/check-types.test.d.ts.map +1 -0
- package/dist/framework/__tests__/check-types.test.js +76 -0
- package/dist/framework/__tests__/check-types.test.js.map +1 -0
- package/dist/framework/__tests__/command-executor.test.d.ts +2 -0
- package/dist/framework/__tests__/command-executor.test.d.ts.map +1 -0
- package/dist/framework/__tests__/command-executor.test.js +110 -0
- package/dist/framework/__tests__/command-executor.test.js.map +1 -0
- package/dist/framework/__tests__/content-filter-dispatch.test.d.ts +2 -0
- package/dist/framework/__tests__/content-filter-dispatch.test.d.ts.map +1 -0
- package/dist/framework/__tests__/content-filter-dispatch.test.js +122 -0
- package/dist/framework/__tests__/content-filter-dispatch.test.js.map +1 -0
- package/dist/framework/__tests__/define-check.test.d.ts +2 -0
- package/dist/framework/__tests__/define-check.test.d.ts.map +1 -0
- package/dist/framework/__tests__/define-check.test.js +402 -0
- package/dist/framework/__tests__/define-check.test.js.map +1 -0
- package/dist/framework/__tests__/define-regex-list-check.test.d.ts +15 -0
- package/dist/framework/__tests__/define-regex-list-check.test.d.ts.map +1 -0
- package/dist/framework/__tests__/define-regex-list-check.test.js +299 -0
- package/dist/framework/__tests__/define-regex-list-check.test.js.map +1 -0
- package/dist/framework/__tests__/directive-inventory.test.d.ts +2 -0
- package/dist/framework/__tests__/directive-inventory.test.d.ts.map +1 -0
- package/dist/framework/__tests__/directive-inventory.test.js +111 -0
- package/dist/framework/__tests__/directive-inventory.test.js.map +1 -0
- package/dist/framework/__tests__/directive-parsing.test.d.ts +13 -0
- package/dist/framework/__tests__/directive-parsing.test.d.ts.map +1 -0
- package/dist/framework/__tests__/directive-parsing.test.js +86 -0
- package/dist/framework/__tests__/directive-parsing.test.js.map +1 -0
- package/dist/framework/__tests__/execution-context.globalexcludes-parity.test.d.ts +2 -0
- package/dist/framework/__tests__/execution-context.globalexcludes-parity.test.d.ts.map +1 -0
- package/dist/framework/__tests__/execution-context.globalexcludes-parity.test.js +56 -0
- package/dist/framework/__tests__/execution-context.globalexcludes-parity.test.js.map +1 -0
- package/dist/framework/__tests__/execution-context.test.d.ts +2 -0
- package/dist/framework/__tests__/execution-context.test.d.ts.map +1 -0
- package/dist/framework/__tests__/execution-context.test.js +140 -0
- package/dist/framework/__tests__/execution-context.test.js.map +1 -0
- package/dist/framework/__tests__/file-accessor.test.d.ts +2 -0
- package/dist/framework/__tests__/file-accessor.test.d.ts.map +1 -0
- package/dist/framework/__tests__/file-accessor.test.js +106 -0
- package/dist/framework/__tests__/file-accessor.test.js.map +1 -0
- package/dist/framework/__tests__/file-cache.test.d.ts +2 -0
- package/dist/framework/__tests__/file-cache.test.d.ts.map +1 -0
- package/dist/framework/__tests__/file-cache.test.js +122 -0
- package/dist/framework/__tests__/file-cache.test.js.map +1 -0
- package/dist/framework/__tests__/file-type-filter.test.d.ts +9 -0
- package/dist/framework/__tests__/file-type-filter.test.d.ts.map +1 -0
- package/dist/framework/__tests__/file-type-filter.test.js +39 -0
- package/dist/framework/__tests__/file-type-filter.test.js.map +1 -0
- package/dist/framework/__tests__/ignore-processing.test.d.ts +11 -0
- package/dist/framework/__tests__/ignore-processing.test.d.ts.map +1 -0
- package/dist/framework/__tests__/ignore-processing.test.js +175 -0
- package/dist/framework/__tests__/ignore-processing.test.js.map +1 -0
- package/dist/framework/__tests__/import-graph.test.d.ts +15 -0
- package/dist/framework/__tests__/import-graph.test.d.ts.map +1 -0
- package/dist/framework/__tests__/import-graph.test.js +164 -0
- package/dist/framework/__tests__/import-graph.test.js.map +1 -0
- package/dist/framework/__tests__/memory-profiler.test.d.ts +9 -0
- package/dist/framework/__tests__/memory-profiler.test.d.ts.map +1 -0
- package/dist/framework/__tests__/memory-profiler.test.js +108 -0
- package/dist/framework/__tests__/memory-profiler.test.js.map +1 -0
- package/dist/framework/__tests__/parse-cache.test.d.ts +9 -0
- package/dist/framework/__tests__/parse-cache.test.d.ts.map +1 -0
- package/dist/framework/__tests__/parse-cache.test.js +51 -0
- package/dist/framework/__tests__/parse-cache.test.js.map +1 -0
- package/dist/framework/__tests__/path-matcher.test.d.ts +2 -0
- package/dist/framework/__tests__/path-matcher.test.d.ts.map +1 -0
- package/dist/framework/__tests__/path-matcher.test.js +113 -0
- package/dist/framework/__tests__/path-matcher.test.js.map +1 -0
- package/dist/framework/__tests__/register-helpers.test.d.ts +2 -0
- package/dist/framework/__tests__/register-helpers.test.d.ts.map +1 -0
- package/dist/framework/__tests__/register-helpers.test.js +51 -0
- package/dist/framework/__tests__/register-helpers.test.js.map +1 -0
- package/dist/framework/__tests__/registry.test.d.ts +2 -0
- package/dist/framework/__tests__/registry.test.d.ts.map +1 -0
- package/dist/framework/__tests__/registry.test.js +211 -0
- package/dist/framework/__tests__/registry.test.js.map +1 -0
- package/dist/framework/__tests__/result-builder.test.d.ts +2 -0
- package/dist/framework/__tests__/result-builder.test.d.ts.map +1 -0
- package/dist/framework/__tests__/result-builder.test.js +153 -0
- package/dist/framework/__tests__/result-builder.test.js.map +1 -0
- package/dist/framework/__tests__/scope-registry.test.d.ts +8 -0
- package/dist/framework/__tests__/scope-registry.test.d.ts.map +1 -0
- package/dist/framework/__tests__/scope-registry.test.js +156 -0
- package/dist/framework/__tests__/scope-registry.test.js.map +1 -0
- package/dist/framework/__tests__/scope-resolver.golden.test.d.ts +2 -0
- package/dist/framework/__tests__/scope-resolver.golden.test.d.ts.map +1 -0
- package/dist/framework/__tests__/scope-resolver.golden.test.js +105 -0
- package/dist/framework/__tests__/scope-resolver.golden.test.js.map +1 -0
- package/dist/framework/__tests__/scope-resolver.test.d.ts +2 -0
- package/dist/framework/__tests__/scope-resolver.test.d.ts.map +1 -0
- package/dist/framework/__tests__/scope-resolver.test.js +150 -0
- package/dist/framework/__tests__/scope-resolver.test.js.map +1 -0
- package/dist/framework/__tests__/severity-mapping.test.d.ts +2 -0
- package/dist/framework/__tests__/severity-mapping.test.d.ts.map +1 -0
- package/dist/framework/__tests__/severity-mapping.test.js +74 -0
- package/dist/framework/__tests__/severity-mapping.test.js.map +1 -0
- package/dist/framework/__tests__/strip-literals.test.d.ts +2 -0
- package/dist/framework/__tests__/strip-literals.test.d.ts.map +1 -0
- package/dist/framework/__tests__/strip-literals.test.js +87 -0
- package/dist/framework/__tests__/strip-literals.test.js.map +1 -0
- package/dist/framework/abortable-exec.d.ts +34 -0
- package/dist/framework/abortable-exec.d.ts.map +1 -0
- package/dist/framework/abortable-exec.js +143 -0
- package/dist/framework/abortable-exec.js.map +1 -0
- package/dist/framework/check-config.d.ts +175 -0
- package/dist/framework/check-config.d.ts.map +1 -0
- package/dist/framework/check-config.js +115 -0
- package/dist/framework/check-config.js.map +1 -0
- package/dist/framework/check-types.d.ts +82 -0
- package/dist/framework/check-types.d.ts.map +1 -0
- package/dist/framework/check-types.js +63 -0
- package/dist/framework/check-types.js.map +1 -0
- package/dist/framework/command-executor.d.ts +25 -0
- package/dist/framework/command-executor.d.ts.map +1 -0
- package/dist/framework/command-executor.js +63 -0
- package/dist/framework/command-executor.js.map +1 -0
- package/dist/framework/comment-openers.d.ts +11 -0
- package/dist/framework/comment-openers.d.ts.map +1 -0
- package/dist/framework/comment-openers.js +11 -0
- package/dist/framework/comment-openers.js.map +1 -0
- package/dist/framework/constants.d.ts +9 -0
- package/dist/framework/constants.d.ts.map +1 -0
- package/dist/framework/constants.js +16 -0
- package/dist/framework/constants.js.map +1 -0
- package/dist/framework/define-check.d.ts +38 -0
- package/dist/framework/define-check.d.ts.map +1 -0
- package/dist/framework/define-check.js +296 -0
- package/dist/framework/define-check.js.map +1 -0
- package/dist/framework/define-regex-list-check.d.ts +160 -0
- package/dist/framework/define-regex-list-check.d.ts.map +1 -0
- package/dist/framework/define-regex-list-check.js +177 -0
- package/dist/framework/define-regex-list-check.js.map +1 -0
- package/dist/framework/directive-inventory.d.ts +37 -0
- package/dist/framework/directive-inventory.d.ts.map +1 -0
- package/dist/framework/directive-inventory.js +82 -0
- package/dist/framework/directive-inventory.js.map +1 -0
- package/dist/framework/directive-parsing.d.ts +23 -0
- package/dist/framework/directive-parsing.d.ts.map +1 -0
- package/dist/framework/directive-parsing.js +39 -0
- package/dist/framework/directive-parsing.js.map +1 -0
- package/dist/framework/execution-context.d.ts +98 -0
- package/dist/framework/execution-context.d.ts.map +1 -0
- package/dist/framework/execution-context.js +145 -0
- package/dist/framework/execution-context.js.map +1 -0
- package/dist/framework/file-accessor.d.ts +20 -0
- package/dist/framework/file-accessor.d.ts.map +1 -0
- package/dist/framework/file-accessor.js +122 -0
- package/dist/framework/file-accessor.js.map +1 -0
- package/dist/framework/file-cache.d.ts +70 -0
- package/dist/framework/file-cache.d.ts.map +1 -0
- package/dist/framework/file-cache.js +199 -0
- package/dist/framework/file-cache.js.map +1 -0
- package/dist/framework/file-type-filter.d.ts +11 -0
- package/dist/framework/file-type-filter.d.ts.map +1 -0
- package/dist/framework/file-type-filter.js +21 -0
- package/dist/framework/file-type-filter.js.map +1 -0
- package/dist/framework/ignore-processing.d.ts +36 -0
- package/dist/framework/ignore-processing.d.ts.map +1 -0
- package/dist/framework/ignore-processing.js +172 -0
- package/dist/framework/ignore-processing.js.map +1 -0
- package/dist/framework/import-graph.d.ts +51 -0
- package/dist/framework/import-graph.d.ts.map +1 -0
- package/dist/framework/import-graph.js +217 -0
- package/dist/framework/import-graph.js.map +1 -0
- package/dist/framework/memory-profiler.d.ts +53 -0
- package/dist/framework/memory-profiler.d.ts.map +1 -0
- package/dist/framework/memory-profiler.js +92 -0
- package/dist/framework/memory-profiler.js.map +1 -0
- package/dist/framework/parse-cache.d.ts +24 -0
- package/dist/framework/parse-cache.d.ts.map +1 -0
- package/dist/framework/parse-cache.js +41 -0
- package/dist/framework/parse-cache.js.map +1 -0
- package/dist/framework/path-matcher.d.ts +86 -0
- package/dist/framework/path-matcher.d.ts.map +1 -0
- package/dist/framework/path-matcher.js +138 -0
- package/dist/framework/path-matcher.js.map +1 -0
- package/dist/framework/register-helpers.d.ts +11 -0
- package/dist/framework/register-helpers.d.ts.map +1 -0
- package/dist/framework/register-helpers.js +19 -0
- package/dist/framework/register-helpers.js.map +1 -0
- package/dist/framework/registry.d.ts +51 -0
- package/dist/framework/registry.d.ts.map +1 -0
- package/dist/framework/registry.js +131 -0
- package/dist/framework/registry.js.map +1 -0
- package/dist/framework/result-builder.d.ts +74 -0
- package/dist/framework/result-builder.d.ts.map +1 -0
- package/dist/framework/result-builder.js +154 -0
- package/dist/framework/result-builder.js.map +1 -0
- package/dist/framework/scope-registry.d.ts +38 -0
- package/dist/framework/scope-registry.d.ts.map +1 -0
- package/dist/framework/scope-registry.js +77 -0
- package/dist/framework/scope-registry.js.map +1 -0
- package/dist/framework/scope-resolver.d.ts +23 -0
- package/dist/framework/scope-resolver.d.ts.map +1 -0
- package/dist/framework/scope-resolver.js +102 -0
- package/dist/framework/scope-resolver.js.map +1 -0
- package/dist/framework/severity-mapping.d.ts +17 -0
- package/dist/framework/severity-mapping.d.ts.map +1 -0
- package/dist/framework/severity-mapping.js +71 -0
- package/dist/framework/severity-mapping.js.map +1 -0
- package/dist/framework/strip-literals.d.ts +73 -0
- package/dist/framework/strip-literals.d.ts.map +1 -0
- package/dist/framework/strip-literals.js +213 -0
- package/dist/framework/strip-literals.js.map +1 -0
- package/dist/index.d.ts +47 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +64 -0
- package/dist/index.js.map +1 -0
- package/dist/internal.d.ts +17 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +17 -0
- package/dist/internal.js.map +1 -0
- package/dist/persistence/session-payload.d.ts +68 -0
- package/dist/persistence/session-payload.d.ts.map +1 -0
- package/dist/persistence/session-payload.js +78 -0
- package/dist/persistence/session-payload.js.map +1 -0
- package/dist/persistence/session-payload.test.d.ts +11 -0
- package/dist/persistence/session-payload.test.d.ts.map +1 -0
- package/dist/persistence/session-payload.test.js +80 -0
- package/dist/persistence/session-payload.test.js.map +1 -0
- package/dist/persistence/session-replay.d.ts +14 -0
- package/dist/persistence/session-replay.d.ts.map +1 -0
- package/dist/persistence/session-replay.js +85 -0
- package/dist/persistence/session-replay.js.map +1 -0
- package/dist/persistence/session-replay.test.d.ts +10 -0
- package/dist/persistence/session-replay.test.d.ts.map +1 -0
- package/dist/persistence/session-replay.test.js +171 -0
- package/dist/persistence/session-replay.test.js.map +1 -0
- package/dist/plugins/__tests__/check-package-discovery.test.d.ts +2 -0
- package/dist/plugins/__tests__/check-package-discovery.test.d.ts.map +1 -0
- package/dist/plugins/__tests__/check-package-discovery.test.js +48 -0
- package/dist/plugins/__tests__/check-package-discovery.test.js.map +1 -0
- package/dist/plugins/__tests__/lang-domain.test.d.ts +2 -0
- package/dist/plugins/__tests__/lang-domain.test.d.ts.map +1 -0
- package/dist/plugins/__tests__/lang-domain.test.js +192 -0
- package/dist/plugins/__tests__/lang-domain.test.js.map +1 -0
- package/dist/plugins/__tests__/loader.test.d.ts +2 -0
- package/dist/plugins/__tests__/loader.test.d.ts.map +1 -0
- package/dist/plugins/__tests__/loader.test.js +271 -0
- package/dist/plugins/__tests__/loader.test.js.map +1 -0
- package/dist/plugins/check-package-discovery.d.ts +19 -0
- package/dist/plugins/check-package-discovery.d.ts.map +1 -0
- package/dist/plugins/check-package-discovery.js +34 -0
- package/dist/plugins/check-package-discovery.js.map +1 -0
- package/dist/plugins/loader.d.ts +32 -0
- package/dist/plugins/loader.d.ts.map +1 -0
- package/dist/plugins/loader.js +198 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/types.d.ts +29 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +9 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/recipes/__tests__/built-in-recipes.test.d.ts +2 -0
- package/dist/recipes/__tests__/built-in-recipes.test.d.ts.map +1 -0
- package/dist/recipes/__tests__/built-in-recipes.test.js +93 -0
- package/dist/recipes/__tests__/built-in-recipes.test.js.map +1 -0
- package/dist/recipes/__tests__/check-config.test.d.ts +12 -0
- package/dist/recipes/__tests__/check-config.test.d.ts.map +1 -0
- package/dist/recipes/__tests__/check-config.test.js +90 -0
- package/dist/recipes/__tests__/check-config.test.js.map +1 -0
- package/dist/recipes/__tests__/check-resolution.test.d.ts +2 -0
- package/dist/recipes/__tests__/check-resolution.test.d.ts.map +1 -0
- package/dist/recipes/__tests__/check-resolution.test.js +160 -0
- package/dist/recipes/__tests__/check-resolution.test.js.map +1 -0
- package/dist/recipes/__tests__/execution-branches.test.d.ts +10 -0
- package/dist/recipes/__tests__/execution-branches.test.d.ts.map +1 -0
- package/dist/recipes/__tests__/execution-branches.test.js +612 -0
- package/dist/recipes/__tests__/execution-branches.test.js.map +1 -0
- package/dist/recipes/__tests__/execution-paths.test.d.ts +10 -0
- package/dist/recipes/__tests__/execution-paths.test.d.ts.map +1 -0
- package/dist/recipes/__tests__/execution-paths.test.js +280 -0
- package/dist/recipes/__tests__/execution-paths.test.js.map +1 -0
- package/dist/recipes/__tests__/registry.test.d.ts +2 -0
- package/dist/recipes/__tests__/registry.test.d.ts.map +1 -0
- package/dist/recipes/__tests__/registry.test.js +89 -0
- package/dist/recipes/__tests__/registry.test.js.map +1 -0
- package/dist/recipes/__tests__/retry.test.d.ts +2 -0
- package/dist/recipes/__tests__/retry.test.d.ts.map +1 -0
- package/dist/recipes/__tests__/retry.test.js +75 -0
- package/dist/recipes/__tests__/retry.test.js.map +1 -0
- package/dist/recipes/__tests__/run-one-check.test.d.ts +14 -0
- package/dist/recipes/__tests__/run-one-check.test.d.ts.map +1 -0
- package/dist/recipes/__tests__/run-one-check.test.js +182 -0
- package/dist/recipes/__tests__/run-one-check.test.js.map +1 -0
- package/dist/recipes/__tests__/service.test.d.ts +11 -0
- package/dist/recipes/__tests__/service.test.d.ts.map +1 -0
- package/dist/recipes/__tests__/service.test.js +572 -0
- package/dist/recipes/__tests__/service.test.js.map +1 -0
- package/dist/recipes/built-in-recipes.d.ts +14 -0
- package/dist/recipes/built-in-recipes.d.ts.map +1 -0
- package/dist/recipes/built-in-recipes.js +241 -0
- package/dist/recipes/built-in-recipes.js.map +1 -0
- package/dist/recipes/check-config.d.ts +56 -0
- package/dist/recipes/check-config.d.ts.map +1 -0
- package/dist/recipes/check-config.js +61 -0
- package/dist/recipes/check-config.js.map +1 -0
- package/dist/recipes/check-resolution.d.ts +36 -0
- package/dist/recipes/check-resolution.d.ts.map +1 -0
- package/dist/recipes/check-resolution.js +81 -0
- package/dist/recipes/check-resolution.js.map +1 -0
- package/dist/recipes/check-result-processor.d.ts +51 -0
- package/dist/recipes/check-result-processor.d.ts.map +1 -0
- package/dist/recipes/check-result-processor.js +197 -0
- package/dist/recipes/check-result-processor.js.map +1 -0
- package/dist/recipes/parallel-execution.d.ts +38 -0
- package/dist/recipes/parallel-execution.d.ts.map +1 -0
- package/dist/recipes/parallel-execution.js +61 -0
- package/dist/recipes/parallel-execution.js.map +1 -0
- package/dist/recipes/registry.d.ts +47 -0
- package/dist/recipes/registry.d.ts.map +1 -0
- package/dist/recipes/registry.js +70 -0
- package/dist/recipes/registry.js.map +1 -0
- package/dist/recipes/retry.d.ts +29 -0
- package/dist/recipes/retry.d.ts.map +1 -0
- package/dist/recipes/retry.js +23 -0
- package/dist/recipes/retry.js.map +1 -0
- package/dist/recipes/run-one-check.d.ts +59 -0
- package/dist/recipes/run-one-check.d.ts.map +1 -0
- package/dist/recipes/run-one-check.js +174 -0
- package/dist/recipes/run-one-check.js.map +1 -0
- package/dist/recipes/sequential-execution.d.ts +12 -0
- package/dist/recipes/sequential-execution.d.ts.map +1 -0
- package/dist/recipes/sequential-execution.js +48 -0
- package/dist/recipes/sequential-execution.js.map +1 -0
- package/dist/recipes/service-types.d.ts +87 -0
- package/dist/recipes/service-types.d.ts.map +1 -0
- package/dist/recipes/service-types.js +8 -0
- package/dist/recipes/service-types.js.map +1 -0
- package/dist/recipes/service.d.ts +73 -0
- package/dist/recipes/service.d.ts.map +1 -0
- package/dist/recipes/service.js +438 -0
- package/dist/recipes/service.js.map +1 -0
- package/dist/recipes/types.d.ts +155 -0
- package/dist/recipes/types.d.ts.map +1 -0
- package/dist/recipes/types.js +56 -0
- package/dist/recipes/types.js.map +1 -0
- package/dist/scaffold/config-block.d.ts +17 -0
- package/dist/scaffold/config-block.d.ts.map +1 -0
- package/dist/scaffold/config-block.js +30 -0
- package/dist/scaffold/config-block.js.map +1 -0
- package/dist/scaffold/examples.d.ts +30 -0
- package/dist/scaffold/examples.d.ts.map +1 -0
- package/dist/scaffold/examples.js +129 -0
- package/dist/scaffold/examples.js.map +1 -0
- package/dist/scope-augmentation.d.ts +77 -0
- package/dist/scope-augmentation.d.ts.map +1 -0
- package/dist/scope-augmentation.js +31 -0
- package/dist/scope-augmentation.js.map +1 -0
- package/dist/signalers/__tests__/loader.test.d.ts +2 -0
- package/dist/signalers/__tests__/loader.test.d.ts.map +1 -0
- package/dist/signalers/__tests__/loader.test.js +141 -0
- package/dist/signalers/__tests__/loader.test.js.map +1 -0
- package/dist/signalers/__tests__/violation-to-signal.test.d.ts +2 -0
- package/dist/signalers/__tests__/violation-to-signal.test.d.ts.map +1 -0
- package/dist/signalers/__tests__/violation-to-signal.test.js +59 -0
- package/dist/signalers/__tests__/violation-to-signal.test.js.map +1 -0
- package/dist/signalers/index.d.ts +8 -0
- package/dist/signalers/index.d.ts.map +1 -0
- package/dist/signalers/index.js +9 -0
- package/dist/signalers/index.js.map +1 -0
- package/dist/signalers/loader.d.ts +30 -0
- package/dist/signalers/loader.d.ts.map +1 -0
- package/dist/signalers/loader.js +120 -0
- package/dist/signalers/loader.js.map +1 -0
- package/dist/signalers/schema.d.ts +60 -0
- package/dist/signalers/schema.d.ts.map +1 -0
- package/dist/signalers/schema.js +74 -0
- package/dist/signalers/schema.js.map +1 -0
- package/dist/signalers/types.d.ts +13 -0
- package/dist/signalers/types.d.ts.map +1 -0
- package/dist/signalers/types.js +5 -0
- package/dist/signalers/types.js.map +1 -0
- package/dist/signalers/violation-to-signal.d.ts +38 -0
- package/dist/signalers/violation-to-signal.d.ts.map +1 -0
- package/dist/signalers/violation-to-signal.js +43 -0
- package/dist/signalers/violation-to-signal.js.map +1 -0
- package/dist/targets/__tests__/loader.test.d.ts +2 -0
- package/dist/targets/__tests__/loader.test.d.ts.map +1 -0
- package/dist/targets/__tests__/loader.test.js +190 -0
- package/dist/targets/__tests__/loader.test.js.map +1 -0
- package/dist/targets/__tests__/target-registry.test.d.ts +2 -0
- package/dist/targets/__tests__/target-registry.test.d.ts.map +1 -0
- package/dist/targets/__tests__/target-registry.test.js +182 -0
- package/dist/targets/__tests__/target-registry.test.js.map +1 -0
- package/dist/targets/index.d.ts +18 -0
- package/dist/targets/index.d.ts.map +1 -0
- package/dist/targets/index.js +21 -0
- package/dist/targets/index.js.map +1 -0
- package/dist/targets/loader.d.ts +27 -0
- package/dist/targets/loader.d.ts.map +1 -0
- package/dist/targets/loader.js +178 -0
- package/dist/targets/loader.js.map +1 -0
- package/dist/targets/target-registry.d.ts +41 -0
- package/dist/targets/target-registry.d.ts.map +1 -0
- package/dist/targets/target-registry.js +71 -0
- package/dist/targets/target-registry.js.map +1 -0
- package/dist/targets/types.d.ts +14 -0
- package/dist/targets/types.d.ts.map +1 -0
- package/dist/targets/types.js +14 -0
- package/dist/targets/types.js.map +1 -0
- package/dist/tool.d.ts +61 -0
- package/dist/tool.d.ts.map +1 -0
- package/dist/tool.js +260 -0
- package/dist/tool.js.map +1 -0
- package/dist/types/findings.d.ts +113 -0
- package/dist/types/findings.d.ts.map +1 -0
- package/dist/types/findings.js +89 -0
- package/dist/types/findings.js.map +1 -0
- package/dist/types/severity.d.ts +15 -0
- package/dist/types/severity.d.ts.map +1 -0
- package/dist/types/severity.js +33 -0
- package/dist/types/severity.js.map +1 -0
- package/package.json +137 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Path matching utilities for fitness checks.
|
|
3
|
+
*
|
|
4
|
+
* Factory function for creating path matchers that work with both string
|
|
5
|
+
* patterns (using `includes`) and RegExp patterns (using `test`). Previously
|
|
6
|
+
* each check pack carried a byte-identical copy of this helper — surfaced by
|
|
7
|
+
* the graph tool's duplicated-function-body rule. Both packs depend on
|
|
8
|
+
* @opensip-cli/fitness, so the engine is the natural shared home.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Creates a path matcher function from an array of patterns.
|
|
12
|
+
*
|
|
13
|
+
* String patterns match using `path.includes(pattern)`.
|
|
14
|
+
* RegExp patterns match using `pattern.test(path)`.
|
|
15
|
+
*
|
|
16
|
+
* @param patterns - Array of string or RegExp patterns to match against
|
|
17
|
+
* @returns A function that returns true if the path matches any pattern
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* // String patterns (includes matching)
|
|
22
|
+
* const isExcluded = createPathMatcher(['/__tests__/', '/node_modules/']);
|
|
23
|
+
* isExcluded('/src/__tests__/foo.ts'); // true
|
|
24
|
+
*
|
|
25
|
+
* // RegExp patterns (test matching)
|
|
26
|
+
* const isTestFile = createPathMatcher([/\.test\.ts$/, /\.spec\.ts$/]);
|
|
27
|
+
* isTestFile('foo.test.ts'); // true
|
|
28
|
+
*
|
|
29
|
+
* // Mixed patterns
|
|
30
|
+
* const isIgnored = createPathMatcher(['/dist/', /node_modules/]);
|
|
31
|
+
* isIgnored('/project/dist/bundle.js'); // true
|
|
32
|
+
* isIgnored('/project/node_modules/lodash/index.js'); // true
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export function createPathMatcher(patterns) {
|
|
36
|
+
return (path) => patterns.some((p) => (typeof p === 'string' ? path.includes(p) : p.test(path)));
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=path-matching.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-matching.js","sourceRoot":"","sources":["../../src/check-utils/path-matching.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgC;IAChE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnG,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Source code analysis utilities
|
|
3
|
+
*
|
|
4
|
+
* Utilities for analyzing source code content.
|
|
5
|
+
* These are generic helpers used across fitness checks for code analysis.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Options for isCommentLine detection
|
|
9
|
+
*/
|
|
10
|
+
export interface IsCommentLineOptions {
|
|
11
|
+
/**
|
|
12
|
+
* Include block comment start markers (/*) as comment lines
|
|
13
|
+
* @default true
|
|
14
|
+
*/
|
|
15
|
+
includeBlockStart?: boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Check if a line of code is a comment line.
|
|
19
|
+
*
|
|
20
|
+
* Detects:
|
|
21
|
+
* - Single-line comments: // ...
|
|
22
|
+
* - Block comment continuation lines: * ...
|
|
23
|
+
* - Optionally block comment start: /* ...
|
|
24
|
+
*
|
|
25
|
+
* @param line - The line of code to check
|
|
26
|
+
* @param options - Detection options
|
|
27
|
+
* @returns True if the line is a comment
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* isCommentLine(' // this is a comment') // true
|
|
31
|
+
* isCommentLine(' * continuation line') // true
|
|
32
|
+
* isCommentLine(' const x = 1;') // false
|
|
33
|
+
* isCommentLine(' /* block start', { includeBlockStart: true }) // true
|
|
34
|
+
*/
|
|
35
|
+
export declare function isCommentLine(line: string, options?: IsCommentLineOptions): boolean;
|
|
36
|
+
//# sourceMappingURL=source-analysis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-analysis.d.ts","sourceRoot":"","sources":["../../src/check-utils/source-analysis.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAwBvF"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Source code analysis utilities
|
|
3
|
+
*
|
|
4
|
+
* Utilities for analyzing source code content.
|
|
5
|
+
* These are generic helpers used across fitness checks for code analysis.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Check if a line of code is a comment line.
|
|
9
|
+
*
|
|
10
|
+
* Detects:
|
|
11
|
+
* - Single-line comments: // ...
|
|
12
|
+
* - Block comment continuation lines: * ...
|
|
13
|
+
* - Optionally block comment start: /* ...
|
|
14
|
+
*
|
|
15
|
+
* @param line - The line of code to check
|
|
16
|
+
* @param options - Detection options
|
|
17
|
+
* @returns True if the line is a comment
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* isCommentLine(' // this is a comment') // true
|
|
21
|
+
* isCommentLine(' * continuation line') // true
|
|
22
|
+
* isCommentLine(' const x = 1;') // false
|
|
23
|
+
* isCommentLine(' /* block start', { includeBlockStart: true }) // true
|
|
24
|
+
*/
|
|
25
|
+
export function isCommentLine(line, options = {}) {
|
|
26
|
+
const { includeBlockStart = true } = options;
|
|
27
|
+
const trimmed = line.trim();
|
|
28
|
+
// Single-line comment
|
|
29
|
+
if (trimmed.startsWith('//')) {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
// Block comment start (/* ...) — check before * continuation since /* starts with *
|
|
33
|
+
if (trimmed.startsWith('/*')) {
|
|
34
|
+
return includeBlockStart;
|
|
35
|
+
}
|
|
36
|
+
// Block comment continuation (lines starting with * followed by space, /, or end-of-line)
|
|
37
|
+
// Excludes operators like *= to avoid false positives
|
|
38
|
+
if (trimmed.startsWith('*') &&
|
|
39
|
+
(trimmed.length === 1 || trimmed[1] === ' ' || trimmed[1] === '/' || trimmed[1] === '*')) {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=source-analysis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-analysis.js","sourceRoot":"","sources":["../../src/check-utils/source-analysis.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,UAAgC,EAAE;IAC5E,MAAM,EAAE,iBAAiB,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAE5B,sBAAsB;IACtB,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oFAAoF;IACpF,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,0FAA0F;IAC1F,sDAAsD;IACtD,IACE,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QACvB,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EACxF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Unified test file detection utilities
|
|
3
|
+
* @version 1.0.0
|
|
4
|
+
*
|
|
5
|
+
* Consolidated test file detection that replaces various duplicated implementations.
|
|
6
|
+
* These utilities are specific to code analysis tooling.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Options for isTestFile detection
|
|
10
|
+
*/
|
|
11
|
+
export interface IsTestFileOptions {
|
|
12
|
+
/**
|
|
13
|
+
* Check for __tests__ directory pattern
|
|
14
|
+
* @default true
|
|
15
|
+
*/
|
|
16
|
+
checkTestsDir?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Check for .test.ts/.test.tsx extension pattern
|
|
19
|
+
* @default true
|
|
20
|
+
*/
|
|
21
|
+
checkTestExtension?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Check for .spec.ts/.spec.tsx extension pattern
|
|
24
|
+
* @default true
|
|
25
|
+
*/
|
|
26
|
+
checkSpecExtension?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Exclude .d.ts declaration files from being considered test files
|
|
29
|
+
* @default true
|
|
30
|
+
*/
|
|
31
|
+
excludeDeclarationFiles?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Additional custom patterns to check (RegExp patterns)
|
|
34
|
+
* @default []
|
|
35
|
+
*/
|
|
36
|
+
additionalPatterns?: RegExp[];
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Check if a file path is a test file.
|
|
40
|
+
*
|
|
41
|
+
* @param filePath - File path to check
|
|
42
|
+
* @param options - Detection options
|
|
43
|
+
* @returns True if the file is a test file
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* // Default: comprehensive check
|
|
47
|
+
* isTestFile('src/__tests__/utils.test.ts') // true
|
|
48
|
+
* isTestFile('src/utils.ts') // false
|
|
49
|
+
* isTestFile('src/types.d.ts') // false
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* // Check only specific patterns
|
|
53
|
+
* isTestFile('src/foo.spec.ts', { checkTestsDir: false }) // true
|
|
54
|
+
* isTestFile('src/__tests__/foo.ts', { checkTestExtension: false, checkSpecExtension: false }) // true
|
|
55
|
+
*/
|
|
56
|
+
export declare function isTestFile(filePath: string, options?: IsTestFileOptions): boolean;
|
|
57
|
+
//# sourceMappingURL=test-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../../src/check-utils/test-helpers.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAsBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAwCrF"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// @fitness-ignore-file batch-operation-limits -- iterates bounded collections (config entries, registry items, or small analysis results)
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Unified test file detection utilities
|
|
4
|
+
* @version 1.0.0
|
|
5
|
+
*
|
|
6
|
+
* Consolidated test file detection that replaces various duplicated implementations.
|
|
7
|
+
* These utilities are specific to code analysis tooling.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Standard test file patterns used across the codebase. Matches
|
|
11
|
+
* .test.{ts,tsx,js,jsx,mts,cts} and .spec.{ts,tsx,js,jsx,mts,cts} so the
|
|
12
|
+
* helper subsumes inline 7-arm endsWith chains some checks were keeping
|
|
13
|
+
* for .test.js / .test.jsx coverage.
|
|
14
|
+
*/
|
|
15
|
+
const TEST_FILE_PATTERNS = {
|
|
16
|
+
/** Files ending with .test.{ts,tsx,js,jsx,mts,cts} */
|
|
17
|
+
testExtension: /\.test\.(?:tsx?|jsx?|mts|cts)$/,
|
|
18
|
+
/** Files ending with .spec.{ts,tsx,js,jsx,mts,cts} */
|
|
19
|
+
specExtension: /\.spec\.(?:tsx?|jsx?|mts|cts)$/,
|
|
20
|
+
/** Files in __tests__ directory */
|
|
21
|
+
testsDirectory: /__tests__[/\\]/,
|
|
22
|
+
/** Declaration files that should be excluded */
|
|
23
|
+
declarationFile: /\.d\.ts$/,
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Check if a file path is a test file.
|
|
27
|
+
*
|
|
28
|
+
* @param filePath - File path to check
|
|
29
|
+
* @param options - Detection options
|
|
30
|
+
* @returns True if the file is a test file
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* // Default: comprehensive check
|
|
34
|
+
* isTestFile('src/__tests__/utils.test.ts') // true
|
|
35
|
+
* isTestFile('src/utils.ts') // false
|
|
36
|
+
* isTestFile('src/types.d.ts') // false
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* // Check only specific patterns
|
|
40
|
+
* isTestFile('src/foo.spec.ts', { checkTestsDir: false }) // true
|
|
41
|
+
* isTestFile('src/__tests__/foo.ts', { checkTestExtension: false, checkSpecExtension: false }) // true
|
|
42
|
+
*/
|
|
43
|
+
export function isTestFile(filePath, options = {}) {
|
|
44
|
+
const { checkTestsDir = true, checkTestExtension = true, checkSpecExtension = true, excludeDeclarationFiles = true, additionalPatterns = [], } = options;
|
|
45
|
+
// Normalize path separators for cross-platform compatibility
|
|
46
|
+
const normalized = filePath.replaceAll('\\', '/');
|
|
47
|
+
// Exclude declaration files first
|
|
48
|
+
if (excludeDeclarationFiles && normalized.endsWith('.d.ts')) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
// Check __tests__ directory
|
|
52
|
+
if (checkTestsDir && TEST_FILE_PATTERNS.testsDirectory.test(normalized)) {
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
// Check .test.ts/.test.tsx extension
|
|
56
|
+
if (checkTestExtension && TEST_FILE_PATTERNS.testExtension.test(normalized)) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
// Check .spec.ts/.spec.tsx extension
|
|
60
|
+
if (checkSpecExtension && TEST_FILE_PATTERNS.specExtension.test(normalized)) {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
// Check additional custom patterns
|
|
64
|
+
for (const pattern of additionalPatterns) {
|
|
65
|
+
if (pattern.test(normalized)) {
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=test-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../../src/check-utils/test-helpers.ts"],"names":[],"mappings":"AAAA,0IAA0I;AAC1I;;;;;;GAMG;AAqCH;;;;;GAKG;AACH,MAAM,kBAAkB,GAAG;IACzB,sDAAsD;IACtD,aAAa,EAAE,gCAAgC;IAE/C,sDAAsD;IACtD,aAAa,EAAE,gCAAgC;IAE/C,mCAAmC;IACnC,cAAc,EAAE,gBAAgB;IAEhC,gDAAgD;IAChD,eAAe,EAAE,UAAU;CACnB,CAAC;AAEX;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB,EAAE,UAA6B,EAAE;IAC1E,MAAM,EACJ,aAAa,GAAG,IAAI,EACpB,kBAAkB,GAAG,IAAI,EACzB,kBAAkB,GAAG,IAAI,EACzB,uBAAuB,GAAG,IAAI,EAC9B,kBAAkB,GAAG,EAAE,GACxB,GAAG,OAAO,CAAC;IAEZ,6DAA6D;IAC7D,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAElD,kCAAkC;IAClC,IAAI,uBAAuB,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4BAA4B;IAC5B,IAAI,aAAa,IAAI,kBAAkB,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qCAAqC;IACrC,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qCAAqC;IACrC,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mCAAmC;IACnC,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;QACzC,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ADR-0020 + ADR-0035: `fit --gate-save` (the `fit:ci` dogfood gate) must
|
|
3
|
+
* HARD-FAIL the step on a fail-threshold breach, not exit 0 and lean on the
|
|
4
|
+
* downstream Code Scanning ratchet. Post-ADR-0035 the hard-fail is the single
|
|
5
|
+
* host verdict: gate-save delivers the run envelope WITHOUT a `runFailed`
|
|
6
|
+
* override, and the host derives the findings exit from `envelope.verdict.passed`
|
|
7
|
+
* (the RUNTIME_ERROR mapping itself is pinned in envelope-routing.test.ts). These
|
|
8
|
+
* tests assert gate-save reaches delivery with the correct envelope verdict.
|
|
9
|
+
*
|
|
10
|
+
* `executeFit` is mocked so the test drives the gate verdict directly via the
|
|
11
|
+
* run envelope's `verdict.passed`.
|
|
12
|
+
*/
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=fit-gate-mode.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fit-gate-mode.test.d.ts","sourceRoot":"","sources":["../../../src/cli/__tests__/fit-gate-mode.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ADR-0020 + ADR-0035: `fit --gate-save` (the `fit:ci` dogfood gate) must
|
|
3
|
+
* HARD-FAIL the step on a fail-threshold breach, not exit 0 and lean on the
|
|
4
|
+
* downstream Code Scanning ratchet. Post-ADR-0035 the hard-fail is the single
|
|
5
|
+
* host verdict: gate-save delivers the run envelope WITHOUT a `runFailed`
|
|
6
|
+
* override, and the host derives the findings exit from `envelope.verdict.passed`
|
|
7
|
+
* (the RUNTIME_ERROR mapping itself is pinned in envelope-routing.test.ts). These
|
|
8
|
+
* tests assert gate-save reaches delivery with the correct envelope verdict.
|
|
9
|
+
*
|
|
10
|
+
* `executeFit` is mocked so the test drives the gate verdict directly via the
|
|
11
|
+
* run envelope's `verdict.passed`.
|
|
12
|
+
*/
|
|
13
|
+
import { createRunTimer } from '@opensip-cli/core';
|
|
14
|
+
import { DataStoreFactory } from '@opensip-cli/datastore';
|
|
15
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
16
|
+
vi.mock('../fit.js', () => ({ executeFit: vi.fn() }));
|
|
17
|
+
import { runGateMode } from '../fit-modes.js';
|
|
18
|
+
import { executeFit } from '../fit.js';
|
|
19
|
+
let datastore;
|
|
20
|
+
/** A run envelope whose single verdict is `passed` (the host's exit driver). */
|
|
21
|
+
const envelopeWith = (passed) => ({
|
|
22
|
+
tool: 'fitness',
|
|
23
|
+
schemaVersion: 2,
|
|
24
|
+
units: [],
|
|
25
|
+
signals: [],
|
|
26
|
+
verdict: { passed, score: passed ? 100 : 0, summary: {} },
|
|
27
|
+
});
|
|
28
|
+
/** A successful executeFit result carrying the given verdict envelope. */
|
|
29
|
+
const fitResult = (passed) => {
|
|
30
|
+
const envelope = envelopeWith(passed);
|
|
31
|
+
return {
|
|
32
|
+
result: { type: 'fit-done', label: 'gate', cwd: '/x', envelope, configFound: true },
|
|
33
|
+
envelope,
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
function mockCli() {
|
|
37
|
+
const setExitCode = vi.fn();
|
|
38
|
+
const deliverSignals = vi.fn(() => Promise.resolve());
|
|
39
|
+
const cli = {
|
|
40
|
+
setExitCode,
|
|
41
|
+
deliverSignals,
|
|
42
|
+
render: vi.fn(() => Promise.resolve()),
|
|
43
|
+
emitRaw: vi.fn(),
|
|
44
|
+
emitEnvelope: vi.fn(),
|
|
45
|
+
emitError: vi.fn(),
|
|
46
|
+
emitJson: vi.fn(),
|
|
47
|
+
logger: console,
|
|
48
|
+
// ADR-0036 host baseline seams — gate-save/compare route persistence + diff
|
|
49
|
+
// through these (the host owns them); no-op stubs suffice for the exit/deliver
|
|
50
|
+
// contract these tests assert.
|
|
51
|
+
saveBaseline: vi.fn(() => Promise.resolve()),
|
|
52
|
+
compareBaseline: vi.fn(() => Promise.resolve({ added: [], resolved: [], unchanged: [], degraded: false })),
|
|
53
|
+
exportBaselineSarif: vi.fn(() => Promise.resolve()),
|
|
54
|
+
exportBaselineFingerprints: vi.fn(() => Promise.resolve()),
|
|
55
|
+
scope: { datastore: () => datastore },
|
|
56
|
+
runSession: {
|
|
57
|
+
timing: createRunTimer(),
|
|
58
|
+
record: () => undefined,
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
return { cli, setExitCode, deliverSignals };
|
|
62
|
+
}
|
|
63
|
+
function gateSaveArgs() {
|
|
64
|
+
return {
|
|
65
|
+
json: false,
|
|
66
|
+
list: false,
|
|
67
|
+
recipes: false,
|
|
68
|
+
verbose: false,
|
|
69
|
+
debug: false,
|
|
70
|
+
quiet: true,
|
|
71
|
+
open: false,
|
|
72
|
+
cwd: '/x',
|
|
73
|
+
exclude: [],
|
|
74
|
+
gateSave: true,
|
|
75
|
+
gateCompare: false,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
beforeEach(() => {
|
|
79
|
+
datastore = DataStoreFactory.open({ backend: 'memory' });
|
|
80
|
+
vi.clearAllMocks();
|
|
81
|
+
});
|
|
82
|
+
afterEach(() => {
|
|
83
|
+
datastore.close();
|
|
84
|
+
vi.restoreAllMocks();
|
|
85
|
+
});
|
|
86
|
+
describe('runGateMode --gate-save (ADR-0020 hard-fail via the host verdict)', () => {
|
|
87
|
+
it('delivers a failing-verdict envelope WITHOUT a runFailed override (the host hard-fails on verdict.passed=false)', async () => {
|
|
88
|
+
vi.mocked(executeFit).mockResolvedValue(fitResult(false));
|
|
89
|
+
const { cli, deliverSignals } = mockCli();
|
|
90
|
+
await runGateMode(gateSaveArgs(), cli);
|
|
91
|
+
// The baseline is still delivered even when the gate fails (SARIF export runs
|
|
92
|
+
// in a separate `if: always()` CI step). gate-save's findings gate IS the host
|
|
93
|
+
// verdict, so it passes no override — the host sets RUNTIME_ERROR from
|
|
94
|
+
// envelope.verdict.passed=false (mapping pinned in envelope-routing.test.ts).
|
|
95
|
+
expect(deliverSignals).toHaveBeenCalledTimes(1);
|
|
96
|
+
const [deliveredEnvelope, opts] = deliverSignals.mock.calls[0] ?? [];
|
|
97
|
+
expect(deliveredEnvelope.verdict.passed).toBe(false);
|
|
98
|
+
expect(opts).not.toHaveProperty('runFailed');
|
|
99
|
+
});
|
|
100
|
+
it('delivers a passing-verdict envelope when the run is clean', async () => {
|
|
101
|
+
vi.mocked(executeFit).mockResolvedValue(fitResult(true));
|
|
102
|
+
const { cli, deliverSignals } = mockCli();
|
|
103
|
+
await runGateMode(gateSaveArgs(), cli);
|
|
104
|
+
expect(deliverSignals).toHaveBeenCalledTimes(1);
|
|
105
|
+
const [deliveredEnvelope, opts] = deliverSignals.mock.calls[0] ?? [];
|
|
106
|
+
expect(deliveredEnvelope.verdict.passed).toBe(true);
|
|
107
|
+
expect(opts).not.toHaveProperty('runFailed');
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
//# sourceMappingURL=fit-gate-mode.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fit-gate-mode.test.js","sourceRoot":"","sources":["../../../src/cli/__tests__/fit-gate-mode.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* runLiveMode / runJsonMode dispatch (ADR-0011 Phase 6).
|
|
3
|
+
*
|
|
4
|
+
* The animated Ink live view is a TTY-only affordance. On a TTY `runLiveMode`
|
|
5
|
+
* renders live (and the tool's `registerLiveView` callback delivers signals);
|
|
6
|
+
* in a pipe / CI / redirect (non-TTY) it falls back to running the engine,
|
|
7
|
+
* rendering the static `fit-done` result through the seam, then delivering the
|
|
8
|
+
* envelope once at the composition root. `runJsonMode` emits the envelope via
|
|
9
|
+
* `cli.emitEnvelope` and delivers once. These tests pin the dispatch + the
|
|
10
|
+
* single `deliverSignals` egress call (the root owns exit 4, tested there).
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=fit-modes-live.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fit-modes-live.test.d.ts","sourceRoot":"","sources":["../../../src/cli/__tests__/fit-modes-live.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* runLiveMode / runJsonMode dispatch (ADR-0011 Phase 6).
|
|
3
|
+
*
|
|
4
|
+
* The animated Ink live view is a TTY-only affordance. On a TTY `runLiveMode`
|
|
5
|
+
* renders live (and the tool's `registerLiveView` callback delivers signals);
|
|
6
|
+
* in a pipe / CI / redirect (non-TTY) it falls back to running the engine,
|
|
7
|
+
* rendering the static `fit-done` result through the seam, then delivering the
|
|
8
|
+
* envelope once at the composition root. `runJsonMode` emits the envelope via
|
|
9
|
+
* `cli.emitEnvelope` and delivers once. These tests pin the dispatch + the
|
|
10
|
+
* single `deliverSignals` egress call (the root owns exit 4, tested there).
|
|
11
|
+
*/
|
|
12
|
+
import { buildSignalEnvelope } from '@opensip-cli/contracts';
|
|
13
|
+
import { createRunTimer, HOST_VERDICT_POLICY_FALLBACK, } from '@opensip-cli/core';
|
|
14
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
15
|
+
import { runJsonMode, runLiveMode } from '../fit-modes.js';
|
|
16
|
+
import { executeFit } from '../fit.js';
|
|
17
|
+
vi.mock('../fit.js', () => ({ executeFit: vi.fn() }));
|
|
18
|
+
const executeFitMock = executeFit;
|
|
19
|
+
function mockCli() {
|
|
20
|
+
const renderLive = vi.fn().mockResolvedValue(undefined);
|
|
21
|
+
const render = vi.fn().mockResolvedValue(undefined);
|
|
22
|
+
const setExitCode = vi.fn();
|
|
23
|
+
const maybeOpenReport = vi.fn().mockResolvedValue(undefined);
|
|
24
|
+
const emitJson = vi.fn();
|
|
25
|
+
const emitEnvelope = vi.fn();
|
|
26
|
+
// 2.12.0: the structured-error seam. Mirror the host — it sets the exit code.
|
|
27
|
+
const emitError = vi.fn((detail) => setExitCode(detail.exitCode));
|
|
28
|
+
const deliverSignals = vi.fn().mockResolvedValue(undefined);
|
|
29
|
+
const cli = {
|
|
30
|
+
renderLive,
|
|
31
|
+
render,
|
|
32
|
+
setExitCode,
|
|
33
|
+
maybeOpenReport,
|
|
34
|
+
emitJson,
|
|
35
|
+
emitEnvelope,
|
|
36
|
+
emitError,
|
|
37
|
+
deliverSignals,
|
|
38
|
+
logger: console,
|
|
39
|
+
scope: { datastore: () => undefined },
|
|
40
|
+
runSession: {
|
|
41
|
+
timing: createRunTimer(),
|
|
42
|
+
record: () => undefined,
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
return {
|
|
46
|
+
cli,
|
|
47
|
+
renderLive,
|
|
48
|
+
render,
|
|
49
|
+
setExitCode,
|
|
50
|
+
maybeOpenReport,
|
|
51
|
+
emitEnvelope,
|
|
52
|
+
emitError,
|
|
53
|
+
deliverSignals,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
const args = { cwd: '/x' };
|
|
57
|
+
function envelope() {
|
|
58
|
+
return buildSignalEnvelope({
|
|
59
|
+
tool: 'fit',
|
|
60
|
+
runId: 'r',
|
|
61
|
+
createdAt: '2026-06-04T00:00:00.000Z',
|
|
62
|
+
units: [],
|
|
63
|
+
signals: [],
|
|
64
|
+
policy: HOST_VERDICT_POLICY_FALLBACK,
|
|
65
|
+
runFaulted: false,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
const savedTTY = process.stdout.isTTY;
|
|
69
|
+
function setTTY(value) {
|
|
70
|
+
Object.defineProperty(process.stdout, 'isTTY', { value, configurable: true });
|
|
71
|
+
}
|
|
72
|
+
beforeEach(() => {
|
|
73
|
+
executeFitMock.mockReset();
|
|
74
|
+
});
|
|
75
|
+
afterEach(() => {
|
|
76
|
+
Object.defineProperty(process.stdout, 'isTTY', { value: savedTTY, configurable: true });
|
|
77
|
+
vi.restoreAllMocks();
|
|
78
|
+
});
|
|
79
|
+
describe('runLiveMode', () => {
|
|
80
|
+
it('renders the animated live view on a TTY (and never the static seam)', async () => {
|
|
81
|
+
setTTY(true);
|
|
82
|
+
const { cli, renderLive, render, maybeOpenReport, deliverSignals } = mockCli();
|
|
83
|
+
await runLiveMode(args, cli, 'fit', false);
|
|
84
|
+
expect(renderLive).toHaveBeenCalledWith('fit', args);
|
|
85
|
+
expect(render).not.toHaveBeenCalled();
|
|
86
|
+
expect(executeFitMock).not.toHaveBeenCalled();
|
|
87
|
+
// The TTY live view delivers via the tool's registerLiveView callback,
|
|
88
|
+
// not runLiveMode — so runLiveMode itself does not call deliverSignals here.
|
|
89
|
+
expect(deliverSignals).not.toHaveBeenCalled();
|
|
90
|
+
expect(maybeOpenReport).toHaveBeenCalledTimes(1);
|
|
91
|
+
});
|
|
92
|
+
it('falls back to the static fit-done result + delivers once on non-TTY', async () => {
|
|
93
|
+
setTTY(false);
|
|
94
|
+
const result = { type: 'fit-done' };
|
|
95
|
+
executeFitMock.mockResolvedValue({ result, envelope: envelope() });
|
|
96
|
+
const { cli, renderLive, render, setExitCode, deliverSignals } = mockCli();
|
|
97
|
+
await runLiveMode(args, cli, 'fit', false);
|
|
98
|
+
expect(renderLive).not.toHaveBeenCalled();
|
|
99
|
+
expect(executeFitMock).toHaveBeenCalledTimes(1);
|
|
100
|
+
expect(render).toHaveBeenCalledWith(result);
|
|
101
|
+
expect(deliverSignals).toHaveBeenCalledTimes(1);
|
|
102
|
+
// ADR-0035: the mode no longer sets the findings exit — the host derives it
|
|
103
|
+
// from envelope.verdict.passed inside deliverSignals (mocked here; the exit
|
|
104
|
+
// behaviour is covered in envelope-routing.test.ts).
|
|
105
|
+
expect(setExitCode).not.toHaveBeenCalled();
|
|
106
|
+
});
|
|
107
|
+
it('delivers the envelope on a non-TTY run; the host owns the findings exit (ADR-0035)', async () => {
|
|
108
|
+
setTTY(false);
|
|
109
|
+
executeFitMock.mockResolvedValue({
|
|
110
|
+
result: { type: 'fit-done' },
|
|
111
|
+
envelope: envelope(),
|
|
112
|
+
});
|
|
113
|
+
const { cli, render, deliverSignals } = mockCli();
|
|
114
|
+
await runLiveMode(args, cli, 'fit', false);
|
|
115
|
+
// The mode renders + delivers; deliverSignals (the host seam) owns the exit.
|
|
116
|
+
expect(render).toHaveBeenCalled();
|
|
117
|
+
expect(deliverSignals).toHaveBeenCalledTimes(1);
|
|
118
|
+
expect(deliverSignals.mock.calls[0]?.[1]).not.toHaveProperty('runFailed');
|
|
119
|
+
});
|
|
120
|
+
it("propagates an error result's exit code on a non-TTY run (no delivery)", async () => {
|
|
121
|
+
setTTY(false);
|
|
122
|
+
const result = { type: 'error', exitCode: 2, message: 'no config' };
|
|
123
|
+
executeFitMock.mockResolvedValue({ result });
|
|
124
|
+
const { cli, setExitCode, render, deliverSignals } = mockCli();
|
|
125
|
+
await runLiveMode(args, cli, 'fit', false);
|
|
126
|
+
expect(setExitCode).toHaveBeenCalledWith(2);
|
|
127
|
+
expect(render).toHaveBeenCalledWith(result);
|
|
128
|
+
expect(deliverSignals).not.toHaveBeenCalled();
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
describe('runJsonMode', () => {
|
|
132
|
+
const reportArgs = {
|
|
133
|
+
cwd: '/x',
|
|
134
|
+
reportTo: 'https://sink.example',
|
|
135
|
+
apiKey: 'k',
|
|
136
|
+
};
|
|
137
|
+
it('emits the envelope and delivers signals once (no runFailed — host derives exit)', async () => {
|
|
138
|
+
const env = envelope();
|
|
139
|
+
executeFitMock.mockResolvedValue({
|
|
140
|
+
result: { type: 'fit-done' },
|
|
141
|
+
envelope: env,
|
|
142
|
+
});
|
|
143
|
+
const { cli, emitEnvelope, deliverSignals } = mockCli();
|
|
144
|
+
await runJsonMode(reportArgs, cli);
|
|
145
|
+
expect(emitEnvelope).toHaveBeenCalledWith(env);
|
|
146
|
+
expect(deliverSignals).toHaveBeenCalledTimes(1);
|
|
147
|
+
// ADR-0035: a normal run delivers WITHOUT `runFailed`; the host derives the
|
|
148
|
+
// findings exit from envelope.verdict.passed.
|
|
149
|
+
expect(deliverSignals).toHaveBeenCalledWith(env, {
|
|
150
|
+
cwd: '/x',
|
|
151
|
+
reportTo: 'https://sink.example',
|
|
152
|
+
apiKey: 'k',
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
it('delivers without runFailed on a failing run; the host owns the exit (ADR-0035)', async () => {
|
|
156
|
+
const env = envelope();
|
|
157
|
+
executeFitMock.mockResolvedValue({
|
|
158
|
+
result: { type: 'fit-done' },
|
|
159
|
+
envelope: env,
|
|
160
|
+
});
|
|
161
|
+
const { cli, setExitCode, deliverSignals } = mockCli();
|
|
162
|
+
await runJsonMode(reportArgs, cli);
|
|
163
|
+
// The mode no longer computes shouldFail or sets the exit — deliverSignals
|
|
164
|
+
// (the host seam) owns it, derived from the envelope verdict.
|
|
165
|
+
expect(setExitCode).not.toHaveBeenCalled();
|
|
166
|
+
expect(deliverSignals.mock.calls[0]?.[1]).not.toHaveProperty('runFailed');
|
|
167
|
+
});
|
|
168
|
+
it('emits an error payload and does not deliver on an error result', async () => {
|
|
169
|
+
executeFitMock.mockResolvedValue({
|
|
170
|
+
result: { type: 'error', exitCode: 2, message: 'no config' },
|
|
171
|
+
});
|
|
172
|
+
const { cli, emitEnvelope, emitError, deliverSignals, setExitCode } = mockCli();
|
|
173
|
+
await runJsonMode(args, cli);
|
|
174
|
+
// 2.12.0 (§5.5): a failed --json run emits a structured error through the
|
|
175
|
+
// `emitError` seam (host wraps it + sets the exit code), not a bare envelope.
|
|
176
|
+
expect(emitError).toHaveBeenCalledWith({ message: 'no config', exitCode: 2 });
|
|
177
|
+
expect(setExitCode).toHaveBeenCalledWith(2);
|
|
178
|
+
expect(emitEnvelope).not.toHaveBeenCalled();
|
|
179
|
+
expect(deliverSignals).not.toHaveBeenCalled();
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
//# sourceMappingURL=fit-modes-live.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fit-modes-live.test.js","sourceRoot":"","sources":["../../../src/cli/__tests__/fit-modes-live.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for `collectFitnessReportData` — fitness's contribution to
|
|
3
|
+
* the cross-tool dashboard composed by the CLI (audit 2026-05-29, L2).
|
|
4
|
+
*
|
|
5
|
+
* The collector returns ONLY fitness-owned inputs (check catalog, recipe
|
|
6
|
+
* catalog, editor protocol) keyed by the field names
|
|
7
|
+
* `generateDashboardHtml` consumes. It does NOT read sessions, the graph
|
|
8
|
+
* catalog, write any file, or open a browser — those are the CLI
|
|
9
|
+
* composition root's job now.
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=report-data.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-data.test.d.ts","sourceRoot":"","sources":["../../../src/cli/__tests__/report-data.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|