codeslick-cli 1.0.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/README.md +458 -0
- package/__tests__/cli-reporter.test.ts +86 -0
- package/__tests__/config-loader.test.ts +247 -0
- package/__tests__/local-scanner.test.ts +245 -0
- package/bin/codeslick.cjs +153 -0
- package/dist/packages/cli/src/commands/auth.d.ts +36 -0
- package/dist/packages/cli/src/commands/auth.d.ts.map +1 -0
- package/dist/packages/cli/src/commands/auth.js +226 -0
- package/dist/packages/cli/src/commands/auth.js.map +1 -0
- package/dist/packages/cli/src/commands/config.d.ts +37 -0
- package/dist/packages/cli/src/commands/config.d.ts.map +1 -0
- package/dist/packages/cli/src/commands/config.js +196 -0
- package/dist/packages/cli/src/commands/config.js.map +1 -0
- package/dist/packages/cli/src/commands/init.d.ts +32 -0
- package/dist/packages/cli/src/commands/init.d.ts.map +1 -0
- package/dist/packages/cli/src/commands/init.js +171 -0
- package/dist/packages/cli/src/commands/init.js.map +1 -0
- package/dist/packages/cli/src/commands/scan.d.ts +40 -0
- package/dist/packages/cli/src/commands/scan.d.ts.map +1 -0
- package/dist/packages/cli/src/commands/scan.js +204 -0
- package/dist/packages/cli/src/commands/scan.js.map +1 -0
- package/dist/packages/cli/src/config/config-loader.d.ts +67 -0
- package/dist/packages/cli/src/config/config-loader.d.ts.map +1 -0
- package/dist/packages/cli/src/config/config-loader.js +146 -0
- package/dist/packages/cli/src/config/config-loader.js.map +1 -0
- package/dist/packages/cli/src/reporters/cli-reporter.d.ts +69 -0
- package/dist/packages/cli/src/reporters/cli-reporter.d.ts.map +1 -0
- package/dist/packages/cli/src/reporters/cli-reporter.js +244 -0
- package/dist/packages/cli/src/reporters/cli-reporter.js.map +1 -0
- package/dist/packages/cli/src/scanner/local-scanner.d.ts +92 -0
- package/dist/packages/cli/src/scanner/local-scanner.d.ts.map +1 -0
- package/dist/packages/cli/src/scanner/local-scanner.js +221 -0
- package/dist/packages/cli/src/scanner/local-scanner.js.map +1 -0
- package/dist/src/lib/analyzers/helpers/ai-code-detection-utils.d.ts +88 -0
- package/dist/src/lib/analyzers/helpers/ai-code-detection-utils.d.ts.map +1 -0
- package/dist/src/lib/analyzers/helpers/ai-code-detection-utils.js +371 -0
- package/dist/src/lib/analyzers/helpers/ai-code-detection-utils.js.map +1 -0
- package/dist/src/lib/analyzers/helpers/jsx-helpers.d.ts +63 -0
- package/dist/src/lib/analyzers/helpers/jsx-helpers.d.ts.map +1 -0
- package/dist/src/lib/analyzers/helpers/jsx-helpers.js +95 -0
- package/dist/src/lib/analyzers/helpers/jsx-helpers.js.map +1 -0
- package/dist/src/lib/analyzers/helpers/variable-tracker.d.ts +59 -0
- package/dist/src/lib/analyzers/helpers/variable-tracker.d.ts.map +1 -0
- package/dist/src/lib/analyzers/helpers/variable-tracker.js +231 -0
- package/dist/src/lib/analyzers/helpers/variable-tracker.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/access-control.d.ts +20 -0
- package/dist/src/lib/analyzers/java/security-checks/access-control.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/access-control.js +129 -0
- package/dist/src/lib/analyzers/java/security-checks/access-control.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/ai-generated-code.d.ts +25 -0
- package/dist/src/lib/analyzers/java/security-checks/ai-generated-code.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/ai-generated-code.js +221 -0
- package/dist/src/lib/analyzers/java/security-checks/ai-generated-code.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/code-quality.d.ts +18 -0
- package/dist/src/lib/analyzers/java/security-checks/code-quality.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/code-quality.js +84 -0
- package/dist/src/lib/analyzers/java/security-checks/code-quality.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/crypto-validation.d.ts +18 -0
- package/dist/src/lib/analyzers/java/security-checks/crypto-validation.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/crypto-validation.js +161 -0
- package/dist/src/lib/analyzers/java/security-checks/crypto-validation.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/deserialization-xxe.d.ts +20 -0
- package/dist/src/lib/analyzers/java/security-checks/deserialization-xxe.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/deserialization-xxe.js +163 -0
- package/dist/src/lib/analyzers/java/security-checks/deserialization-xxe.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/enhanced-supply-chain.d.ts +24 -0
- package/dist/src/lib/analyzers/java/security-checks/enhanced-supply-chain.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/enhanced-supply-chain.js +178 -0
- package/dist/src/lib/analyzers/java/security-checks/enhanced-supply-chain.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/exception-handling.d.ts +25 -0
- package/dist/src/lib/analyzers/java/security-checks/exception-handling.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/exception-handling.js +179 -0
- package/dist/src/lib/analyzers/java/security-checks/exception-handling.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/file-operations.d.ts +17 -0
- package/dist/src/lib/analyzers/java/security-checks/file-operations.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/file-operations.js +67 -0
- package/dist/src/lib/analyzers/java/security-checks/file-operations.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/framework-security.d.ts +25 -0
- package/dist/src/lib/analyzers/java/security-checks/framework-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/framework-security.js +396 -0
- package/dist/src/lib/analyzers/java/security-checks/framework-security.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/hardcoded-credentials.d.ts +20 -0
- package/dist/src/lib/analyzers/java/security-checks/hardcoded-credentials.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/hardcoded-credentials.js +123 -0
- package/dist/src/lib/analyzers/java/security-checks/hardcoded-credentials.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/injection-attacks.d.ts +23 -0
- package/dist/src/lib/analyzers/java/security-checks/injection-attacks.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/injection-attacks.js +201 -0
- package/dist/src/lib/analyzers/java/security-checks/injection-attacks.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/insecure-design.d.ts +20 -0
- package/dist/src/lib/analyzers/java/security-checks/insecure-design.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/insecure-design.js +121 -0
- package/dist/src/lib/analyzers/java/security-checks/insecure-design.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/logging-failures.d.ts +20 -0
- package/dist/src/lib/analyzers/java/security-checks/logging-failures.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/logging-failures.js +89 -0
- package/dist/src/lib/analyzers/java/security-checks/logging-failures.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/security-misconfiguration.d.ts +26 -0
- package/dist/src/lib/analyzers/java/security-checks/security-misconfiguration.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/security-misconfiguration.js +309 -0
- package/dist/src/lib/analyzers/java/security-checks/security-misconfiguration.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/unsafe-patterns.d.ts +18 -0
- package/dist/src/lib/analyzers/java/security-checks/unsafe-patterns.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/unsafe-patterns.js +114 -0
- package/dist/src/lib/analyzers/java/security-checks/unsafe-patterns.js.map +1 -0
- package/dist/src/lib/analyzers/java/utils/createVulnerability.d.ts +58 -0
- package/dist/src/lib/analyzers/java/utils/createVulnerability.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/utils/createVulnerability.js +71 -0
- package/dist/src/lib/analyzers/java/utils/createVulnerability.js.map +1 -0
- package/dist/src/lib/analyzers/java-analyzer.d.ts +209 -0
- package/dist/src/lib/analyzers/java-analyzer.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java-analyzer.js +1720 -0
- package/dist/src/lib/analyzers/java-analyzer.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.d.ts +27 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.js +123 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/async-patterns.d.ts +44 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/async-patterns.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/async-patterns.js +224 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/async-patterns.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/code-patterns.d.ts +50 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/code-patterns.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/code-patterns.js +284 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/code-patterns.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/comparison-issues.d.ts +27 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/comparison-issues.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/comparison-issues.js +86 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/comparison-issues.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/reference-errors.d.ts +32 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/reference-errors.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/reference-errors.js +44 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/reference-errors.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/access-control.d.ts +22 -0
- package/dist/src/lib/analyzers/javascript/security-checks/access-control.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/access-control.js +168 -0
- package/dist/src/lib/analyzers/javascript/security-checks/access-control.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/ai-generated-code.d.ts +25 -0
- package/dist/src/lib/analyzers/javascript/security-checks/ai-generated-code.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/ai-generated-code.js +232 -0
- package/dist/src/lib/analyzers/javascript/security-checks/ai-generated-code.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/authentication-failures.d.ts +27 -0
- package/dist/src/lib/analyzers/javascript/security-checks/authentication-failures.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/authentication-failures.js +222 -0
- package/dist/src/lib/analyzers/javascript/security-checks/authentication-failures.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/credential-crypto.d.ts +28 -0
- package/dist/src/lib/analyzers/javascript/security-checks/credential-crypto.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/credential-crypto.js +176 -0
- package/dist/src/lib/analyzers/javascript/security-checks/credential-crypto.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/enhanced-supply-chain.d.ts +23 -0
- package/dist/src/lib/analyzers/javascript/security-checks/enhanced-supply-chain.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/enhanced-supply-chain.js +113 -0
- package/dist/src/lib/analyzers/javascript/security-checks/enhanced-supply-chain.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/exception-handling.d.ts +28 -0
- package/dist/src/lib/analyzers/javascript/security-checks/exception-handling.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/exception-handling.js +227 -0
- package/dist/src/lib/analyzers/javascript/security-checks/exception-handling.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/injection-attacks.d.ts +32 -0
- package/dist/src/lib/analyzers/javascript/security-checks/injection-attacks.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/injection-attacks.js +260 -0
- package/dist/src/lib/analyzers/javascript/security-checks/injection-attacks.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/insecure-design.d.ts +26 -0
- package/dist/src/lib/analyzers/javascript/security-checks/insecure-design.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/insecure-design.js +164 -0
- package/dist/src/lib/analyzers/javascript/security-checks/insecure-design.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/security-misconfiguration.d.ts +26 -0
- package/dist/src/lib/analyzers/javascript/security-checks/security-misconfiguration.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/security-misconfiguration.js +775 -0
- package/dist/src/lib/analyzers/javascript/security-checks/security-misconfiguration.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/software-integrity.d.ts +25 -0
- package/dist/src/lib/analyzers/javascript/security-checks/software-integrity.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/software-integrity.js +168 -0
- package/dist/src/lib/analyzers/javascript/security-checks/software-integrity.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/storage-security.d.ts +27 -0
- package/dist/src/lib/analyzers/javascript/security-checks/storage-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/storage-security.js +108 -0
- package/dist/src/lib/analyzers/javascript/security-checks/storage-security.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/xss-dom-security.d.ts +28 -0
- package/dist/src/lib/analyzers/javascript/security-checks/xss-dom-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/xss-dom-security.js +143 -0
- package/dist/src/lib/analyzers/javascript/security-checks/xss-dom-security.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/syntax/syntax-helpers.d.ts +53 -0
- package/dist/src/lib/analyzers/javascript/syntax/syntax-helpers.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/syntax/syntax-helpers.js +144 -0
- package/dist/src/lib/analyzers/javascript/syntax/syntax-helpers.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/syntax/typescript-syntax.d.ts +72 -0
- package/dist/src/lib/analyzers/javascript/syntax/typescript-syntax.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/syntax/typescript-syntax.js +314 -0
- package/dist/src/lib/analyzers/javascript/syntax/typescript-syntax.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/utils/createVulnerability.d.ts +58 -0
- package/dist/src/lib/analyzers/javascript/utils/createVulnerability.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/utils/createVulnerability.js +71 -0
- package/dist/src/lib/analyzers/javascript/utils/createVulnerability.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/utils/metrics-calculator.d.ts +36 -0
- package/dist/src/lib/analyzers/javascript/utils/metrics-calculator.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/utils/metrics-calculator.js +70 -0
- package/dist/src/lib/analyzers/javascript/utils/metrics-calculator.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/utils/performance-analyzer.d.ts +29 -0
- package/dist/src/lib/analyzers/javascript/utils/performance-analyzer.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/utils/performance-analyzer.js +55 -0
- package/dist/src/lib/analyzers/javascript/utils/performance-analyzer.js.map +1 -0
- package/dist/src/lib/analyzers/javascript-analyzer.d.ts +95 -0
- package/dist/src/lib/analyzers/javascript-analyzer.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript-analyzer.js +2141 -0
- package/dist/src/lib/analyzers/javascript-analyzer.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/access-control.d.ts +21 -0
- package/dist/src/lib/analyzers/python/security-checks/access-control.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/access-control.js +305 -0
- package/dist/src/lib/analyzers/python/security-checks/access-control.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/ai-generated-code.d.ts +25 -0
- package/dist/src/lib/analyzers/python/security-checks/ai-generated-code.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/ai-generated-code.js +242 -0
- package/dist/src/lib/analyzers/python/security-checks/ai-generated-code.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/authentication-flaws.d.ts +24 -0
- package/dist/src/lib/analyzers/python/security-checks/authentication-flaws.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/authentication-flaws.js +207 -0
- package/dist/src/lib/analyzers/python/security-checks/authentication-flaws.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/code-quality.d.ts +27 -0
- package/dist/src/lib/analyzers/python/security-checks/code-quality.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/code-quality.js +206 -0
- package/dist/src/lib/analyzers/python/security-checks/code-quality.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/credentials-crypto.d.ts +24 -0
- package/dist/src/lib/analyzers/python/security-checks/credentials-crypto.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/credentials-crypto.js +113 -0
- package/dist/src/lib/analyzers/python/security-checks/credentials-crypto.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/crypto-failures.d.ts +20 -0
- package/dist/src/lib/analyzers/python/security-checks/crypto-failures.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/crypto-failures.js +129 -0
- package/dist/src/lib/analyzers/python/security-checks/crypto-failures.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/data-integrity.d.ts +19 -0
- package/dist/src/lib/analyzers/python/security-checks/data-integrity.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/data-integrity.js +90 -0
- package/dist/src/lib/analyzers/python/security-checks/data-integrity.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/deserialization.d.ts +20 -0
- package/dist/src/lib/analyzers/python/security-checks/deserialization.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/deserialization.js +68 -0
- package/dist/src/lib/analyzers/python/security-checks/deserialization.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/django-security.d.ts +25 -0
- package/dist/src/lib/analyzers/python/security-checks/django-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/django-security.js +180 -0
- package/dist/src/lib/analyzers/python/security-checks/django-security.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/enhanced-supply-chain.d.ts +23 -0
- package/dist/src/lib/analyzers/python/security-checks/enhanced-supply-chain.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/enhanced-supply-chain.js +127 -0
- package/dist/src/lib/analyzers/python/security-checks/enhanced-supply-chain.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/exception-handling.d.ts +23 -0
- package/dist/src/lib/analyzers/python/security-checks/exception-handling.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/exception-handling.js +120 -0
- package/dist/src/lib/analyzers/python/security-checks/exception-handling.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/flask-security.d.ts +24 -0
- package/dist/src/lib/analyzers/python/security-checks/flask-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/flask-security.js +143 -0
- package/dist/src/lib/analyzers/python/security-checks/flask-security.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/injection-attacks.d.ts +28 -0
- package/dist/src/lib/analyzers/python/security-checks/injection-attacks.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/injection-attacks.js +174 -0
- package/dist/src/lib/analyzers/python/security-checks/injection-attacks.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/insecure-design.d.ts +20 -0
- package/dist/src/lib/analyzers/python/security-checks/insecure-design.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/insecure-design.js +160 -0
- package/dist/src/lib/analyzers/python/security-checks/insecure-design.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/logging-failures.d.ts +20 -0
- package/dist/src/lib/analyzers/python/security-checks/logging-failures.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/logging-failures.js +121 -0
- package/dist/src/lib/analyzers/python/security-checks/logging-failures.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/nosql-injection.d.ts +26 -0
- package/dist/src/lib/analyzers/python/security-checks/nosql-injection.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/nosql-injection.js +248 -0
- package/dist/src/lib/analyzers/python/security-checks/nosql-injection.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/security-misconfiguration.d.ts +26 -0
- package/dist/src/lib/analyzers/python/security-checks/security-misconfiguration.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/security-misconfiguration.js +375 -0
- package/dist/src/lib/analyzers/python/security-checks/security-misconfiguration.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/ssrf-detection.d.ts +26 -0
- package/dist/src/lib/analyzers/python/security-checks/ssrf-detection.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/ssrf-detection.js +160 -0
- package/dist/src/lib/analyzers/python/security-checks/ssrf-detection.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/web-security.d.ts +23 -0
- package/dist/src/lib/analyzers/python/security-checks/web-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/web-security.js +117 -0
- package/dist/src/lib/analyzers/python/security-checks/web-security.js.map +1 -0
- package/dist/src/lib/analyzers/python/utils/createVulnerability.d.ts +58 -0
- package/dist/src/lib/analyzers/python/utils/createVulnerability.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/utils/createVulnerability.js +71 -0
- package/dist/src/lib/analyzers/python/utils/createVulnerability.js.map +1 -0
- package/dist/src/lib/analyzers/python-analyzer.d.ts +111 -0
- package/dist/src/lib/analyzers/python-analyzer.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python-analyzer.js +1600 -0
- package/dist/src/lib/analyzers/python-analyzer.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/ai-providers.d.ts +14 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/ai-providers.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/ai-providers.js +47 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/ai-providers.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/aws.d.ts +13 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/aws.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/aws.js +36 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/aws.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/cloud-providers.d.ts +15 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/cloud-providers.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/cloud-providers.js +68 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/cloud-providers.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/communication.d.ts +15 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/communication.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/communication.js +68 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/communication.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/generic.d.ts +12 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/generic.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/generic.js +45 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/generic.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/github.d.ts +14 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/github.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/github.js +47 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/github.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/stripe.d.ts +13 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/stripe.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/stripe.js +36 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/stripe.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys.d.ts +15 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys.js +32 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/credentials.d.ts +15 -0
- package/dist/src/lib/analyzers/secrets/patterns/credentials.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/credentials.js +68 -0
- package/dist/src/lib/analyzers/secrets/patterns/credentials.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/private-keys.d.ts +16 -0
- package/dist/src/lib/analyzers/secrets/patterns/private-keys.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/private-keys.js +79 -0
- package/dist/src/lib/analyzers/secrets/patterns/private-keys.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/tokens.d.ts +15 -0
- package/dist/src/lib/analyzers/secrets/patterns/tokens.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/tokens.js +58 -0
- package/dist/src/lib/analyzers/secrets/patterns/tokens.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/secrets-analyzer.d.ts +88 -0
- package/dist/src/lib/analyzers/secrets/secrets-analyzer.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/secrets-analyzer.js +162 -0
- package/dist/src/lib/analyzers/secrets/secrets-analyzer.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/validators/context-checker.d.ts +56 -0
- package/dist/src/lib/analyzers/secrets/validators/context-checker.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/validators/context-checker.js +199 -0
- package/dist/src/lib/analyzers/secrets/validators/context-checker.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/validators/entropy-checker.d.ts +56 -0
- package/dist/src/lib/analyzers/secrets/validators/entropy-checker.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/validators/entropy-checker.js +102 -0
- package/dist/src/lib/analyzers/secrets/validators/entropy-checker.js.map +1 -0
- package/dist/src/lib/analyzers/security-checks/es6-security.d.ts +38 -0
- package/dist/src/lib/analyzers/security-checks/es6-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/security-checks/es6-security.js +125 -0
- package/dist/src/lib/analyzers/security-checks/es6-security.js.map +1 -0
- package/dist/src/lib/analyzers/security-checks/python-async-security.d.ts +46 -0
- package/dist/src/lib/analyzers/security-checks/python-async-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/security-checks/python-async-security.js +92 -0
- package/dist/src/lib/analyzers/security-checks/python-async-security.js.map +1 -0
- package/dist/src/lib/analyzers/security-checks/react-security.d.ts +49 -0
- package/dist/src/lib/analyzers/security-checks/react-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/security-checks/react-security.js +125 -0
- package/dist/src/lib/analyzers/security-checks/react-security.js.map +1 -0
- package/dist/src/lib/analyzers/types.d.ts +92 -0
- package/dist/src/lib/analyzers/types.d.ts.map +1 -0
- package/dist/src/lib/analyzers/types.js +3 -0
- package/dist/src/lib/analyzers/types.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/access-control.d.ts +19 -0
- package/dist/src/lib/analyzers/typescript/security-checks/access-control.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/access-control.js +210 -0
- package/dist/src/lib/analyzers/typescript/security-checks/access-control.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/ai-generated-code.d.ts +25 -0
- package/dist/src/lib/analyzers/typescript/security-checks/ai-generated-code.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/ai-generated-code.js +242 -0
- package/dist/src/lib/analyzers/typescript/security-checks/ai-generated-code.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/authentication.d.ts +28 -0
- package/dist/src/lib/analyzers/typescript/security-checks/authentication.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/authentication.js +357 -0
- package/dist/src/lib/analyzers/typescript/security-checks/authentication.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/code-injection.d.ts +26 -0
- package/dist/src/lib/analyzers/typescript/security-checks/code-injection.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/code-injection.js +380 -0
- package/dist/src/lib/analyzers/typescript/security-checks/code-injection.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/code-quality.d.ts +23 -0
- package/dist/src/lib/analyzers/typescript/security-checks/code-quality.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/code-quality.js +109 -0
- package/dist/src/lib/analyzers/typescript/security-checks/code-quality.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/credentials-crypto.d.ts +21 -0
- package/dist/src/lib/analyzers/typescript/security-checks/credentials-crypto.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/credentials-crypto.js +153 -0
- package/dist/src/lib/analyzers/typescript/security-checks/credentials-crypto.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/enhanced-supply-chain.d.ts +23 -0
- package/dist/src/lib/analyzers/typescript/security-checks/enhanced-supply-chain.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/enhanced-supply-chain.js +146 -0
- package/dist/src/lib/analyzers/typescript/security-checks/enhanced-supply-chain.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/exception-handling.d.ts +23 -0
- package/dist/src/lib/analyzers/typescript/security-checks/exception-handling.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/exception-handling.js +187 -0
- package/dist/src/lib/analyzers/typescript/security-checks/exception-handling.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/information-disclosure.d.ts +19 -0
- package/dist/src/lib/analyzers/typescript/security-checks/information-disclosure.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/information-disclosure.js +97 -0
- package/dist/src/lib/analyzers/typescript/security-checks/information-disclosure.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/injection-attacks.d.ts +29 -0
- package/dist/src/lib/analyzers/typescript/security-checks/injection-attacks.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/injection-attacks.js +319 -0
- package/dist/src/lib/analyzers/typescript/security-checks/injection-attacks.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/logging-failures.d.ts +21 -0
- package/dist/src/lib/analyzers/typescript/security-checks/logging-failures.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/logging-failures.js +121 -0
- package/dist/src/lib/analyzers/typescript/security-checks/logging-failures.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/security-misconfiguration.d.ts +27 -0
- package/dist/src/lib/analyzers/typescript/security-checks/security-misconfiguration.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/security-misconfiguration.js +213 -0
- package/dist/src/lib/analyzers/typescript/security-checks/security-misconfiguration.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/type-security.d.ts +19 -0
- package/dist/src/lib/analyzers/typescript/security-checks/type-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/type-security.js +59 -0
- package/dist/src/lib/analyzers/typescript/security-checks/type-security.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/type-checker.d.ts +17 -0
- package/dist/src/lib/analyzers/typescript/type-checker.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/type-checker.js +515 -0
- package/dist/src/lib/analyzers/typescript/type-checker.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/utils/createVulnerability.d.ts +58 -0
- package/dist/src/lib/analyzers/typescript/utils/createVulnerability.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/utils/createVulnerability.js +71 -0
- package/dist/src/lib/analyzers/typescript/utils/createVulnerability.js.map +1 -0
- package/dist/src/lib/analyzers/typescript-analyzer.d.ts +116 -0
- package/dist/src/lib/analyzers/typescript-analyzer.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript-analyzer.js +1660 -0
- package/dist/src/lib/analyzers/typescript-analyzer.js.map +1 -0
- package/dist/src/lib/security/compliance-mapping.d.ts +29 -0
- package/dist/src/lib/security/compliance-mapping.d.ts.map +1 -0
- package/dist/src/lib/security/compliance-mapping.js +1342 -0
- package/dist/src/lib/security/compliance-mapping.js.map +1 -0
- package/dist/src/lib/security/severity-scoring.d.ts +47 -0
- package/dist/src/lib/security/severity-scoring.d.ts.map +1 -0
- package/dist/src/lib/security/severity-scoring.js +965 -0
- package/dist/src/lib/security/severity-scoring.js.map +1 -0
- package/dist/src/lib/standards/references.d.ts +16 -0
- package/dist/src/lib/standards/references.d.ts.map +1 -0
- package/dist/src/lib/standards/references.js +1161 -0
- package/dist/src/lib/standards/references.js.map +1 -0
- package/dist/src/lib/types/index.d.ts +167 -0
- package/dist/src/lib/types/index.d.ts.map +1 -0
- package/dist/src/lib/types/index.js +3 -0
- package/dist/src/lib/types/index.js.map +1 -0
- package/dist/src/lib/utils/code-cleaner.d.ts +59 -0
- package/dist/src/lib/utils/code-cleaner.d.ts.map +1 -0
- package/dist/src/lib/utils/code-cleaner.js +283 -0
- package/dist/src/lib/utils/code-cleaner.js.map +1 -0
- package/package.json +51 -0
- package/src/commands/auth.ts +308 -0
- package/src/commands/config.ts +226 -0
- package/src/commands/init.ts +202 -0
- package/src/commands/scan.ts +238 -0
- package/src/config/config-loader.ts +175 -0
- package/src/reporters/cli-reporter.ts +282 -0
- package/src/scanner/local-scanner.ts +250 -0
- package/tsconfig.json +24 -0
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Init Command - Repository Initialization
|
|
4
|
+
*
|
|
5
|
+
* This command initializes CodeSlick in a git repository by:
|
|
6
|
+
* 1. Creating a .codeslick.json configuration file
|
|
7
|
+
* 2. Installing the pre-commit hook
|
|
8
|
+
* 3. Making the hook executable
|
|
9
|
+
*
|
|
10
|
+
* After running this command, CodeSlick will automatically scan
|
|
11
|
+
* staged files before each commit.
|
|
12
|
+
*
|
|
13
|
+
* @module packages/cli/src/commands/init
|
|
14
|
+
*/
|
|
15
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
16
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
17
|
+
};
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.initCommand = initCommand;
|
|
20
|
+
const fs_1 = require("fs");
|
|
21
|
+
const promises_1 = require("fs/promises");
|
|
22
|
+
const path_1 = require("path");
|
|
23
|
+
const ora_1 = __importDefault(require("ora"));
|
|
24
|
+
const config_loader_1 = require("../config/config-loader");
|
|
25
|
+
const cli_reporter_1 = require("../reporters/cli-reporter");
|
|
26
|
+
/**
|
|
27
|
+
* Pre-commit hook template
|
|
28
|
+
*/
|
|
29
|
+
const PRE_COMMIT_HOOK = `#!/bin/sh
|
|
30
|
+
# CodeSlick pre-commit hook
|
|
31
|
+
# Automatically scans staged files for security vulnerabilities
|
|
32
|
+
#
|
|
33
|
+
# To skip this hook temporarily, use: git commit --no-verify
|
|
34
|
+
|
|
35
|
+
# Run CodeSlick scan on staged files
|
|
36
|
+
codeslick scan --staged
|
|
37
|
+
|
|
38
|
+
# Exit with the scan status
|
|
39
|
+
exit $?
|
|
40
|
+
`;
|
|
41
|
+
/**
|
|
42
|
+
* Check if we're in a git repository
|
|
43
|
+
*/
|
|
44
|
+
function isGitRepository(cwd = process.cwd()) {
|
|
45
|
+
return (0, fs_1.existsSync)((0, path_1.resolve)(cwd, '.git'));
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get git hooks directory path
|
|
49
|
+
*/
|
|
50
|
+
function getHooksPath(cwd = process.cwd()) {
|
|
51
|
+
return (0, path_1.resolve)(cwd, '.git', 'hooks');
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get pre-commit hook file path
|
|
55
|
+
*/
|
|
56
|
+
function getPreCommitPath(cwd = process.cwd()) {
|
|
57
|
+
return (0, path_1.resolve)(getHooksPath(cwd), 'pre-commit');
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Check if pre-commit hook already exists
|
|
61
|
+
*/
|
|
62
|
+
function preCommitExists(cwd = process.cwd()) {
|
|
63
|
+
return (0, fs_1.existsSync)(getPreCommitPath(cwd));
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Create .codeslick.json configuration file
|
|
67
|
+
*/
|
|
68
|
+
async function createConfigFile(args, cwd = process.cwd()) {
|
|
69
|
+
const spinner = (0, ora_1.default)('Creating .codeslick.json').start();
|
|
70
|
+
try {
|
|
71
|
+
const config = {
|
|
72
|
+
...config_loader_1.DEFAULT_CONFIG,
|
|
73
|
+
severity: args.severity || config_loader_1.DEFAULT_CONFIG.severity,
|
|
74
|
+
};
|
|
75
|
+
await (0, config_loader_1.saveConfig)(config, cwd);
|
|
76
|
+
spinner.succeed('.codeslick.json created');
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
spinner.fail('Failed to create .codeslick.json');
|
|
80
|
+
throw error;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Install pre-commit hook
|
|
85
|
+
*/
|
|
86
|
+
async function installPreCommitHook(cwd = process.cwd()) {
|
|
87
|
+
const spinner = (0, ora_1.default)('Installing pre-commit hook').start();
|
|
88
|
+
try {
|
|
89
|
+
const hooksPath = getHooksPath(cwd);
|
|
90
|
+
const preCommitPath = getPreCommitPath(cwd);
|
|
91
|
+
// Create hooks directory if it doesn't exist
|
|
92
|
+
if (!(0, fs_1.existsSync)(hooksPath)) {
|
|
93
|
+
await (0, promises_1.mkdir)(hooksPath, { recursive: true });
|
|
94
|
+
}
|
|
95
|
+
// Write pre-commit hook
|
|
96
|
+
await (0, promises_1.writeFile)(preCommitPath, PRE_COMMIT_HOOK, 'utf-8');
|
|
97
|
+
// Make hook executable (Unix)
|
|
98
|
+
if (process.platform !== 'win32') {
|
|
99
|
+
await (0, promises_1.chmod)(preCommitPath, 0o755);
|
|
100
|
+
}
|
|
101
|
+
spinner.succeed('Pre-commit hook installed');
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
spinner.fail('Failed to install pre-commit hook');
|
|
105
|
+
throw error;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Init Command Handler
|
|
110
|
+
*
|
|
111
|
+
* This function:
|
|
112
|
+
* 1. Checks if we're in a git repository
|
|
113
|
+
* 2. Creates .codeslick.json (or overwrites with --force)
|
|
114
|
+
* 3. Installs pre-commit hook (or overwrites with --force)
|
|
115
|
+
* 4. Displays success message with usage instructions
|
|
116
|
+
*/
|
|
117
|
+
async function initCommand(args) {
|
|
118
|
+
try {
|
|
119
|
+
const cwd = process.cwd();
|
|
120
|
+
// Check if we're in a git repository
|
|
121
|
+
if (!isGitRepository(cwd)) {
|
|
122
|
+
(0, cli_reporter_1.printError)('Not a git repository. Initialize git first with: git init');
|
|
123
|
+
process.exit(1);
|
|
124
|
+
}
|
|
125
|
+
console.log('');
|
|
126
|
+
console.log('Initializing CodeSlick...');
|
|
127
|
+
console.log('');
|
|
128
|
+
// Check if config already exists
|
|
129
|
+
if ((0, config_loader_1.configExists)(cwd) && !args.force) {
|
|
130
|
+
(0, cli_reporter_1.printWarning)('.codeslick.json already exists. Use --force to overwrite.');
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
await createConfigFile(args, cwd);
|
|
134
|
+
}
|
|
135
|
+
// Check if pre-commit hook already exists
|
|
136
|
+
if (preCommitExists(cwd) && !args.force) {
|
|
137
|
+
(0, cli_reporter_1.printWarning)('Pre-commit hook already exists. Use --force to overwrite.');
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
await installPreCommitHook(cwd);
|
|
141
|
+
}
|
|
142
|
+
// Print success message
|
|
143
|
+
(0, cli_reporter_1.printSuccess)('CodeSlick initialized successfully!');
|
|
144
|
+
console.log('Next steps:');
|
|
145
|
+
console.log(' 1. Review .codeslick.json configuration');
|
|
146
|
+
console.log(' 2. Stage files: git add <files>');
|
|
147
|
+
console.log(' 3. Commit: git commit -m "message"');
|
|
148
|
+
console.log('');
|
|
149
|
+
console.log('CodeSlick will automatically scan staged files before each commit.');
|
|
150
|
+
console.log('');
|
|
151
|
+
console.log('To scan files manually:');
|
|
152
|
+
console.log(' codeslick scan # Scan all files');
|
|
153
|
+
console.log(' codeslick scan --staged # Scan staged files only');
|
|
154
|
+
console.log(' codeslick scan src/**/*.js # Scan specific files');
|
|
155
|
+
console.log('');
|
|
156
|
+
console.log('To skip the pre-commit hook temporarily:');
|
|
157
|
+
console.log(' git commit --no-verify');
|
|
158
|
+
console.log('');
|
|
159
|
+
process.exit(0);
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
if (error instanceof Error) {
|
|
163
|
+
(0, cli_reporter_1.printError)(error.message);
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
(0, cli_reporter_1.printError)('An unknown error occurred');
|
|
167
|
+
}
|
|
168
|
+
process.exit(1);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scan Command - Security Vulnerability Scanner
|
|
3
|
+
*
|
|
4
|
+
* This command scans files for security vulnerabilities using CodeSlick's
|
|
5
|
+
* analysis engine. It can scan staged files (for pre-commit hooks) or
|
|
6
|
+
* specific files/patterns.
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - Scan staged files only (--staged)
|
|
10
|
+
* - Scan specific files or patterns
|
|
11
|
+
* - Configurable severity thresholds
|
|
12
|
+
* - Beautiful terminal output
|
|
13
|
+
* - JSON output mode for CI/CD
|
|
14
|
+
* - Exit codes for automation (0 = pass, 1 = fail)
|
|
15
|
+
*
|
|
16
|
+
* @module packages/cli/src/commands/scan
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Command arguments type
|
|
20
|
+
*/
|
|
21
|
+
interface ScanArgs {
|
|
22
|
+
files?: string[];
|
|
23
|
+
staged?: boolean;
|
|
24
|
+
severity?: 'critical' | 'high' | 'medium' | 'low';
|
|
25
|
+
fix?: boolean;
|
|
26
|
+
json?: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Scan Command Handler
|
|
30
|
+
*
|
|
31
|
+
* This function:
|
|
32
|
+
* 1. Determines which files to scan (staged, specific, or all)
|
|
33
|
+
* 2. Loads configuration from .codeslick.json
|
|
34
|
+
* 3. Scans files using local scanner
|
|
35
|
+
* 4. Displays results
|
|
36
|
+
* 5. Exits with appropriate code
|
|
37
|
+
*/
|
|
38
|
+
export declare function scanCommand(args: ScanArgs): Promise<void>;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=scan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../../../../src/commands/scan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAuBH;;GAEG;AACH,UAAU,QAAQ;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAClD,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAqCD;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA8I/D"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Scan Command - Security Vulnerability Scanner
|
|
4
|
+
*
|
|
5
|
+
* This command scans files for security vulnerabilities using CodeSlick's
|
|
6
|
+
* analysis engine. It can scan staged files (for pre-commit hooks) or
|
|
7
|
+
* specific files/patterns.
|
|
8
|
+
*
|
|
9
|
+
* Features:
|
|
10
|
+
* - Scan staged files only (--staged)
|
|
11
|
+
* - Scan specific files or patterns
|
|
12
|
+
* - Configurable severity thresholds
|
|
13
|
+
* - Beautiful terminal output
|
|
14
|
+
* - JSON output mode for CI/CD
|
|
15
|
+
* - Exit codes for automation (0 = pass, 1 = fail)
|
|
16
|
+
*
|
|
17
|
+
* @module packages/cli/src/commands/scan
|
|
18
|
+
*/
|
|
19
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
20
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
21
|
+
};
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.scanCommand = scanCommand;
|
|
24
|
+
const child_process_1 = require("child_process");
|
|
25
|
+
const util_1 = require("util");
|
|
26
|
+
const path_1 = require("path");
|
|
27
|
+
const glob_1 = require("glob");
|
|
28
|
+
const ora_1 = __importDefault(require("ora"));
|
|
29
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
30
|
+
const local_scanner_1 = require("../scanner/local-scanner");
|
|
31
|
+
const cli_reporter_1 = require("../reporters/cli-reporter");
|
|
32
|
+
const config_loader_1 = require("../config/config-loader");
|
|
33
|
+
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
34
|
+
/**
|
|
35
|
+
* Get list of staged files from git
|
|
36
|
+
*/
|
|
37
|
+
async function getStagedFiles() {
|
|
38
|
+
try {
|
|
39
|
+
const { stdout } = await execAsync('git diff --cached --name-only --diff-filter=ACM');
|
|
40
|
+
return stdout
|
|
41
|
+
.trim()
|
|
42
|
+
.split('\n')
|
|
43
|
+
.filter((f) => f.length > 0)
|
|
44
|
+
.map((f) => (0, path_1.resolve)(process.cwd(), f));
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
throw new Error('Failed to get staged files. Are you in a git repository?');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Expand glob patterns to file paths
|
|
52
|
+
*/
|
|
53
|
+
async function expandGlobPatterns(patterns) {
|
|
54
|
+
const allFiles = [];
|
|
55
|
+
for (const pattern of patterns) {
|
|
56
|
+
const files = await (0, glob_1.glob)(pattern, {
|
|
57
|
+
cwd: process.cwd(),
|
|
58
|
+
absolute: true,
|
|
59
|
+
nodir: true,
|
|
60
|
+
});
|
|
61
|
+
allFiles.push(...files);
|
|
62
|
+
}
|
|
63
|
+
// Remove duplicates
|
|
64
|
+
return [...new Set(allFiles)];
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Scan Command Handler
|
|
68
|
+
*
|
|
69
|
+
* This function:
|
|
70
|
+
* 1. Determines which files to scan (staged, specific, or all)
|
|
71
|
+
* 2. Loads configuration from .codeslick.json
|
|
72
|
+
* 3. Scans files using local scanner
|
|
73
|
+
* 4. Displays results
|
|
74
|
+
* 5. Exits with appropriate code
|
|
75
|
+
*/
|
|
76
|
+
async function scanCommand(args) {
|
|
77
|
+
const startTime = Date.now();
|
|
78
|
+
try {
|
|
79
|
+
// Load configuration
|
|
80
|
+
const config = await (0, config_loader_1.loadConfig)();
|
|
81
|
+
// Merge command-line args with config
|
|
82
|
+
const scannerConfig = {
|
|
83
|
+
severityThreshold: args.severity || config.severity || 'critical',
|
|
84
|
+
exclude: config.exclude || [],
|
|
85
|
+
autofix: args.fix || config.autofix || false,
|
|
86
|
+
};
|
|
87
|
+
// Determine which files to scan
|
|
88
|
+
let filePaths = [];
|
|
89
|
+
if (args.staged) {
|
|
90
|
+
// Scan staged files
|
|
91
|
+
filePaths = await getStagedFiles();
|
|
92
|
+
if (filePaths.length === 0) {
|
|
93
|
+
(0, cli_reporter_1.printError)('No staged files found. Stage files with: git add <files>');
|
|
94
|
+
process.exit(0);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
else if (args.files && args.files.length > 0) {
|
|
98
|
+
// Scan specific files/patterns
|
|
99
|
+
filePaths = await expandGlobPatterns(args.files);
|
|
100
|
+
if (filePaths.length === 0) {
|
|
101
|
+
(0, cli_reporter_1.printError)(`No files matched patterns: ${args.files.join(', ')}`);
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
// Scan all files (default patterns from config)
|
|
107
|
+
const defaultPatterns = config.languages?.map((lang) => {
|
|
108
|
+
switch (lang) {
|
|
109
|
+
case 'javascript':
|
|
110
|
+
return '**/*.{js,jsx}';
|
|
111
|
+
case 'typescript':
|
|
112
|
+
return '**/*.{ts,tsx}';
|
|
113
|
+
case 'python':
|
|
114
|
+
return '**/*.py';
|
|
115
|
+
case 'java':
|
|
116
|
+
return '**/*.java';
|
|
117
|
+
default:
|
|
118
|
+
return '';
|
|
119
|
+
}
|
|
120
|
+
}).filter(Boolean) || ['**/*.{js,jsx,ts,tsx,py,java}'];
|
|
121
|
+
filePaths = await expandGlobPatterns(defaultPatterns);
|
|
122
|
+
if (filePaths.length === 0) {
|
|
123
|
+
(0, cli_reporter_1.printError)('No files found to scan.');
|
|
124
|
+
process.exit(0);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Print scan start
|
|
128
|
+
if (!args.json) {
|
|
129
|
+
(0, cli_reporter_1.printScanStart)(filePaths.length);
|
|
130
|
+
}
|
|
131
|
+
// Show progress spinner
|
|
132
|
+
const spinner = !args.json ? (0, ora_1.default)('Scanning files...').start() : null;
|
|
133
|
+
// Scan all files
|
|
134
|
+
const results = await (0, local_scanner_1.scanFiles)(filePaths, scannerConfig);
|
|
135
|
+
// Stop spinner
|
|
136
|
+
if (spinner) {
|
|
137
|
+
spinner.stop();
|
|
138
|
+
}
|
|
139
|
+
const duration = Date.now() - startTime;
|
|
140
|
+
// Output results
|
|
141
|
+
if (args.json) {
|
|
142
|
+
// JSON output mode (for CI/CD)
|
|
143
|
+
(0, cli_reporter_1.printJSONResults)(results);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
// Human-readable output
|
|
147
|
+
(0, cli_reporter_1.printScanComplete)(duration);
|
|
148
|
+
(0, cli_reporter_1.printDetailedResults)(results);
|
|
149
|
+
(0, cli_reporter_1.printSummaryTable)(results);
|
|
150
|
+
}
|
|
151
|
+
// Show AI-Fix availability message if --fix flag was used
|
|
152
|
+
if (args.fix && !args.json) {
|
|
153
|
+
const totalVulns = results.reduce((sum, r) => sum + r.critical + r.high + r.medium + r.low, 0);
|
|
154
|
+
if (totalVulns > 0) {
|
|
155
|
+
console.log('');
|
|
156
|
+
console.log(chalk_1.default.cyan.bold('🤖 AI-Powered Auto-Fix Available'));
|
|
157
|
+
console.log(chalk_1.default.gray('─'.repeat(50)));
|
|
158
|
+
console.log('');
|
|
159
|
+
console.log(chalk_1.default.white(`Found ${totalVulns} ${totalVulns === 1 ? 'vulnerability' : 'vulnerabilities'} that can be fixed with AI.`));
|
|
160
|
+
console.log('');
|
|
161
|
+
console.log(chalk_1.default.yellow('Auto-fix is available through:'));
|
|
162
|
+
console.log('');
|
|
163
|
+
console.log(chalk_1.default.green(' 1. WebTool:') + chalk_1.default.gray(' https://codeslick.dev/analyze'));
|
|
164
|
+
console.log(chalk_1.default.gray(' → Paste your code and click "Generate Fix"'));
|
|
165
|
+
console.log('');
|
|
166
|
+
console.log(chalk_1.default.green(' 2. GitHub App:') + chalk_1.default.gray(' Automated PR fixes'));
|
|
167
|
+
console.log(chalk_1.default.gray(' → Install: https://github.com/settings/apps/codeslick-security-scanner'));
|
|
168
|
+
console.log('');
|
|
169
|
+
console.log(chalk_1.default.gray('CLI auto-fix coming soon'));
|
|
170
|
+
console.log('');
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// Check if results exceed threshold
|
|
174
|
+
const threshold = scannerConfig.severityThreshold || 'critical';
|
|
175
|
+
const shouldBlock = (0, local_scanner_1.exceedsThreshold)(results, threshold);
|
|
176
|
+
if (shouldBlock) {
|
|
177
|
+
// Calculate totals for display
|
|
178
|
+
const totalCritical = results.reduce((sum, r) => sum + r.critical, 0);
|
|
179
|
+
const totalHigh = results.reduce((sum, r) => sum + r.high, 0);
|
|
180
|
+
const totalMedium = results.reduce((sum, r) => sum + r.medium, 0);
|
|
181
|
+
const totalLow = results.reduce((sum, r) => sum + r.low, 0);
|
|
182
|
+
if (!args.json) {
|
|
183
|
+
(0, cli_reporter_1.printCommitBlocked)(threshold, totalCritical, totalHigh, totalMedium, totalLow);
|
|
184
|
+
}
|
|
185
|
+
process.exit(1); // Exit with failure
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
if (!args.json) {
|
|
189
|
+
(0, cli_reporter_1.printCommitAllowed)();
|
|
190
|
+
}
|
|
191
|
+
process.exit(0); // Exit with success
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
if (error instanceof Error) {
|
|
196
|
+
(0, cli_reporter_1.printError)(error.message);
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
(0, cli_reporter_1.printError)('An unknown error occurred');
|
|
200
|
+
}
|
|
201
|
+
process.exit(1);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=scan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../../../src/commands/scan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration Loader - .codeslick.json Parser
|
|
3
|
+
*
|
|
4
|
+
* This module loads and validates the .codeslick.json configuration file.
|
|
5
|
+
* It provides sensible defaults if the file doesn't exist.
|
|
6
|
+
*
|
|
7
|
+
* Configuration Structure:
|
|
8
|
+
* ```json
|
|
9
|
+
* {
|
|
10
|
+
* "version": "1.0",
|
|
11
|
+
* "severity": "critical",
|
|
12
|
+
* "autofix": false,
|
|
13
|
+
* "exclude": ["node_modules/**", "dist/**"],
|
|
14
|
+
* "languages": ["javascript", "typescript", "python", "java"]
|
|
15
|
+
* }
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @module packages/cli/src/config/config-loader
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* CodeSlick configuration interface
|
|
22
|
+
*/
|
|
23
|
+
export interface CodeSlickConfig {
|
|
24
|
+
version: string;
|
|
25
|
+
severity: 'critical' | 'high' | 'medium' | 'low';
|
|
26
|
+
autofix: boolean;
|
|
27
|
+
exclude: string[];
|
|
28
|
+
languages: ('javascript' | 'typescript' | 'python' | 'java')[];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Default configuration
|
|
32
|
+
*/
|
|
33
|
+
export declare const DEFAULT_CONFIG: CodeSlickConfig;
|
|
34
|
+
/**
|
|
35
|
+
* Get configuration file path
|
|
36
|
+
*/
|
|
37
|
+
export declare function getConfigPath(cwd?: string): string;
|
|
38
|
+
/**
|
|
39
|
+
* Check if configuration file exists
|
|
40
|
+
*/
|
|
41
|
+
export declare function configExists(cwd?: string): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Load configuration from .codeslick.json
|
|
44
|
+
*
|
|
45
|
+
* If the file doesn't exist, returns default configuration.
|
|
46
|
+
* If the file exists but is invalid, throws an error.
|
|
47
|
+
*
|
|
48
|
+
* @param cwd - Current working directory (default: process.cwd())
|
|
49
|
+
* @returns Parsed configuration
|
|
50
|
+
*/
|
|
51
|
+
export declare function loadConfig(cwd?: string): Promise<CodeSlickConfig>;
|
|
52
|
+
/**
|
|
53
|
+
* Save configuration to .codeslick.json
|
|
54
|
+
*
|
|
55
|
+
* @param config - Configuration to save
|
|
56
|
+
* @param cwd - Current working directory (default: process.cwd())
|
|
57
|
+
*/
|
|
58
|
+
export declare function saveConfig(config: CodeSlickConfig, cwd?: string): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Update a specific configuration value
|
|
61
|
+
*
|
|
62
|
+
* @param key - Configuration key
|
|
63
|
+
* @param value - Configuration value
|
|
64
|
+
* @param cwd - Current working directory (default: process.cwd())
|
|
65
|
+
*/
|
|
66
|
+
export declare function updateConfig(key: keyof CodeSlickConfig, value: unknown, cwd?: string): Promise<void>;
|
|
67
|
+
//# sourceMappingURL=config-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../../../src/config/config-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,CAAC,YAAY,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;CAChE;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,eAe5B,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAEjE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAEjE;AAED;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,eAAe,CAAC,CAoBtF;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,eAAe,EACvB,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,eAAe,EAC1B,KAAK,EAAE,OAAO,EACd,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA+Cf"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Configuration Loader - .codeslick.json Parser
|
|
4
|
+
*
|
|
5
|
+
* This module loads and validates the .codeslick.json configuration file.
|
|
6
|
+
* It provides sensible defaults if the file doesn't exist.
|
|
7
|
+
*
|
|
8
|
+
* Configuration Structure:
|
|
9
|
+
* ```json
|
|
10
|
+
* {
|
|
11
|
+
* "version": "1.0",
|
|
12
|
+
* "severity": "critical",
|
|
13
|
+
* "autofix": false,
|
|
14
|
+
* "exclude": ["node_modules/**", "dist/**"],
|
|
15
|
+
* "languages": ["javascript", "typescript", "python", "java"]
|
|
16
|
+
* }
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @module packages/cli/src/config/config-loader
|
|
20
|
+
*/
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.DEFAULT_CONFIG = void 0;
|
|
23
|
+
exports.getConfigPath = getConfigPath;
|
|
24
|
+
exports.configExists = configExists;
|
|
25
|
+
exports.loadConfig = loadConfig;
|
|
26
|
+
exports.saveConfig = saveConfig;
|
|
27
|
+
exports.updateConfig = updateConfig;
|
|
28
|
+
const promises_1 = require("fs/promises");
|
|
29
|
+
const path_1 = require("path");
|
|
30
|
+
const fs_1 = require("fs");
|
|
31
|
+
/**
|
|
32
|
+
* Default configuration
|
|
33
|
+
*/
|
|
34
|
+
exports.DEFAULT_CONFIG = {
|
|
35
|
+
version: '1.0',
|
|
36
|
+
severity: 'critical',
|
|
37
|
+
autofix: false,
|
|
38
|
+
exclude: [
|
|
39
|
+
'node_modules/**',
|
|
40
|
+
'dist/**',
|
|
41
|
+
'build/**',
|
|
42
|
+
'coverage/**',
|
|
43
|
+
'**/*.test.{js,ts}',
|
|
44
|
+
'**/*.spec.{js,ts}',
|
|
45
|
+
'**/test/**',
|
|
46
|
+
'**/tests/**',
|
|
47
|
+
],
|
|
48
|
+
languages: ['javascript', 'typescript', 'python', 'java'],
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Get configuration file path
|
|
52
|
+
*/
|
|
53
|
+
function getConfigPath(cwd = process.cwd()) {
|
|
54
|
+
return (0, path_1.resolve)(cwd, '.codeslick.json');
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Check if configuration file exists
|
|
58
|
+
*/
|
|
59
|
+
function configExists(cwd = process.cwd()) {
|
|
60
|
+
return (0, fs_1.existsSync)(getConfigPath(cwd));
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Load configuration from .codeslick.json
|
|
64
|
+
*
|
|
65
|
+
* If the file doesn't exist, returns default configuration.
|
|
66
|
+
* If the file exists but is invalid, throws an error.
|
|
67
|
+
*
|
|
68
|
+
* @param cwd - Current working directory (default: process.cwd())
|
|
69
|
+
* @returns Parsed configuration
|
|
70
|
+
*/
|
|
71
|
+
async function loadConfig(cwd = process.cwd()) {
|
|
72
|
+
const configPath = getConfigPath(cwd);
|
|
73
|
+
if (!(0, fs_1.existsSync)(configPath)) {
|
|
74
|
+
// Return default config if file doesn't exist
|
|
75
|
+
return exports.DEFAULT_CONFIG;
|
|
76
|
+
}
|
|
77
|
+
try {
|
|
78
|
+
const content = await (0, promises_1.readFile)(configPath, 'utf-8');
|
|
79
|
+
const parsed = JSON.parse(content);
|
|
80
|
+
// Merge with defaults to handle missing fields
|
|
81
|
+
return {
|
|
82
|
+
...exports.DEFAULT_CONFIG,
|
|
83
|
+
...parsed,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
throw new Error(`Failed to parse .codeslick.json: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Save configuration to .codeslick.json
|
|
92
|
+
*
|
|
93
|
+
* @param config - Configuration to save
|
|
94
|
+
* @param cwd - Current working directory (default: process.cwd())
|
|
95
|
+
*/
|
|
96
|
+
async function saveConfig(config, cwd = process.cwd()) {
|
|
97
|
+
const configPath = getConfigPath(cwd);
|
|
98
|
+
const content = JSON.stringify(config, null, 2);
|
|
99
|
+
await (0, promises_1.writeFile)(configPath, content, 'utf-8');
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Update a specific configuration value
|
|
103
|
+
*
|
|
104
|
+
* @param key - Configuration key
|
|
105
|
+
* @param value - Configuration value
|
|
106
|
+
* @param cwd - Current working directory (default: process.cwd())
|
|
107
|
+
*/
|
|
108
|
+
async function updateConfig(key, value, cwd = process.cwd()) {
|
|
109
|
+
const config = await loadConfig(cwd);
|
|
110
|
+
// Validate and update based on key
|
|
111
|
+
switch (key) {
|
|
112
|
+
case 'severity':
|
|
113
|
+
if (!['critical', 'high', 'medium', 'low'].includes(value)) {
|
|
114
|
+
throw new Error(`Invalid severity value: ${value}. Must be one of: critical, high, medium, low`);
|
|
115
|
+
}
|
|
116
|
+
config.severity = value;
|
|
117
|
+
break;
|
|
118
|
+
case 'autofix':
|
|
119
|
+
if (typeof value !== 'boolean') {
|
|
120
|
+
throw new Error(`Invalid autofix value: ${value}. Must be true or false`);
|
|
121
|
+
}
|
|
122
|
+
config.autofix = value;
|
|
123
|
+
break;
|
|
124
|
+
case 'exclude':
|
|
125
|
+
if (!Array.isArray(value)) {
|
|
126
|
+
throw new Error(`Invalid exclude value: ${value}. Must be an array of patterns`);
|
|
127
|
+
}
|
|
128
|
+
config.exclude = value;
|
|
129
|
+
break;
|
|
130
|
+
case 'languages':
|
|
131
|
+
if (!Array.isArray(value)) {
|
|
132
|
+
throw new Error(`Invalid languages value: ${value}. Must be an array`);
|
|
133
|
+
}
|
|
134
|
+
const validLanguages = ['javascript', 'typescript', 'python', 'java'];
|
|
135
|
+
const invalid = value.filter((lang) => !validLanguages.includes(lang));
|
|
136
|
+
if (invalid.length > 0) {
|
|
137
|
+
throw new Error(`Invalid language(s): ${invalid.join(', ')}. Must be one of: ${validLanguages.join(', ')}`);
|
|
138
|
+
}
|
|
139
|
+
config.languages = value;
|
|
140
|
+
break;
|
|
141
|
+
default:
|
|
142
|
+
throw new Error(`Unknown configuration key: ${key}`);
|
|
143
|
+
}
|
|
144
|
+
await saveConfig(config, cwd);
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=config-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../../../../src/config/config-loader.ts"],"names":[],"mappings":"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"}
|