@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,197 @@
|
|
|
1
|
+
// @fitness-ignore-file toctou-race-condition -- updateSessionForSuccess mutates a session object owned by the calling recipe runner; recipe execution is serial and synchronous within a single Node.js process, no concurrent writers
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Check result processor for fitness recipe execution
|
|
4
|
+
*
|
|
5
|
+
* Processes individual check results (success or error), updates session state,
|
|
6
|
+
* builds check summaries, and determines whether execution should stop.
|
|
7
|
+
*/
|
|
8
|
+
import { logger, SeverityPolicy, SystemError } from '@opensip-cli/core';
|
|
9
|
+
import { memoryProfiler } from '../framework/memory-profiler.js';
|
|
10
|
+
import { countErrors, countWarnings } from '../types/severity.js';
|
|
11
|
+
/** Build a CheckSummary from a successful check execution */
|
|
12
|
+
function createCheckSummary(input) {
|
|
13
|
+
return {
|
|
14
|
+
checkId: input.checkId,
|
|
15
|
+
checkSlug: input.checkSlug,
|
|
16
|
+
passed: input.passed,
|
|
17
|
+
errors: input.errorCount,
|
|
18
|
+
warnings: input.warningCount,
|
|
19
|
+
durationMs: input.durationMs,
|
|
20
|
+
filesScanned: input.filesScanned ?? 0,
|
|
21
|
+
ignoredCount: input.ignoredCount ?? 0,
|
|
22
|
+
memoryProfile: input.memoryProfile,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/** Build a CheckSummary from a failed or errored check execution */
|
|
26
|
+
function createErrorSummary(input) {
|
|
27
|
+
return {
|
|
28
|
+
checkId: input.checkId,
|
|
29
|
+
checkSlug: input.checkSlug,
|
|
30
|
+
passed: false,
|
|
31
|
+
errors: 1,
|
|
32
|
+
warnings: 0,
|
|
33
|
+
durationMs: input.durationMs,
|
|
34
|
+
filesScanned: 0,
|
|
35
|
+
ignoredCount: 0,
|
|
36
|
+
memoryProfile: input.memoryProfile,
|
|
37
|
+
timedOut: input.timedOut,
|
|
38
|
+
errorMessage: input.errorMessage,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
// =============================================================================
|
|
42
|
+
// SESSION UPDATES
|
|
43
|
+
// =============================================================================
|
|
44
|
+
function updateSessionForSuccess(session, checkResult, tags) {
|
|
45
|
+
session.checkResults.push(checkResult);
|
|
46
|
+
session.completedChecks++;
|
|
47
|
+
if (checkResult.passed) {
|
|
48
|
+
session.passedChecks++;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
session.failedChecks++;
|
|
52
|
+
}
|
|
53
|
+
session.totalErrors += checkResult.errorCount;
|
|
54
|
+
session.totalWarnings += checkResult.warningCount;
|
|
55
|
+
session.totalIgnored += checkResult.ignoredCount;
|
|
56
|
+
for (const tag of tags) {
|
|
57
|
+
session.ignoresByTag.set(tag, (session.ignoresByTag.get(tag) ?? 0) + checkResult.ignoredCount);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function updateSessionForError(session, checkResult) {
|
|
61
|
+
session.checkResults.push(checkResult);
|
|
62
|
+
session.completedChecks++;
|
|
63
|
+
session.failedChecks++;
|
|
64
|
+
session.totalErrors++;
|
|
65
|
+
}
|
|
66
|
+
// =============================================================================
|
|
67
|
+
// MAIN PROCESSORS
|
|
68
|
+
// =============================================================================
|
|
69
|
+
/** Process a successful check result: update session, invoke callbacks, and determine stop condition */
|
|
70
|
+
export function processSuccessResult(ctx, input) {
|
|
71
|
+
const { checkId, checkSlug, tags, checkIndex, totalChecks, result, durationMs, memoryBeforeMB } = input;
|
|
72
|
+
const { session, callbacks, recipe } = ctx;
|
|
73
|
+
// Apply file filter if set
|
|
74
|
+
let effectiveSignals = result.signals;
|
|
75
|
+
if (recipe.fileFilter) {
|
|
76
|
+
effectiveSignals = result.signals.filter((s) => s.code?.file === recipe.fileFilter);
|
|
77
|
+
}
|
|
78
|
+
const signalCount = effectiveSignals.length;
|
|
79
|
+
const errorCount = recipe.fileFilter ? countErrors(effectiveSignals) : result.errors;
|
|
80
|
+
const warningCount = recipe.fileFilter ? countWarnings(effectiveSignals) : result.warnings;
|
|
81
|
+
const ignoredCount = result.ignoredCount ?? 0;
|
|
82
|
+
const passed = recipe.fileFilter ? errorCount === 0 : result.passed;
|
|
83
|
+
const memoryProfile = memoryProfiler.recordCheckComplete(checkId, memoryBeforeMB, signalCount, durationMs);
|
|
84
|
+
/* v8 ignore start -- memory threshold is sized for production-scale (100MB+); not exercised by unit tests that operate on tiny fixture inputs */
|
|
85
|
+
if (memoryProfiler.exceedsThreshold(memoryProfile.memoryDeltaMB)) {
|
|
86
|
+
logger.warn('Check exceeded memory threshold', {
|
|
87
|
+
evt: 'fitness.check.memory.exceeded',
|
|
88
|
+
module: 'fitness:recipes',
|
|
89
|
+
checkId,
|
|
90
|
+
checkSlug,
|
|
91
|
+
memoryDeltaMB: memoryProfile.memoryDeltaMB,
|
|
92
|
+
});
|
|
93
|
+
callbacks.onMemoryWarning?.(checkId, memoryProfile);
|
|
94
|
+
}
|
|
95
|
+
/* v8 ignore stop */
|
|
96
|
+
const checkResult = {
|
|
97
|
+
checkId,
|
|
98
|
+
checkSlug,
|
|
99
|
+
passed,
|
|
100
|
+
violationCount: signalCount,
|
|
101
|
+
errorCount,
|
|
102
|
+
warningCount,
|
|
103
|
+
ignoredCount,
|
|
104
|
+
durationMs,
|
|
105
|
+
totalItems: result.metadata.totalItems,
|
|
106
|
+
itemType: result.metadata.itemType,
|
|
107
|
+
skipped: false,
|
|
108
|
+
...(result.appliedDirectives && result.appliedDirectives.length > 0
|
|
109
|
+
? { appliedDirectives: result.appliedDirectives }
|
|
110
|
+
: {}),
|
|
111
|
+
...(ctx.includeViolations
|
|
112
|
+
? {
|
|
113
|
+
violations: effectiveSignals.map((s) => ({
|
|
114
|
+
file: s.code?.file ?? 'unknown',
|
|
115
|
+
line: s.code?.line ?? 0,
|
|
116
|
+
column: s.code?.column,
|
|
117
|
+
message: s.message,
|
|
118
|
+
severity: SeverityPolicy.isError(s.severity)
|
|
119
|
+
? 'error'
|
|
120
|
+
: 'warning',
|
|
121
|
+
suggestion: s.suggestion,
|
|
122
|
+
})),
|
|
123
|
+
}
|
|
124
|
+
: {}),
|
|
125
|
+
};
|
|
126
|
+
updateSessionForSuccess(session, checkResult, tags);
|
|
127
|
+
const summary = createCheckSummary({
|
|
128
|
+
checkId,
|
|
129
|
+
checkSlug,
|
|
130
|
+
passed,
|
|
131
|
+
errorCount,
|
|
132
|
+
warningCount,
|
|
133
|
+
durationMs,
|
|
134
|
+
memoryProfile,
|
|
135
|
+
ignoredCount,
|
|
136
|
+
filesScanned: result.metadata.filesScanned ?? 0,
|
|
137
|
+
});
|
|
138
|
+
try {
|
|
139
|
+
callbacks.onCheckComplete?.(checkSlug, summary, checkIndex, totalChecks);
|
|
140
|
+
}
|
|
141
|
+
catch (cbError) {
|
|
142
|
+
// Callback (e.g. progress renderer) threw after the check itself succeeded.
|
|
143
|
+
// Log but do not turn this into an error result or double-count the session
|
|
144
|
+
// (success path already updated counts). The check run is still a success.
|
|
145
|
+
logger.warn({
|
|
146
|
+
evt: 'fitness.check.callback_error',
|
|
147
|
+
module: 'fitness:check-result-processor',
|
|
148
|
+
checkSlug,
|
|
149
|
+
error: cbError instanceof Error ? cbError.message : String(cbError),
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
const shouldStop = recipe.execution.stopOnFirstFailure && !passed;
|
|
153
|
+
return { checkResult, memoryProfile, shouldStop };
|
|
154
|
+
}
|
|
155
|
+
/** Process a failed check result: update session, invoke callbacks, and determine stop condition */
|
|
156
|
+
export function processErrorResult(ctx, input) {
|
|
157
|
+
const { checkId, checkSlug, checkIndex, totalChecks, error, durationMs, memoryBeforeMB, timedOut, timeoutMs, } = input;
|
|
158
|
+
const { session, callbacks, recipe } = ctx;
|
|
159
|
+
let errMsg;
|
|
160
|
+
if (timedOut && timeoutMs) {
|
|
161
|
+
errMsg = `Check ${checkSlug} timed out after ${timeoutMs}ms`;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
/* v8 ignore next -- callers always pass Error subclasses; the String(error) fallback is defensive */
|
|
165
|
+
errMsg = error instanceof Error ? error.message : String(error);
|
|
166
|
+
}
|
|
167
|
+
const memoryProfile = memoryProfiler.recordCheckComplete(checkId, memoryBeforeMB, 0, durationMs);
|
|
168
|
+
const checkResult = {
|
|
169
|
+
checkId,
|
|
170
|
+
checkSlug,
|
|
171
|
+
passed: false,
|
|
172
|
+
violationCount: 0,
|
|
173
|
+
errorCount: 1,
|
|
174
|
+
warningCount: 0,
|
|
175
|
+
ignoredCount: 0,
|
|
176
|
+
durationMs,
|
|
177
|
+
skipped: false,
|
|
178
|
+
error: errMsg,
|
|
179
|
+
timedOut,
|
|
180
|
+
};
|
|
181
|
+
updateSessionForError(session, checkResult);
|
|
182
|
+
const summary = createErrorSummary({
|
|
183
|
+
checkId,
|
|
184
|
+
checkSlug,
|
|
185
|
+
durationMs,
|
|
186
|
+
memoryProfile,
|
|
187
|
+
timedOut,
|
|
188
|
+
errorMessage: errMsg,
|
|
189
|
+
});
|
|
190
|
+
callbacks.onError?.(checkSlug, error instanceof Error
|
|
191
|
+
? error
|
|
192
|
+
: new SystemError(errMsg, { code: 'SYSTEM.FITNESS.CHECK_ERROR' }));
|
|
193
|
+
callbacks.onCheckComplete?.(checkSlug, summary, checkIndex, totalChecks);
|
|
194
|
+
const shouldStop = recipe.execution.stopOnFirstFailure;
|
|
195
|
+
return { checkResult, memoryProfile, shouldStop };
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=check-result-processor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-result-processor.js","sourceRoot":"","sources":["../../src/recipes/check-result-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Parallel execution scheduler for fitness recipe checks
|
|
3
|
+
*
|
|
4
|
+
* Maintains a sliding window of `maxParallel` in-flight `runOneCheck`
|
|
5
|
+
* calls. Per-check semantics (timeout, abort, retry, success/error
|
|
6
|
+
* dispatch) live in `runOneCheck`; this file owns only the scheduling
|
|
7
|
+
* shape.
|
|
8
|
+
*/
|
|
9
|
+
import type { FitnessRecipeServiceCallbacks, FitnessRecipeSession } from './service-types.js';
|
|
10
|
+
import type { FitnessRecipe } from './types.js';
|
|
11
|
+
import type { Check } from '../framework/check-types.js';
|
|
12
|
+
import type { FileCache } from '../framework/file-cache.js';
|
|
13
|
+
/** Options for executing a set of fitness checks */
|
|
14
|
+
export interface ExecutionOptions {
|
|
15
|
+
checks: Check[];
|
|
16
|
+
cwd: string;
|
|
17
|
+
recipe: FitnessRecipe;
|
|
18
|
+
/** Per-check pre-resolved file paths from target overrides */
|
|
19
|
+
checkTargetFiles?: ReadonlyMap<string, readonly string[]>;
|
|
20
|
+
/**
|
|
21
|
+
* Run-wide globalExcludes from project config. Forwarded into each
|
|
22
|
+
* check's RunOptions so scope-empty checks honor exclusions instead
|
|
23
|
+
* of scanning every file in the prewarmed cache.
|
|
24
|
+
*/
|
|
25
|
+
globalExcludes?: readonly string[];
|
|
26
|
+
/** Per-service FileCache (for concurrent SaaS RunScope isolation). */
|
|
27
|
+
fileCache?: FileCache;
|
|
28
|
+
}
|
|
29
|
+
/** Service context providing session state, callbacks, and abort control */
|
|
30
|
+
export interface ExecutionServiceContext {
|
|
31
|
+
session: FitnessRecipeSession;
|
|
32
|
+
callbacks: FitnessRecipeServiceCallbacks;
|
|
33
|
+
abortController?: AbortController;
|
|
34
|
+
includeViolations?: boolean;
|
|
35
|
+
}
|
|
36
|
+
/** Execute fitness checks concurrently with configurable parallelism and per-check timeouts */
|
|
37
|
+
export declare function executeParallel(ctx: ExecutionServiceContext, opts: ExecutionOptions): Promise<void>;
|
|
38
|
+
//# sourceMappingURL=parallel-execution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parallel-execution.d.ts","sourceRoot":"","sources":["../../src/recipes/parallel-execution.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,OAAO,KAAK,EAAE,6BAA6B,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC9F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAM5D,oDAAoD;AACpD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,aAAa,CAAC;IACtB,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;IAC1D;;;;OAIG;IACH,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,sEAAsE;IACtE,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,4EAA4E;AAC5E,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,SAAS,EAAE,6BAA6B,CAAC;IACzC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAMD,+FAA+F;AAC/F,wBAAsB,eAAe,CACnC,GAAG,EAAE,uBAAuB,EAC5B,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,IAAI,CAAC,CAkDf"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Parallel execution scheduler for fitness recipe checks
|
|
3
|
+
*
|
|
4
|
+
* Maintains a sliding window of `maxParallel` in-flight `runOneCheck`
|
|
5
|
+
* calls. Per-check semantics (timeout, abort, retry, success/error
|
|
6
|
+
* dispatch) live in `runOneCheck`; this file owns only the scheduling
|
|
7
|
+
* shape.
|
|
8
|
+
*/
|
|
9
|
+
import { scheduleUnits } from '@opensip-cli/core';
|
|
10
|
+
import { runOneCheck } from './run-one-check.js';
|
|
11
|
+
import { getEffectiveMaxParallel } from './types.js';
|
|
12
|
+
// =============================================================================
|
|
13
|
+
// PARALLEL EXECUTION
|
|
14
|
+
// =============================================================================
|
|
15
|
+
/** Execute fitness checks concurrently with configurable parallelism and per-check timeouts */
|
|
16
|
+
export async function executeParallel(ctx, opts) {
|
|
17
|
+
const { checks, cwd, recipe, checkTargetFiles, globalExcludes } = opts;
|
|
18
|
+
const { session, callbacks, abortController } = ctx;
|
|
19
|
+
const recipeTimeout = recipe.execution.timeout ?? 30_000;
|
|
20
|
+
const maxParallel = getEffectiveMaxParallel(recipe);
|
|
21
|
+
const totalChecks = checks.length;
|
|
22
|
+
if (totalChecks === 0)
|
|
23
|
+
return;
|
|
24
|
+
const processorCtx = {
|
|
25
|
+
session,
|
|
26
|
+
callbacks,
|
|
27
|
+
recipe,
|
|
28
|
+
includeViolations: ctx.includeViolations ?? false,
|
|
29
|
+
};
|
|
30
|
+
// Release 2.13.0 (§5.8): the sliding-window scheduling shape now lives in the
|
|
31
|
+
// shared substrate (`scheduleUnits`). This file keeps only the fitness setup +
|
|
32
|
+
// the per-check `runOneCheck` body; the loop/concurrency/stop/abort policy is
|
|
33
|
+
// host-owned. Byte-identical: scheduleUnits launches units in array order
|
|
34
|
+
// (1-based `index + 1` = the former `displayIndex`), refills up to `maxParallel`
|
|
35
|
+
// unless stopping/aborted, and resolves when drained.
|
|
36
|
+
await scheduleUnits({
|
|
37
|
+
units: checks,
|
|
38
|
+
mode: 'parallel',
|
|
39
|
+
maxParallel,
|
|
40
|
+
// Interim live-view smoothing (ADR-0028): a macrotask boundary between checks
|
|
41
|
+
// lets the in-process live spinner + 80ms clock paint. Superseded for the
|
|
42
|
+
// live run by off-main-thread execution; harmless on the --json path.
|
|
43
|
+
yieldBetweenUnits: true,
|
|
44
|
+
shouldAbort: () => abortController?.signal.aborted === true,
|
|
45
|
+
runUnit: async (check, index) => {
|
|
46
|
+
const outcome = await runOneCheck(check, {
|
|
47
|
+
cwd,
|
|
48
|
+
checkIndex: index + 1,
|
|
49
|
+
totalChecks,
|
|
50
|
+
recipeTimeoutMs: recipeTimeout,
|
|
51
|
+
retryEnabled: recipe.execution.retryOnFailure ?? false,
|
|
52
|
+
maxRetries: recipe.execution.maxRetries ?? 2,
|
|
53
|
+
...(checkTargetFiles ? { checkTargetFiles } : {}),
|
|
54
|
+
...(globalExcludes ? { globalExcludes } : {}),
|
|
55
|
+
...(opts.fileCache ? { fileCache: opts.fileCache } : {}),
|
|
56
|
+
}, processorCtx);
|
|
57
|
+
return { shouldStop: outcome.shouldStop };
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=parallel-execution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parallel-execution.js","sourceRoot":"","sources":["../../src/recipes/parallel-execution.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAqCrD,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF,+FAA+F;AAC/F,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,GAA4B,EAC5B,IAAsB;IAEtB,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IACvE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,GAAG,CAAC;IACpD,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,IAAI,MAAM,CAAC;IACzD,MAAM,WAAW,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IAElC,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO;IAE9B,MAAM,YAAY,GAAqB;QACrC,OAAO;QACP,SAAS;QACT,MAAM;QACN,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,IAAI,KAAK;KAClD,CAAC;IAEF,8EAA8E;IAC9E,+EAA+E;IAC/E,8EAA8E;IAC9E,0EAA0E;IAC1E,iFAAiF;IACjF,sDAAsD;IACtD,MAAM,aAAa,CAAQ;QACzB,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,UAAU;QAChB,WAAW;QACX,8EAA8E;QAC9E,0EAA0E;QAC1E,sEAAsE;QACtE,iBAAiB,EAAE,IAAI;QACvB,WAAW,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI;QAC3D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAG,MAAM,WAAW,CAC/B,KAAK,EACL;gBACE,GAAG;gBACH,UAAU,EAAE,KAAK,GAAG,CAAC;gBACrB,WAAW;gBACX,eAAe,EAAE,aAAa;gBAC9B,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,cAAc,IAAI,KAAK;gBACtD,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,IAAI,CAAC;gBAC5C,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjD,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACzD,EACD,YAAY,CACb,CAAC;YACF,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;QAC5C,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Fitness recipe registry
|
|
3
|
+
*
|
|
4
|
+
* Thin wrapper around the kernel's `RecipeRegistry<T>` (Layer 1 / core)
|
|
5
|
+
* that adds fitness-specific concerns: built-in recipe pre-registration
|
|
6
|
+
* with throw-on-duplicate semantics, override tracking, and display
|
|
7
|
+
* info enriched with `isBuiltIn` / `overridesBuiltIn` flags.
|
|
8
|
+
*
|
|
9
|
+
* Built-in seeding goes through `registerAll(builtIns, { internal: true })`
|
|
10
|
+
* — the LSP-clean replacement for the prior direct-map-write pattern
|
|
11
|
+
* (the canonical T2 violation the runscope+registry plan resolves).
|
|
12
|
+
*/
|
|
13
|
+
import { RecipeRegistry } from '@opensip-cli/core';
|
|
14
|
+
import type { FitnessRecipe } from './types.js';
|
|
15
|
+
/** Display-friendly info about a registered recipe */
|
|
16
|
+
export interface RecipeDisplayInfo {
|
|
17
|
+
readonly name: string;
|
|
18
|
+
readonly displayName: string;
|
|
19
|
+
readonly description: string;
|
|
20
|
+
readonly tags: readonly string[];
|
|
21
|
+
readonly isBuiltIn: boolean;
|
|
22
|
+
readonly isUserDefined: boolean;
|
|
23
|
+
readonly overridesBuiltIn: boolean;
|
|
24
|
+
}
|
|
25
|
+
/** Registry for fitness recipes, loading built-in and user-defined recipes */
|
|
26
|
+
export declare class FitnessRecipeRegistry extends RecipeRegistry<FitnessRecipe> {
|
|
27
|
+
private readonly _overriddenBuiltIns;
|
|
28
|
+
constructor();
|
|
29
|
+
private registerBuiltInRecipes;
|
|
30
|
+
/**
|
|
31
|
+
* Register a fitness recipe. Throws on duplicate id/name unless
|
|
32
|
+
* `allowOverwrite: true` is passed — historical contract preserved
|
|
33
|
+
* by routing through the kernel registry's `throwOnDuplicate` flag.
|
|
34
|
+
*/
|
|
35
|
+
register(recipe: FitnessRecipe, options?: {
|
|
36
|
+
allowOverwrite?: boolean;
|
|
37
|
+
}): void;
|
|
38
|
+
/** Check whether a built-in recipe has been overridden by a user recipe */
|
|
39
|
+
isOverridden(name: string): boolean;
|
|
40
|
+
/** Return the names of all built-in recipes overridden by user recipes */
|
|
41
|
+
getOverriddenBuiltIns(): readonly string[];
|
|
42
|
+
/** Clear all recipes and re-register built-in recipes */
|
|
43
|
+
reset(): void;
|
|
44
|
+
/** Return display-friendly info for all registered recipes */
|
|
45
|
+
listForDisplay(): readonly RecipeDisplayInfo[];
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/recipes/registry.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAInD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,sDAAsD;AACtD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;CACpC;AAED,8EAA8E;AAC9E,qBAAa,qBAAsB,SAAQ,cAAc,CAAC,aAAa,CAAC;IACtE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqB;;IAOzD,OAAO,CAAC,sBAAsB;IAQ9B;;;;OAIG;IACM,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAOtF,2EAA2E;IAC3E,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAInC,0EAA0E;IAC1E,qBAAqB,IAAI,SAAS,MAAM,EAAE;IAI1C,yDAAyD;IACzD,KAAK,IAAI,IAAI;IAKb,8DAA8D;IAC9D,cAAc,IAAI,SAAS,iBAAiB,EAAE;CAc/C"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// @fitness-ignore-file batch-operation-limits -- iterates bounded collections (config entries, registry items, or small analysis results)
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Fitness recipe registry
|
|
4
|
+
*
|
|
5
|
+
* Thin wrapper around the kernel's `RecipeRegistry<T>` (Layer 1 / core)
|
|
6
|
+
* that adds fitness-specific concerns: built-in recipe pre-registration
|
|
7
|
+
* with throw-on-duplicate semantics, override tracking, and display
|
|
8
|
+
* info enriched with `isBuiltIn` / `overridesBuiltIn` flags.
|
|
9
|
+
*
|
|
10
|
+
* Built-in seeding goes through `registerAll(builtIns, { internal: true })`
|
|
11
|
+
* — the LSP-clean replacement for the prior direct-map-write pattern
|
|
12
|
+
* (the canonical T2 violation the runscope+registry plan resolves).
|
|
13
|
+
*/
|
|
14
|
+
import { RecipeRegistry } from '@opensip-cli/core';
|
|
15
|
+
import { builtInRecipes, isBuiltInRecipe } from './built-in-recipes.js';
|
|
16
|
+
/** Registry for fitness recipes, loading built-in and user-defined recipes */
|
|
17
|
+
export class FitnessRecipeRegistry extends RecipeRegistry {
|
|
18
|
+
_overriddenBuiltIns = new Set();
|
|
19
|
+
constructor() {
|
|
20
|
+
super({ module: 'fitness:recipes', validationCode: 'VALIDATION.FITNESS.DUPLICATE_RECIPE' });
|
|
21
|
+
this.registerBuiltInRecipes();
|
|
22
|
+
}
|
|
23
|
+
registerBuiltInRecipes() {
|
|
24
|
+
// Built-in recipes ship valid; `{ internal: true }` bypasses the
|
|
25
|
+
// duplicate guard at the seed site so successive registrations
|
|
26
|
+
// (or a reset()/re-seed) don't trip the warn-first-wins policy.
|
|
27
|
+
// Replaces the prior direct-map-write LSP violation.
|
|
28
|
+
this.registerAll(builtInRecipes, { internal: true });
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Register a fitness recipe. Throws on duplicate id/name unless
|
|
32
|
+
* `allowOverwrite: true` is passed — historical contract preserved
|
|
33
|
+
* by routing through the kernel registry's `throwOnDuplicate` flag.
|
|
34
|
+
*/
|
|
35
|
+
register(recipe, options) {
|
|
36
|
+
super.register(recipe, {
|
|
37
|
+
allowOverwrite: options?.allowOverwrite ?? false,
|
|
38
|
+
throwOnDuplicate: !(options?.allowOverwrite ?? false),
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/** Check whether a built-in recipe has been overridden by a user recipe */
|
|
42
|
+
isOverridden(name) {
|
|
43
|
+
return this._overriddenBuiltIns.has(name);
|
|
44
|
+
}
|
|
45
|
+
/** Return the names of all built-in recipes overridden by user recipes */
|
|
46
|
+
getOverriddenBuiltIns() {
|
|
47
|
+
return [...this._overriddenBuiltIns];
|
|
48
|
+
}
|
|
49
|
+
/** Clear all recipes and re-register built-in recipes */
|
|
50
|
+
reset() {
|
|
51
|
+
this.clear();
|
|
52
|
+
this.registerBuiltInRecipes();
|
|
53
|
+
}
|
|
54
|
+
/** Return display-friendly info for all registered recipes */
|
|
55
|
+
listForDisplay() {
|
|
56
|
+
return this.getAllRecipes().map((recipe) => {
|
|
57
|
+
const isUserRecipe = recipe.id.startsWith('URCP_');
|
|
58
|
+
return {
|
|
59
|
+
name: recipe.name,
|
|
60
|
+
displayName: recipe.displayName,
|
|
61
|
+
description: recipe.description,
|
|
62
|
+
tags: recipe.tags ?? [],
|
|
63
|
+
isBuiltIn: !isUserRecipe && isBuiltInRecipe(recipe.name),
|
|
64
|
+
isUserDefined: isUserRecipe,
|
|
65
|
+
overridesBuiltIn: this._overriddenBuiltIns.has(recipe.name),
|
|
66
|
+
};
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/recipes/registry.ts"],"names":[],"mappings":"AAAA,0IAA0I;AAC1I;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAexE,8EAA8E;AAC9E,MAAM,OAAO,qBAAsB,SAAQ,cAA6B;IACrD,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;IAEzD;QACE,KAAK,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,qCAAqC,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAEO,sBAAsB;QAC5B,iEAAiE;QACjE,+DAA+D;QAC/D,gEAAgE;QAChE,qDAAqD;QACrD,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IAED;;;;OAIG;IACM,QAAQ,CAAC,MAAqB,EAAE,OAAsC;QAC7E,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE;YACrB,cAAc,EAAE,OAAO,EAAE,cAAc,IAAI,KAAK;YAChD,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,cAAc,IAAI,KAAK,CAAC;SACtD,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IAC3E,YAAY,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,0EAA0E;IAC1E,qBAAqB;QACnB,OAAO,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAED,yDAAyD;IACzD,KAAK;QACH,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAED,8DAA8D;IAC9D,cAAc;QACZ,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACzC,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACnD,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;gBACvB,SAAS,EAAE,CAAC,YAAY,IAAI,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC;gBACxD,aAAa,EAAE,YAAY;gBAC3B,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;aAC5D,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Retry logic for fitness check execution.
|
|
3
|
+
*
|
|
4
|
+
* Release 2.13.0: the retry implementation was hoisted into the shared execution
|
|
5
|
+
* substrate (`runWithRetry`, `@opensip-cli/core`). This module is now a thin
|
|
6
|
+
* fitness-flavoured wrapper that pins the abort-aware predicate (a
|
|
7
|
+
* `CheckAbortedError` is never retried) and preserves the historical return shape,
|
|
8
|
+
* so call sites and tests are unchanged.
|
|
9
|
+
*/
|
|
10
|
+
/** Configuration for retry behavior */
|
|
11
|
+
export interface RetryOptions {
|
|
12
|
+
readonly enabled: boolean;
|
|
13
|
+
readonly maxRetries: number;
|
|
14
|
+
readonly checkId: string;
|
|
15
|
+
readonly checkSlug: string;
|
|
16
|
+
}
|
|
17
|
+
/** Result of a retry-wrapped function execution */
|
|
18
|
+
export interface RetryResult<T> {
|
|
19
|
+
readonly result: T | undefined;
|
|
20
|
+
readonly lastError: unknown;
|
|
21
|
+
readonly retryCount: number;
|
|
22
|
+
readonly wasRetried: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Execute a function with retry logic via the shared substrate.
|
|
26
|
+
* Only retries when the function throws. CheckAbortedError is never retried.
|
|
27
|
+
*/
|
|
28
|
+
export declare function executeWithRetry<T>(fn: () => Promise<T>, options: RetryOptions): Promise<RetryResult<T>>;
|
|
29
|
+
//# sourceMappingURL=retry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/recipes/retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,uCAAuC;AACvC,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,mDAAmD;AACnD,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAMzB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Retry logic for fitness check execution.
|
|
3
|
+
*
|
|
4
|
+
* Release 2.13.0: the retry implementation was hoisted into the shared execution
|
|
5
|
+
* substrate (`runWithRetry`, `@opensip-cli/core`). This module is now a thin
|
|
6
|
+
* fitness-flavoured wrapper that pins the abort-aware predicate (a
|
|
7
|
+
* `CheckAbortedError` is never retried) and preserves the historical return shape,
|
|
8
|
+
* so call sites and tests are unchanged.
|
|
9
|
+
*/
|
|
10
|
+
import { runWithRetry } from '@opensip-cli/core';
|
|
11
|
+
import { CheckAbortedError } from '../framework/execution-context.js';
|
|
12
|
+
/**
|
|
13
|
+
* Execute a function with retry logic via the shared substrate.
|
|
14
|
+
* Only retries when the function throws. CheckAbortedError is never retried.
|
|
15
|
+
*/
|
|
16
|
+
export async function executeWithRetry(fn, options) {
|
|
17
|
+
return runWithRetry(fn, {
|
|
18
|
+
enabled: options.enabled,
|
|
19
|
+
maxRetries: options.maxRetries,
|
|
20
|
+
shouldNotRetry: (error) => error instanceof CheckAbortedError,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/recipes/retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAkBtE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAoB,EACpB,OAAqB;IAErB,OAAO,YAAY,CAAC,EAAE,EAAE;QACtB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,YAAY,iBAAiB;KAC9D,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Per-check execution lifecycle
|
|
3
|
+
*
|
|
4
|
+
* `runOneCheck` is the single entry point for "run this Check, with its
|
|
5
|
+
* timeout, retry, and abort behavior, and tell me how it ended." Both
|
|
6
|
+
* the parallel and sequential schedulers delegate to it; they keep only
|
|
7
|
+
* the scheduling shape (sliding window vs `for-of` loop).
|
|
8
|
+
*
|
|
9
|
+
* Reconciled abort semantics:
|
|
10
|
+
*
|
|
11
|
+
* The earlier parallel/sequential implementations diverged on how they
|
|
12
|
+
* detected a timeout — parallel inspected `signal.aborted` after the
|
|
13
|
+
* retry resolved; sequential maintained a separate `timedOut` flag
|
|
14
|
+
* mutated by the setTimeout callback. Either signal source is sufficient
|
|
15
|
+
* because the per-check `AbortController` is only aborted by the
|
|
16
|
+
* setTimeout we install here. We keep `signal.aborted` as the canonical
|
|
17
|
+
* shape (it is the controller's own state and survives the retry chain
|
|
18
|
+
* without a closure-scoped flag), and treat any post-retry `aborted`
|
|
19
|
+
* signal as a timeout.
|
|
20
|
+
*/
|
|
21
|
+
import { type ProcessorContext, type ProcessResultOutput } from './check-result-processor.js';
|
|
22
|
+
import type { Check } from '../framework/check-types.js';
|
|
23
|
+
import type { FileCache } from '../framework/file-cache.js';
|
|
24
|
+
/** Per-call options for `runOneCheck`. */
|
|
25
|
+
export interface RunOneCheckOptions {
|
|
26
|
+
readonly cwd: string;
|
|
27
|
+
readonly checkIndex: number;
|
|
28
|
+
readonly totalChecks: number;
|
|
29
|
+
readonly recipeTimeoutMs: number;
|
|
30
|
+
readonly retryEnabled: boolean;
|
|
31
|
+
readonly maxRetries: number;
|
|
32
|
+
readonly checkTargetFiles?: ReadonlyMap<string, readonly string[]>;
|
|
33
|
+
readonly globalExcludes?: readonly string[];
|
|
34
|
+
/** Per-service FileCache (for SaaS isolation; forwarded from ExecutionOptions). */
|
|
35
|
+
readonly fileCache?: FileCache;
|
|
36
|
+
}
|
|
37
|
+
/** Outcome of running a single check. */
|
|
38
|
+
export interface RunOneCheckOutcome {
|
|
39
|
+
/**
|
|
40
|
+
* Whether the scheduling layer should stop dispatching further
|
|
41
|
+
* checks. Mirrors the `shouldStop` field on
|
|
42
|
+
* `ProcessResultOutput`; `false` when no result was processed
|
|
43
|
+
* (e.g. nothing to record because the call short-circuited).
|
|
44
|
+
*/
|
|
45
|
+
readonly shouldStop: boolean;
|
|
46
|
+
/** Defined when a result was successfully processed (may be a pass or a fail). */
|
|
47
|
+
readonly processOutput?: ProcessResultOutput;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Execute one check end-to-end: build the abort controller, install the
|
|
51
|
+
* timeout, run with retry, then dispatch the result to
|
|
52
|
+
* `processSuccessResult` / `processErrorResult` based on the outcome.
|
|
53
|
+
*
|
|
54
|
+
* Schedulers should call this once per check. The returned
|
|
55
|
+
* `shouldStop` field tells the scheduler whether to break out of its
|
|
56
|
+
* loop (e.g. `recipe.execution.stopOnFirstFailure`).
|
|
57
|
+
*/
|
|
58
|
+
export declare function runOneCheck(check: Check, opts: RunOneCheckOptions, ctx: ProcessorContext): Promise<RunOneCheckOutcome>;
|
|
59
|
+
//# sourceMappingURL=run-one-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-one-check.d.ts","sourceRoot":"","sources":["../../src/recipes/run-one-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAOH,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACzB,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAS5D,0CAA0C;AAC1C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;IACnE,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,mFAAmF;IACnF,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAED,yCAAyC;AACzC,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,kFAAkF;IAClF,QAAQ,CAAC,aAAa,CAAC,EAAE,mBAAmB,CAAC;CAC9C;AAMD;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,kBAAkB,EACxB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,kBAAkB,CAAC,CAiJ7B"}
|