@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,174 @@
|
|
|
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 { TimeoutError, logger, runWithTimeout, withSpanAsync } from '@opensip-cli/core';
|
|
22
|
+
import { CheckAbortedError } from '../framework/execution-context.js';
|
|
23
|
+
import { memoryProfiler } from '../framework/memory-profiler.js';
|
|
24
|
+
import { processSuccessResult, processErrorResult, } from './check-result-processor.js';
|
|
25
|
+
/** Logger module tag used by every event emitted from per-check execution. */
|
|
26
|
+
const MODULE_TAG = 'fitness:execution';
|
|
27
|
+
// =============================================================================
|
|
28
|
+
// PUBLIC API
|
|
29
|
+
// =============================================================================
|
|
30
|
+
/**
|
|
31
|
+
* Execute one check end-to-end: build the abort controller, install the
|
|
32
|
+
* timeout, run with retry, then dispatch the result to
|
|
33
|
+
* `processSuccessResult` / `processErrorResult` based on the outcome.
|
|
34
|
+
*
|
|
35
|
+
* Schedulers should call this once per check. The returned
|
|
36
|
+
* `shouldStop` field tells the scheduler whether to break out of its
|
|
37
|
+
* loop (e.g. `recipe.execution.stopOnFirstFailure`).
|
|
38
|
+
*/
|
|
39
|
+
export async function runOneCheck(check, opts, ctx) {
|
|
40
|
+
const checkId = check.config.id;
|
|
41
|
+
const checkSlug = check.config.slug;
|
|
42
|
+
const checkTimeout = check.config.timeout ?? opts.recipeTimeoutMs;
|
|
43
|
+
const memoryBeforeMB = memoryProfiler.recordCheckStart();
|
|
44
|
+
ctx.callbacks.onCheckStart?.(checkSlug, opts.checkIndex, opts.totalChecks);
|
|
45
|
+
logger.info({
|
|
46
|
+
evt: 'fitness.check.start',
|
|
47
|
+
module: MODULE_TAG,
|
|
48
|
+
checkSlug,
|
|
49
|
+
index: opts.checkIndex,
|
|
50
|
+
total: opts.totalChecks,
|
|
51
|
+
timeoutMs: checkTimeout,
|
|
52
|
+
});
|
|
53
|
+
const targetFiles = opts.checkTargetFiles?.get(checkSlug);
|
|
54
|
+
// Run on the shared execution substrate (release 2.13.0, §5.8): per-check
|
|
55
|
+
// timeout/abort + retry. The single-source abort invariant is preserved by
|
|
56
|
+
// `runWithTimeout` — the controller is aborted ONLY by the timeout — so a
|
|
57
|
+
// `timeout` outcome IS a real timeout, exactly as the former inline
|
|
58
|
+
// AbortController+setTimeout body computed it. `CheckAbortedError` is never
|
|
59
|
+
// retried (the timeout abort surfaces as a `timeout` outcome, not a retry).
|
|
60
|
+
const outcome = await withSpanAsync('opensip-cli-fitness', 'fitness.check.execute', async () => {
|
|
61
|
+
return await runWithTimeout({
|
|
62
|
+
run: (signal) => check.run(opts.cwd, {
|
|
63
|
+
signal,
|
|
64
|
+
...(targetFiles ? { targetFiles } : {}),
|
|
65
|
+
...(opts.globalExcludes ? { globalExcludes: opts.globalExcludes } : {}),
|
|
66
|
+
...(opts.fileCache ? { fileCache: opts.fileCache } : {}),
|
|
67
|
+
}),
|
|
68
|
+
timeoutMs: checkTimeout,
|
|
69
|
+
retry: {
|
|
70
|
+
enabled: opts.retryEnabled,
|
|
71
|
+
maxRetries: opts.maxRetries,
|
|
72
|
+
shouldNotRetry: (error) => error instanceof CheckAbortedError,
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
}, {
|
|
76
|
+
'fitness.check.slug': checkSlug,
|
|
77
|
+
'fitness.check.id': checkId,
|
|
78
|
+
'fitness.check.timeout_ms': checkTimeout,
|
|
79
|
+
});
|
|
80
|
+
const { durationMs } = outcome;
|
|
81
|
+
// The result PROCESSING (which fires user callbacks like onCheckComplete) is
|
|
82
|
+
// wrapped so a throw from a callback is recovered into a non-timeout error
|
|
83
|
+
// result — the same recovery the former inline try/catch provided (pinned by
|
|
84
|
+
// run-one-check.test.ts). The unit RUN itself is already classified by
|
|
85
|
+
// `runWithTimeout` above and never throws here.
|
|
86
|
+
try {
|
|
87
|
+
if (outcome.status === 'timeout') {
|
|
88
|
+
logger.info({
|
|
89
|
+
evt: 'fitness.check.timeout',
|
|
90
|
+
module: MODULE_TAG,
|
|
91
|
+
checkSlug,
|
|
92
|
+
durationMs,
|
|
93
|
+
timeoutMs: checkTimeout,
|
|
94
|
+
});
|
|
95
|
+
const processOutput = processErrorResult(ctx, {
|
|
96
|
+
checkId,
|
|
97
|
+
checkSlug,
|
|
98
|
+
checkIndex: opts.checkIndex,
|
|
99
|
+
totalChecks: opts.totalChecks,
|
|
100
|
+
error: new TimeoutError(`Check ${checkId} timed out after ${checkTimeout}ms`, checkTimeout),
|
|
101
|
+
durationMs,
|
|
102
|
+
memoryBeforeMB,
|
|
103
|
+
timedOut: true,
|
|
104
|
+
timeoutMs: checkTimeout,
|
|
105
|
+
});
|
|
106
|
+
return { shouldStop: processOutput.shouldStop, processOutput };
|
|
107
|
+
}
|
|
108
|
+
if (outcome.status === 'error') {
|
|
109
|
+
logger.info({
|
|
110
|
+
evt: 'fitness.check.error',
|
|
111
|
+
module: MODULE_TAG,
|
|
112
|
+
checkSlug,
|
|
113
|
+
durationMs,
|
|
114
|
+
timedOut: false,
|
|
115
|
+
error: outcome.error instanceof Error ? outcome.error.message : String(outcome.error),
|
|
116
|
+
});
|
|
117
|
+
const processOutput = processErrorResult(ctx, {
|
|
118
|
+
checkId,
|
|
119
|
+
checkSlug,
|
|
120
|
+
checkIndex: opts.checkIndex,
|
|
121
|
+
totalChecks: opts.totalChecks,
|
|
122
|
+
error: outcome.error,
|
|
123
|
+
durationMs,
|
|
124
|
+
memoryBeforeMB,
|
|
125
|
+
timedOut: false,
|
|
126
|
+
});
|
|
127
|
+
return { shouldStop: processOutput.shouldStop, processOutput };
|
|
128
|
+
}
|
|
129
|
+
logger.info({
|
|
130
|
+
evt: 'fitness.check.done',
|
|
131
|
+
module: MODULE_TAG,
|
|
132
|
+
checkSlug,
|
|
133
|
+
durationMs,
|
|
134
|
+
signals: outcome.result.signals.length,
|
|
135
|
+
});
|
|
136
|
+
const processOutput = processSuccessResult(ctx, {
|
|
137
|
+
checkId,
|
|
138
|
+
checkSlug,
|
|
139
|
+
tags: check.config.tags ?? [],
|
|
140
|
+
checkIndex: opts.checkIndex,
|
|
141
|
+
totalChecks: opts.totalChecks,
|
|
142
|
+
result: outcome.result,
|
|
143
|
+
durationMs,
|
|
144
|
+
memoryBeforeMB,
|
|
145
|
+
});
|
|
146
|
+
return { shouldStop: processOutput.shouldStop, processOutput };
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
// A user callback inside the result processing threw. Recover it into an
|
|
150
|
+
// error result — non-timeout unless the unit itself timed out.
|
|
151
|
+
const isTimeout = outcome.status === 'timeout';
|
|
152
|
+
logger.info({
|
|
153
|
+
evt: 'fitness.check.error',
|
|
154
|
+
module: MODULE_TAG,
|
|
155
|
+
checkSlug,
|
|
156
|
+
durationMs,
|
|
157
|
+
timedOut: isTimeout,
|
|
158
|
+
error: error instanceof Error ? error.message : String(error),
|
|
159
|
+
});
|
|
160
|
+
const processOutput = processErrorResult(ctx, {
|
|
161
|
+
checkId,
|
|
162
|
+
checkSlug,
|
|
163
|
+
checkIndex: opts.checkIndex,
|
|
164
|
+
totalChecks: opts.totalChecks,
|
|
165
|
+
error,
|
|
166
|
+
durationMs,
|
|
167
|
+
memoryBeforeMB,
|
|
168
|
+
timedOut: isTimeout,
|
|
169
|
+
...(isTimeout ? { timeoutMs: checkTimeout } : {}),
|
|
170
|
+
});
|
|
171
|
+
return { shouldStop: processOutput.shouldStop, processOutput };
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=run-one-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-one-check.js","sourceRoot":"","sources":["../../src/recipes/run-one-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAExF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,EACL,oBAAoB,EACpB,kBAAkB,GAGnB,MAAM,6BAA6B,CAAC;AAKrC,8EAA8E;AAC9E,MAAM,UAAU,GAAG,mBAAmB,CAAC;AAiCvC,gFAAgF;AAChF,aAAa;AACb,gFAAgF;AAEhF;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAY,EACZ,IAAwB,EACxB,GAAqB;IAErB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;IAChC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;IACpC,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC;IAElE,MAAM,cAAc,GAAG,cAAc,CAAC,gBAAgB,EAAE,CAAC;IACzD,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3E,MAAM,CAAC,IAAI,CAAC;QACV,GAAG,EAAE,qBAAqB;QAC1B,MAAM,EAAE,UAAU;QAClB,SAAS;QACT,KAAK,EAAE,IAAI,CAAC,UAAU;QACtB,KAAK,EAAE,IAAI,CAAC,WAAW;QACvB,SAAS,EAAE,YAAY;KACxB,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAE1D,0EAA0E;IAC1E,2EAA2E;IAC3E,0EAA0E;IAC1E,oEAAoE;IACpE,4EAA4E;IAC5E,4EAA4E;IAC5E,MAAM,OAAO,GAAG,MAAM,aAAa,CACjC,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,IAAI,EAAE;QACT,OAAO,MAAM,cAAc,CAAC;YAC1B,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CACd,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE;gBAClB,MAAM;gBACN,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACzD,CAAC;YACJ,SAAS,EAAE,YAAY;YACvB,KAAK,EAAE;gBACL,OAAO,EAAE,IAAI,CAAC,YAAY;gBAC1B,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,YAAY,iBAAiB;aAC9D;SACF,CAAC,CAAC;IACL,CAAC,EACD;QACE,oBAAoB,EAAE,SAAS;QAC/B,kBAAkB,EAAE,OAAO;QAC3B,0BAA0B,EAAE,YAAY;KACzC,CACF,CAAC;IACF,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAE/B,6EAA6E;IAC7E,2EAA2E;IAC3E,6EAA6E;IAC7E,uEAAuE;IACvE,gDAAgD;IAChD,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC;gBACV,GAAG,EAAE,uBAAuB;gBAC5B,MAAM,EAAE,UAAU;gBAClB,SAAS;gBACT,UAAU;gBACV,SAAS,EAAE,YAAY;aACxB,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,kBAAkB,CAAC,GAAG,EAAE;gBAC5C,OAAO;gBACP,SAAS;gBACT,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,KAAK,EAAE,IAAI,YAAY,CAAC,SAAS,OAAO,oBAAoB,YAAY,IAAI,EAAE,YAAY,CAAC;gBAC3F,UAAU;gBACV,cAAc;gBACd,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,YAAY;aACxB,CAAC,CAAC;YACH,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC;QACjE,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC;gBACV,GAAG,EAAE,qBAAqB;gBAC1B,MAAM,EAAE,UAAU;gBAClB,SAAS;gBACT,UAAU;gBACV,QAAQ,EAAE,KAAK;gBACf,KAAK,EAAE,OAAO,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aACtF,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,kBAAkB,CAAC,GAAG,EAAE;gBAC5C,OAAO;gBACP,SAAS;gBACT,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,UAAU;gBACV,cAAc;gBACd,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;YACH,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC;QACjE,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;YACV,GAAG,EAAE,oBAAoB;YACzB,MAAM,EAAE,UAAU;YAClB,SAAS;YACT,UAAU;YACV,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM;SACvC,CAAC,CAAC;QACH,MAAM,aAAa,GAAG,oBAAoB,CAAC,GAAG,EAAE;YAC9C,OAAO;YACP,SAAS;YACT,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,UAAU;YACV,cAAc;SACf,CAAC,CAAC;QACH,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC;IACjE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,yEAAyE;QACzE,+DAA+D;QAC/D,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC;YACV,GAAG,EAAE,qBAAqB;YAC1B,MAAM,EAAE,UAAU;YAClB,SAAS;YACT,UAAU;YACV,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC;QACH,MAAM,aAAa,GAAG,kBAAkB,CAAC,GAAG,EAAE;YAC5C,OAAO;YACP,SAAS;YACT,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,KAAK;YACL,UAAU;YACV,cAAc;YACd,QAAQ,EAAE,SAAS;YACnB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClD,CAAC,CAAC;QACH,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC;IACjE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Sequential execution scheduler for fitness recipe checks
|
|
3
|
+
*
|
|
4
|
+
* Runs fitness checks one at a time. Release 2.13.0 (§5.8): the loop + the
|
|
5
|
+
* between-iteration abort check now live in the shared execution substrate
|
|
6
|
+
* (`scheduleUnits`); this file keeps only the fitness setup + the per-check
|
|
7
|
+
* `runOneCheck` body.
|
|
8
|
+
*/
|
|
9
|
+
import type { ExecutionOptions, ExecutionServiceContext } from './parallel-execution.js';
|
|
10
|
+
/** Execute fitness checks sequentially with per-check timeouts and retry support */
|
|
11
|
+
export declare function executeSequential(ctx: ExecutionServiceContext, opts: ExecutionOptions): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=sequential-execution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sequential-execution.d.ts","sourceRoot":"","sources":["../../src/recipes/sequential-execution.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAOzF,oFAAoF;AACpF,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,uBAAuB,EAC5B,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,IAAI,CAAC,CAsCf"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Sequential execution scheduler for fitness recipe checks
|
|
3
|
+
*
|
|
4
|
+
* Runs fitness checks one at a time. Release 2.13.0 (§5.8): the loop + the
|
|
5
|
+
* between-iteration abort check now live in the shared execution substrate
|
|
6
|
+
* (`scheduleUnits`); this file keeps only the fitness setup + the per-check
|
|
7
|
+
* `runOneCheck` body.
|
|
8
|
+
*/
|
|
9
|
+
import { scheduleUnits } from '@opensip-cli/core';
|
|
10
|
+
import { runOneCheck } from './run-one-check.js';
|
|
11
|
+
// =============================================================================
|
|
12
|
+
// SEQUENTIAL EXECUTION
|
|
13
|
+
// =============================================================================
|
|
14
|
+
/** Execute fitness checks sequentially with per-check timeouts and retry support */
|
|
15
|
+
export async function executeSequential(ctx, opts) {
|
|
16
|
+
const { checks, cwd, recipe, checkTargetFiles, globalExcludes } = opts;
|
|
17
|
+
const { session, callbacks, abortController } = ctx;
|
|
18
|
+
const recipeTimeout = recipe.execution.timeout ?? 30_000;
|
|
19
|
+
const totalChecks = checks.length;
|
|
20
|
+
const processorCtx = {
|
|
21
|
+
session,
|
|
22
|
+
callbacks,
|
|
23
|
+
recipe,
|
|
24
|
+
includeViolations: ctx.includeViolations ?? false,
|
|
25
|
+
};
|
|
26
|
+
await scheduleUnits({
|
|
27
|
+
units: checks,
|
|
28
|
+
mode: 'sequential',
|
|
29
|
+
// Interim live-view smoothing (ADR-0028) — see parallel-execution.ts.
|
|
30
|
+
yieldBetweenUnits: true,
|
|
31
|
+
shouldAbort: () => abortController?.signal.aborted === true,
|
|
32
|
+
runUnit: async (check, index) => {
|
|
33
|
+
const outcome = await runOneCheck(check, {
|
|
34
|
+
cwd,
|
|
35
|
+
checkIndex: index + 1,
|
|
36
|
+
totalChecks,
|
|
37
|
+
recipeTimeoutMs: recipeTimeout,
|
|
38
|
+
retryEnabled: recipe.execution.retryOnFailure ?? false,
|
|
39
|
+
maxRetries: recipe.execution.maxRetries ?? 2,
|
|
40
|
+
...(checkTargetFiles ? { checkTargetFiles } : {}),
|
|
41
|
+
...(globalExcludes ? { globalExcludes } : {}),
|
|
42
|
+
...(opts.fileCache ? { fileCache: opts.fileCache } : {}),
|
|
43
|
+
}, processorCtx);
|
|
44
|
+
return { shouldStop: outcome.shouldStop };
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=sequential-execution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sequential-execution.js","sourceRoot":"","sources":["../../src/recipes/sequential-execution.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAMjD,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,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,MAAM,CAAC,MAAM,CAAC;IAElC,MAAM,YAAY,GAAqB;QACrC,OAAO;QACP,SAAS;QACT,MAAM;QACN,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,IAAI,KAAK;KAClD,CAAC;IAEF,MAAM,aAAa,CAAQ;QACzB,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,YAAY;QAClB,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,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Service-layer type definitions for fitness recipe execution
|
|
3
|
+
*
|
|
4
|
+
* Defines the configuration, session state, and callback types
|
|
5
|
+
* used by FitnessRecipeService and its execution engines.
|
|
6
|
+
*/
|
|
7
|
+
import type { FitnessRecipeRegistry } from './registry.js';
|
|
8
|
+
import type { FitnessRecipe, FitnessRecipeResult, RecipeCheckResult, IgnoresByType } from './types.js';
|
|
9
|
+
import type { DirectiveEntry } from '../framework/directive-inventory.js';
|
|
10
|
+
import type { FileCache } from '../framework/file-cache.js';
|
|
11
|
+
import type { CheckMemoryProfile } from '../framework/memory-profiler.js';
|
|
12
|
+
import type { CheckRegistry } from '../framework/registry.js';
|
|
13
|
+
/** Summary of a single check execution for callback reporting */
|
|
14
|
+
export interface CheckSummary {
|
|
15
|
+
readonly checkId: string;
|
|
16
|
+
readonly checkSlug: string;
|
|
17
|
+
readonly passed: boolean;
|
|
18
|
+
readonly errors: number;
|
|
19
|
+
readonly warnings: number;
|
|
20
|
+
readonly durationMs: number;
|
|
21
|
+
readonly filesScanned: number;
|
|
22
|
+
readonly ignoredCount: number;
|
|
23
|
+
readonly memoryProfile: CheckMemoryProfile;
|
|
24
|
+
readonly timedOut?: boolean;
|
|
25
|
+
readonly errorMessage?: string;
|
|
26
|
+
}
|
|
27
|
+
/** Callbacks invoked during recipe execution for progress and errors */
|
|
28
|
+
export interface FitnessRecipeServiceCallbacks {
|
|
29
|
+
onCheckStart?: (checkSlug: string, index: number, total: number) => void;
|
|
30
|
+
onCheckComplete?: (checkSlug: string, summary: CheckSummary, index: number, total: number) => void;
|
|
31
|
+
onError?: (checkSlug: string, error: Error) => void;
|
|
32
|
+
onMemoryWarning?: (checkId: string, profile: CheckMemoryProfile) => void;
|
|
33
|
+
onComplete?: (result: FitnessRecipeResult) => void;
|
|
34
|
+
/** Called before execution with all registered checks for catalog sync. */
|
|
35
|
+
onCatalogSync?: (entries: {
|
|
36
|
+
id: string;
|
|
37
|
+
slug: string;
|
|
38
|
+
tags: readonly string[];
|
|
39
|
+
description: string;
|
|
40
|
+
}[]) => void;
|
|
41
|
+
}
|
|
42
|
+
/** Configuration for the fitness recipe service */
|
|
43
|
+
export interface FitnessRecipeServiceConfig {
|
|
44
|
+
cwd?: string;
|
|
45
|
+
prewarmCache?: boolean;
|
|
46
|
+
prewarmPatterns?: string[];
|
|
47
|
+
callbacks?: FitnessRecipeServiceCallbacks;
|
|
48
|
+
/** Per-check pre-resolved file paths from target overrides. Map of check slug → absolute file paths. */
|
|
49
|
+
checkTargetFiles?: ReadonlyMap<string, readonly string[]>;
|
|
50
|
+
/** Optional check registry (defaults to the current scope's check registry). */
|
|
51
|
+
checkRegistry?: CheckRegistry;
|
|
52
|
+
/** Optional recipe registry (defaults to the current scope's recipe registry). */
|
|
53
|
+
recipeRegistry?: FitnessRecipeRegistry;
|
|
54
|
+
/** Check slugs disabled via opensip.config.yml — these checks are skipped unless force-included by a recipe. */
|
|
55
|
+
disabledChecks?: readonly string[];
|
|
56
|
+
/** When true, carry violation details on RecipeCheckResult. */
|
|
57
|
+
includeViolations?: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Run-wide file exclusion patterns from `opensip-cli.config.yml`'s
|
|
60
|
+
* top-level `globalExcludes`. Threaded into each check's RunOptions
|
|
61
|
+
* so the matchFiles() fallback honors them — without this, scope-empty
|
|
62
|
+
* checks scan every prewarmed file. Should be the same array passed
|
|
63
|
+
* to `loadTargetsConfig`.
|
|
64
|
+
*/
|
|
65
|
+
globalExcludes?: readonly string[];
|
|
66
|
+
/** Optional file cache instance (defaults to a fresh per-service one for SaaS isolation). */
|
|
67
|
+
fileCache?: FileCache;
|
|
68
|
+
}
|
|
69
|
+
/** Mutable session state tracking progress during a recipe execution */
|
|
70
|
+
export interface FitnessRecipeSession {
|
|
71
|
+
readonly sessionId: string;
|
|
72
|
+
readonly recipe: FitnessRecipe;
|
|
73
|
+
readonly startedAt: Date;
|
|
74
|
+
status: 'running' | 'completed' | 'failed';
|
|
75
|
+
totalChecks: number;
|
|
76
|
+
completedChecks: number;
|
|
77
|
+
passedChecks: number;
|
|
78
|
+
failedChecks: number;
|
|
79
|
+
totalErrors: number;
|
|
80
|
+
totalWarnings: number;
|
|
81
|
+
totalIgnored: number;
|
|
82
|
+
ignoresByTag: Map<string, number>;
|
|
83
|
+
checkResults: RecipeCheckResult[];
|
|
84
|
+
ignoreCounts?: IgnoresByType | undefined;
|
|
85
|
+
directives: DirectiveEntry[];
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=service-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-types.d.ts","sourceRoot":"","sources":["../../src/recipes/service-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Service-layer type definitions for fitness recipe execution
|
|
3
|
+
*
|
|
4
|
+
* Defines the configuration, session state, and callback types
|
|
5
|
+
* used by FitnessRecipeService and its execution engines.
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=service-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-types.js","sourceRoot":"","sources":["../../src/recipes/service-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Central orchestrator for fitness recipe execution
|
|
3
|
+
*
|
|
4
|
+
* FitnessRecipeService resolves checks, manages session lifecycle,
|
|
5
|
+
* coordinates parallel/sequential execution, and builds results.
|
|
6
|
+
*/
|
|
7
|
+
import { type FitnessRecipe, type FitnessRecipeResult } from './types.js';
|
|
8
|
+
import type { FitnessRecipeServiceCallbacks, FitnessRecipeServiceConfig, FitnessRecipeSession } from './service-types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Central orchestrator for fitness check execution.
|
|
11
|
+
*/
|
|
12
|
+
export declare class FitnessRecipeService {
|
|
13
|
+
private readonly config;
|
|
14
|
+
private readonly checkRegistry;
|
|
15
|
+
private readonly recipeRegistry;
|
|
16
|
+
private readonly fileCache;
|
|
17
|
+
private activeSession;
|
|
18
|
+
private abortController?;
|
|
19
|
+
constructor(config?: FitnessRecipeServiceConfig);
|
|
20
|
+
private get session();
|
|
21
|
+
/**
|
|
22
|
+
* Execute a fitness recipe by name or recipe object.
|
|
23
|
+
*
|
|
24
|
+
* Resolves checks, prewarms the file cache, runs checks in parallel or sequential mode,
|
|
25
|
+
* then builds and returns a {@link FitnessRecipeResult}. Only one session can be active
|
|
26
|
+
* at a time — call {@link abort} to cancel a running session.
|
|
27
|
+
*
|
|
28
|
+
* @param recipeOrName - A recipe name (looked up in the recipe registry) or a FitnessRecipe object.
|
|
29
|
+
* @returns The result of the recipe execution including per-check results and summary.
|
|
30
|
+
* @throws {SystemError} If a session is already in progress.
|
|
31
|
+
* @throws {NotFoundError} If the recipe name is not found in the registry.
|
|
32
|
+
*/
|
|
33
|
+
start(recipeOrName: FitnessRecipe | string): Promise<FitnessRecipeResult>;
|
|
34
|
+
private executeRecipe;
|
|
35
|
+
private executeRecipeInScope;
|
|
36
|
+
private collectAppliedDirectives;
|
|
37
|
+
private createSession;
|
|
38
|
+
private resolveAndFilterChecks;
|
|
39
|
+
private prepareExecution;
|
|
40
|
+
private buildResult;
|
|
41
|
+
/**
|
|
42
|
+
* Convert CLI arguments to an ad-hoc FitnessRecipe.
|
|
43
|
+
*/
|
|
44
|
+
static createAdHocRecipe(args: {
|
|
45
|
+
check?: string;
|
|
46
|
+
tagFilters?: string[];
|
|
47
|
+
file?: string;
|
|
48
|
+
parallel?: boolean;
|
|
49
|
+
json?: boolean;
|
|
50
|
+
unified?: boolean;
|
|
51
|
+
verbose?: boolean;
|
|
52
|
+
retry?: boolean;
|
|
53
|
+
maxRetries?: number;
|
|
54
|
+
maxParallel?: number;
|
|
55
|
+
timeout?: number;
|
|
56
|
+
successThreshold?: number;
|
|
57
|
+
}): FitnessRecipe;
|
|
58
|
+
/** Get the currently active session, or null if no recipe is running. */
|
|
59
|
+
getActiveSession(): FitnessRecipeSession | null;
|
|
60
|
+
/** Abort the currently running recipe execution. No-op if no session is active. */
|
|
61
|
+
abort(): void;
|
|
62
|
+
/** List all available recipes from the recipe registry. */
|
|
63
|
+
listRecipes(): readonly FitnessRecipe[];
|
|
64
|
+
/**
|
|
65
|
+
* Look up a recipe by name or ID.
|
|
66
|
+
* @param nameOrId - The recipe name or full recipe ID (e.g. "default" or "RCP_default").
|
|
67
|
+
* @returns The recipe if found, undefined otherwise.
|
|
68
|
+
*/
|
|
69
|
+
getRecipe(nameOrId: string): FitnessRecipe | undefined;
|
|
70
|
+
protected generateSessionId(): string;
|
|
71
|
+
protected get callbacks(): FitnessRecipeServiceCallbacks;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/recipes/service.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AA6BH,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,mBAAmB,EAEzB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EACV,6BAA6B,EAC7B,0BAA0B,EAC1B,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AA2B5B;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwB;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,aAAa,CAAqC;IAC1D,OAAO,CAAC,eAAe,CAAC,CAAkB;gBAE9B,MAAM,CAAC,EAAE,0BAA0B;IAc/C,OAAO,KAAK,OAAO,GAOlB;IAED;;;;;;;;;;;OAWG;IAEG,KAAK,CAAC,YAAY,EAAE,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;YAqBjE,aAAa;YAqBb,oBAAoB;IAkHlC,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,sBAAsB;YA6DhB,gBAAgB;IAsB9B,OAAO,CAAC,WAAW;IA0CnB;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE;QAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,GAAG,aAAa;IA4CjB,yEAAyE;IACzE,gBAAgB,IAAI,oBAAoB,GAAG,IAAI;IAI/C,mFAAmF;IACnF,KAAK,IAAI,IAAI;IAIb,2DAA2D;IAC3D,WAAW,IAAI,SAAS,aAAa,EAAE;IAIvC;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAItD,SAAS,CAAC,iBAAiB,IAAI,MAAM;IAIrC,SAAS,KAAK,SAAS,IAAI,6BAA6B,CAEvD;CACF"}
|