@oculum/scanner 1.0.9 → 1.0.11
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/dist/baseline/diff.d.ts +32 -0
- package/dist/baseline/diff.d.ts.map +1 -0
- package/dist/baseline/diff.js +119 -0
- package/dist/baseline/diff.js.map +1 -0
- package/dist/baseline/index.d.ts +9 -0
- package/dist/baseline/index.d.ts.map +1 -0
- package/dist/baseline/index.js +19 -0
- package/dist/baseline/index.js.map +1 -0
- package/dist/baseline/manager.d.ts +67 -0
- package/dist/baseline/manager.d.ts.map +1 -0
- package/dist/baseline/manager.js +180 -0
- package/dist/baseline/manager.js.map +1 -0
- package/dist/baseline/types.d.ts +91 -0
- package/dist/baseline/types.d.ts.map +1 -0
- package/dist/baseline/types.js +12 -0
- package/dist/baseline/types.js.map +1 -0
- package/dist/formatters/cli-terminal.d.ts +38 -0
- package/dist/formatters/cli-terminal.d.ts.map +1 -1
- package/dist/formatters/cli-terminal.js +365 -42
- package/dist/formatters/cli-terminal.js.map +1 -1
- package/dist/formatters/github-comment.d.ts +1 -1
- package/dist/formatters/github-comment.d.ts.map +1 -1
- package/dist/formatters/github-comment.js +75 -11
- package/dist/formatters/github-comment.js.map +1 -1
- package/dist/formatters/index.d.ts +1 -1
- package/dist/formatters/index.d.ts.map +1 -1
- package/dist/formatters/index.js +4 -1
- package/dist/formatters/index.js.map +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +155 -16
- package/dist/index.js.map +1 -1
- package/dist/layer1/config-audit.d.ts.map +1 -1
- package/dist/layer1/config-audit.js +20 -3
- package/dist/layer1/config-audit.js.map +1 -1
- package/dist/layer1/config-mcp-audit.d.ts +20 -0
- package/dist/layer1/config-mcp-audit.d.ts.map +1 -0
- package/dist/layer1/config-mcp-audit.js +239 -0
- package/dist/layer1/config-mcp-audit.js.map +1 -0
- package/dist/layer1/index.d.ts +1 -0
- package/dist/layer1/index.d.ts.map +1 -1
- package/dist/layer1/index.js +9 -1
- package/dist/layer1/index.js.map +1 -1
- package/dist/layer2/ai-agent-tools.d.ts.map +1 -1
- package/dist/layer2/ai-agent-tools.js +303 -0
- package/dist/layer2/ai-agent-tools.js.map +1 -1
- package/dist/layer2/ai-endpoint-protection.d.ts.map +1 -1
- package/dist/layer2/ai-endpoint-protection.js +17 -3
- package/dist/layer2/ai-endpoint-protection.js.map +1 -1
- package/dist/layer2/ai-execution-sinks.d.ts.map +1 -1
- package/dist/layer2/ai-execution-sinks.js +462 -12
- package/dist/layer2/ai-execution-sinks.js.map +1 -1
- package/dist/layer2/ai-fingerprinting.d.ts.map +1 -1
- package/dist/layer2/ai-fingerprinting.js +3 -0
- package/dist/layer2/ai-fingerprinting.js.map +1 -1
- package/dist/layer2/ai-mcp-security.d.ts +17 -0
- package/dist/layer2/ai-mcp-security.d.ts.map +1 -0
- package/dist/layer2/ai-mcp-security.js +679 -0
- package/dist/layer2/ai-mcp-security.js.map +1 -0
- package/dist/layer2/ai-package-hallucination.d.ts +19 -0
- package/dist/layer2/ai-package-hallucination.d.ts.map +1 -0
- package/dist/layer2/ai-package-hallucination.js +696 -0
- package/dist/layer2/ai-package-hallucination.js.map +1 -0
- package/dist/layer2/ai-prompt-hygiene.d.ts.map +1 -1
- package/dist/layer2/ai-prompt-hygiene.js +495 -9
- package/dist/layer2/ai-prompt-hygiene.js.map +1 -1
- package/dist/layer2/ai-rag-safety.d.ts.map +1 -1
- package/dist/layer2/ai-rag-safety.js +372 -1
- package/dist/layer2/ai-rag-safety.js.map +1 -1
- package/dist/layer2/auth-antipatterns.d.ts.map +1 -1
- package/dist/layer2/auth-antipatterns.js +4 -0
- package/dist/layer2/auth-antipatterns.js.map +1 -1
- package/dist/layer2/byok-patterns.d.ts.map +1 -1
- package/dist/layer2/byok-patterns.js +3 -0
- package/dist/layer2/byok-patterns.js.map +1 -1
- package/dist/layer2/dangerous-functions/child-process.d.ts +16 -0
- package/dist/layer2/dangerous-functions/child-process.d.ts.map +1 -0
- package/dist/layer2/dangerous-functions/child-process.js +74 -0
- package/dist/layer2/dangerous-functions/child-process.js.map +1 -0
- package/dist/layer2/dangerous-functions/dom-xss.d.ts +29 -0
- package/dist/layer2/dangerous-functions/dom-xss.d.ts.map +1 -0
- package/dist/layer2/dangerous-functions/dom-xss.js +179 -0
- package/dist/layer2/dangerous-functions/dom-xss.js.map +1 -0
- package/dist/layer2/dangerous-functions/index.d.ts +13 -0
- package/dist/layer2/dangerous-functions/index.d.ts.map +1 -0
- package/dist/layer2/dangerous-functions/index.js +621 -0
- package/dist/layer2/dangerous-functions/index.js.map +1 -0
- package/dist/layer2/dangerous-functions/json-parse.d.ts +31 -0
- package/dist/layer2/dangerous-functions/json-parse.d.ts.map +1 -0
- package/dist/layer2/dangerous-functions/json-parse.js +319 -0
- package/dist/layer2/dangerous-functions/json-parse.js.map +1 -0
- package/dist/layer2/dangerous-functions/math-random.d.ts +61 -0
- package/dist/layer2/dangerous-functions/math-random.d.ts.map +1 -0
- package/dist/layer2/dangerous-functions/math-random.js +459 -0
- package/dist/layer2/dangerous-functions/math-random.js.map +1 -0
- package/dist/layer2/dangerous-functions/patterns.d.ts +21 -0
- package/dist/layer2/dangerous-functions/patterns.d.ts.map +1 -0
- package/dist/layer2/dangerous-functions/patterns.js +161 -0
- package/dist/layer2/dangerous-functions/patterns.js.map +1 -0
- package/dist/layer2/dangerous-functions/request-validation.d.ts +13 -0
- package/dist/layer2/dangerous-functions/request-validation.d.ts.map +1 -0
- package/dist/layer2/dangerous-functions/request-validation.js +119 -0
- package/dist/layer2/dangerous-functions/request-validation.js.map +1 -0
- package/dist/layer2/dangerous-functions/utils/control-flow.d.ts +23 -0
- package/dist/layer2/dangerous-functions/utils/control-flow.d.ts.map +1 -0
- package/dist/layer2/dangerous-functions/utils/control-flow.js +149 -0
- package/dist/layer2/dangerous-functions/utils/control-flow.js.map +1 -0
- package/dist/layer2/dangerous-functions/utils/helpers.d.ts +31 -0
- package/dist/layer2/dangerous-functions/utils/helpers.d.ts.map +1 -0
- package/dist/layer2/dangerous-functions/utils/helpers.js +124 -0
- package/dist/layer2/dangerous-functions/utils/helpers.js.map +1 -0
- package/dist/layer2/dangerous-functions/utils/index.d.ts +9 -0
- package/dist/layer2/dangerous-functions/utils/index.d.ts.map +1 -0
- package/dist/layer2/dangerous-functions/utils/index.js +23 -0
- package/dist/layer2/dangerous-functions/utils/index.js.map +1 -0
- package/dist/layer2/dangerous-functions/utils/schema-validation.d.ts +22 -0
- package/dist/layer2/dangerous-functions/utils/schema-validation.d.ts.map +1 -0
- package/dist/layer2/dangerous-functions/utils/schema-validation.js +89 -0
- package/dist/layer2/dangerous-functions/utils/schema-validation.js.map +1 -0
- package/dist/layer2/data-exposure.d.ts.map +1 -1
- package/dist/layer2/data-exposure.js +3 -0
- package/dist/layer2/data-exposure.js.map +1 -1
- package/dist/layer2/framework-checks.d.ts.map +1 -1
- package/dist/layer2/framework-checks.js +3 -0
- package/dist/layer2/framework-checks.js.map +1 -1
- package/dist/layer2/index.d.ts +3 -0
- package/dist/layer2/index.d.ts.map +1 -1
- package/dist/layer2/index.js +61 -2
- package/dist/layer2/index.js.map +1 -1
- package/dist/layer2/logic-gates.d.ts.map +1 -1
- package/dist/layer2/logic-gates.js +4 -0
- package/dist/layer2/logic-gates.js.map +1 -1
- package/dist/layer2/model-supply-chain.d.ts +20 -0
- package/dist/layer2/model-supply-chain.d.ts.map +1 -0
- package/dist/layer2/model-supply-chain.js +376 -0
- package/dist/layer2/model-supply-chain.js.map +1 -0
- package/dist/layer2/risky-imports.d.ts.map +1 -1
- package/dist/layer2/risky-imports.js +4 -0
- package/dist/layer2/risky-imports.js.map +1 -1
- package/dist/layer2/variables.d.ts.map +1 -1
- package/dist/layer2/variables.js +4 -0
- package/dist/layer2/variables.js.map +1 -1
- package/dist/layer3/anthropic/auto-dismiss.d.ts +24 -0
- package/dist/layer3/anthropic/auto-dismiss.d.ts.map +1 -0
- package/dist/layer3/anthropic/auto-dismiss.js +188 -0
- package/dist/layer3/anthropic/auto-dismiss.js.map +1 -0
- package/dist/layer3/anthropic/clients.d.ts +44 -0
- package/dist/layer3/anthropic/clients.d.ts.map +1 -0
- package/dist/layer3/anthropic/clients.js +81 -0
- package/dist/layer3/anthropic/clients.js.map +1 -0
- package/dist/layer3/anthropic/index.d.ts +41 -0
- package/dist/layer3/anthropic/index.d.ts.map +1 -0
- package/dist/layer3/anthropic/index.js +141 -0
- package/dist/layer3/anthropic/index.js.map +1 -0
- package/dist/layer3/anthropic/prompts/index.d.ts +8 -0
- package/dist/layer3/anthropic/prompts/index.d.ts.map +1 -0
- package/dist/layer3/anthropic/prompts/index.js +14 -0
- package/dist/layer3/anthropic/prompts/index.js.map +1 -0
- package/dist/layer3/anthropic/prompts/semantic-analysis.d.ts +15 -0
- package/dist/layer3/anthropic/prompts/semantic-analysis.d.ts.map +1 -0
- package/dist/layer3/anthropic/prompts/semantic-analysis.js +169 -0
- package/dist/layer3/anthropic/prompts/semantic-analysis.js.map +1 -0
- package/dist/layer3/anthropic/prompts/validation.d.ts +12 -0
- package/dist/layer3/anthropic/prompts/validation.d.ts.map +1 -0
- package/dist/layer3/anthropic/prompts/validation.js +421 -0
- package/dist/layer3/anthropic/prompts/validation.js.map +1 -0
- package/dist/layer3/anthropic/providers/anthropic.d.ts +21 -0
- package/dist/layer3/anthropic/providers/anthropic.d.ts.map +1 -0
- package/dist/layer3/anthropic/providers/anthropic.js +266 -0
- package/dist/layer3/anthropic/providers/anthropic.js.map +1 -0
- package/dist/layer3/anthropic/providers/index.d.ts +8 -0
- package/dist/layer3/anthropic/providers/index.d.ts.map +1 -0
- package/dist/layer3/anthropic/providers/index.js +15 -0
- package/dist/layer3/anthropic/providers/index.js.map +1 -0
- package/dist/layer3/anthropic/providers/openai.d.ts +18 -0
- package/dist/layer3/anthropic/providers/openai.d.ts.map +1 -0
- package/dist/layer3/anthropic/providers/openai.js +340 -0
- package/dist/layer3/anthropic/providers/openai.js.map +1 -0
- package/dist/layer3/anthropic/request-builder.d.ts +20 -0
- package/dist/layer3/anthropic/request-builder.d.ts.map +1 -0
- package/dist/layer3/anthropic/request-builder.js +134 -0
- package/dist/layer3/anthropic/request-builder.js.map +1 -0
- package/dist/layer3/anthropic/types.d.ts +88 -0
- package/dist/layer3/anthropic/types.d.ts.map +1 -0
- package/dist/layer3/anthropic/types.js +38 -0
- package/dist/layer3/anthropic/types.js.map +1 -0
- package/dist/layer3/anthropic/utils/index.d.ts +9 -0
- package/dist/layer3/anthropic/utils/index.d.ts.map +1 -0
- package/dist/layer3/anthropic/utils/index.js +24 -0
- package/dist/layer3/anthropic/utils/index.js.map +1 -0
- package/dist/layer3/anthropic/utils/path-helpers.d.ts +21 -0
- package/dist/layer3/anthropic/utils/path-helpers.d.ts.map +1 -0
- package/dist/layer3/anthropic/utils/path-helpers.js +69 -0
- package/dist/layer3/anthropic/utils/path-helpers.js.map +1 -0
- package/dist/layer3/anthropic/utils/response-parser.d.ts +40 -0
- package/dist/layer3/anthropic/utils/response-parser.d.ts.map +1 -0
- package/dist/layer3/anthropic/utils/response-parser.js +285 -0
- package/dist/layer3/anthropic/utils/response-parser.js.map +1 -0
- package/dist/layer3/anthropic/utils/retry.d.ts +15 -0
- package/dist/layer3/anthropic/utils/retry.d.ts.map +1 -0
- package/dist/layer3/anthropic/utils/retry.js +62 -0
- package/dist/layer3/anthropic/utils/retry.js.map +1 -0
- package/dist/layer3/index.d.ts +1 -0
- package/dist/layer3/index.d.ts.map +1 -1
- package/dist/layer3/index.js +16 -6
- package/dist/layer3/index.js.map +1 -1
- package/dist/layer3/osv-check.d.ts +75 -0
- package/dist/layer3/osv-check.d.ts.map +1 -0
- package/dist/layer3/osv-check.js +308 -0
- package/dist/layer3/osv-check.js.map +1 -0
- package/dist/rules/framework-fixes.d.ts +48 -0
- package/dist/rules/framework-fixes.d.ts.map +1 -0
- package/dist/rules/framework-fixes.js +439 -0
- package/dist/rules/framework-fixes.js.map +1 -0
- package/dist/rules/index.d.ts +8 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +18 -0
- package/dist/rules/index.js.map +1 -0
- package/dist/rules/metadata.d.ts +43 -0
- package/dist/rules/metadata.d.ts.map +1 -0
- package/dist/rules/metadata.js +734 -0
- package/dist/rules/metadata.js.map +1 -0
- package/dist/suppression/config-loader.d.ts +74 -0
- package/dist/suppression/config-loader.d.ts.map +1 -0
- package/dist/suppression/config-loader.js +424 -0
- package/dist/suppression/config-loader.js.map +1 -0
- package/dist/suppression/hash.d.ts +48 -0
- package/dist/suppression/hash.d.ts.map +1 -0
- package/dist/suppression/hash.js +88 -0
- package/dist/suppression/hash.js.map +1 -0
- package/dist/suppression/index.d.ts +11 -0
- package/dist/suppression/index.d.ts.map +1 -0
- package/dist/suppression/index.js +39 -0
- package/dist/suppression/index.js.map +1 -0
- package/dist/suppression/inline-parser.d.ts +39 -0
- package/dist/suppression/inline-parser.d.ts.map +1 -0
- package/dist/suppression/inline-parser.js +218 -0
- package/dist/suppression/inline-parser.js.map +1 -0
- package/dist/suppression/manager.d.ts +94 -0
- package/dist/suppression/manager.d.ts.map +1 -0
- package/dist/suppression/manager.js +292 -0
- package/dist/suppression/manager.js.map +1 -0
- package/dist/suppression/types.d.ts +151 -0
- package/dist/suppression/types.d.ts.map +1 -0
- package/dist/suppression/types.js +28 -0
- package/dist/suppression/types.js.map +1 -0
- package/dist/tiers.d.ts +1 -1
- package/dist/tiers.d.ts.map +1 -1
- package/dist/tiers.js +27 -0
- package/dist/tiers.js.map +1 -1
- package/dist/types.d.ts +62 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/context-helpers.d.ts +4 -0
- package/dist/utils/context-helpers.d.ts.map +1 -1
- package/dist/utils/context-helpers.js +13 -9
- package/dist/utils/context-helpers.js.map +1 -1
- package/package.json +4 -2
- package/src/__tests__/benchmark/fixtures/layer1/mcp-config-audit.json +31 -0
- package/src/__tests__/benchmark/fixtures/layer2/ai-execution-sinks.ts +1489 -82
- package/src/__tests__/benchmark/fixtures/layer2/ai-mcp-security.ts +495 -0
- package/src/__tests__/benchmark/fixtures/layer2/ai-package-hallucination.ts +255 -0
- package/src/__tests__/benchmark/fixtures/layer2/ai-prompt-hygiene.ts +300 -1
- package/src/__tests__/benchmark/fixtures/layer2/ai-rag-safety.ts +139 -0
- package/src/__tests__/benchmark/fixtures/layer2/byok-patterns.ts +7 -0
- package/src/__tests__/benchmark/fixtures/layer2/data-exposure.ts +63 -0
- package/src/__tests__/benchmark/fixtures/layer2/excessive-agency.ts +221 -0
- package/src/__tests__/benchmark/fixtures/layer2/index.ts +18 -0
- package/src/__tests__/benchmark/fixtures/layer2/model-supply-chain.ts +204 -0
- package/src/__tests__/benchmark/fixtures/layer2/phase1-enhancements.ts +157 -0
- package/src/__tests__/snapshots/__snapshots__/anthropic-validation-refactor.test.ts.snap +758 -0
- package/src/__tests__/snapshots/__snapshots__/dangerous-functions-refactor.test.ts.snap +503 -0
- package/src/__tests__/snapshots/anthropic-validation-refactor.test.ts +321 -0
- package/src/__tests__/snapshots/dangerous-functions-refactor.test.ts +439 -0
- package/src/baseline/__tests__/diff.test.ts +261 -0
- package/src/baseline/__tests__/manager.test.ts +225 -0
- package/src/baseline/diff.ts +135 -0
- package/src/baseline/index.ts +29 -0
- package/src/baseline/manager.ts +230 -0
- package/src/baseline/types.ts +97 -0
- package/src/formatters/cli-terminal.ts +444 -41
- package/src/formatters/github-comment.ts +79 -11
- package/src/formatters/index.ts +4 -0
- package/src/index.ts +197 -14
- package/src/layer1/config-audit.ts +24 -3
- package/src/layer1/config-mcp-audit.ts +276 -0
- package/src/layer1/index.ts +16 -6
- package/src/layer2/ai-agent-tools.ts +336 -0
- package/src/layer2/ai-endpoint-protection.ts +16 -3
- package/src/layer2/ai-execution-sinks.ts +516 -12
- package/src/layer2/ai-fingerprinting.ts +5 -1
- package/src/layer2/ai-mcp-security.ts +730 -0
- package/src/layer2/ai-package-hallucination.ts +791 -0
- package/src/layer2/ai-prompt-hygiene.ts +547 -9
- package/src/layer2/ai-rag-safety.ts +382 -3
- package/src/layer2/auth-antipatterns.ts +5 -0
- package/src/layer2/byok-patterns.ts +5 -1
- package/src/layer2/dangerous-functions/child-process.ts +98 -0
- package/src/layer2/dangerous-functions/dom-xss.ts +220 -0
- package/src/layer2/dangerous-functions/index.ts +949 -0
- package/src/layer2/dangerous-functions/json-parse.ts +385 -0
- package/src/layer2/dangerous-functions/math-random.ts +537 -0
- package/src/layer2/dangerous-functions/patterns.ts +174 -0
- package/src/layer2/dangerous-functions/request-validation.ts +145 -0
- package/src/layer2/dangerous-functions/utils/control-flow.ts +162 -0
- package/src/layer2/dangerous-functions/utils/helpers.ts +170 -0
- package/src/layer2/dangerous-functions/utils/index.ts +25 -0
- package/src/layer2/dangerous-functions/utils/schema-validation.ts +91 -0
- package/src/layer2/data-exposure.ts +5 -1
- package/src/layer2/framework-checks.ts +5 -0
- package/src/layer2/index.ts +63 -1
- package/src/layer2/logic-gates.ts +5 -0
- package/src/layer2/model-supply-chain.ts +456 -0
- package/src/layer2/risky-imports.ts +5 -0
- package/src/layer2/variables.ts +5 -0
- package/src/layer3/__tests__/osv-check.test.ts +384 -0
- package/src/layer3/anthropic/auto-dismiss.ts +212 -0
- package/src/layer3/anthropic/clients.ts +84 -0
- package/src/layer3/anthropic/index.ts +170 -0
- package/src/layer3/anthropic/prompts/index.ts +14 -0
- package/src/layer3/anthropic/prompts/semantic-analysis.ts +173 -0
- package/src/layer3/anthropic/prompts/validation.ts +419 -0
- package/src/layer3/anthropic/providers/anthropic.ts +310 -0
- package/src/layer3/anthropic/providers/index.ts +8 -0
- package/src/layer3/anthropic/providers/openai.ts +384 -0
- package/src/layer3/anthropic/request-builder.ts +150 -0
- package/src/layer3/anthropic/types.ts +148 -0
- package/src/layer3/anthropic/utils/index.ts +26 -0
- package/src/layer3/anthropic/utils/path-helpers.ts +68 -0
- package/src/layer3/anthropic/utils/response-parser.ts +322 -0
- package/src/layer3/anthropic/utils/retry.ts +75 -0
- package/src/layer3/index.ts +18 -5
- package/src/layer3/osv-check.ts +420 -0
- package/src/rules/__tests__/framework-fixes.test.ts +689 -0
- package/src/rules/__tests__/metadata.test.ts +218 -0
- package/src/rules/framework-fixes.ts +470 -0
- package/src/rules/index.ts +21 -0
- package/src/rules/metadata.ts +831 -0
- package/src/suppression/__tests__/config-loader.test.ts +382 -0
- package/src/suppression/__tests__/hash.test.ts +166 -0
- package/src/suppression/__tests__/inline-parser.test.ts +212 -0
- package/src/suppression/__tests__/manager.test.ts +415 -0
- package/src/suppression/config-loader.ts +462 -0
- package/src/suppression/hash.ts +95 -0
- package/src/suppression/index.ts +51 -0
- package/src/suppression/inline-parser.ts +273 -0
- package/src/suppression/manager.ts +379 -0
- package/src/suppression/types.ts +174 -0
- package/src/tiers.ts +36 -0
- package/src/types.ts +90 -0
- package/src/utils/context-helpers.ts +13 -9
- package/dist/layer2/dangerous-functions.d.ts +0 -7
- package/dist/layer2/dangerous-functions.d.ts.map +0 -1
- package/dist/layer2/dangerous-functions.js +0 -1701
- package/dist/layer2/dangerous-functions.js.map +0 -1
- package/dist/layer3/anthropic.d.ts +0 -87
- package/dist/layer3/anthropic.d.ts.map +0 -1
- package/dist/layer3/anthropic.js +0 -1948
- package/dist/layer3/anthropic.js.map +0 -1
- package/dist/layer3/openai.d.ts +0 -25
- package/dist/layer3/openai.d.ts.map +0 -1
- package/dist/layer3/openai.js +0 -238
- package/dist/layer3/openai.js.map +0 -1
- package/src/layer2/dangerous-functions.ts +0 -1940
- package/src/layer3/anthropic.ts +0 -2257
|
@@ -35,7 +35,28 @@ const CATEGORY_DOCS = {
|
|
|
35
35
|
data_exposure: 'https://oculum.dev/docs/rules/data-exposure',
|
|
36
36
|
};
|
|
37
37
|
/**
|
|
38
|
-
*
|
|
38
|
+
* Helper to determine language from file path
|
|
39
|
+
*/
|
|
40
|
+
function getLanguageFromPath(filePath) {
|
|
41
|
+
const ext = filePath.split('.').pop()?.toLowerCase() || '';
|
|
42
|
+
const langMap = {
|
|
43
|
+
ts: 'typescript',
|
|
44
|
+
tsx: 'typescript',
|
|
45
|
+
js: 'javascript',
|
|
46
|
+
jsx: 'javascript',
|
|
47
|
+
py: 'python',
|
|
48
|
+
go: 'go',
|
|
49
|
+
java: 'java',
|
|
50
|
+
rb: 'ruby',
|
|
51
|
+
php: 'php',
|
|
52
|
+
yaml: 'yaml',
|
|
53
|
+
yml: 'yaml',
|
|
54
|
+
json: 'json',
|
|
55
|
+
};
|
|
56
|
+
return langMap[ext] || '';
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Format a single finding as a markdown section with actionable info (PRO-82)
|
|
39
60
|
*/
|
|
40
61
|
function formatFinding(finding, options = {}) {
|
|
41
62
|
const { showFile = true, showDocs = true } = options;
|
|
@@ -43,16 +64,41 @@ function formatFinding(finding, options = {}) {
|
|
|
43
64
|
const location = showFile
|
|
44
65
|
? `\`${finding.filePath}:${finding.lineNumber}\``
|
|
45
66
|
: `Line ${finding.lineNumber}`;
|
|
46
|
-
let md =
|
|
47
|
-
md +=
|
|
48
|
-
|
|
49
|
-
if (finding.
|
|
50
|
-
md +=
|
|
67
|
+
let md = `#### ${badge} ${finding.title}\n\n`;
|
|
68
|
+
md += `📍 ${location}\n\n`;
|
|
69
|
+
// Impact (why this matters) - shown if available
|
|
70
|
+
if (finding.impact) {
|
|
71
|
+
md += `**Impact:** ${finding.impact}\n\n`;
|
|
72
|
+
}
|
|
73
|
+
// Code snippet in collapsible
|
|
74
|
+
if (finding.lineContent && finding.lineContent.trim()) {
|
|
75
|
+
const language = getLanguageFromPath(finding.filePath);
|
|
76
|
+
md += `<details>\n<summary>View code</summary>\n\n`;
|
|
77
|
+
md += `\`\`\`${language}\n${finding.lineContent.trim()}\n\`\`\`\n\n`;
|
|
78
|
+
md += `</details>\n\n`;
|
|
51
79
|
}
|
|
52
|
-
//
|
|
80
|
+
// Fix steps - shown as numbered list (PRO-82)
|
|
81
|
+
if (finding.fixSteps && finding.fixSteps.length > 0) {
|
|
82
|
+
md += `**Fix:**\n`;
|
|
83
|
+
finding.fixSteps.forEach((step, i) => {
|
|
84
|
+
md += `${i + 1}. ${step}\n`;
|
|
85
|
+
});
|
|
86
|
+
md += '\n';
|
|
87
|
+
}
|
|
88
|
+
else if (finding.suggestedFix) {
|
|
89
|
+
// Fallback to legacy field
|
|
90
|
+
md += `💡 **Fix:** ${finding.suggestedFix}\n\n`;
|
|
91
|
+
}
|
|
92
|
+
// Documentation links
|
|
53
93
|
const docsUrl = CATEGORY_DOCS[finding.category];
|
|
54
|
-
|
|
55
|
-
|
|
94
|
+
const referenceUrl = finding.references && finding.references.length > 0 ? finding.references[0] : null;
|
|
95
|
+
if (showDocs && (docsUrl || referenceUrl)) {
|
|
96
|
+
const links = [];
|
|
97
|
+
if (docsUrl)
|
|
98
|
+
links.push(`[Learn more](${docsUrl})`);
|
|
99
|
+
if (referenceUrl && referenceUrl !== docsUrl)
|
|
100
|
+
links.push(`[OWASP/CWE](${referenceUrl})`);
|
|
101
|
+
md += links.join(' · ') + '\n\n';
|
|
56
102
|
}
|
|
57
103
|
return md;
|
|
58
104
|
}
|
|
@@ -289,18 +335,36 @@ function formatShortStatus(result) {
|
|
|
289
335
|
return `✅ No security issues found (scanned ${filesScanned} files in ${(scanDuration / 1000).toFixed(1)}s)`;
|
|
290
336
|
}
|
|
291
337
|
/**
|
|
292
|
-
* Format as inline annotation for GitHub check run
|
|
338
|
+
* Format as inline annotation for GitHub check run (PRO-82: actionable output)
|
|
293
339
|
*/
|
|
294
340
|
function formatAnnotation(finding) {
|
|
295
341
|
const level = finding.severity === 'critical' || finding.severity === 'high' ? 'failure' :
|
|
296
342
|
finding.severity === 'medium' ? 'warning' : 'notice';
|
|
343
|
+
// Build actionable message
|
|
344
|
+
let message = '';
|
|
345
|
+
// Impact first (why this matters)
|
|
346
|
+
if (finding.impact) {
|
|
347
|
+
message += `Impact: ${finding.impact}\n\n`;
|
|
348
|
+
}
|
|
349
|
+
// Description
|
|
350
|
+
message += finding.description;
|
|
351
|
+
// Fix steps or legacy suggestedFix
|
|
352
|
+
if (finding.fixSteps && finding.fixSteps.length > 0) {
|
|
353
|
+
message += '\n\n💡 Fix:\n';
|
|
354
|
+
finding.fixSteps.forEach((step, i) => {
|
|
355
|
+
message += `${i + 1}. ${step}\n`;
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
else if (finding.suggestedFix) {
|
|
359
|
+
message += `\n\n💡 Fix: ${finding.suggestedFix}`;
|
|
360
|
+
}
|
|
297
361
|
return {
|
|
298
362
|
path: finding.filePath,
|
|
299
363
|
start_line: finding.lineNumber,
|
|
300
364
|
end_line: finding.lineNumber,
|
|
301
365
|
annotation_level: level,
|
|
302
366
|
title: `${SEVERITY_BADGE[finding.severity]} ${finding.title}`,
|
|
303
|
-
message
|
|
367
|
+
message,
|
|
304
368
|
};
|
|
305
369
|
}
|
|
306
370
|
//# sourceMappingURL=github-comment.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-comment.js","sourceRoot":"","sources":["../../src/formatters/github-comment.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"github-comment.js","sourceRoot":"","sources":["../../src/formatters/github-comment.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAkKH,kDAiGC;AA+HD,8CAcC;AAKD,4CAyCC;AA3bD,yCAA4F;AAE5F;;GAEG;AACH,MAAM,cAAc,GAA0C;IAC5D,QAAQ,EAAE,aAAa;IACvB,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,WAAW;IACnB,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,QAAQ;CACf,CAAA;AAED;;GAEG;AACH,MAAM,aAAa,GAAmD;IACpE,gBAAgB,EAAE,iDAAiD;IACnE,mBAAmB,EAAE,gDAAgD;IACrE,mBAAmB,EAAE,gDAAgD;IACrE,sBAAsB,EAAE,oDAAoD;IAC5E,mBAAmB,EAAE,gDAAgD;IACrE,uBAAuB,EAAE,qDAAqD;IAC9E,kBAAkB,EAAE,iDAAiD;IACrE,aAAa,EAAE,6CAA6C;IAC5D,GAAG,EAAE,mCAAmC;IACxC,YAAY,EAAE,4CAA4C;IAC1D,aAAa,EAAE,6CAA6C;CAC7D,CAAA;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,QAAgB;IAC3C,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;IAC1D,MAAM,OAAO,GAA2B;QACtC,EAAE,EAAE,YAAY;QAChB,GAAG,EAAE,YAAY;QACjB,EAAE,EAAE,YAAY;QAChB,GAAG,EAAE,YAAY;QACjB,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,MAAM;QACZ,EAAE,EAAE,MAAM;QACV,GAAG,EAAE,KAAK;QACV,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,MAAM;QACX,IAAI,EAAE,MAAM;KACb,CAAA;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;AAC3B,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,OAAsB,EAAE,UAAsD,EAAE;IACrG,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;IACpD,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC9C,MAAM,QAAQ,GAAG,QAAQ;QACvB,CAAC,CAAC,KAAK,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,UAAU,IAAI;QACjD,CAAC,CAAC,QAAQ,OAAO,CAAC,UAAU,EAAE,CAAA;IAEhC,IAAI,EAAE,GAAG,QAAQ,KAAK,IAAI,OAAO,CAAC,KAAK,MAAM,CAAA;IAC7C,EAAE,IAAI,MAAM,QAAQ,MAAM,CAAA;IAE1B,iDAAiD;IACjD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,EAAE,IAAI,eAAe,OAAO,CAAC,MAAM,MAAM,CAAA;IAC3C,CAAC;IAED,8BAA8B;IAC9B,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;QACtD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QACtD,EAAE,IAAI,6CAA6C,CAAA;QACnD,EAAE,IAAI,SAAS,QAAQ,KAAK,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,cAAc,CAAA;QACpE,EAAE,IAAI,gBAAgB,CAAA;IACxB,CAAC;IAED,8CAA8C;IAC9C,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,EAAE,IAAI,YAAY,CAAA;QAClB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACnC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAA;QAC7B,CAAC,CAAC,CAAA;QACF,EAAE,IAAI,IAAI,CAAA;IACZ,CAAC;SAAM,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QAChC,2BAA2B;QAC3B,EAAE,IAAI,eAAe,OAAO,CAAC,YAAY,MAAM,CAAA;IACjD,CAAC;IAED,sBAAsB;IACtB,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC/C,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAEvG,IAAI,QAAQ,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,IAAI,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,GAAG,CAAC,CAAA;QACnD,IAAI,YAAY,IAAI,YAAY,KAAK,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,eAAe,YAAY,GAAG,CAAC,CAAA;QACxF,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAA;IAClC,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,KAAsB,EAAE,cAAsB,CAAC;IAClE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,KAAK,CAAA;IAEhE,gBAAgB;IAChB,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,IAAI,cAAc,CAAC,QAAQ,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,QAAQ,WAAW,CAAC,CAAA;IACnF,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,OAAO,CAAC,CAAA;IACvE,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,SAAS,CAAC,CAAA;IAC7E,IAAI,cAAc,CAAC,GAAG,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,GAAG,MAAM,CAAC,CAAA;IACpE,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,OAAO,CAAC,CAAA;IAEvE,IAAI,EAAE,GAAG,OAAO,SAAS,IAAI,SAAS,IAAI,CAAA;IAC1C,EAAE,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA;IAElC,oBAAoB;IACpB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;IAC5C,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;QAC5B,EAAE,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;IACrC,CAAC;IAED,mCAAmC;IACnC,IAAI,QAAQ,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;QAClC,EAAE,IAAI,yBAAyB,QAAQ,CAAC,MAAM,GAAG,WAAW,SAAS,SAAS,CAAC,WAAW,EAAE,uBAAuB,CAAA;QACnH,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YAClD,EAAE,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;QACrC,CAAC;QACD,EAAE,IAAI,cAAc,CAAA;IACtB,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC;AAmBD;;GAEG;AACH,SAAgB,mBAAmB,CAAC,MAAkB,EAAE,UAAgC,EAAE;IACxF,MAAM,EACJ,mBAAmB,GAAG,CAAC,EACvB,eAAe,GAAG,KAAK,EACvB,aAAa,GAAG,IAAI,EACpB,SAAS,EACT,kBAAkB,GACnB,GAAG,OAAO,CAAA;IAEX,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAA;IAErE,2CAA2C;IAC3C,IAAI,EAAE,GAAG,iCAAiC,CAAA;IAC1C,EAAE,IAAI,0BAA0B,CAAA;IAChC,EAAE,IAAI,gCAAgC,CAAA;IACtC,EAAE,IAAI,YAAY,CAAA;IAElB,gBAAgB;IAChB,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAA;QAC9D,EAAE,IAAI,UAAU,QAAQ,kBAAkB,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,wDAAwD,CAAA;IAC7H,CAAC;SAAM,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,EAAE,IAAI,UAAU,eAAe,CAAC,MAAM,SAAS,eAAe,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,4DAA4D,CAAA;IACpJ,CAAC;SAAM,CAAC;QACN,EAAE,IAAI,+DAA+D,CAAA;QACrE,EAAE,IAAI,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;QAC3C,IAAI,aAAa,EAAE,CAAC;YAClB,EAAE,IAAI,YAAY,EAAE,CAAA;QACtB,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IAED,6CAA6C;IAC7C,IAAI,kBAAkB,EAAE,CAAC;QACvB,EAAE,IAAI,gBAAgB,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAA;IAC5D,CAAC;IAED,kBAAkB;IAClB,EAAE,IAAI,mBAAmB,CAAA;IACzB,EAAE,IAAI,kBAAkB,CAAC,cAAc,CAAC,CAAA;IACxC,EAAE,IAAI,IAAI,CAAA;IAEV,gBAAgB;IAChB,EAAE,IAAI,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAE3C,4CAA4C;IAC5C,MAAM,cAAc,GAAG,IAAA,4BAAiB,EAAC,eAAe,CAAC,CAAA;IACzD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,EAAE,IAAI,2BAA2B,CAAA;QACjC,EAAE,IAAI,kDAAkD,CAAA;QAExD,KAAK,MAAM,OAAO,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAClD,EAAE,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;QACrC,CAAC;QAED,IAAI,cAAc,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YAC/B,EAAE,IAAI,yBAAyB,cAAc,CAAC,MAAM,GAAG,EAAE,qCAAqC,CAAA;YAC9F,KAAK,MAAM,OAAO,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC/C,EAAE,IAAI,aAAa,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;YAC1D,CAAC;YACD,EAAE,IAAI,cAAc,CAAA;QACtB,CAAC;QACD,EAAE,IAAI,IAAI,CAAA;IACZ,CAAC;IAED,gCAAgC;IAChC,MAAM,OAAO,GAAG,IAAA,uBAAY,EAAC,eAAe,CAAC,CAAA;IAC7C,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAA,wBAAa,EAAC,OAAO,EAAE,EAAE,CAAC,CAAA;IAEtE,4DAA4D;IAC5D,MAAM,sBAAsB,GAAG,eAAe,CAAC,IAAI,CACjD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CACxD,CAAA;IAED,IAAI,sBAAsB,EAAE,CAAC;QAC3B,EAAE,IAAI,oCAAoC,CAAA;QAE1C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,8DAA8D;YAC9D,MAAM,kBAAkB,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAC9C,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CACxD,CAAA;YACD,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAQ;YAE7C,EAAE,IAAI,WAAW,CAAC,KAAK,EAAE,mBAAmB,CAAC,GAAG,IAAI,CAAA;QACtD,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,EAAE,IAAI,kBAAkB,CAAC,iBAAiB,CAAC,CAAA;IAE3C,SAAS;IACT,IAAI,aAAa,EAAE,CAAC;QAClB,EAAE,IAAI,YAAY,EAAE,CAAA;IACtB,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,cAAqD;IAC/E,IAAI,EAAE,GAAG,iCAAiC,CAAA;IAC1C,EAAE,IAAI,iCAAiC,CAAA;IAEvC,IAAI,cAAc,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;QAChC,EAAE,IAAI,uBAAuB,cAAc,CAAC,QAAQ,mBAAmB,CAAA;IACzE,CAAC;IACD,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC5B,EAAE,IAAI,mBAAmB,cAAc,CAAC,IAAI,mBAAmB,CAAA;IACjE,CAAC;IACD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,EAAE,IAAI,iBAAiB,cAAc,CAAC,MAAM,kBAAkB,CAAA;IAChE,CAAC;IACD,IAAI,cAAc,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;QAC3B,EAAE,IAAI,cAAc,cAAc,CAAC,GAAG,gBAAgB,CAAA;IACxD,CAAC;IACD,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC5B,EAAE,IAAI,cAAc,cAAc,CAAC,IAAI,gBAAgB,CAAA;IACzD,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CACvB,OAA8C,EAC9C,QAA+C;IAE/C,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IACtE,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IACxE,MAAM,IAAI,GAAG,YAAY,GAAG,aAAa,CAAA;IAEzC,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAA;IACvD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAA;IAC1D,MAAM,YAAY,GAAG,eAAe,GAAG,gBAAgB,CAAA;IAEvD,IAAI,EAAE,GAAG,uCAAuC,CAAA;IAEhD,IAAI,IAAI,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;QACrC,EAAE,IAAI,4BAA4B,CAAA;IACpC,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GAAa,EAAE,CAAA;QAE1B,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,QAAQ,YAAY,sBAAsB,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;QACzF,CAAC;aAAM,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,kBAAkB,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAA;QAClH,CAAC;QAED,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,YAAY,0BAA0B,IAAI,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAA;QACpG,CAAC;aAAM,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC,sBAAsB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAA;QAC7H,CAAC;QAED,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAA;IAClC,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,MAAkB,EAAE,SAAkB;IAChE,IAAI,EAAE,GAAG,mDAAmD,CAAA;IAC5D,EAAE,IAAI,sBAAsB,CAAA;IAC5B,EAAE,IAAI,sBAAsB,CAAA;IAC5B,EAAE,IAAI,qBAAqB,MAAM,CAAC,YAAY,MAAM,CAAA;IACpD,EAAE,IAAI,qBAAqB,MAAM,CAAC,YAAY,MAAM,CAAA;IACpD,EAAE,IAAI,qBAAqB,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAA;IACzE,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,WAAW,GAA2B;YAC1C,KAAK,EAAE,yBAAyB;YAChC,SAAS,EAAE,yBAAyB;YACpC,IAAI,EAAE,sBAAsB;SAC7B,CAAA;QACD,EAAE,IAAI,kBAAkB,WAAW,CAAC,SAAS,CAAC,IAAI,SAAS,MAAM,CAAA;IACnE,CAAC;IACD,EAAE,IAAI,iBAAiB,MAAM,CAAC,SAAS,MAAM,CAAA;IAC7C,EAAE,IAAI,kBAAkB,CAAA;IACxB,OAAO,EAAE,CAAA;AACX,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,iBAA0B;IACpD,IAAI,EAAE,GAAG,yBAAyB,CAAA;IAElC,IAAI,iBAAiB,EAAE,CAAC;QACtB,EAAE,IAAI,gDAAgD,CAAA;QACtD,EAAE,IAAI,6CAA6C,CAAA;IACrD,CAAC;SAAM,CAAC;QACN,EAAE,IAAI,+CAA+C,CAAA;IACvD,CAAC;IAED,EAAE,IAAI,gEAAgE,CAAA;IACtE,EAAE,IAAI,sDAAsD,CAAA;IAC5D,EAAE,IAAI,mHAAmH,CAAA;IAEzH,OAAO,EAAE,CAAA;AACX,CAAC;AAED;;GAEG;AACH,SAAS,YAAY;IACnB,IAAI,EAAE,GAAG,SAAS,CAAA;IAClB,EAAE,IAAI,0BAA0B,CAAA;IAChC,EAAE,IAAI,iEAAiE,CAAA;IACvE,EAAE,IAAI,6CAA6C,CAAA;IACnD,EAAE,IAAI,2CAA2C,CAAA;IACjD,EAAE,IAAI,UAAU,CAAA;IAChB,OAAO,EAAE,CAAA;AACX,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,MAAkB;IAClD,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,MAAM,CAAA;IAEhF,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAA;QAC9D,OAAO,YAAY,QAAQ,2BAA2B,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,cAAc,CAAC,QAAQ,cAAc,cAAc,CAAC,IAAI,QAAQ,CAAA;IACtJ,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IACtE,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,OAAO,YAAY,KAAK,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,cAAc,CAAC,MAAM,YAAY,cAAc,CAAC,GAAG,SAAS,cAAc,CAAC,IAAI,QAAQ,CAAA;IACrJ,CAAC;IAED,OAAO,uCAAuC,YAAY,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;AAC7G,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,OAAsB;IAQrD,MAAM,KAAK,GACT,OAAO,CAAC,QAAQ,KAAK,UAAU,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC5E,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAA;IAEtD,2BAA2B;IAC3B,IAAI,OAAO,GAAG,EAAE,CAAA;IAEhB,kCAAkC;IAClC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,IAAI,WAAW,OAAO,CAAC,MAAM,MAAM,CAAA;IAC5C,CAAC;IAED,cAAc;IACd,OAAO,IAAI,OAAO,CAAC,WAAW,CAAA;IAE9B,mCAAmC;IACnC,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,OAAO,IAAI,eAAe,CAAA;QAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACnC,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAA;QAClC,CAAC,CAAC,CAAA;IACJ,CAAC;SAAM,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QAChC,OAAO,IAAI,eAAe,OAAO,CAAC,YAAY,EAAE,CAAA;IAClD,CAAC;IAED,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,QAAQ;QACtB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,QAAQ,EAAE,OAAO,CAAC,UAAU;QAC5B,gBAAgB,EAAE,KAAK;QACvB,KAAK,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE;QAC7D,OAAO;KACR,CAAA;AACH,CAAC"}
|
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
export { groupByTheme, limitPerGroup, sortBySeverity, getBlockingIssues, getActionableIssues, getRiskTheme, THEME_CONFIG, type RiskTheme, type GroupedFindings, } from './grouping';
|
|
6
6
|
export { formatGitHubComment, formatShortStatus, formatAnnotation, type GitHubCommentOptions, } from './github-comment';
|
|
7
7
|
export { formatDiagnostic, formatDiagnosticsByFile, generateCodeAction, formatForProblemsPanel, DiagnosticSeverity, type Diagnostic, type DiagnosticsByFile, type CodeAction, type Position, type Range, } from './vscode-diagnostic';
|
|
8
|
-
export { formatTerminalOutput, formatSimpleList, formatJSON, formatSARIF, } from './cli-terminal';
|
|
8
|
+
export { formatTerminalOutput, formatSimpleList, formatJSON, formatSARIF, formatCompactSummary, getNumberedFindings, formatFindingDetail, type CompactSummaryOptions, } from './cli-terminal';
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/formatters/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,YAAY,EACZ,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,KAAK,SAAS,EACd,KAAK,eAAe,GACrB,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,oBAAoB,GAC1B,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,KAAK,GACX,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,UAAU,EACV,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/formatters/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,YAAY,EACZ,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,KAAK,SAAS,EACd,KAAK,eAAe,GACrB,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,oBAAoB,GAC1B,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,KAAK,GACX,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,qBAAqB,GAC3B,MAAM,gBAAgB,CAAA"}
|
package/dist/formatters/index.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Export all formatting utilities for different workflows
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.formatSARIF = exports.formatJSON = exports.formatSimpleList = exports.formatTerminalOutput = exports.DiagnosticSeverity = exports.formatForProblemsPanel = exports.generateCodeAction = exports.formatDiagnosticsByFile = exports.formatDiagnostic = exports.formatAnnotation = exports.formatShortStatus = exports.formatGitHubComment = exports.THEME_CONFIG = exports.getRiskTheme = exports.getActionableIssues = exports.getBlockingIssues = exports.sortBySeverity = exports.limitPerGroup = exports.groupByTheme = void 0;
|
|
7
|
+
exports.formatFindingDetail = exports.getNumberedFindings = exports.formatCompactSummary = exports.formatSARIF = exports.formatJSON = exports.formatSimpleList = exports.formatTerminalOutput = exports.DiagnosticSeverity = exports.formatForProblemsPanel = exports.generateCodeAction = exports.formatDiagnosticsByFile = exports.formatDiagnostic = exports.formatAnnotation = exports.formatShortStatus = exports.formatGitHubComment = exports.THEME_CONFIG = exports.getRiskTheme = exports.getActionableIssues = exports.getBlockingIssues = exports.sortBySeverity = exports.limitPerGroup = exports.groupByTheme = void 0;
|
|
8
8
|
// Grouping utilities
|
|
9
9
|
var grouping_1 = require("./grouping");
|
|
10
10
|
Object.defineProperty(exports, "groupByTheme", { enumerable: true, get: function () { return grouping_1.groupByTheme; } });
|
|
@@ -32,4 +32,7 @@ Object.defineProperty(exports, "formatTerminalOutput", { enumerable: true, get:
|
|
|
32
32
|
Object.defineProperty(exports, "formatSimpleList", { enumerable: true, get: function () { return cli_terminal_1.formatSimpleList; } });
|
|
33
33
|
Object.defineProperty(exports, "formatJSON", { enumerable: true, get: function () { return cli_terminal_1.formatJSON; } });
|
|
34
34
|
Object.defineProperty(exports, "formatSARIF", { enumerable: true, get: function () { return cli_terminal_1.formatSARIF; } });
|
|
35
|
+
Object.defineProperty(exports, "formatCompactSummary", { enumerable: true, get: function () { return cli_terminal_1.formatCompactSummary; } });
|
|
36
|
+
Object.defineProperty(exports, "getNumberedFindings", { enumerable: true, get: function () { return cli_terminal_1.getNumberedFindings; } });
|
|
37
|
+
Object.defineProperty(exports, "formatFindingDetail", { enumerable: true, get: function () { return cli_terminal_1.formatFindingDetail; } });
|
|
35
38
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/formatters/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,qBAAqB;AACrB,uCAUmB;AATjB,wGAAA,YAAY,OAAA;AACZ,yGAAA,aAAa,OAAA;AACb,0GAAA,cAAc,OAAA;AACd,6GAAA,iBAAiB,OAAA;AACjB,+GAAA,mBAAmB,OAAA;AACnB,wGAAA,YAAY,OAAA;AACZ,wGAAA,YAAY,OAAA;AAKd,2BAA2B;AAC3B,mDAKyB;AAJvB,qHAAA,mBAAmB,OAAA;AACnB,mHAAA,iBAAiB,OAAA;AACjB,kHAAA,gBAAgB,OAAA;AAIlB,+BAA+B;AAC/B,yDAW4B;AAV1B,qHAAA,gBAAgB,OAAA;AAChB,4HAAA,uBAAuB,OAAA;AACvB,uHAAA,kBAAkB,OAAA;AAClB,2HAAA,sBAAsB,OAAA;AACtB,uHAAA,kBAAkB,OAAA;AAQpB,yBAAyB;AACzB,+
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/formatters/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,qBAAqB;AACrB,uCAUmB;AATjB,wGAAA,YAAY,OAAA;AACZ,yGAAA,aAAa,OAAA;AACb,0GAAA,cAAc,OAAA;AACd,6GAAA,iBAAiB,OAAA;AACjB,+GAAA,mBAAmB,OAAA;AACnB,wGAAA,YAAY,OAAA;AACZ,wGAAA,YAAY,OAAA;AAKd,2BAA2B;AAC3B,mDAKyB;AAJvB,qHAAA,mBAAmB,OAAA;AACnB,mHAAA,iBAAiB,OAAA;AACjB,kHAAA,gBAAgB,OAAA;AAIlB,+BAA+B;AAC/B,yDAW4B;AAV1B,qHAAA,gBAAgB,OAAA;AAChB,4HAAA,uBAAuB,OAAA;AACvB,uHAAA,kBAAkB,OAAA;AAClB,2HAAA,sBAAsB,OAAA;AACtB,uHAAA,kBAAkB,OAAA;AAQpB,yBAAyB;AACzB,+CASuB;AARrB,oHAAA,oBAAoB,OAAA;AACpB,gHAAA,gBAAgB,OAAA;AAChB,0GAAA,UAAU,OAAA;AACV,2GAAA,WAAW,OAAA;AACX,oHAAA,oBAAoB,OAAA;AACpB,mHAAA,mBAAmB,OAAA;AACnB,mHAAA,mBAAmB,OAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -18,6 +18,10 @@ export interface ScanOptions {
|
|
|
18
18
|
quiet?: boolean;
|
|
19
19
|
/** Cancellation token for aborting scans gracefully */
|
|
20
20
|
cancellationToken?: CancellationToken;
|
|
21
|
+
/** Project path for loading suppression config (defaults to cwd) */
|
|
22
|
+
projectPath?: string;
|
|
23
|
+
/** Include suppressed findings in output (for --show-suppressed) */
|
|
24
|
+
showSuppressed?: boolean;
|
|
21
25
|
}
|
|
22
26
|
export interface ScanProgress {
|
|
23
27
|
status: 'fetching' | 'layer1' | 'layer2' | 'layer3' | 'validating' | 'complete' | 'failed';
|
|
@@ -54,4 +58,7 @@ export { runLayer3Scan } from './layer3';
|
|
|
54
58
|
export { buildProjectContext, type ProjectContext } from './utils/project-context-builder';
|
|
55
59
|
export { validateFindingsWithAI, type ValidationStats, type AIValidationResult } from './layer3/anthropic';
|
|
56
60
|
export { createCancellationToken } from './types';
|
|
61
|
+
export { SuppressionManager, computeFindingHash, loadSuppressionConfig, addFindingSuppression, removeFindingSuppression, addRuleSuppression, listSuppressions, parseInlineSuppressions, generateSuppressionComment, isValidHash, type SuppressionConfig, type FindingSuppression, type RuleSuppression, type SuppressionResult, type SuppressedVulnerability, } from './suppression';
|
|
62
|
+
export { BaselineManager, computeDiff, hasNewBlockingIssues, formatDiffSummary, BASELINE_FILE_PATH, OCULUM_DIR, type BaselineData, type BaselineFinding, type DiffResult, type BaselineDiff, type BaselineManagerOptions, type LoadBaselineResult, type SaveBaselineResult, type ClearBaselineResult, } from './baseline';
|
|
63
|
+
export { RULE_REGISTRY, getRuleMetadata, getAllCategories, hasMetadata, type RuleMetadata, } from './rules';
|
|
57
64
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,aAAa,EACb,cAAc,EACd,cAAc,EAEd,QAAQ,EACR,cAAc,EACd,SAAS,EACT,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -18,7 +18,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
18
18
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
19
19
|
};
|
|
20
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
-
exports.createCancellationToken = exports.validateFindingsWithAI = exports.buildProjectContext = exports.runLayer3Scan = exports.runLayer2Scan = exports.runLayer1Scan = void 0;
|
|
21
|
+
exports.hasMetadata = exports.getAllCategories = exports.getRuleMetadata = exports.RULE_REGISTRY = exports.OCULUM_DIR = exports.BASELINE_FILE_PATH = exports.formatDiffSummary = exports.hasNewBlockingIssues = exports.computeDiff = exports.BaselineManager = exports.isValidHash = exports.generateSuppressionComment = exports.parseInlineSuppressions = exports.listSuppressions = exports.addRuleSuppression = exports.removeFindingSuppression = exports.addFindingSuppression = exports.loadSuppressionConfig = exports.computeFindingHash = exports.SuppressionManager = exports.createCancellationToken = exports.validateFindingsWithAI = exports.buildProjectContext = exports.runLayer3Scan = exports.runLayer2Scan = exports.runLayer1Scan = void 0;
|
|
22
22
|
exports.runScan = runScan;
|
|
23
23
|
exports.computeIssueMixFromVulnerabilities = computeIssueMixFromVulnerabilities;
|
|
24
24
|
const types_1 = require("./types");
|
|
@@ -32,6 +32,14 @@ const auth_helper_detector_1 = require("./utils/auth-helper-detector");
|
|
|
32
32
|
const imported_auth_detector_1 = require("./utils/imported-auth-detector");
|
|
33
33
|
// Tier system imports for filtering by scan depth
|
|
34
34
|
const tiers_1 = require("./tiers");
|
|
35
|
+
// Suppression system
|
|
36
|
+
const suppression_1 = require("./suppression");
|
|
37
|
+
// Rule metadata for actionable output (PRO-82)
|
|
38
|
+
const rules_1 = require("./rules");
|
|
39
|
+
// Framework-aware fix suggestions (PRO-83)
|
|
40
|
+
const framework_fixes_1 = require("./rules/framework-fixes");
|
|
41
|
+
// Project context for framework detection
|
|
42
|
+
const project_context_builder_1 = require("./utils/project-context-builder");
|
|
35
43
|
// Maximum candidates per file to send to AI validation (cost control)
|
|
36
44
|
const MAX_VALIDATION_CANDIDATES_PER_FILE = 10;
|
|
37
45
|
/**
|
|
@@ -189,7 +197,10 @@ async function runScan(files, repoInfo, options = {}, onProgress) {
|
|
|
189
197
|
log(`[Scanner] repo=${repoInfo.name} files_with_imported_auth=${filesWithImportedAuth}`);
|
|
190
198
|
}
|
|
191
199
|
checkCancelled();
|
|
200
|
+
// Phase timing tracking
|
|
201
|
+
const phaseTiming = {};
|
|
192
202
|
// Layer 1: Surface Scan
|
|
203
|
+
const layer1Start = Date.now();
|
|
193
204
|
reportProgress('layer1', 'Running surface scan (patterns, entropy, config)...');
|
|
194
205
|
let layer1Result = await (0, layer1_1.runLayer1Scan)(files, onProgress, cancellationToken);
|
|
195
206
|
// Aggregate repeated localhost findings
|
|
@@ -198,9 +209,11 @@ async function runScan(files, repoInfo, options = {}, onProgress) {
|
|
|
198
209
|
...layer1Result,
|
|
199
210
|
vulnerabilities: (0, urls_1.aggregateLocalhostFindings)(layer1Result.vulnerabilities)
|
|
200
211
|
};
|
|
201
|
-
|
|
212
|
+
phaseTiming.layer1 = Date.now() - layer1Start;
|
|
213
|
+
log(`[Layer1] repo=${repoInfo.name} findings_raw=${layer1RawCount} findings_deduped=${layer1Result.vulnerabilities.length} duration=${phaseTiming.layer1}ms`);
|
|
202
214
|
checkCancelled();
|
|
203
215
|
// Layer 2: Structural Scan
|
|
216
|
+
const layer2Start = Date.now();
|
|
204
217
|
reportProgress('layer2', 'Running structural scan (variables, logic gates)...', layer1Result.vulnerabilities.length);
|
|
205
218
|
const layer2Result = await (0, layer2_1.runLayer2Scan)(files, { middlewareConfig, fileAuthImports }, onProgress, cancellationToken);
|
|
206
219
|
// Format heuristic breakdown for logging
|
|
@@ -208,16 +221,25 @@ async function runScan(files, repoInfo, options = {}, onProgress) {
|
|
|
208
221
|
.filter(([, count]) => count > 0)
|
|
209
222
|
.map(([name, count]) => `${name}:${count}`)
|
|
210
223
|
.join(',');
|
|
211
|
-
|
|
224
|
+
phaseTiming.layer2 = Date.now() - layer2Start;
|
|
225
|
+
log(`[Layer2] repo=${repoInfo.name} findings_raw=${Object.values(layer2Result.stats.raw).reduce((a, b) => a + b, 0)} findings_deduped=${layer2Result.vulnerabilities.length} duration=${phaseTiming.layer2}ms heuristic_breakdown={${heuristicBreakdown}}`);
|
|
212
226
|
// Combine Layer 1 and Layer 2 findings
|
|
213
227
|
const layer12Findings = [...layer1Result.vulnerabilities, ...layer2Result.vulnerabilities];
|
|
214
228
|
// Aggregate noisy findings BEFORE tier filtering to reduce noise
|
|
215
229
|
const beforeAggregationCount = layer12Findings.length;
|
|
216
230
|
const aggregatedFindings = aggregateNoisyFindings(layer12Findings);
|
|
217
231
|
const aggregatedCount = beforeAggregationCount - aggregatedFindings.length;
|
|
232
|
+
// Build project context for framework-aware fixes (PRO-83)
|
|
233
|
+
// This detects frameworks (Next.js, Express), ORMs (Prisma, Drizzle), and frontend libs (React, Vue)
|
|
234
|
+
const projectContext = (0, project_context_builder_1.buildProjectContext)(files);
|
|
235
|
+
// Enrich findings with metadata from rule registry (PRO-82)
|
|
236
|
+
// PRO-83: Uses projectContext for framework-specific fix suggestions
|
|
237
|
+
// This provides default impact, evidence, fixSteps, references for all findings
|
|
238
|
+
// AI validation can override these later with context-aware content
|
|
239
|
+
const enrichedFindings = enrichWithMetadata(aggregatedFindings, projectContext);
|
|
218
240
|
// Apply tier-based filtering based on scan depth
|
|
219
241
|
// This is the key integration point for the detector tier system
|
|
220
|
-
const tierFiltered = filterByTierAndDepth(
|
|
242
|
+
const tierFiltered = filterByTierAndDepth(enrichedFindings, depth);
|
|
221
243
|
// Log tier breakdown
|
|
222
244
|
log(`[Scanner] repo=${repoInfo.name} tier_breakdown=${(0, tiers_1.formatTierStats)(tierFiltered.tierStats)}`);
|
|
223
245
|
log(`[Scanner] repo=${repoInfo.name} depth=${depth} tier_routing: surface=${tierFiltered.toSurface.length} validate=${tierFiltered.toValidate.length} hidden=${tierFiltered.hidden.length}`);
|
|
@@ -230,18 +252,30 @@ async function runScan(files, repoInfo, options = {}, onProgress) {
|
|
|
230
252
|
v.category === 'ai_overpermissive_tool' // Story B4: Agent tool permissions
|
|
231
253
|
);
|
|
232
254
|
// Surface findings that don't need validation (excluding those that do)
|
|
233
|
-
const
|
|
255
|
+
const noValidationNeededRaw = tierFiltered.toSurface.filter(v => !additionalValidation.includes(v));
|
|
256
|
+
// Apply auto-dismiss rules to direct-surface findings (mode='surface')
|
|
257
|
+
// Uses 'surface' mode to exclude cost-saving rules like 'info_severity_core_only'
|
|
258
|
+
// This ensures test/scanner/example files are dismissed, but info-severity findings still surface
|
|
259
|
+
const { toValidate: noValidationNeeded, dismissed: surfaceDismissed } = (0, anthropic_1.applyAutoDismissRules)(noValidationNeededRaw, 'surface');
|
|
234
260
|
// Combine tier-filtered validation candidates with additional ones
|
|
235
261
|
const requiresValidation = [...tierFiltered.toValidate, ...additionalValidation];
|
|
236
262
|
// Apply smart auto-dismiss rules BEFORE AI validation (saves API costs)
|
|
237
263
|
const { toValidate: afterAutoDismiss, dismissed: autoDismissed } = (0, anthropic_1.applyAutoDismissRules)(requiresValidation);
|
|
238
|
-
//
|
|
264
|
+
// Combine all dismissed findings for logging
|
|
265
|
+
const allDismissed = [...surfaceDismissed, ...autoDismissed];
|
|
266
|
+
// Track auto-dismiss by severity and category for logging
|
|
239
267
|
const autoDismissBySeverity = { info: 0, low: 0, medium: 0, high: 0, critical: 0 };
|
|
240
|
-
|
|
268
|
+
const autoDismissByCategory = {};
|
|
269
|
+
for (const d of allDismissed) {
|
|
241
270
|
autoDismissBySeverity[d.finding.severity] = (autoDismissBySeverity[d.finding.severity] || 0) + 1;
|
|
271
|
+
autoDismissByCategory[d.finding.category] = (autoDismissByCategory[d.finding.category] || 0) + 1;
|
|
242
272
|
}
|
|
243
|
-
if (
|
|
244
|
-
|
|
273
|
+
if (allDismissed.length > 0) {
|
|
274
|
+
const categoryBreakdown = Object.entries(autoDismissByCategory)
|
|
275
|
+
.sort(([, a], [, b]) => b - a)
|
|
276
|
+
.map(([cat, count]) => `${cat}:${count}`)
|
|
277
|
+
.join(',');
|
|
278
|
+
log(`[AutoDismiss] repo=${repoInfo.name} total=${allDismissed.length} (surface=${surfaceDismissed.length} validation=${autoDismissed.length}) by_severity={info:${autoDismissBySeverity.info},low:${autoDismissBySeverity.low},medium:${autoDismissBySeverity.medium},high:${autoDismissBySeverity.high}} by_category={${categoryBreakdown}}`);
|
|
245
279
|
}
|
|
246
280
|
// Apply per-file cap to validation candidates (cost control)
|
|
247
281
|
// Use scan mode config for max files
|
|
@@ -254,6 +288,7 @@ async function runScan(files, repoInfo, options = {}, onProgress) {
|
|
|
254
288
|
const shouldValidate = options.enableAI !== false && !scanModeConfig.skipAIValidation && cappedValidation.length > 0;
|
|
255
289
|
if (shouldValidate) {
|
|
256
290
|
checkCancelled();
|
|
291
|
+
const aiValidationStart = Date.now();
|
|
257
292
|
reportProgress('validating', 'AI validating findings (entropy, secrets, AI patterns)...', cappedValidation.length);
|
|
258
293
|
// For incremental scans, only validate findings in changed files
|
|
259
294
|
const findingsToValidate = isIncremental && scanModeConfig.changedFiles
|
|
@@ -274,7 +309,8 @@ async function runScan(files, repoInfo, options = {}, onProgress) {
|
|
|
274
309
|
validatedFindings = validationResult.vulnerabilities;
|
|
275
310
|
const { stats: validationStats } = validationResult;
|
|
276
311
|
capturedValidationStats = validationStats; // Capture for return
|
|
277
|
-
|
|
312
|
+
phaseTiming.aiValidation = Date.now() - aiValidationStart;
|
|
313
|
+
log(`[AI Validation] repo=${repoInfo.name} depth=${depth} duration=${phaseTiming.aiValidation}ms candidates=${findingsToValidate.length} capped_from=${requiresValidation.length} auto_dismissed=${autoDismissed.length} kept=${validationStats.confirmedFindings} rejected=${validationStats.dismissedFindings} downgraded=${validationStats.downgradedFindings}`);
|
|
278
314
|
log(`[AI Validation] cost_estimate: input_tokens=${validationStats.estimatedInputTokens} output_tokens=${validationStats.estimatedOutputTokens} cost=$${validationStats.estimatedCost.toFixed(4)} api_calls=${validationStats.apiCalls}`);
|
|
279
315
|
// Add back findings that weren't validated (not in changed files)
|
|
280
316
|
// Mark them as skipped rather than failed validation
|
|
@@ -288,7 +324,11 @@ async function runScan(files, repoInfo, options = {}, onProgress) {
|
|
|
288
324
|
}
|
|
289
325
|
}
|
|
290
326
|
else if (scanModeConfig.skipAIValidation) {
|
|
291
|
-
log(`[AI Validation] repo=${repoInfo.name} depth=${depth} skipped=true reason=scan_mode_config`);
|
|
327
|
+
log(`[AI Validation] repo=${repoInfo.name} depth=${depth} skipped=true reason=scan_mode_config findings_requiring_validation=${cappedValidation.length}`);
|
|
328
|
+
// In cheap mode, don't surface findings that require AI validation
|
|
329
|
+
// These are low-confidence without validation and would be noise
|
|
330
|
+
// Only surface high-confidence findings that don't need validation
|
|
331
|
+
validatedFindings = [];
|
|
292
332
|
}
|
|
293
333
|
// Combine validated and non-validated findings
|
|
294
334
|
allVulnerabilities.push(...validatedFindings, ...noValidationNeeded);
|
|
@@ -297,6 +337,7 @@ async function runScan(files, repoInfo, options = {}, onProgress) {
|
|
|
297
337
|
const shouldRunLayer3 = options.enableAI !== false && !scanModeConfig.skipLayer3;
|
|
298
338
|
if (shouldRunLayer3) {
|
|
299
339
|
checkCancelled();
|
|
340
|
+
const layer3Start = Date.now();
|
|
300
341
|
reportProgress('layer3', 'Running AI semantic analysis...', allVulnerabilities.length);
|
|
301
342
|
// For incremental scans, only analyze changed files
|
|
302
343
|
const filesToAnalyze = isIncremental ? filesForAI : files;
|
|
@@ -319,22 +360,55 @@ async function runScan(files, repoInfo, options = {}, onProgress) {
|
|
|
319
360
|
},
|
|
320
361
|
cancellationToken,
|
|
321
362
|
});
|
|
363
|
+
phaseTiming.layer3 = Date.now() - layer3Start;
|
|
322
364
|
allVulnerabilities.push(...layer3Result.vulnerabilities);
|
|
323
|
-
log(`[Layer3] repo=${repoInfo.name} depth=${depth} files_analyzed=${layer3Result.aiAnalyzed} findings=${layer3Result.vulnerabilities.length}`);
|
|
365
|
+
log(`[Layer3] repo=${repoInfo.name} depth=${depth} duration=${phaseTiming.layer3}ms files_analyzed=${layer3Result.aiAnalyzed} findings=${layer3Result.vulnerabilities.length}`);
|
|
324
366
|
}
|
|
325
367
|
else if (scanModeConfig.skipLayer3) {
|
|
326
368
|
log(`[Layer3] repo=${repoInfo.name} depth=${depth} skipped=true reason=scan_mode_config`);
|
|
327
369
|
}
|
|
370
|
+
// Log phase timing summary
|
|
371
|
+
const phaseTimingStr = Object.entries(phaseTiming)
|
|
372
|
+
.filter(([, ms]) => ms !== undefined)
|
|
373
|
+
.map(([phase, ms]) => `${phase}=${ms}ms`)
|
|
374
|
+
.join(' ');
|
|
375
|
+
if (phaseTimingStr) {
|
|
376
|
+
log(`[Scanner] repo=${repoInfo.name} phase_timing: ${phaseTimingStr}`);
|
|
377
|
+
}
|
|
328
378
|
// Deduplicate vulnerabilities
|
|
329
379
|
const uniqueVulnerabilities = deduplicateVulnerabilities(allVulnerabilities);
|
|
330
380
|
// Resolve contradictions (e.g., middleware-protected INFO vs missing-auth CRITICAL on same route)
|
|
331
381
|
const resolvedVulnerabilities = resolveContradictions(uniqueVulnerabilities, middlewareConfig);
|
|
382
|
+
// Apply suppressions (inline comments + config file)
|
|
383
|
+
const projectPath = options.projectPath || process.cwd();
|
|
384
|
+
const suppressionManager = new suppression_1.SuppressionManager({ projectPath });
|
|
385
|
+
const suppressionResult = suppressionManager.applySuppressions(resolvedVulnerabilities, files);
|
|
386
|
+
// Log suppression stats if any were suppressed
|
|
387
|
+
if (suppressionResult.suppressed.length > 0 || suppressionResult.expiredSuppressions > 0) {
|
|
388
|
+
log(`[Suppression] repo=${repoInfo.name} suppressed=${suppressionResult.suppressed.length} (inline=${suppressionResult.stats.inlineSuppressed} config_finding=${suppressionResult.stats.configFindingSuppressed} config_rule=${suppressionResult.stats.configRuleSuppressed}) expired=${suppressionResult.expiredSuppressions}`);
|
|
389
|
+
}
|
|
390
|
+
// Use the filtered findings (after suppression)
|
|
391
|
+
const afterSuppression = suppressionResult.findings;
|
|
332
392
|
// Sort by severity
|
|
333
|
-
const sortedVulnerabilities = sortBySeverity(
|
|
334
|
-
// Compute issue-mix counts
|
|
393
|
+
const sortedVulnerabilities = sortBySeverity(afterSuppression);
|
|
394
|
+
// Compute issue-mix counts (based on unsuppressed findings)
|
|
335
395
|
const severityCounts = computeSeverityCounts(sortedVulnerabilities);
|
|
336
396
|
const categoryCounts = computeCategoryCounts(sortedVulnerabilities);
|
|
337
397
|
const hasBlockingIssues = severityCounts.critical > 0 || severityCounts.high > 0;
|
|
398
|
+
// Build suppressed vulnerabilities summary (for --show-suppressed)
|
|
399
|
+
const suppressedVulnerabilities = options.showSuppressed
|
|
400
|
+
? suppressionResult.suppressed.map(s => ({
|
|
401
|
+
hash: s.suppression.hash,
|
|
402
|
+
filePath: s.vulnerability.filePath,
|
|
403
|
+
lineNumber: s.vulnerability.lineNumber,
|
|
404
|
+
category: s.vulnerability.category,
|
|
405
|
+
severity: s.vulnerability.severity,
|
|
406
|
+
title: s.vulnerability.title,
|
|
407
|
+
suppressionType: s.suppression.type,
|
|
408
|
+
suppressionReason: s.suppression.reason,
|
|
409
|
+
expires: s.suppression.expires,
|
|
410
|
+
}))
|
|
411
|
+
: undefined;
|
|
338
412
|
reportProgress('complete', 'Scan complete!', sortedVulnerabilities.length);
|
|
339
413
|
return {
|
|
340
414
|
repoName: repoInfo.name,
|
|
@@ -349,6 +423,10 @@ async function runScan(files, repoInfo, options = {}, onProgress) {
|
|
|
349
423
|
scanDuration: Date.now() - startTime,
|
|
350
424
|
timestamp: new Date().toISOString(),
|
|
351
425
|
validationStats: capturedValidationStats,
|
|
426
|
+
suppressionStats: suppressionResult.suppressed.length > 0 || suppressionResult.expiredSuppressions > 0
|
|
427
|
+
? suppressionResult.stats
|
|
428
|
+
: undefined,
|
|
429
|
+
suppressedVulnerabilities,
|
|
352
430
|
};
|
|
353
431
|
}
|
|
354
432
|
catch (error) {
|
|
@@ -382,6 +460,41 @@ async function runScan(files, repoInfo, options = {}, onProgress) {
|
|
|
382
460
|
throw error;
|
|
383
461
|
}
|
|
384
462
|
}
|
|
463
|
+
/**
|
|
464
|
+
* Enrich findings with metadata from the rule registry (PRO-82)
|
|
465
|
+
* Sets default impact, evidence, fixSteps, and references from registry
|
|
466
|
+
*
|
|
467
|
+
* PRO-83: When projectContext is provided, uses framework-aware fix suggestions
|
|
468
|
+
* that are tailored to the user's detected tech stack (e.g., Prisma-specific
|
|
469
|
+
* SQL injection fixes instead of generic advice).
|
|
470
|
+
*
|
|
471
|
+
* These can be overridden later by AI-generated content
|
|
472
|
+
*/
|
|
473
|
+
function enrichWithMetadata(findings, projectContext) {
|
|
474
|
+
return findings.map(f => {
|
|
475
|
+
const metadata = (0, rules_1.getRuleMetadata)(f.category);
|
|
476
|
+
if (!metadata)
|
|
477
|
+
return f;
|
|
478
|
+
// PRO-83: Check for framework-specific fix suggestions
|
|
479
|
+
let fixSteps = metadata.fixSteps;
|
|
480
|
+
if (projectContext) {
|
|
481
|
+
const frameworkFix = (0, framework_fixes_1.getFrameworkFix)(f.category, projectContext.frameworks, projectContext.dataAccess);
|
|
482
|
+
if (frameworkFix) {
|
|
483
|
+
fixSteps = frameworkFix.fixSteps;
|
|
484
|
+
// Optionally append code example to description if available
|
|
485
|
+
// This makes the fix more actionable
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
return {
|
|
489
|
+
...f,
|
|
490
|
+
// Set defaults from registry (AI can override later)
|
|
491
|
+
impact: f.impact || metadata.whyItMatters,
|
|
492
|
+
evidence: f.evidence || metadata.evidence,
|
|
493
|
+
fixSteps: f.fixSteps || fixSteps,
|
|
494
|
+
references: f.references || metadata.references,
|
|
495
|
+
};
|
|
496
|
+
});
|
|
497
|
+
}
|
|
385
498
|
/**
|
|
386
499
|
* Aggregate noisy findings in the same file to reduce clutter
|
|
387
500
|
* Groups repeated findings with same filePath + category + title
|
|
@@ -705,10 +818,36 @@ var layer2_2 = require("./layer2");
|
|
|
705
818
|
Object.defineProperty(exports, "runLayer2Scan", { enumerable: true, get: function () { return layer2_2.runLayer2Scan; } });
|
|
706
819
|
var layer3_2 = require("./layer3");
|
|
707
820
|
Object.defineProperty(exports, "runLayer3Scan", { enumerable: true, get: function () { return layer3_2.runLayer3Scan; } });
|
|
708
|
-
var
|
|
709
|
-
Object.defineProperty(exports, "buildProjectContext", { enumerable: true, get: function () { return
|
|
821
|
+
var project_context_builder_2 = require("./utils/project-context-builder");
|
|
822
|
+
Object.defineProperty(exports, "buildProjectContext", { enumerable: true, get: function () { return project_context_builder_2.buildProjectContext; } });
|
|
710
823
|
var anthropic_2 = require("./layer3/anthropic");
|
|
711
824
|
Object.defineProperty(exports, "validateFindingsWithAI", { enumerable: true, get: function () { return anthropic_2.validateFindingsWithAI; } });
|
|
712
825
|
var types_2 = require("./types");
|
|
713
826
|
Object.defineProperty(exports, "createCancellationToken", { enumerable: true, get: function () { return types_2.createCancellationToken; } });
|
|
827
|
+
// Suppression system exports
|
|
828
|
+
var suppression_2 = require("./suppression");
|
|
829
|
+
Object.defineProperty(exports, "SuppressionManager", { enumerable: true, get: function () { return suppression_2.SuppressionManager; } });
|
|
830
|
+
Object.defineProperty(exports, "computeFindingHash", { enumerable: true, get: function () { return suppression_2.computeFindingHash; } });
|
|
831
|
+
Object.defineProperty(exports, "loadSuppressionConfig", { enumerable: true, get: function () { return suppression_2.loadSuppressionConfig; } });
|
|
832
|
+
Object.defineProperty(exports, "addFindingSuppression", { enumerable: true, get: function () { return suppression_2.addFindingSuppression; } });
|
|
833
|
+
Object.defineProperty(exports, "removeFindingSuppression", { enumerable: true, get: function () { return suppression_2.removeFindingSuppression; } });
|
|
834
|
+
Object.defineProperty(exports, "addRuleSuppression", { enumerable: true, get: function () { return suppression_2.addRuleSuppression; } });
|
|
835
|
+
Object.defineProperty(exports, "listSuppressions", { enumerable: true, get: function () { return suppression_2.listSuppressions; } });
|
|
836
|
+
Object.defineProperty(exports, "parseInlineSuppressions", { enumerable: true, get: function () { return suppression_2.parseInlineSuppressions; } });
|
|
837
|
+
Object.defineProperty(exports, "generateSuppressionComment", { enumerable: true, get: function () { return suppression_2.generateSuppressionComment; } });
|
|
838
|
+
Object.defineProperty(exports, "isValidHash", { enumerable: true, get: function () { return suppression_2.isValidHash; } });
|
|
839
|
+
// Baseline system exports
|
|
840
|
+
var baseline_1 = require("./baseline");
|
|
841
|
+
Object.defineProperty(exports, "BaselineManager", { enumerable: true, get: function () { return baseline_1.BaselineManager; } });
|
|
842
|
+
Object.defineProperty(exports, "computeDiff", { enumerable: true, get: function () { return baseline_1.computeDiff; } });
|
|
843
|
+
Object.defineProperty(exports, "hasNewBlockingIssues", { enumerable: true, get: function () { return baseline_1.hasNewBlockingIssues; } });
|
|
844
|
+
Object.defineProperty(exports, "formatDiffSummary", { enumerable: true, get: function () { return baseline_1.formatDiffSummary; } });
|
|
845
|
+
Object.defineProperty(exports, "BASELINE_FILE_PATH", { enumerable: true, get: function () { return baseline_1.BASELINE_FILE_PATH; } });
|
|
846
|
+
Object.defineProperty(exports, "OCULUM_DIR", { enumerable: true, get: function () { return baseline_1.OCULUM_DIR; } });
|
|
847
|
+
// Rule metadata exports (PRO-82)
|
|
848
|
+
var rules_2 = require("./rules");
|
|
849
|
+
Object.defineProperty(exports, "RULE_REGISTRY", { enumerable: true, get: function () { return rules_2.RULE_REGISTRY; } });
|
|
850
|
+
Object.defineProperty(exports, "getRuleMetadata", { enumerable: true, get: function () { return rules_2.getRuleMetadata; } });
|
|
851
|
+
Object.defineProperty(exports, "getAllCategories", { enumerable: true, get: function () { return rules_2.getAllCategories; } });
|
|
852
|
+
Object.defineProperty(exports, "hasMetadata", { enumerable: true, get: function () { return rules_2.hasMetadata; } });
|
|
714
853
|
//# sourceMappingURL=index.js.map
|