@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 @@
|
|
|
1
|
+
{"version":3,"file":"define-check.js","sourceRoot":"","sources":["../../src/framework/define-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview defineRegexListCheck - Template helper for regex-list scanners.
|
|
3
|
+
*
|
|
4
|
+
* Wraps {@link defineCheck} for the common "for line; for pattern; emit one
|
|
5
|
+
* violation per match" shape that ~13 sites in @opensip-cli/checks-universal
|
|
6
|
+
* (and a handful in @opensip-cli/checks-typescript) reimplement, often with
|
|
7
|
+
* subtly different `lastIndex`-reset, comment-skip, and test-file-skip
|
|
8
|
+
* semantics.
|
|
9
|
+
*
|
|
10
|
+
* Adopters declare patterns with {@link RegexListCheckPattern} tuples; this
|
|
11
|
+
* helper handles iteration, regex state reset, optional comment/test-file
|
|
12
|
+
* skipping, and per-pattern slug tagging in the violation `type` field.
|
|
13
|
+
*
|
|
14
|
+
* The shape mirrors the existing `no-console-log.ts` reference: each pattern
|
|
15
|
+
* has its own `id` (UUID) and `slug`. The pattern's `slug` is emitted on
|
|
16
|
+
* each violation as `type: pattern.slug`, matching the established
|
|
17
|
+
* convention used by `heavy-import-detection` (`type: 'HEAVY_IMPORT' | ...`).
|
|
18
|
+
* The `id` is purely descriptive metadata for the pattern author and is
|
|
19
|
+
* not added to violation output.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* export const noConsoleLog = defineRegexListCheck({
|
|
24
|
+
* id: '86403377-5903-478a-bdf2-e4f2f17df39f',
|
|
25
|
+
* slug: 'no-console-log',
|
|
26
|
+
* description: 'Disallow console.log in production code',
|
|
27
|
+
* tags: ['logging', 'quality'],
|
|
28
|
+
* scope: { languages: ['typescript'], concerns: ['backend'] },
|
|
29
|
+
* fileTypes: ['ts'],
|
|
30
|
+
* contentFilter: 'strip-strings',
|
|
31
|
+
* options: { skipCommentLines: true },
|
|
32
|
+
* patterns: [
|
|
33
|
+
* {
|
|
34
|
+
* id: '38b2df63-54c3-4ab9-8a4d-5050384fa56b',
|
|
35
|
+
* slug: 'console-log',
|
|
36
|
+
* regex: /console\.log\s{0,10}\(/g,
|
|
37
|
+
* message: 'console.log detected',
|
|
38
|
+
* suggestion: 'Use a structured logger',
|
|
39
|
+
* },
|
|
40
|
+
* // ... more patterns
|
|
41
|
+
* ],
|
|
42
|
+
* })
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
import type { CheckScope } from './check-config.js';
|
|
46
|
+
import type { Check } from './check-types.js';
|
|
47
|
+
/**
|
|
48
|
+
* A single regex pattern entry consumed by {@link defineRegexListCheck}.
|
|
49
|
+
*
|
|
50
|
+
* Each entry has a stable UUID `id` and a kebab-case `slug` so the pattern
|
|
51
|
+
* is individually addressable for documentation and developer tooling. The
|
|
52
|
+
* `slug` is emitted on every produced violation as `type: pattern.slug`.
|
|
53
|
+
*
|
|
54
|
+
* @remarks Per-pattern attribution (e.g. an Aristotle SDO/SAX `provider`)
|
|
55
|
+
* is intentionally NOT modelled here. The `provider` on
|
|
56
|
+
* {@link DefineRegexListCheckConfig} is **check-level only** — every
|
|
57
|
+
* pattern in a single helper invocation shares the same provider. Splitting
|
|
58
|
+
* a pattern list into two helpers is the supported workaround when one
|
|
59
|
+
* subset needs distinct attribution. A per-pattern field will be added
|
|
60
|
+
* if/when a real driver appears (audit 2026-05-23 F1).
|
|
61
|
+
*/
|
|
62
|
+
export interface RegexListCheckPattern {
|
|
63
|
+
/** Stable UUID identifying this pattern. Purely descriptive. */
|
|
64
|
+
readonly id: string;
|
|
65
|
+
/** Kebab-case slug for this pattern (e.g. `'console-log'`). Emitted as `type` on each violation. */
|
|
66
|
+
readonly slug: string;
|
|
67
|
+
/** Regex executed against each (non-skipped) line. Global flag is recommended for multi-match-per-line behaviour. */
|
|
68
|
+
readonly regex: RegExp;
|
|
69
|
+
/** Violation message reported on a match. */
|
|
70
|
+
readonly message: string;
|
|
71
|
+
/** Optional suggestion text for the violation. */
|
|
72
|
+
readonly suggestion?: string;
|
|
73
|
+
/**
|
|
74
|
+
* Per-pattern severity. Defaults to `'warning'`. Pattern-level severity
|
|
75
|
+
* is preferred over a per-check default because most adopters mix
|
|
76
|
+
* error-class and warning-class patterns inside the same regex list.
|
|
77
|
+
*/
|
|
78
|
+
readonly severity?: 'error' | 'warning';
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Options governing line iteration in {@link defineRegexListCheck}.
|
|
82
|
+
*/
|
|
83
|
+
export interface RegexListCheckOptions {
|
|
84
|
+
/**
|
|
85
|
+
* Skip lines that {@link isCommentLine} reports as comments.
|
|
86
|
+
* Default: `true`.
|
|
87
|
+
*/
|
|
88
|
+
readonly skipCommentLines?: boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Skip files that {@link isTestFile} reports as test files. Useful for
|
|
91
|
+
* checks that should not run against `*.test.ts` / `*.spec.ts` /
|
|
92
|
+
* `__tests__/` paths.
|
|
93
|
+
* Default: `false`.
|
|
94
|
+
*/
|
|
95
|
+
readonly skipTestFiles?: boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Custom file-path predicate. When provided AND it returns `true`,
|
|
98
|
+
* the file is skipped entirely. Used by sites with site-specific
|
|
99
|
+
* allowlists that the helper does not model (e.g. CLI-output paths
|
|
100
|
+
* like `/commands/`, `/display/`, `/bin/`).
|
|
101
|
+
*
|
|
102
|
+
* The predicate runs once per file before any line iteration.
|
|
103
|
+
*/
|
|
104
|
+
readonly skipFile?: (filePath: string) => boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Additional per-line skip predicate evaluated AFTER comment/test
|
|
107
|
+
* filters but BEFORE pattern matching. Use for site-specific filters
|
|
108
|
+
* the helper doesn't model (e.g. `no-window-alert` skips lines
|
|
109
|
+
* starting with `import `).
|
|
110
|
+
*/
|
|
111
|
+
readonly skipLine?: (trimmedLine: string, rawLine: string) => boolean;
|
|
112
|
+
/**
|
|
113
|
+
* When `true`, after a violation is emitted on a line, skip remaining
|
|
114
|
+
* patterns for that line — at most one violation per line in total.
|
|
115
|
+
* Use for sites that historically emit one violation per line across
|
|
116
|
+
* all patterns (e.g. `no-window-alert`, `no-eval`).
|
|
117
|
+
*
|
|
118
|
+
* Note this short-circuits at the line level, NOT the pattern level:
|
|
119
|
+
* within a single pattern's match loop (relevant only for global
|
|
120
|
+
* regexes), multiple matches are still emitted before the next line
|
|
121
|
+
* starts. Combine with non-global regexes for true "one per line".
|
|
122
|
+
*
|
|
123
|
+
* Default: `false` (each matching pattern emits its own violation).
|
|
124
|
+
*/
|
|
125
|
+
readonly oneViolationPerLine?: boolean;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Configuration accepted by {@link defineRegexListCheck}.
|
|
129
|
+
*
|
|
130
|
+
* The fields above `patterns` mirror {@link defineCheck}'s analyze-mode
|
|
131
|
+
* `BaseCheckConfig`. The `analyze` function is synthesised by this helper.
|
|
132
|
+
*/
|
|
133
|
+
export interface DefineRegexListCheckConfig {
|
|
134
|
+
readonly id: string;
|
|
135
|
+
readonly slug: string;
|
|
136
|
+
readonly description: string;
|
|
137
|
+
readonly longDescription?: string;
|
|
138
|
+
readonly tags: readonly string[];
|
|
139
|
+
readonly scope?: CheckScope;
|
|
140
|
+
readonly fileTypes?: readonly string[];
|
|
141
|
+
readonly contentFilter?: 'raw' | 'strip-strings' | 'strip-strings-and-comments';
|
|
142
|
+
readonly confidence?: 'high' | 'medium' | 'low';
|
|
143
|
+
readonly disabled?: boolean;
|
|
144
|
+
readonly timeout?: number;
|
|
145
|
+
readonly docs?: string;
|
|
146
|
+
/**
|
|
147
|
+
* Aristotle SDO/SAX provider attribution applied to every pattern in
|
|
148
|
+
* this check. **Check-level only** — there is no per-pattern override.
|
|
149
|
+
* If two pattern subsets need distinct attribution, define them as two
|
|
150
|
+
* separate checks (audit 2026-05-23 F1).
|
|
151
|
+
*/
|
|
152
|
+
readonly provider?: string;
|
|
153
|
+
/** The list of regex patterns to scan each line against. */
|
|
154
|
+
readonly patterns: readonly RegexListCheckPattern[];
|
|
155
|
+
/** Line- and file-level skip toggles. */
|
|
156
|
+
readonly options?: RegexListCheckOptions;
|
|
157
|
+
}
|
|
158
|
+
/** Factory for the common "scan each line against a regex list" check pattern. */
|
|
159
|
+
export declare function defineRegexListCheck(config: DefineRegexListCheckConfig): Check;
|
|
160
|
+
//# sourceMappingURL=define-regex-list-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-regex-list-check.d.ts","sourceRoot":"","sources":["../../src/framework/define-regex-list-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,qBAAqB;IACpC,gEAAgE;IAChE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,oGAAoG;IACpG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qHAAqH;IACrH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAClD;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACtE;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;CACxC;AAED;;;;;GAKG;AACH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,GAAG,eAAe,GAAG,4BAA4B,CAAC;IAChF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACpD,yCAAyC;IACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,qBAAqB,CAAC;CAC1C;AAqHD,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,0BAA0B,GAAG,KAAK,CAmC9E"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview defineRegexListCheck - Template helper for regex-list scanners.
|
|
3
|
+
*
|
|
4
|
+
* Wraps {@link defineCheck} for the common "for line; for pattern; emit one
|
|
5
|
+
* violation per match" shape that ~13 sites in @opensip-cli/checks-universal
|
|
6
|
+
* (and a handful in @opensip-cli/checks-typescript) reimplement, often with
|
|
7
|
+
* subtly different `lastIndex`-reset, comment-skip, and test-file-skip
|
|
8
|
+
* semantics.
|
|
9
|
+
*
|
|
10
|
+
* Adopters declare patterns with {@link RegexListCheckPattern} tuples; this
|
|
11
|
+
* helper handles iteration, regex state reset, optional comment/test-file
|
|
12
|
+
* skipping, and per-pattern slug tagging in the violation `type` field.
|
|
13
|
+
*
|
|
14
|
+
* The shape mirrors the existing `no-console-log.ts` reference: each pattern
|
|
15
|
+
* has its own `id` (UUID) and `slug`. The pattern's `slug` is emitted on
|
|
16
|
+
* each violation as `type: pattern.slug`, matching the established
|
|
17
|
+
* convention used by `heavy-import-detection` (`type: 'HEAVY_IMPORT' | ...`).
|
|
18
|
+
* The `id` is purely descriptive metadata for the pattern author and is
|
|
19
|
+
* not added to violation output.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* export const noConsoleLog = defineRegexListCheck({
|
|
24
|
+
* id: '86403377-5903-478a-bdf2-e4f2f17df39f',
|
|
25
|
+
* slug: 'no-console-log',
|
|
26
|
+
* description: 'Disallow console.log in production code',
|
|
27
|
+
* tags: ['logging', 'quality'],
|
|
28
|
+
* scope: { languages: ['typescript'], concerns: ['backend'] },
|
|
29
|
+
* fileTypes: ['ts'],
|
|
30
|
+
* contentFilter: 'strip-strings',
|
|
31
|
+
* options: { skipCommentLines: true },
|
|
32
|
+
* patterns: [
|
|
33
|
+
* {
|
|
34
|
+
* id: '38b2df63-54c3-4ab9-8a4d-5050384fa56b',
|
|
35
|
+
* slug: 'console-log',
|
|
36
|
+
* regex: /console\.log\s{0,10}\(/g,
|
|
37
|
+
* message: 'console.log detected',
|
|
38
|
+
* suggestion: 'Use a structured logger',
|
|
39
|
+
* },
|
|
40
|
+
* // ... more patterns
|
|
41
|
+
* ],
|
|
42
|
+
* })
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
import { isCommentLine } from '../check-utils/source-analysis.js';
|
|
46
|
+
import { isTestFile } from '../check-utils/test-helpers.js';
|
|
47
|
+
import { defineCheck } from './define-check.js';
|
|
48
|
+
/**
|
|
49
|
+
* Build a {@link Check} that scans every line of every matched file
|
|
50
|
+
* against a list of regex patterns and emits one violation per match.
|
|
51
|
+
*
|
|
52
|
+
* Iteration semantics:
|
|
53
|
+
* - For each line in the file content (split on `\n`).
|
|
54
|
+
* - Optionally skip lines that {@link isCommentLine} flags as comments
|
|
55
|
+
* (controlled by `options.skipCommentLines`, default `true`).
|
|
56
|
+
* - For each pattern: reset `pattern.regex.lastIndex = 0`, then iterate
|
|
57
|
+
* `pattern.regex.exec(line)` until it returns `null`. This produces
|
|
58
|
+
* one violation per match for global-flag regexes, and exactly one
|
|
59
|
+
* violation when the regex has no global flag (because non-global
|
|
60
|
+
* `exec` always starts at position 0). Resetting `lastIndex` is
|
|
61
|
+
* required because pattern objects are reused across lines and
|
|
62
|
+
* files; the audit notes several existing sites get this wrong.
|
|
63
|
+
*
|
|
64
|
+
* Optionally skip whole files when `options.skipTestFiles` is `true` and
|
|
65
|
+
* {@link isTestFile} returns true for the file path.
|
|
66
|
+
*
|
|
67
|
+
* @remarks This helper synthesises only `defineCheck`'s **per-file
|
|
68
|
+
* `analyze` mode** — it processes one file at a time, with no awareness
|
|
69
|
+
* of cross-file state. Cross-file regex-list semantics (e.g. correlated
|
|
70
|
+
* patterns across `package.json` + `Dockerfile`) are out of scope; an
|
|
71
|
+
* `analyzeAll`-mode wrapper would be a separate helper. The factor-out
|
|
72
|
+
* point if/when one is needed is `processFile` (the per-file pure
|
|
73
|
+
* function) — call it from an `analyzeAll` callback that walks an
|
|
74
|
+
* accessor (audit 2026-05-23 F8).
|
|
75
|
+
*
|
|
76
|
+
* @throws {ValidationError} via {@link defineCheck} when the synthesised
|
|
77
|
+
* config is invalid.
|
|
78
|
+
*/
|
|
79
|
+
/**
|
|
80
|
+
* Match a single pattern against a single line, pushing one violation
|
|
81
|
+
* per match into `violations`. For global regexes this emits multiple
|
|
82
|
+
* violations per line; for non-global regexes it emits at most one.
|
|
83
|
+
*
|
|
84
|
+
* When `singleMatch` is true, only the first match is emitted (used for
|
|
85
|
+
* `oneViolationPerLine` semantics).
|
|
86
|
+
*
|
|
87
|
+
* Returns `true` if at least one violation was pushed.
|
|
88
|
+
*/
|
|
89
|
+
function matchPatternOnLine(pattern, line, lineNum, violations, singleMatch) {
|
|
90
|
+
// Reset lastIndex — pattern objects are reused across lines and files;
|
|
91
|
+
// failing to reset would skip matches at low positions on subsequent
|
|
92
|
+
// calls.
|
|
93
|
+
pattern.regex.lastIndex = 0;
|
|
94
|
+
let pushed = false;
|
|
95
|
+
let match = pattern.regex.exec(line);
|
|
96
|
+
while (match !== null) {
|
|
97
|
+
violations.push({
|
|
98
|
+
line: lineNum,
|
|
99
|
+
column: match.index,
|
|
100
|
+
message: pattern.message,
|
|
101
|
+
severity: pattern.severity ?? 'warning',
|
|
102
|
+
suggestion: pattern.suggestion,
|
|
103
|
+
match: match[0],
|
|
104
|
+
type: pattern.slug,
|
|
105
|
+
});
|
|
106
|
+
pushed = true;
|
|
107
|
+
// Non-global regex: stop after the first match. Otherwise exec
|
|
108
|
+
// would loop forever (lastIndex stays at 0).
|
|
109
|
+
if (!pattern.regex.global)
|
|
110
|
+
break;
|
|
111
|
+
if (singleMatch)
|
|
112
|
+
break;
|
|
113
|
+
match = pattern.regex.exec(line);
|
|
114
|
+
}
|
|
115
|
+
return pushed;
|
|
116
|
+
}
|
|
117
|
+
function processFile(opts) {
|
|
118
|
+
const violations = [];
|
|
119
|
+
const lines = opts.content.split('\n');
|
|
120
|
+
for (const [i, line_] of lines.entries()) {
|
|
121
|
+
const line = line_ ?? '';
|
|
122
|
+
if (opts.skipComments && isCommentLine(line))
|
|
123
|
+
continue;
|
|
124
|
+
if (opts.skipLine?.(line.trim(), line) === true)
|
|
125
|
+
continue;
|
|
126
|
+
processLine(line, i + 1, opts.patterns, opts.oneViolationPerLine, violations);
|
|
127
|
+
}
|
|
128
|
+
return violations;
|
|
129
|
+
}
|
|
130
|
+
function processLine(line, lineNum, patterns, oneViolationPerLine, violations) {
|
|
131
|
+
let lineHasViolation = false;
|
|
132
|
+
for (const pattern of patterns) {
|
|
133
|
+
if (oneViolationPerLine && lineHasViolation)
|
|
134
|
+
break;
|
|
135
|
+
const pushed = matchPatternOnLine(pattern, line, lineNum, violations, oneViolationPerLine);
|
|
136
|
+
if (pushed)
|
|
137
|
+
lineHasViolation = true;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/** Factory for the common "scan each line against a regex list" check pattern. */
|
|
141
|
+
export function defineRegexListCheck(config) {
|
|
142
|
+
const skipComments = config.options?.skipCommentLines ?? true;
|
|
143
|
+
const skipTests = config.options?.skipTestFiles ?? false;
|
|
144
|
+
const skipFile = config.options?.skipFile;
|
|
145
|
+
const skipLine = config.options?.skipLine;
|
|
146
|
+
const oneViolationPerLine = config.options?.oneViolationPerLine ?? false;
|
|
147
|
+
const patterns = config.patterns;
|
|
148
|
+
return defineCheck({
|
|
149
|
+
id: config.id,
|
|
150
|
+
slug: config.slug,
|
|
151
|
+
description: config.description,
|
|
152
|
+
longDescription: config.longDescription,
|
|
153
|
+
tags: config.tags,
|
|
154
|
+
scope: config.scope,
|
|
155
|
+
fileTypes: config.fileTypes,
|
|
156
|
+
contentFilter: config.contentFilter,
|
|
157
|
+
confidence: config.confidence,
|
|
158
|
+
disabled: config.disabled,
|
|
159
|
+
timeout: config.timeout,
|
|
160
|
+
docs: config.docs,
|
|
161
|
+
provider: config.provider,
|
|
162
|
+
analyze(content, filePath) {
|
|
163
|
+
if (skipTests && isTestFile(filePath))
|
|
164
|
+
return [];
|
|
165
|
+
if (skipFile?.(filePath) === true)
|
|
166
|
+
return [];
|
|
167
|
+
return processFile({
|
|
168
|
+
content,
|
|
169
|
+
patterns,
|
|
170
|
+
skipComments,
|
|
171
|
+
skipLine,
|
|
172
|
+
oneViolationPerLine,
|
|
173
|
+
});
|
|
174
|
+
},
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=define-regex-list-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-regex-list-check.js","sourceRoot":"","sources":["../../src/framework/define-regex-list-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Directive Inventory - shared parsing logic for
|
|
3
|
+
* fitness-ignore directives.
|
|
4
|
+
*/
|
|
5
|
+
/** A single fitness-ignore directive found in a source file. */
|
|
6
|
+
export interface DirectiveEntry {
|
|
7
|
+
filePath: string;
|
|
8
|
+
lineNumber: number;
|
|
9
|
+
type: 'file' | 'next-line';
|
|
10
|
+
checkId: string;
|
|
11
|
+
group: string;
|
|
12
|
+
reason: string | null;
|
|
13
|
+
weakReason: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Parse a file-level or next-line directive from a comment line.
|
|
17
|
+
*
|
|
18
|
+
* Accepts every comment opener the suppression parser supports
|
|
19
|
+
* (`//`, `/*`, `<!--`, `#`) — sourced from the shared COMMENT_OPENERS
|
|
20
|
+
* table so the inventory and the suppressor stay in sync. Previously
|
|
21
|
+
* the inventory only recognized `// ` and `/* `, so block-comment
|
|
22
|
+
* directives suppressed findings but vanished from inventory counts.
|
|
23
|
+
*/
|
|
24
|
+
export declare function parseDirectiveLine(line: string): {
|
|
25
|
+
type: 'file' | 'next-line';
|
|
26
|
+
checkId: string;
|
|
27
|
+
reason: string | null;
|
|
28
|
+
} | null;
|
|
29
|
+
/**
|
|
30
|
+
* Check if a reason is weak/generic. Missing reason (null) is considered weak.
|
|
31
|
+
*/
|
|
32
|
+
export declare function isWeakReason(reason: string | null): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Extract the group prefix from a check ID (the directory name).
|
|
35
|
+
*/
|
|
36
|
+
export declare function extractGroup(checkId: string): string;
|
|
37
|
+
//# sourceMappingURL=directive-inventory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directive-inventory.d.ts","sourceRoot":"","sources":["../../src/framework/directive-inventory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,gEAAgE;AAChE,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;CACrB;AAwBD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG;IAChD,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,GAAG,IAAI,CAkBP;AAyBD;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAG3D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGpD"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Directive Inventory - shared parsing logic for
|
|
3
|
+
* fitness-ignore directives.
|
|
4
|
+
*/
|
|
5
|
+
import { stripCommentOpener } from './comment-openers.js';
|
|
6
|
+
// =============================================================================
|
|
7
|
+
// Shared Constants
|
|
8
|
+
// =============================================================================
|
|
9
|
+
/** Patterns that indicate a weak or generic ignore reason. */
|
|
10
|
+
const WEAK_REASON_PATTERNS = Object.freeze([
|
|
11
|
+
/^ignore$/i,
|
|
12
|
+
/^skip$/i,
|
|
13
|
+
/^todo$/i,
|
|
14
|
+
/^fixme$/i,
|
|
15
|
+
/^temporary$/i,
|
|
16
|
+
/^temp$/i,
|
|
17
|
+
/^wip$/i,
|
|
18
|
+
/^disable$/i,
|
|
19
|
+
/^suppress$/i,
|
|
20
|
+
/^\s*$/,
|
|
21
|
+
]);
|
|
22
|
+
// =============================================================================
|
|
23
|
+
// Shared Parsing
|
|
24
|
+
// =============================================================================
|
|
25
|
+
/**
|
|
26
|
+
* Parse a file-level or next-line directive from a comment line.
|
|
27
|
+
*
|
|
28
|
+
* Accepts every comment opener the suppression parser supports
|
|
29
|
+
* (`//`, `/*`, `<!--`, `#`) — sourced from the shared COMMENT_OPENERS
|
|
30
|
+
* table so the inventory and the suppressor stay in sync. Previously
|
|
31
|
+
* the inventory only recognized `// ` and `/* `, so block-comment
|
|
32
|
+
* directives suppressed findings but vanished from inventory counts.
|
|
33
|
+
*/
|
|
34
|
+
export function parseDirectiveLine(line) {
|
|
35
|
+
const trimmed = line.trimStart();
|
|
36
|
+
const stripped = stripCommentOpener(trimmed);
|
|
37
|
+
if (stripped === null)
|
|
38
|
+
return null;
|
|
39
|
+
const afterComment = stripped.trimStart();
|
|
40
|
+
if (afterComment.startsWith('@fitness-ignore-file ')) {
|
|
41
|
+
const rest = afterComment.slice('@fitness-ignore-file '.length);
|
|
42
|
+
return parseDirectiveRest(rest, 'file');
|
|
43
|
+
}
|
|
44
|
+
if (afterComment.startsWith('@fitness-ignore-next-line ')) {
|
|
45
|
+
const rest = afterComment.slice('@fitness-ignore-next-line '.length);
|
|
46
|
+
return parseDirectiveRest(rest, 'next-line');
|
|
47
|
+
}
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
function parseDirectiveRest(rest, type) {
|
|
51
|
+
// Strip trailing block-comment terminators: `*/` (C-family) and `-->` (HTML).
|
|
52
|
+
// eslint-disable-next-line sonarjs/slow-regex -- anchored at end-of-string, bounded \s* runs; no ReDoS exposure
|
|
53
|
+
const normalized = rest.replace(/\s*(?:\*\/|-->)\s*$/, '').trimEnd();
|
|
54
|
+
const separatorIndex = normalized.indexOf(' -- ');
|
|
55
|
+
if (separatorIndex === -1) {
|
|
56
|
+
const checkId = normalized.trim();
|
|
57
|
+
if (!checkId || checkId.includes(' '))
|
|
58
|
+
return null;
|
|
59
|
+
return { type, checkId, reason: null };
|
|
60
|
+
}
|
|
61
|
+
const checkId = normalized.slice(0, separatorIndex).trim();
|
|
62
|
+
const reason = normalized.slice(separatorIndex + 4).trim();
|
|
63
|
+
if (!checkId || checkId.includes(' '))
|
|
64
|
+
return null;
|
|
65
|
+
return { type, checkId, reason: reason || null };
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Check if a reason is weak/generic. Missing reason (null) is considered weak.
|
|
69
|
+
*/
|
|
70
|
+
export function isWeakReason(reason) {
|
|
71
|
+
if (reason === null)
|
|
72
|
+
return true;
|
|
73
|
+
return WEAK_REASON_PATTERNS.some((pattern) => pattern.test(reason.trim()));
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Extract the group prefix from a check ID (the directory name).
|
|
77
|
+
*/
|
|
78
|
+
export function extractGroup(checkId) {
|
|
79
|
+
const slashIndex = checkId.indexOf('/');
|
|
80
|
+
return slashIndex > 0 ? checkId.slice(0, slashIndex) : 'other';
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=directive-inventory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directive-inventory.js","sourceRoot":"","sources":["../../src/framework/directive-inventory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Fitness ignore-directive parsing — thin wrappers over the
|
|
3
|
+
* shared core suppression scanner (ADR-0014).
|
|
4
|
+
*
|
|
5
|
+
* The directive-scanning algorithm lives once in `@opensip-cli/core`
|
|
6
|
+
* (`scanSuppressionDirectives`). These wrappers bind it to the fitness
|
|
7
|
+
* keywords (`@fitness-ignore-file` / `@fitness-ignore-next-line`) and the
|
|
8
|
+
* historical `boolean` / `Set<number>` signatures the fitness framework and
|
|
9
|
+
* its tests depend on. No scanning logic is duplicated here.
|
|
10
|
+
*/
|
|
11
|
+
import { type SuppressionKeywords } from '@opensip-cli/core';
|
|
12
|
+
export declare const FITNESS_KEYWORDS: SuppressionKeywords;
|
|
13
|
+
/**
|
|
14
|
+
* Parse file-level ignore directive from file content.
|
|
15
|
+
* Returns true if the file should be entirely ignored for that check.
|
|
16
|
+
*/
|
|
17
|
+
export declare function parseFileIgnoreDirective(content: string, checkId: string | readonly string[]): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Parse next-line ignore directives from file content.
|
|
20
|
+
* Returns the set of 1-based line numbers that should be ignored.
|
|
21
|
+
*/
|
|
22
|
+
export declare function parseIgnoreDirectives(content: string, checkId: string | readonly string[]): Set<number>;
|
|
23
|
+
//# sourceMappingURL=directive-parsing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directive-parsing.d.ts","sourceRoot":"","sources":["../../src/framework/directive-parsing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExF,eAAO,MAAM,gBAAgB,EAAE,mBAG9B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAClC,OAAO,CAIT;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAClC,GAAG,CAAC,MAAM,CAAC,CAQb"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Fitness ignore-directive parsing — thin wrappers over the
|
|
3
|
+
* shared core suppression scanner (ADR-0014).
|
|
4
|
+
*
|
|
5
|
+
* The directive-scanning algorithm lives once in `@opensip-cli/core`
|
|
6
|
+
* (`scanSuppressionDirectives`). These wrappers bind it to the fitness
|
|
7
|
+
* keywords (`@fitness-ignore-file` / `@fitness-ignore-next-line`) and the
|
|
8
|
+
* historical `boolean` / `Set<number>` signatures the fitness framework and
|
|
9
|
+
* its tests depend on. No scanning logic is duplicated here.
|
|
10
|
+
*/
|
|
11
|
+
import { scanSuppressionDirectives } from '@opensip-cli/core';
|
|
12
|
+
export const FITNESS_KEYWORDS = {
|
|
13
|
+
file: '@fitness-ignore-file',
|
|
14
|
+
nextLine: '@fitness-ignore-next-line',
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Parse file-level ignore directive from file content.
|
|
18
|
+
* Returns true if the file should be entirely ignored for that check.
|
|
19
|
+
*/
|
|
20
|
+
export function parseFileIgnoreDirective(content, checkId) {
|
|
21
|
+
const checkIds = Array.isArray(checkId) ? checkId : [checkId];
|
|
22
|
+
const { fileIgnoredIds } = scanSuppressionDirectives(content, FITNESS_KEYWORDS);
|
|
23
|
+
return checkIds.some((id) => fileIgnoredIds.has(id));
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Parse next-line ignore directives from file content.
|
|
27
|
+
* Returns the set of 1-based line numbers that should be ignored.
|
|
28
|
+
*/
|
|
29
|
+
export function parseIgnoreDirectives(content, checkId) {
|
|
30
|
+
const checkIds = Array.isArray(checkId) ? checkId : [checkId];
|
|
31
|
+
const { lineIgnoredIds } = scanSuppressionDirectives(content, FITNESS_KEYWORDS);
|
|
32
|
+
const ignoredLines = new Set();
|
|
33
|
+
for (const [line, ids] of lineIgnoredIds) {
|
|
34
|
+
if (checkIds.some((id) => ids.has(id)))
|
|
35
|
+
ignoredLines.add(line);
|
|
36
|
+
}
|
|
37
|
+
return ignoredLines;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=directive-parsing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directive-parsing.js","sourceRoot":"","sources":["../../src/framework/directive-parsing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,yBAAyB,EAA4B,MAAM,mBAAmB,CAAC;AAExF,MAAM,CAAC,MAAM,gBAAgB,GAAwB;IACnD,IAAI,EAAE,sBAAsB;IAC5B,QAAQ,EAAE,2BAA2B;CACtC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAAe,EACf,OAAmC;IAEnC,MAAM,QAAQ,GAAsB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACjF,MAAM,EAAE,cAAc,EAAE,GAAG,yBAAyB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAChF,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAe,EACf,OAAmC;IAEnC,MAAM,QAAQ,GAAsB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACjF,MAAM,EAAE,cAAc,EAAE,GAAG,yBAAyB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAChF,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,cAAc,EAAE,CAAC;QACzC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAAE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC"}
|