@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,241 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Built-in fitness recipe definitions
|
|
3
|
+
*
|
|
4
|
+
* Defines the standard set of recipes (default, quick-smoke, backend, etc.)
|
|
5
|
+
* that ship with the fitness framework.
|
|
6
|
+
*/
|
|
7
|
+
import { DEFAULT_MAX_PARALLEL, defineRecipe } from './types.js';
|
|
8
|
+
// =============================================================================
|
|
9
|
+
// DEFAULT RECIPE
|
|
10
|
+
// =============================================================================
|
|
11
|
+
/** Default recipe: runs all enabled checks in parallel */
|
|
12
|
+
const defaultRecipe = defineRecipe({
|
|
13
|
+
name: 'default',
|
|
14
|
+
displayName: 'Default',
|
|
15
|
+
description: 'Run all enabled checks in parallel',
|
|
16
|
+
checks: { type: 'all' },
|
|
17
|
+
execution: { mode: 'parallel', stopOnFirstFailure: false, timeout: 30_000 },
|
|
18
|
+
reporting: { format: 'table', verbose: false },
|
|
19
|
+
tags: ['comprehensive', 'default'],
|
|
20
|
+
});
|
|
21
|
+
// =============================================================================
|
|
22
|
+
// QUICK SMOKE RECIPE
|
|
23
|
+
// =============================================================================
|
|
24
|
+
/** Quick smoke recipe: fast critical checks for rapid validation */
|
|
25
|
+
const quickSmokeRecipe = defineRecipe({
|
|
26
|
+
name: 'quick-smoke',
|
|
27
|
+
displayName: 'Quick Smoke',
|
|
28
|
+
description: 'Fast critical checks for rapid validation',
|
|
29
|
+
checks: {
|
|
30
|
+
type: 'explicit',
|
|
31
|
+
checkIds: [
|
|
32
|
+
'no-console-log',
|
|
33
|
+
'no-any-types',
|
|
34
|
+
'null-safety',
|
|
35
|
+
'detached-promises',
|
|
36
|
+
'catch-clause-safety',
|
|
37
|
+
'error-handling-quality',
|
|
38
|
+
'no-hardcoded-secrets',
|
|
39
|
+
'no-eval',
|
|
40
|
+
'sql-injection',
|
|
41
|
+
'env-secret-exposure',
|
|
42
|
+
'input-sanitization',
|
|
43
|
+
'no-skipped-tests',
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
execution: { mode: 'parallel', stopOnFirstFailure: false, timeout: 15_000 },
|
|
47
|
+
reporting: { format: 'table', verbose: false },
|
|
48
|
+
tags: ['fast', 'smoke', 'critical'],
|
|
49
|
+
});
|
|
50
|
+
// =============================================================================
|
|
51
|
+
// BACKEND RECIPE
|
|
52
|
+
// =============================================================================
|
|
53
|
+
/** Backend recipe: architecture, resilience, and quality checks for server code */
|
|
54
|
+
const backendRecipe = defineRecipe({
|
|
55
|
+
name: 'backend',
|
|
56
|
+
displayName: 'Backend',
|
|
57
|
+
description: 'Backend-focused checks (architecture, resilience, quality)',
|
|
58
|
+
checks: {
|
|
59
|
+
type: 'pattern',
|
|
60
|
+
include: [
|
|
61
|
+
'architecture/*',
|
|
62
|
+
'resilience/*',
|
|
63
|
+
'quality/*-backend',
|
|
64
|
+
'quality/fastify-*',
|
|
65
|
+
'quality/database-*',
|
|
66
|
+
'quality/pino-*',
|
|
67
|
+
'quality/logging-*',
|
|
68
|
+
'quality/correlation-*',
|
|
69
|
+
'quality/no-console-log',
|
|
70
|
+
'quality/result-pattern-*',
|
|
71
|
+
'quality/api-*',
|
|
72
|
+
'quality/null-safety',
|
|
73
|
+
'quality/no-any-types',
|
|
74
|
+
'quality/file-headers',
|
|
75
|
+
'quality/concurrency-safety',
|
|
76
|
+
'quality/error-swallowing-*',
|
|
77
|
+
'security/*',
|
|
78
|
+
'testing/*',
|
|
79
|
+
],
|
|
80
|
+
exclude: ['quality/*-frontend', 'testing/*-frontend'],
|
|
81
|
+
},
|
|
82
|
+
execution: { mode: 'parallel', stopOnFirstFailure: false, timeout: 30_000 },
|
|
83
|
+
reporting: { format: 'table', verbose: false },
|
|
84
|
+
tags: ['backend', 'server', 'api'],
|
|
85
|
+
});
|
|
86
|
+
// =============================================================================
|
|
87
|
+
// FRONTEND RECIPE
|
|
88
|
+
// =============================================================================
|
|
89
|
+
/** Frontend recipe: React and accessibility checks for UI code */
|
|
90
|
+
const frontendRecipe = defineRecipe({
|
|
91
|
+
name: 'frontend',
|
|
92
|
+
displayName: 'Frontend',
|
|
93
|
+
description: 'Frontend-focused checks (React, accessibility)',
|
|
94
|
+
checks: {
|
|
95
|
+
type: 'pattern',
|
|
96
|
+
include: [
|
|
97
|
+
'quality/*-frontend',
|
|
98
|
+
'quality/navigation-*',
|
|
99
|
+
'quality/theme-*',
|
|
100
|
+
'quality/image-*',
|
|
101
|
+
'quality/async-state-*',
|
|
102
|
+
'quality/no-any-types',
|
|
103
|
+
'quality/null-safety',
|
|
104
|
+
'architecture/heavy-import-detection',
|
|
105
|
+
'testing/no-skipped-tests',
|
|
106
|
+
'testing/*-frontend',
|
|
107
|
+
],
|
|
108
|
+
exclude: ['quality/*-backend', 'testing/*-backend'],
|
|
109
|
+
},
|
|
110
|
+
execution: { mode: 'parallel', stopOnFirstFailure: false, timeout: 30_000 },
|
|
111
|
+
reporting: { format: 'table', verbose: false },
|
|
112
|
+
tags: ['frontend', 'react', 'ui'],
|
|
113
|
+
});
|
|
114
|
+
// =============================================================================
|
|
115
|
+
// SECURITY RECIPE
|
|
116
|
+
// =============================================================================
|
|
117
|
+
/** Security recipe: comprehensive security audit checks */
|
|
118
|
+
const securityRecipe = defineRecipe({
|
|
119
|
+
name: 'security',
|
|
120
|
+
displayName: 'Security Audit',
|
|
121
|
+
description: 'Comprehensive security analysis',
|
|
122
|
+
checks: {
|
|
123
|
+
type: 'pattern',
|
|
124
|
+
include: [
|
|
125
|
+
'security/*',
|
|
126
|
+
'quality/pii-*',
|
|
127
|
+
'quality/dependency-security-*',
|
|
128
|
+
'quality/centralized-input-*',
|
|
129
|
+
'quality/security-*',
|
|
130
|
+
'quality/no-console-log',
|
|
131
|
+
'resilience/no-custom-cache',
|
|
132
|
+
'resilience/no-custom-rate-limiter',
|
|
133
|
+
'resilience/context-leakage',
|
|
134
|
+
],
|
|
135
|
+
},
|
|
136
|
+
execution: { mode: 'sequential', stopOnFirstFailure: false, timeout: 60_000 },
|
|
137
|
+
reporting: { format: 'table', verbose: true },
|
|
138
|
+
tags: ['security', 'audit', 'comprehensive'],
|
|
139
|
+
});
|
|
140
|
+
// =============================================================================
|
|
141
|
+
// PRE-COMMIT RECIPE
|
|
142
|
+
// =============================================================================
|
|
143
|
+
/** Pre-commit recipe: fast checks suitable for git pre-commit hooks */
|
|
144
|
+
const preCommitRecipe = defineRecipe({
|
|
145
|
+
name: 'pre-commit',
|
|
146
|
+
displayName: 'Pre-Commit',
|
|
147
|
+
description: 'Fast checks for git pre-commit hooks',
|
|
148
|
+
checks: {
|
|
149
|
+
type: 'explicit',
|
|
150
|
+
checkIds: [
|
|
151
|
+
'no-console-log',
|
|
152
|
+
'no-any-types',
|
|
153
|
+
'no-hardcoded-secrets',
|
|
154
|
+
'detached-promises',
|
|
155
|
+
'no-skipped-tests',
|
|
156
|
+
],
|
|
157
|
+
},
|
|
158
|
+
execution: { mode: 'parallel', stopOnFirstFailure: true, timeout: 10_000 },
|
|
159
|
+
reporting: { format: 'table', verbose: false },
|
|
160
|
+
tags: ['fast', 'hook', 'pre-commit'],
|
|
161
|
+
});
|
|
162
|
+
// =============================================================================
|
|
163
|
+
// PRE-RELEASE RECIPE
|
|
164
|
+
// =============================================================================
|
|
165
|
+
/** Pre-release recipe: comprehensive checks run before a release */
|
|
166
|
+
const preReleaseRecipe = defineRecipe({
|
|
167
|
+
name: 'pre-release',
|
|
168
|
+
displayName: 'Pre-Release',
|
|
169
|
+
description: 'Comprehensive checks before release',
|
|
170
|
+
checks: { type: 'all' },
|
|
171
|
+
execution: { mode: 'sequential', stopOnFirstFailure: false, timeout: 120_000 },
|
|
172
|
+
reporting: { format: 'unified', verbose: true },
|
|
173
|
+
tags: ['comprehensive', 'release', 'thorough'],
|
|
174
|
+
});
|
|
175
|
+
// =============================================================================
|
|
176
|
+
// NIGHTLY FULL RECIPE
|
|
177
|
+
// =============================================================================
|
|
178
|
+
/** Nightly full recipe: complete check suite for scheduled nightly runs */
|
|
179
|
+
const nightlyFullRecipe = defineRecipe({
|
|
180
|
+
name: 'nightly-full',
|
|
181
|
+
displayName: 'Nightly Full',
|
|
182
|
+
description: 'Complete suite for nightly scheduled runs',
|
|
183
|
+
checks: { type: 'all' },
|
|
184
|
+
execution: {
|
|
185
|
+
mode: 'parallel',
|
|
186
|
+
stopOnFirstFailure: false,
|
|
187
|
+
timeout: 300_000,
|
|
188
|
+
maxParallel: DEFAULT_MAX_PARALLEL,
|
|
189
|
+
},
|
|
190
|
+
reporting: { format: 'unified', verbose: true, outputPath: 'fitness-nightly-report.json' },
|
|
191
|
+
tags: ['nightly', 'comprehensive', 'scheduled'],
|
|
192
|
+
});
|
|
193
|
+
// =============================================================================
|
|
194
|
+
// CI RECIPE
|
|
195
|
+
// =============================================================================
|
|
196
|
+
/** CI recipe: optimized for CI pipelines with JSON output */
|
|
197
|
+
const ciRecipe = defineRecipe({
|
|
198
|
+
name: 'ci',
|
|
199
|
+
displayName: 'CI',
|
|
200
|
+
description: 'Optimized for CI pipelines with JSON output',
|
|
201
|
+
checks: { type: 'all', exclude: ['testing/flaky-*', 'performance/*'] },
|
|
202
|
+
execution: { mode: 'parallel', stopOnFirstFailure: false, timeout: 60_000 },
|
|
203
|
+
reporting: { format: 'json', verbose: false },
|
|
204
|
+
tags: ['ci', 'pipeline', 'automated'],
|
|
205
|
+
});
|
|
206
|
+
// =============================================================================
|
|
207
|
+
// ARCHITECTURE RECIPE
|
|
208
|
+
// =============================================================================
|
|
209
|
+
/** Architecture recipe: architecture validation and compliance checks */
|
|
210
|
+
const architectureRecipe = defineRecipe({
|
|
211
|
+
name: 'architecture',
|
|
212
|
+
displayName: 'Architecture Review',
|
|
213
|
+
description: 'Architecture validation and compliance',
|
|
214
|
+
checks: { type: 'tags', include: ['architecture'] },
|
|
215
|
+
execution: { mode: 'parallel', stopOnFirstFailure: false, timeout: 30_000 },
|
|
216
|
+
reporting: { format: 'table', verbose: true },
|
|
217
|
+
tags: ['architecture', 'structure'],
|
|
218
|
+
});
|
|
219
|
+
// =============================================================================
|
|
220
|
+
// EXPORTS
|
|
221
|
+
// =============================================================================
|
|
222
|
+
/** All built-in fitness recipes */
|
|
223
|
+
export const builtInRecipes = Object.freeze([
|
|
224
|
+
defaultRecipe,
|
|
225
|
+
quickSmokeRecipe,
|
|
226
|
+
backendRecipe,
|
|
227
|
+
frontendRecipe,
|
|
228
|
+
securityRecipe,
|
|
229
|
+
preCommitRecipe,
|
|
230
|
+
preReleaseRecipe,
|
|
231
|
+
nightlyFullRecipe,
|
|
232
|
+
ciRecipe,
|
|
233
|
+
architectureRecipe,
|
|
234
|
+
]);
|
|
235
|
+
/** Map of built-in recipe name to recipe definition */
|
|
236
|
+
export const builtInRecipesByName = new Map(builtInRecipes.map((recipe) => [recipe.name, recipe]));
|
|
237
|
+
/** Check whether a recipe name corresponds to a built-in recipe */
|
|
238
|
+
export function isBuiltInRecipe(name) {
|
|
239
|
+
return builtInRecipesByName.has(name);
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=built-in-recipes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"built-in-recipes.js","sourceRoot":"","sources":["../../src/recipes/built-in-recipes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Per-check recipe configuration plumbing.
|
|
3
|
+
*
|
|
4
|
+
* These accessors are now thin aliases of the generic core accessors
|
|
5
|
+
* (`getUnitConfig` / `setCurrentRecipeUnitConfig` /
|
|
6
|
+
* `clearCurrentRecipeUnitConfig` in `@opensip-cli/core`); the fitness
|
|
7
|
+
* names are preserved because checks import `getCheckConfig` from the
|
|
8
|
+
* `@opensip-cli/fitness` barrel and the recipe service calls
|
|
9
|
+
* `setCurrentRecipeCheckConfig` / `clearCurrentRecipeCheckConfig`.
|
|
10
|
+
*
|
|
11
|
+
* Recipes can carry a `checks.config` map keyed by check slug. The recipe
|
|
12
|
+
* service projects this map into the current `RunScope`'s
|
|
13
|
+
* `recipeUnitConfig` slot before any check runs and clears it once the
|
|
14
|
+
* run completes. Individual checks read their slice via
|
|
15
|
+
* `getCheckConfig<T>(slug)` and merge it with their built-in defaults.
|
|
16
|
+
*
|
|
17
|
+
* Scope-bound (not module-bound) lookup is load-bearing — the runtime
|
|
18
|
+
* frequently has TWO copies of `@opensip-cli/fitness` loaded:
|
|
19
|
+
*
|
|
20
|
+
* 1. The CLI's bundled copy (running the recipe service).
|
|
21
|
+
* 2. The plugin pack's resolved copy (running the check, calling
|
|
22
|
+
* `getCheckConfig(slug)`).
|
|
23
|
+
*
|
|
24
|
+
* Each copy has its own module-scope state. The lookup routes through
|
|
25
|
+
* `currentScope()` from `@opensip-cli/core` (inside `getUnitConfig`) so
|
|
26
|
+
* the slot identity is bound to core — a single resolved copy in every
|
|
27
|
+
* npm graph — rather than to whichever fitness copy loaded first.
|
|
28
|
+
*
|
|
29
|
+
* Calling `getCheckConfig(...)` outside any `runWithScope` (e.g. unit
|
|
30
|
+
* tests that don't set up a scope) returns an empty object — the check's
|
|
31
|
+
* own defaults handle the empty case.
|
|
32
|
+
*/
|
|
33
|
+
import type { RecipeCheckConfigMap } from './types.js';
|
|
34
|
+
import type { RunScope } from '@opensip-cli/core';
|
|
35
|
+
/**
|
|
36
|
+
* Read the per-check config slice for the given slug. Alias of core
|
|
37
|
+
* `getUnitConfig`. Returns an empty object when no recipe-config has been
|
|
38
|
+
* set or no entry exists — treat as "augmentation only" and merge with
|
|
39
|
+
* the check's own defaults.
|
|
40
|
+
*
|
|
41
|
+
* @typeParam T - The shape the calling check expects.
|
|
42
|
+
*/
|
|
43
|
+
export declare function getCheckConfig<T extends Record<string, unknown>>(slug: string): T;
|
|
44
|
+
/**
|
|
45
|
+
* Replace the current scope's recipe config. Called by the recipe service
|
|
46
|
+
* at the start of a recipe run, before any check executes. Alias of core
|
|
47
|
+
* `setCurrentRecipeUnitConfig`.
|
|
48
|
+
*/
|
|
49
|
+
export declare function setCurrentRecipeCheckConfig(scope: RunScope, config: RecipeCheckConfigMap | undefined): void;
|
|
50
|
+
/**
|
|
51
|
+
* Clear the current scope's recipe config. Called by the recipe service
|
|
52
|
+
* at the end of a recipe run (success or failure). Alias of core
|
|
53
|
+
* `clearCurrentRecipeUnitConfig`.
|
|
54
|
+
*/
|
|
55
|
+
export declare function clearCurrentRecipeCheckConfig(scope: RunScope): void;
|
|
56
|
+
//# sourceMappingURL=check-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-config.d.ts","sourceRoot":"","sources":["../../src/recipes/check-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAQH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAEjF;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,oBAAoB,GAAG,SAAS,GACvC,IAAI,CAEN;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAEnE"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Per-check recipe configuration plumbing.
|
|
3
|
+
*
|
|
4
|
+
* These accessors are now thin aliases of the generic core accessors
|
|
5
|
+
* (`getUnitConfig` / `setCurrentRecipeUnitConfig` /
|
|
6
|
+
* `clearCurrentRecipeUnitConfig` in `@opensip-cli/core`); the fitness
|
|
7
|
+
* names are preserved because checks import `getCheckConfig` from the
|
|
8
|
+
* `@opensip-cli/fitness` barrel and the recipe service calls
|
|
9
|
+
* `setCurrentRecipeCheckConfig` / `clearCurrentRecipeCheckConfig`.
|
|
10
|
+
*
|
|
11
|
+
* Recipes can carry a `checks.config` map keyed by check slug. The recipe
|
|
12
|
+
* service projects this map into the current `RunScope`'s
|
|
13
|
+
* `recipeUnitConfig` slot before any check runs and clears it once the
|
|
14
|
+
* run completes. Individual checks read their slice via
|
|
15
|
+
* `getCheckConfig<T>(slug)` and merge it with their built-in defaults.
|
|
16
|
+
*
|
|
17
|
+
* Scope-bound (not module-bound) lookup is load-bearing — the runtime
|
|
18
|
+
* frequently has TWO copies of `@opensip-cli/fitness` loaded:
|
|
19
|
+
*
|
|
20
|
+
* 1. The CLI's bundled copy (running the recipe service).
|
|
21
|
+
* 2. The plugin pack's resolved copy (running the check, calling
|
|
22
|
+
* `getCheckConfig(slug)`).
|
|
23
|
+
*
|
|
24
|
+
* Each copy has its own module-scope state. The lookup routes through
|
|
25
|
+
* `currentScope()` from `@opensip-cli/core` (inside `getUnitConfig`) so
|
|
26
|
+
* the slot identity is bound to core — a single resolved copy in every
|
|
27
|
+
* npm graph — rather than to whichever fitness copy loaded first.
|
|
28
|
+
*
|
|
29
|
+
* Calling `getCheckConfig(...)` outside any `runWithScope` (e.g. unit
|
|
30
|
+
* tests that don't set up a scope) returns an empty object — the check's
|
|
31
|
+
* own defaults handle the empty case.
|
|
32
|
+
*/
|
|
33
|
+
import { getUnitConfig, setCurrentRecipeUnitConfig, clearCurrentRecipeUnitConfig, } from '@opensip-cli/core';
|
|
34
|
+
/**
|
|
35
|
+
* Read the per-check config slice for the given slug. Alias of core
|
|
36
|
+
* `getUnitConfig`. Returns an empty object when no recipe-config has been
|
|
37
|
+
* set or no entry exists — treat as "augmentation only" and merge with
|
|
38
|
+
* the check's own defaults.
|
|
39
|
+
*
|
|
40
|
+
* @typeParam T - The shape the calling check expects.
|
|
41
|
+
*/
|
|
42
|
+
export function getCheckConfig(slug) {
|
|
43
|
+
return getUnitConfig(slug);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Replace the current scope's recipe config. Called by the recipe service
|
|
47
|
+
* at the start of a recipe run, before any check executes. Alias of core
|
|
48
|
+
* `setCurrentRecipeUnitConfig`.
|
|
49
|
+
*/
|
|
50
|
+
export function setCurrentRecipeCheckConfig(scope, config) {
|
|
51
|
+
setCurrentRecipeUnitConfig(scope, config);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Clear the current scope's recipe config. Called by the recipe service
|
|
55
|
+
* at the end of a recipe run (success or failure). Alias of core
|
|
56
|
+
* `clearCurrentRecipeUnitConfig`.
|
|
57
|
+
*/
|
|
58
|
+
export function clearCurrentRecipeCheckConfig(scope) {
|
|
59
|
+
clearCurrentRecipeUnitConfig(scope);
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=check-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-config.js","sourceRoot":"","sources":["../../src/recipes/check-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EACL,aAAa,EACb,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,mBAAmB,CAAC;AAK3B;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAoC,IAAY;IAC5E,OAAO,aAAa,CAAI,IAAI,CAAC,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CACzC,KAAe,EACf,MAAwC;IAExC,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAAC,KAAe;IAC3D,4BAA4B,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Check resolution for fitness recipes.
|
|
3
|
+
*
|
|
4
|
+
* Resolves recipe check selectors (explicit / pattern / tags / all) into
|
|
5
|
+
* concrete check-key lists. The selection algorithm itself lives once in
|
|
6
|
+
* `@opensip-cli/core` (`resolveSelector`); this module wires fitness's
|
|
7
|
+
* registry, `minimatch`, and namespaced-slug reverse-lookup into it. The
|
|
8
|
+
* per-arm semantics are unchanged from the previous hand-rolled switch.
|
|
9
|
+
*/
|
|
10
|
+
import type { CheckSelector } from './types.js';
|
|
11
|
+
import type { CheckRegistry } from '../framework/registry.js';
|
|
12
|
+
/**
|
|
13
|
+
* Resolve a CheckSelector to a list of check keys from the registry.
|
|
14
|
+
*
|
|
15
|
+
* Delegates to core's generic `resolveSelector`, supplying fitness's
|
|
16
|
+
* registry-backed hooks:
|
|
17
|
+
* - the universe is `registry.listSlugs()` (each key becomes a Registerable item);
|
|
18
|
+
* - `keysOf` is `buildMatchTargets` (key + bare slug + tag/slug targets);
|
|
19
|
+
* - the `pattern` / `all` matcher is `minimatch` (kept a fitness dependency);
|
|
20
|
+
* - `resolveExplicit` is the bare-slug → namespaced-key reverse lookup
|
|
21
|
+
* (mirrors the previous `resolveExplicitSelector`: exact key first, then
|
|
22
|
+
* `getBySlug` + `endsWith(':'+id)`);
|
|
23
|
+
* - the `tags` arm routes through core's built-in tag-set intersection over
|
|
24
|
+
* `check.config.tags` (`tagsOf` reads the registry), matching the previous
|
|
25
|
+
* `resolveTagsSelector` exactly.
|
|
26
|
+
*/
|
|
27
|
+
export declare function resolveChecks(selector: CheckSelector, registry: CheckRegistry): readonly string[];
|
|
28
|
+
/** Result of validating check references against the registry */
|
|
29
|
+
interface CheckReferenceValidation {
|
|
30
|
+
valid: string[];
|
|
31
|
+
missing: string[];
|
|
32
|
+
}
|
|
33
|
+
/** Validate a list of check IDs against known IDs, returning valid and missing sets */
|
|
34
|
+
export declare function validateCheckReferences(checkIds: readonly string[], allCheckIds: readonly string[]): CheckReferenceValidation;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=check-resolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-resolution.d.ts","sourceRoot":"","sources":["../../src/recipes/check-resolution.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAwB9D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,GAAG,SAAS,MAAM,EAAE,CAqBjG;AAED,iEAAiE;AACjE,UAAU,wBAAwB;IAChC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,uFAAuF;AACvF,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,WAAW,EAAE,SAAS,MAAM,EAAE,GAC7B,wBAAwB,CAc1B"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// @fitness-ignore-file batch-operation-limits -- iterates bounded collections (registry items / small analysis results)
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Check resolution for fitness recipes.
|
|
4
|
+
*
|
|
5
|
+
* Resolves recipe check selectors (explicit / pattern / tags / all) into
|
|
6
|
+
* concrete check-key lists. The selection algorithm itself lives once in
|
|
7
|
+
* `@opensip-cli/core` (`resolveSelector`); this module wires fitness's
|
|
8
|
+
* registry, `minimatch`, and namespaced-slug reverse-lookup into it. The
|
|
9
|
+
* per-arm semantics are unchanged from the previous hand-rolled switch.
|
|
10
|
+
*/
|
|
11
|
+
import { resolveSelector } from '@opensip-cli/core';
|
|
12
|
+
import { minimatch } from 'minimatch';
|
|
13
|
+
/**
|
|
14
|
+
* Build the glob match targets for a check key: the key itself, its bare
|
|
15
|
+
* slug (namespace stripped), and `tag/bareSlug` targets for each of the
|
|
16
|
+
* check's tags. This is fitness's `keysOf` accessor for the core resolver.
|
|
17
|
+
*/
|
|
18
|
+
function buildMatchTargets(slug, registry) {
|
|
19
|
+
const targets = [slug];
|
|
20
|
+
// Extract bare slug from namespaced key (e.g., 'builtin:no-eval' → 'no-eval')
|
|
21
|
+
const bareSlug = slug.includes(':') ? slug.split(':').pop() : slug;
|
|
22
|
+
if (bareSlug !== slug)
|
|
23
|
+
targets.push(bareSlug);
|
|
24
|
+
if (registry) {
|
|
25
|
+
const check = registry.getBySlug(slug);
|
|
26
|
+
if (check?.config.tags) {
|
|
27
|
+
for (const tag of check.config.tags) {
|
|
28
|
+
targets.push(`${tag}/${bareSlug}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return targets;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Resolve a CheckSelector to a list of check keys from the registry.
|
|
36
|
+
*
|
|
37
|
+
* Delegates to core's generic `resolveSelector`, supplying fitness's
|
|
38
|
+
* registry-backed hooks:
|
|
39
|
+
* - the universe is `registry.listSlugs()` (each key becomes a Registerable item);
|
|
40
|
+
* - `keysOf` is `buildMatchTargets` (key + bare slug + tag/slug targets);
|
|
41
|
+
* - the `pattern` / `all` matcher is `minimatch` (kept a fitness dependency);
|
|
42
|
+
* - `resolveExplicit` is the bare-slug → namespaced-key reverse lookup
|
|
43
|
+
* (mirrors the previous `resolveExplicitSelector`: exact key first, then
|
|
44
|
+
* `getBySlug` + `endsWith(':'+id)`);
|
|
45
|
+
* - the `tags` arm routes through core's built-in tag-set intersection over
|
|
46
|
+
* `check.config.tags` (`tagsOf` reads the registry), matching the previous
|
|
47
|
+
* `resolveTagsSelector` exactly.
|
|
48
|
+
*/
|
|
49
|
+
export function resolveChecks(selector, registry) {
|
|
50
|
+
const items = registry.listSlugs().map((key) => ({ id: key, name: key }));
|
|
51
|
+
const opts = {
|
|
52
|
+
keysOf: (item) => buildMatchTargets(item.id, registry),
|
|
53
|
+
tagsOf: (item) => registry.getBySlug(item.id)?.config.tags ?? [],
|
|
54
|
+
match: (target, pattern) => minimatch(target, pattern, { nocase: false }),
|
|
55
|
+
// Bare slug → namespaced-key reverse lookup; otherwise no resolution.
|
|
56
|
+
resolveExplicit: (id) => !id.includes(':') && registry.getBySlug(id)
|
|
57
|
+
? (registry.listSlugs().find((s) => s.endsWith(`:${id}`)) ?? id)
|
|
58
|
+
: undefined,
|
|
59
|
+
};
|
|
60
|
+
// The core resolver reads the `explicit` arm's request list from `ids`;
|
|
61
|
+
// fitness's historical field is `checkIds`. Normalize at the boundary so
|
|
62
|
+
// recipe literals (`{ type: 'explicit', checkIds: [...] }`) stay valid.
|
|
63
|
+
const normalized = selector.type === 'explicit' ? { ...selector, ids: selector.checkIds } : selector;
|
|
64
|
+
return resolveSelector(normalized, items, opts).map((item) => item.id);
|
|
65
|
+
}
|
|
66
|
+
/** Validate a list of check IDs against known IDs, returning valid and missing sets */
|
|
67
|
+
export function validateCheckReferences(checkIds, allCheckIds) {
|
|
68
|
+
const existingSet = new Set(allCheckIds);
|
|
69
|
+
const valid = [];
|
|
70
|
+
const missing = [];
|
|
71
|
+
for (const id of checkIds) {
|
|
72
|
+
if (existingSet.has(id)) {
|
|
73
|
+
valid.push(id);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
missing.push(id);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return { valid, missing };
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=check-resolution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-resolution.js","sourceRoot":"","sources":["../../src/recipes/check-resolution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Check result processor for fitness recipe execution
|
|
3
|
+
*
|
|
4
|
+
* Processes individual check results (success or error), updates session state,
|
|
5
|
+
* builds check summaries, and determines whether execution should stop.
|
|
6
|
+
*/
|
|
7
|
+
import { type CheckMemoryProfile } from '../framework/memory-profiler.js';
|
|
8
|
+
import type { FitnessRecipeServiceCallbacks, FitnessRecipeSession } from './service-types.js';
|
|
9
|
+
import type { FitnessRecipe, RecipeCheckResult } from './types.js';
|
|
10
|
+
import type { CheckResult } from '../types/findings.js';
|
|
11
|
+
/** Input data for processing a successful check result */
|
|
12
|
+
export interface ProcessSuccessInput {
|
|
13
|
+
checkId: string;
|
|
14
|
+
checkSlug: string;
|
|
15
|
+
tags: readonly string[];
|
|
16
|
+
checkIndex: number;
|
|
17
|
+
totalChecks: number;
|
|
18
|
+
result: CheckResult;
|
|
19
|
+
durationMs: number;
|
|
20
|
+
memoryBeforeMB: number;
|
|
21
|
+
}
|
|
22
|
+
/** Input data for processing a failed or timed-out check result */
|
|
23
|
+
export interface ProcessErrorInput {
|
|
24
|
+
checkId: string;
|
|
25
|
+
checkSlug: string;
|
|
26
|
+
checkIndex: number;
|
|
27
|
+
totalChecks: number;
|
|
28
|
+
error: unknown;
|
|
29
|
+
durationMs: number;
|
|
30
|
+
memoryBeforeMB: number;
|
|
31
|
+
timedOut: boolean;
|
|
32
|
+
timeoutMs?: number;
|
|
33
|
+
}
|
|
34
|
+
/** Context required by the result processor (session, callbacks, recipe) */
|
|
35
|
+
export interface ProcessorContext {
|
|
36
|
+
session: FitnessRecipeSession;
|
|
37
|
+
callbacks: FitnessRecipeServiceCallbacks;
|
|
38
|
+
recipe: FitnessRecipe;
|
|
39
|
+
includeViolations: boolean;
|
|
40
|
+
}
|
|
41
|
+
/** Output from processing a check result, including whether execution should stop */
|
|
42
|
+
export interface ProcessResultOutput {
|
|
43
|
+
checkResult: RecipeCheckResult;
|
|
44
|
+
memoryProfile: CheckMemoryProfile;
|
|
45
|
+
shouldStop: boolean;
|
|
46
|
+
}
|
|
47
|
+
/** Process a successful check result: update session, invoke callbacks, and determine stop condition */
|
|
48
|
+
export declare function processSuccessResult(ctx: ProcessorContext, input: ProcessSuccessInput): ProcessResultOutput;
|
|
49
|
+
/** Process a failed check result: update session, invoke callbacks, and determine stop condition */
|
|
50
|
+
export declare function processErrorResult(ctx: ProcessorContext, input: ProcessErrorInput): ProcessResultOutput;
|
|
51
|
+
//# sourceMappingURL=check-result-processor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-result-processor.d.ts","sourceRoot":"","sources":["../../src/recipes/check-result-processor.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAIH,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAG1F,OAAO,KAAK,EAEV,6BAA6B,EAC7B,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMxD,0DAA0D;AAC1D,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,mEAAmE;AACnE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,oBAAoB,CAAC;IAC9B,SAAS,EAAE,6BAA6B,CAAC;IACzC,MAAM,EAAE,aAAa,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,qFAAqF;AACrF,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,aAAa,EAAE,kBAAkB,CAAC;IAClC,UAAU,EAAE,OAAO,CAAC;CACrB;AAoGD,wGAAwG;AACxG,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE,mBAAmB,GACzB,mBAAmB,CAiGrB;AAED,oGAAoG;AACpG,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE,iBAAiB,GACvB,mBAAmB,CA2DrB"}
|