eslint-plugin-secure-coding 2.2.0 → 2.2.2
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 +91 -12
- package/package.json +10 -4
- package/src/index.d.ts +1 -1
- package/src/index.js +223 -48
- package/src/index.js.map +1 -1
- package/src/rules/{security/database-injection.js → database-injection/index.js} +1 -1
- package/src/rules/database-injection/index.js.map +1 -0
- package/src/rules/{security/detect-child-process.js → detect-child-process/index.js} +1 -1
- package/src/rules/detect-child-process/index.js.map +1 -0
- package/src/rules/{security/detect-eval-with-expression.js → detect-eval-with-expression/index.js} +1 -1
- package/src/rules/detect-eval-with-expression/index.js.map +1 -0
- package/src/rules/detect-mixed-content/index.d.ts +8 -0
- package/src/rules/detect-mixed-content/index.js +45 -0
- package/src/rules/detect-mixed-content/index.js.map +1 -0
- package/src/rules/{security/detect-non-literal-fs-filename.js → detect-non-literal-fs-filename/index.js} +1 -1
- package/src/rules/detect-non-literal-fs-filename/index.js.map +1 -0
- package/src/rules/{security/detect-non-literal-regexp.js → detect-non-literal-regexp/index.js} +23 -6
- package/src/rules/detect-non-literal-regexp/index.js.map +1 -0
- package/src/rules/{security/detect-object-injection.js → detect-object-injection/index.js} +3 -1
- package/src/rules/detect-object-injection/index.js.map +1 -0
- package/src/rules/detect-suspicious-dependencies/index.d.ts +8 -0
- package/src/rules/detect-suspicious-dependencies/index.js +72 -0
- package/src/rules/detect-suspicious-dependencies/index.js.map +1 -0
- package/src/rules/detect-weak-password-validation/index.d.ts +6 -0
- package/src/rules/detect-weak-password-validation/index.js +59 -0
- package/src/rules/detect-weak-password-validation/index.js.map +1 -0
- package/src/rules/no-allow-arbitrary-loads/index.d.ts +8 -0
- package/src/rules/no-allow-arbitrary-loads/index.js +48 -0
- package/src/rules/no-allow-arbitrary-loads/index.js.map +1 -0
- package/src/rules/no-arbitrary-file-access/index.d.ts +6 -0
- package/src/rules/no-arbitrary-file-access/index.js +63 -0
- package/src/rules/no-arbitrary-file-access/index.js.map +1 -0
- package/src/rules/{security/no-buffer-overread.js → no-buffer-overread/index.js} +9 -5
- package/src/rules/no-buffer-overread/index.js.map +1 -0
- package/src/rules/{security/no-clickjacking.js → no-clickjacking/index.js} +23 -9
- package/src/rules/no-clickjacking/index.js.map +1 -0
- package/src/rules/no-client-side-auth-logic/index.d.ts +6 -0
- package/src/rules/no-client-side-auth-logic/index.js +70 -0
- package/src/rules/no-client-side-auth-logic/index.js.map +1 -0
- package/src/rules/no-credentials-in-query-params/index.d.ts +8 -0
- package/src/rules/no-credentials-in-query-params/index.js +58 -0
- package/src/rules/no-credentials-in-query-params/index.js.map +1 -0
- package/src/rules/no-credentials-in-storage-api/index.d.ts +6 -0
- package/src/rules/no-credentials-in-storage-api/index.js +55 -0
- package/src/rules/no-credentials-in-storage-api/index.js.map +1 -0
- package/src/rules/no-data-in-temp-storage/index.d.ts +6 -0
- package/src/rules/no-data-in-temp-storage/index.js +65 -0
- package/src/rules/no-data-in-temp-storage/index.js.map +1 -0
- package/src/rules/no-debug-code-in-production/index.d.ts +8 -0
- package/src/rules/no-debug-code-in-production/index.js +52 -0
- package/src/rules/no-debug-code-in-production/index.js.map +1 -0
- package/src/rules/{security/no-directive-injection.js → no-directive-injection/index.js} +17 -9
- package/src/rules/no-directive-injection/index.js.map +1 -0
- package/src/rules/no-disabled-certificate-validation/index.d.ts +6 -0
- package/src/rules/no-disabled-certificate-validation/index.js +62 -0
- package/src/rules/no-disabled-certificate-validation/index.js.map +1 -0
- package/src/rules/{security/no-document-cookie.js → no-document-cookie/index.js} +1 -1
- package/src/rules/no-document-cookie/index.js.map +1 -0
- package/src/rules/no-dynamic-dependency-loading/index.d.ts +8 -0
- package/src/rules/no-dynamic-dependency-loading/index.js +52 -0
- package/src/rules/no-dynamic-dependency-loading/index.js.map +1 -0
- package/src/rules/{security/no-electron-security-issues.js → no-electron-security-issues/index.js} +7 -4
- package/src/rules/no-electron-security-issues/index.js.map +1 -0
- package/src/rules/no-exposed-debug-endpoints/index.d.ts +6 -0
- package/src/rules/no-exposed-debug-endpoints/index.js +63 -0
- package/src/rules/no-exposed-debug-endpoints/index.js.map +1 -0
- package/src/rules/{security/no-exposed-sensitive-data.js → no-exposed-sensitive-data/index.js} +1 -1
- package/src/rules/no-exposed-sensitive-data/index.js.map +1 -0
- package/src/rules/{security/no-format-string-injection.js → no-format-string-injection/index.js} +17 -9
- package/src/rules/no-format-string-injection/index.js.map +1 -0
- package/src/rules/{security/no-graphql-injection.js → no-graphql-injection/index.js} +5 -3
- package/src/rules/no-graphql-injection/index.js.map +1 -0
- package/src/rules/{security/no-hardcoded-credentials.js → no-hardcoded-credentials/index.js} +1 -1
- package/src/rules/no-hardcoded-credentials/index.js.map +1 -0
- package/src/rules/no-hardcoded-session-tokens/index.d.ts +6 -0
- package/src/rules/no-hardcoded-session-tokens/index.js +60 -0
- package/src/rules/no-hardcoded-session-tokens/index.js.map +1 -0
- package/src/rules/no-http-urls/index.d.ts +12 -0
- package/src/rules/no-http-urls/index.js +115 -0
- package/src/rules/no-http-urls/index.js.map +1 -0
- package/src/rules/{security/no-improper-sanitization.js → no-improper-sanitization/index.js} +9 -5
- package/src/rules/no-improper-sanitization/index.js.map +1 -0
- package/src/rules/{security/no-improper-type-validation.js → no-improper-type-validation/index.js} +11 -6
- package/src/rules/no-improper-type-validation/index.js.map +1 -0
- package/src/rules/{security/no-insecure-comparison.js → no-insecure-comparison/index.js} +1 -1
- package/src/rules/no-insecure-comparison/index.js.map +1 -0
- package/src/rules/{security/no-insecure-cookie-settings.js → no-insecure-cookie-settings/index.js} +1 -1
- package/src/rules/no-insecure-cookie-settings/index.js.map +1 -0
- package/src/rules/{security/no-insecure-jwt.js → no-insecure-jwt/index.js} +3 -2
- package/src/rules/no-insecure-jwt/index.js.map +1 -0
- package/src/rules/{security/no-insecure-redirects.js → no-insecure-redirects/index.js} +3 -1
- package/src/rules/no-insecure-redirects/index.js.map +1 -0
- package/src/rules/no-insecure-websocket/index.d.ts +6 -0
- package/src/rules/no-insecure-websocket/index.js +62 -0
- package/src/rules/no-insecure-websocket/index.js.map +1 -0
- package/src/rules/{security/no-insufficient-postmessage-validation.js → no-insufficient-postmessage-validation/index.js} +7 -4
- package/src/rules/no-insufficient-postmessage-validation/index.js.map +1 -0
- package/src/rules/{security/no-insufficient-random.js → no-insufficient-random/index.js} +1 -1
- package/src/rules/no-insufficient-random/index.js.map +1 -0
- package/src/rules/{security/no-ldap-injection.js → no-ldap-injection/index.js} +15 -8
- package/src/rules/no-ldap-injection/index.js.map +1 -0
- package/src/rules/{security/no-missing-authentication.js → no-missing-authentication/index.js} +13 -1
- package/src/rules/no-missing-authentication/index.js.map +1 -0
- package/src/rules/{security/no-missing-cors-check.js → no-missing-cors-check/index.js} +1 -52
- package/src/rules/no-missing-cors-check/index.js.map +1 -0
- package/src/rules/{security/no-missing-csrf-protection.js → no-missing-csrf-protection/index.js} +1 -1
- package/src/rules/no-missing-csrf-protection/index.js.map +1 -0
- package/src/rules/{security/no-missing-security-headers.js → no-missing-security-headers/index.js} +1 -1
- package/src/rules/no-missing-security-headers/index.js.map +1 -0
- package/src/rules/no-password-in-url/index.d.ts +8 -0
- package/src/rules/no-password-in-url/index.js +56 -0
- package/src/rules/no-password-in-url/index.js.map +1 -0
- package/src/rules/no-permissive-cors/index.d.ts +8 -0
- package/src/rules/no-permissive-cors/index.js +65 -0
- package/src/rules/no-permissive-cors/index.js.map +1 -0
- package/src/rules/no-pii-in-logs/index.d.ts +8 -0
- package/src/rules/no-pii-in-logs/index.js +72 -0
- package/src/rules/no-pii-in-logs/index.js.map +1 -0
- package/src/rules/no-postmessage-origin-wildcard/index.d.ts +8 -0
- package/src/rules/no-postmessage-origin-wildcard/index.js +58 -0
- package/src/rules/no-postmessage-origin-wildcard/index.js.map +1 -0
- package/src/rules/{security/no-privilege-escalation.js → no-privilege-escalation/index.js} +3 -35
- package/src/rules/no-privilege-escalation/index.js.map +1 -0
- package/src/rules/{security/no-redos-vulnerable-regex.js → no-redos-vulnerable-regex/index.js} +1 -1
- package/src/rules/no-redos-vulnerable-regex/index.js.map +1 -0
- package/src/rules/{security/no-sensitive-data-exposure.js → no-sensitive-data-exposure/index.js} +1 -1
- package/src/rules/no-sensitive-data-exposure/index.js.map +1 -0
- package/src/rules/no-sensitive-data-in-analytics/index.d.ts +8 -0
- package/src/rules/no-sensitive-data-in-analytics/index.js +63 -0
- package/src/rules/no-sensitive-data-in-analytics/index.js.map +1 -0
- package/src/rules/no-sensitive-data-in-cache/index.d.ts +8 -0
- package/src/rules/no-sensitive-data-in-cache/index.js +53 -0
- package/src/rules/no-sensitive-data-in-cache/index.js.map +1 -0
- package/src/rules/{security/no-sql-injection.js → no-sql-injection/index.js} +5 -1
- package/src/rules/no-sql-injection/index.js.map +1 -0
- package/src/rules/{security/no-timing-attack.js → no-timing-attack/index.js} +1 -1
- package/src/rules/no-timing-attack/index.js.map +1 -0
- package/src/rules/{security/no-toctou-vulnerability.js → no-toctou-vulnerability/index.js} +1 -1
- package/src/rules/no-toctou-vulnerability/index.js.map +1 -0
- package/src/rules/no-tracking-without-consent/index.d.ts +6 -0
- package/src/rules/no-tracking-without-consent/index.js +68 -0
- package/src/rules/no-tracking-without-consent/index.js.map +1 -0
- package/src/rules/{security/no-unchecked-loop-condition.js → no-unchecked-loop-condition/index.js} +25 -13
- package/src/rules/no-unchecked-loop-condition/index.js.map +1 -0
- package/src/rules/no-unencrypted-local-storage/index.d.ts +8 -0
- package/src/rules/no-unencrypted-local-storage/index.js +63 -0
- package/src/rules/no-unencrypted-local-storage/index.js.map +1 -0
- package/src/rules/{security/no-unencrypted-transmission.js → no-unencrypted-transmission/index.js} +1 -1
- package/src/rules/no-unencrypted-transmission/index.js.map +1 -0
- package/src/rules/{security/no-unescaped-url-parameter.js → no-unescaped-url-parameter/index.js} +1 -1
- package/src/rules/no-unescaped-url-parameter/index.js.map +1 -0
- package/src/rules/{security/no-unlimited-resource-allocation.js → no-unlimited-resource-allocation/index.js} +29 -62
- package/src/rules/no-unlimited-resource-allocation/index.js.map +1 -0
- package/src/rules/{security/no-unsafe-deserialization.js → no-unsafe-deserialization/index.js} +3 -2
- package/src/rules/no-unsafe-deserialization/index.js.map +1 -0
- package/src/rules/{security/no-unsafe-dynamic-require.js → no-unsafe-dynamic-require/index.js} +1 -1
- package/src/rules/no-unsafe-dynamic-require/index.js.map +1 -0
- package/src/rules/{security/no-unsafe-regex-construction.js → no-unsafe-regex-construction/index.js} +1 -1
- package/src/rules/no-unsafe-regex-construction/index.js.map +1 -0
- package/src/rules/{security/no-unsanitized-html.js → no-unsanitized-html/index.js} +1 -45
- package/src/rules/no-unsanitized-html/index.js.map +1 -0
- package/src/rules/no-unvalidated-deeplinks/index.d.ts +6 -0
- package/src/rules/no-unvalidated-deeplinks/index.js +63 -0
- package/src/rules/no-unvalidated-deeplinks/index.js.map +1 -0
- package/src/rules/{security/no-unvalidated-user-input.js → no-unvalidated-user-input/index.js} +1 -1
- package/src/rules/no-unvalidated-user-input/index.js.map +1 -0
- package/src/rules/no-verbose-error-messages/index.d.ts +8 -0
- package/src/rules/no-verbose-error-messages/index.js +68 -0
- package/src/rules/no-verbose-error-messages/index.js.map +1 -0
- package/src/rules/{security/no-weak-crypto.js → no-weak-crypto/index.js} +1 -1
- package/src/rules/no-weak-crypto/index.js.map +1 -0
- package/src/rules/{security/no-weak-password-recovery.js → no-weak-password-recovery/index.js} +21 -8
- package/src/rules/no-weak-password-recovery/index.js.map +1 -0
- package/src/rules/{security/no-xpath-injection.js → no-xpath-injection/index.js} +3 -2
- package/src/rules/no-xpath-injection/index.js.map +1 -0
- package/src/rules/{security/no-xxe-injection.js → no-xxe-injection/index.js} +2 -5
- package/src/rules/no-xxe-injection/index.js.map +1 -0
- package/src/rules/{security/no-zip-slip.js → no-zip-slip/index.js} +1 -1
- package/src/rules/no-zip-slip/index.js.map +1 -0
- package/src/rules/require-backend-authorization/index.d.ts +6 -0
- package/src/rules/require-backend-authorization/index.js +61 -0
- package/src/rules/require-backend-authorization/index.js.map +1 -0
- package/src/rules/require-code-minification/index.d.ts +8 -0
- package/src/rules/require-code-minification/index.js +48 -0
- package/src/rules/require-code-minification/index.js.map +1 -0
- package/src/rules/require-csp-headers/index.d.ts +6 -0
- package/src/rules/require-csp-headers/index.js +65 -0
- package/src/rules/require-csp-headers/index.js.map +1 -0
- package/src/rules/require-data-minimization/index.d.ts +8 -0
- package/src/rules/require-data-minimization/index.js +54 -0
- package/src/rules/require-data-minimization/index.js.map +1 -0
- package/src/rules/require-dependency-integrity/index.d.ts +6 -0
- package/src/rules/require-dependency-integrity/index.js +65 -0
- package/src/rules/require-dependency-integrity/index.js.map +1 -0
- package/src/rules/require-https-only/index.d.ts +8 -0
- package/src/rules/require-https-only/index.js +64 -0
- package/src/rules/require-https-only/index.js.map +1 -0
- package/src/rules/require-mime-type-validation/index.d.ts +6 -0
- package/src/rules/require-mime-type-validation/index.js +67 -0
- package/src/rules/require-mime-type-validation/index.js.map +1 -0
- package/src/rules/require-network-timeout/index.d.ts +8 -0
- package/src/rules/require-network-timeout/index.js +51 -0
- package/src/rules/require-network-timeout/index.js.map +1 -0
- package/src/rules/require-package-lock/index.d.ts +8 -0
- package/src/rules/require-package-lock/index.js +64 -0
- package/src/rules/require-package-lock/index.js.map +1 -0
- package/src/rules/require-secure-credential-storage/index.d.ts +8 -0
- package/src/rules/require-secure-credential-storage/index.js +51 -0
- package/src/rules/require-secure-credential-storage/index.js.map +1 -0
- package/src/rules/require-secure-defaults/index.d.ts +8 -0
- package/src/rules/require-secure-defaults/index.js +48 -0
- package/src/rules/require-secure-defaults/index.js.map +1 -0
- package/src/rules/require-secure-deletion/index.d.ts +8 -0
- package/src/rules/require-secure-deletion/index.js +45 -0
- package/src/rules/require-secure-deletion/index.js.map +1 -0
- package/src/rules/require-storage-encryption/index.d.ts +8 -0
- package/src/rules/require-storage-encryption/index.js +51 -0
- package/src/rules/require-storage-encryption/index.js.map +1 -0
- package/src/rules/require-url-validation/index.d.ts +6 -0
- package/src/rules/require-url-validation/index.js +73 -0
- package/src/rules/require-url-validation/index.js.map +1 -0
- package/src/types/index.d.ts +48 -48
- package/src/rules/security/database-injection.js.map +0 -1
- package/src/rules/security/detect-child-process.js.map +0 -1
- package/src/rules/security/detect-eval-with-expression.js.map +0 -1
- package/src/rules/security/detect-non-literal-fs-filename.js.map +0 -1
- package/src/rules/security/detect-non-literal-regexp.js.map +0 -1
- package/src/rules/security/detect-object-injection.js.map +0 -1
- package/src/rules/security/no-buffer-overread.js.map +0 -1
- package/src/rules/security/no-clickjacking.js.map +0 -1
- package/src/rules/security/no-directive-injection.js.map +0 -1
- package/src/rules/security/no-document-cookie.js.map +0 -1
- package/src/rules/security/no-electron-security-issues.js.map +0 -1
- package/src/rules/security/no-exposed-sensitive-data.js.map +0 -1
- package/src/rules/security/no-format-string-injection.js.map +0 -1
- package/src/rules/security/no-graphql-injection.js.map +0 -1
- package/src/rules/security/no-hardcoded-credentials.js.map +0 -1
- package/src/rules/security/no-improper-sanitization.js.map +0 -1
- package/src/rules/security/no-improper-type-validation.js.map +0 -1
- package/src/rules/security/no-insecure-comparison.js.map +0 -1
- package/src/rules/security/no-insecure-cookie-settings.js.map +0 -1
- package/src/rules/security/no-insecure-jwt.js.map +0 -1
- package/src/rules/security/no-insecure-redirects.js.map +0 -1
- package/src/rules/security/no-insufficient-postmessage-validation.js.map +0 -1
- package/src/rules/security/no-insufficient-random.js.map +0 -1
- package/src/rules/security/no-ldap-injection.js.map +0 -1
- package/src/rules/security/no-missing-authentication.js.map +0 -1
- package/src/rules/security/no-missing-cors-check.js.map +0 -1
- package/src/rules/security/no-missing-csrf-protection.js.map +0 -1
- package/src/rules/security/no-missing-security-headers.js.map +0 -1
- package/src/rules/security/no-privilege-escalation.js.map +0 -1
- package/src/rules/security/no-redos-vulnerable-regex.js.map +0 -1
- package/src/rules/security/no-sensitive-data-exposure.js.map +0 -1
- package/src/rules/security/no-sql-injection.js.map +0 -1
- package/src/rules/security/no-timing-attack.js.map +0 -1
- package/src/rules/security/no-toctou-vulnerability.js.map +0 -1
- package/src/rules/security/no-unchecked-loop-condition.js.map +0 -1
- package/src/rules/security/no-unencrypted-transmission.js.map +0 -1
- package/src/rules/security/no-unescaped-url-parameter.js.map +0 -1
- package/src/rules/security/no-unlimited-resource-allocation.js.map +0 -1
- package/src/rules/security/no-unsafe-deserialization.js.map +0 -1
- package/src/rules/security/no-unsafe-dynamic-require.js.map +0 -1
- package/src/rules/security/no-unsafe-regex-construction.js.map +0 -1
- package/src/rules/security/no-unsanitized-html.js.map +0 -1
- package/src/rules/security/no-unvalidated-user-input.js.map +0 -1
- package/src/rules/security/no-weak-crypto.js.map +0 -1
- package/src/rules/security/no-weak-password-recovery.js.map +0 -1
- package/src/rules/security/no-xpath-injection.js.map +0 -1
- package/src/rules/security/no-xxe-injection.js.map +0 -1
- package/src/rules/security/no-zip-slip.js.map +0 -1
- /package/src/rules/{security/database-injection.d.ts → database-injection/index.d.ts} +0 -0
- /package/src/rules/{security/detect-child-process.d.ts → detect-child-process/index.d.ts} +0 -0
- /package/src/rules/{security/detect-eval-with-expression.d.ts → detect-eval-with-expression/index.d.ts} +0 -0
- /package/src/rules/{security/detect-non-literal-fs-filename.d.ts → detect-non-literal-fs-filename/index.d.ts} +0 -0
- /package/src/rules/{security/detect-non-literal-regexp.d.ts → detect-non-literal-regexp/index.d.ts} +0 -0
- /package/src/rules/{security/detect-object-injection.d.ts → detect-object-injection/index.d.ts} +0 -0
- /package/src/rules/{security/no-buffer-overread.d.ts → no-buffer-overread/index.d.ts} +0 -0
- /package/src/rules/{security/no-clickjacking.d.ts → no-clickjacking/index.d.ts} +0 -0
- /package/src/rules/{security/no-directive-injection.d.ts → no-directive-injection/index.d.ts} +0 -0
- /package/src/rules/{security/no-document-cookie.d.ts → no-document-cookie/index.d.ts} +0 -0
- /package/src/rules/{security/no-electron-security-issues.d.ts → no-electron-security-issues/index.d.ts} +0 -0
- /package/src/rules/{security/no-exposed-sensitive-data.d.ts → no-exposed-sensitive-data/index.d.ts} +0 -0
- /package/src/rules/{security/no-format-string-injection.d.ts → no-format-string-injection/index.d.ts} +0 -0
- /package/src/rules/{security/no-graphql-injection.d.ts → no-graphql-injection/index.d.ts} +0 -0
- /package/src/rules/{security/no-hardcoded-credentials.d.ts → no-hardcoded-credentials/index.d.ts} +0 -0
- /package/src/rules/{security/no-improper-sanitization.d.ts → no-improper-sanitization/index.d.ts} +0 -0
- /package/src/rules/{security/no-improper-type-validation.d.ts → no-improper-type-validation/index.d.ts} +0 -0
- /package/src/rules/{security/no-insecure-comparison.d.ts → no-insecure-comparison/index.d.ts} +0 -0
- /package/src/rules/{security/no-insecure-cookie-settings.d.ts → no-insecure-cookie-settings/index.d.ts} +0 -0
- /package/src/rules/{security/no-insecure-jwt.d.ts → no-insecure-jwt/index.d.ts} +0 -0
- /package/src/rules/{security/no-insecure-redirects.d.ts → no-insecure-redirects/index.d.ts} +0 -0
- /package/src/rules/{security/no-insufficient-postmessage-validation.d.ts → no-insufficient-postmessage-validation/index.d.ts} +0 -0
- /package/src/rules/{security/no-insufficient-random.d.ts → no-insufficient-random/index.d.ts} +0 -0
- /package/src/rules/{security/no-ldap-injection.d.ts → no-ldap-injection/index.d.ts} +0 -0
- /package/src/rules/{security/no-missing-authentication.d.ts → no-missing-authentication/index.d.ts} +0 -0
- /package/src/rules/{security/no-missing-cors-check.d.ts → no-missing-cors-check/index.d.ts} +0 -0
- /package/src/rules/{security/no-missing-csrf-protection.d.ts → no-missing-csrf-protection/index.d.ts} +0 -0
- /package/src/rules/{security/no-missing-security-headers.d.ts → no-missing-security-headers/index.d.ts} +0 -0
- /package/src/rules/{security/no-privilege-escalation.d.ts → no-privilege-escalation/index.d.ts} +0 -0
- /package/src/rules/{security/no-redos-vulnerable-regex.d.ts → no-redos-vulnerable-regex/index.d.ts} +0 -0
- /package/src/rules/{security/no-sensitive-data-exposure.d.ts → no-sensitive-data-exposure/index.d.ts} +0 -0
- /package/src/rules/{security/no-sql-injection.d.ts → no-sql-injection/index.d.ts} +0 -0
- /package/src/rules/{security/no-timing-attack.d.ts → no-timing-attack/index.d.ts} +0 -0
- /package/src/rules/{security/no-toctou-vulnerability.d.ts → no-toctou-vulnerability/index.d.ts} +0 -0
- /package/src/rules/{security/no-unchecked-loop-condition.d.ts → no-unchecked-loop-condition/index.d.ts} +0 -0
- /package/src/rules/{security/no-unencrypted-transmission.d.ts → no-unencrypted-transmission/index.d.ts} +0 -0
- /package/src/rules/{security/no-unescaped-url-parameter.d.ts → no-unescaped-url-parameter/index.d.ts} +0 -0
- /package/src/rules/{security/no-unlimited-resource-allocation.d.ts → no-unlimited-resource-allocation/index.d.ts} +0 -0
- /package/src/rules/{security/no-unsafe-deserialization.d.ts → no-unsafe-deserialization/index.d.ts} +0 -0
- /package/src/rules/{security/no-unsafe-dynamic-require.d.ts → no-unsafe-dynamic-require/index.d.ts} +0 -0
- /package/src/rules/{security/no-unsafe-regex-construction.d.ts → no-unsafe-regex-construction/index.d.ts} +0 -0
- /package/src/rules/{security/no-unsanitized-html.d.ts → no-unsanitized-html/index.d.ts} +0 -0
- /package/src/rules/{security/no-unvalidated-user-input.d.ts → no-unvalidated-user-input/index.d.ts} +0 -0
- /package/src/rules/{security/no-weak-crypto.d.ts → no-weak-crypto/index.d.ts} +0 -0
- /package/src/rules/{security/no-weak-password-recovery.d.ts → no-weak-password-recovery/index.d.ts} +0 -0
- /package/src/rules/{security/no-xpath-injection.d.ts → no-xpath-injection/index.d.ts} +0 -0
- /package/src/rules/{security/no-xxe-injection.d.ts → no-xxe-injection/index.d.ts} +0 -0
- /package/src/rules/{security/no-zip-slip.d.ts → no-zip-slip/index.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-secure-coding/src/rules/no-toctou-vulnerability/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Require consent before tracking
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.noTrackingWithoutConsent = void 0;
|
|
7
|
+
const eslint_devkit_1 = require("@interlace/eslint-devkit");
|
|
8
|
+
exports.noTrackingWithoutConsent = (0, eslint_devkit_1.createRule)({
|
|
9
|
+
name: 'no-tracking-without-consent',
|
|
10
|
+
meta: {
|
|
11
|
+
type: 'problem',
|
|
12
|
+
docs: {
|
|
13
|
+
description: 'Require consent before analytics tracking',
|
|
14
|
+
},
|
|
15
|
+
messages: {
|
|
16
|
+
violationDetected: (0, eslint_devkit_1.formatLLMMessage)({
|
|
17
|
+
icon: eslint_devkit_1.MessageIcons.SECURITY,
|
|
18
|
+
issueName: 'Tracking Without Consent',
|
|
19
|
+
cwe: 'CWE-359',
|
|
20
|
+
description: 'Analytics tracking without consent check - violates privacy regulations',
|
|
21
|
+
severity: 'MEDIUM',
|
|
22
|
+
fix: 'Wrap tracking calls in consent check: if (hasConsent) { analytics.track(...) }',
|
|
23
|
+
documentationLink: 'https://cwe.mitre.org/data/definitions/359.html',
|
|
24
|
+
})
|
|
25
|
+
},
|
|
26
|
+
schema: [],
|
|
27
|
+
},
|
|
28
|
+
defaultOptions: [],
|
|
29
|
+
create(context) {
|
|
30
|
+
function report(node) {
|
|
31
|
+
context.report({ node, messageId: 'violationDetected' });
|
|
32
|
+
}
|
|
33
|
+
function isInsideConsentCheck(node) {
|
|
34
|
+
let current = node.parent;
|
|
35
|
+
while (current) {
|
|
36
|
+
if (current.type === 'IfStatement') {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
if (current.type === 'ConditionalExpression') {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
current = current.parent;
|
|
43
|
+
}
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
CallExpression(node) {
|
|
48
|
+
// Detect analytics.track() or similar
|
|
49
|
+
if (node.callee.type === 'MemberExpression' &&
|
|
50
|
+
node.callee.object.type === 'Identifier' &&
|
|
51
|
+
node.callee.object.name === 'analytics' &&
|
|
52
|
+
node.callee.property.type === 'Identifier' &&
|
|
53
|
+
['track', 'identify', 'page'].includes(node.callee.property.name)) {
|
|
54
|
+
if (!isInsideConsentCheck(node)) {
|
|
55
|
+
report(node);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Google Analytics gtag
|
|
59
|
+
if (node.callee.type === 'Identifier' && node.callee.name === 'gtag') {
|
|
60
|
+
if (!isInsideConsentCheck(node)) {
|
|
61
|
+
report(node);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-secure-coding/src/rules/no-tracking-without-consent/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,4DAAsF;AAUzE,QAAA,wBAAwB,GAAG,IAAA,0BAAU,EAA0B;IAC1E,IAAI,EAAE,6BAA6B;IACnC,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,2CAA2C;SACzD;QACD,QAAQ,EAAE;YACR,iBAAiB,EAAE,IAAA,gCAAgB,EAAC;gBAClC,IAAI,EAAE,4BAAY,CAAC,QAAQ;gBAC3B,SAAS,EAAE,0BAA0B;gBACrC,GAAG,EAAE,SAAS;gBACd,WAAW,EAAE,yEAAyE;gBACtF,QAAQ,EAAE,QAAQ;gBAClB,GAAG,EAAE,gFAAgF;gBACrF,iBAAiB,EAAE,iDAAiD;aACrE,CAAC;SACH;QACD,MAAM,EAAE,EAAE;KACX;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ,SAAS,MAAM,CAAC,IAAmB;YACjC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,SAAS,oBAAoB,CAAC,IAAmB;YAC/C,IAAI,OAAO,GAA8B,IAAI,CAAC,MAAM,CAAC;YACrD,OAAO,OAAO,EAAE,CAAC;gBACf,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBACnC,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,IAAI,OAAO,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;oBAC7C,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;YAC3B,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO;YACL,cAAc,CAAC,IAA6B;gBAC1C,sCAAsC;gBACtC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,kBAAkB;oBACvC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY;oBACxC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW;oBACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY;oBAC1C,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBAEtE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;wBAChC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACf,CAAC;gBACH,CAAC;gBAED,wBAAwB;gBACxB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBACrE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;wBAChC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACf,CAAC;gBACH,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
|
package/src/rules/{security/no-unchecked-loop-condition.js → no-unchecked-loop-condition/index.js}
RENAMED
|
@@ -377,10 +377,11 @@ exports.noUncheckedLoopCondition = (0, eslint_devkit_1.createRule)({
|
|
|
377
377
|
const isTreeTraversal = currentFunction === 'traverseObject';
|
|
378
378
|
// Flag excessive recursion or specific dangerous patterns
|
|
379
379
|
if (callCount > maxRecursionDepth || currentFunction === 'recursiveFunc' || isTreeTraversal) {
|
|
380
|
-
|
|
380
|
+
/* c8 ignore start -- safetyChecker requires JSDoc annotations not testable via RuleTester */
|
|
381
381
|
if (safetyChecker.isSafe(node, context)) {
|
|
382
382
|
return;
|
|
383
383
|
}
|
|
384
|
+
/* c8 ignore stop */
|
|
384
385
|
reportedRecursion.add(functionName);
|
|
385
386
|
context.report({
|
|
386
387
|
node,
|
|
@@ -425,10 +426,11 @@ exports.noUncheckedLoopCondition = (0, eslint_devkit_1.createRule)({
|
|
|
425
426
|
}
|
|
426
427
|
// Check for user-controlled loop conditions
|
|
427
428
|
if (involvesUserInput(test)) {
|
|
428
|
-
|
|
429
|
+
/* c8 ignore start -- safetyChecker requires JSDoc annotations not testable via RuleTester */
|
|
429
430
|
if (safetyChecker.isSafe(node, context)) {
|
|
430
431
|
return;
|
|
431
432
|
}
|
|
433
|
+
/* c8 ignore stop */
|
|
432
434
|
context.report({
|
|
433
435
|
node: test,
|
|
434
436
|
messageId: 'userControlledLoopBound',
|
|
@@ -441,10 +443,11 @@ exports.noUncheckedLoopCondition = (0, eslint_devkit_1.createRule)({
|
|
|
441
443
|
}
|
|
442
444
|
// Check for complex DoS patterns (regex loops, pagination, etc.)
|
|
443
445
|
if (checkComplexDoSPatterns(test)) {
|
|
444
|
-
|
|
446
|
+
/* c8 ignore start -- safetyChecker requires JSDoc annotations not testable via RuleTester */
|
|
445
447
|
if (safetyChecker.isSafe(node, context)) {
|
|
446
448
|
return;
|
|
447
449
|
}
|
|
450
|
+
/* c8 ignore stop */
|
|
448
451
|
context.report({
|
|
449
452
|
node: test,
|
|
450
453
|
messageId: 'userControlledLoopBound',
|
|
@@ -464,10 +467,11 @@ exports.noUncheckedLoopCondition = (0, eslint_devkit_1.createRule)({
|
|
|
464
467
|
varName.toLowerCase().includes('active') ||
|
|
465
468
|
varName.toLowerCase().includes('enabled')) {
|
|
466
469
|
// This could be a state-dependent infinite loop
|
|
467
|
-
|
|
470
|
+
/* c8 ignore start -- safetyChecker requires JSDoc annotations not testable via RuleTester */
|
|
468
471
|
if (safetyChecker.isSafe(node, context)) {
|
|
469
472
|
return;
|
|
470
473
|
}
|
|
474
|
+
/* c8 ignore stop */
|
|
471
475
|
context.report({
|
|
472
476
|
node: test,
|
|
473
477
|
messageId: 'infiniteLoop',
|
|
@@ -484,10 +488,11 @@ exports.noUncheckedLoopCondition = (0, eslint_devkit_1.createRule)({
|
|
|
484
488
|
ForStatement(node) {
|
|
485
489
|
// Check for for(;;) infinite loops
|
|
486
490
|
if (!node.test && !node.update) {
|
|
487
|
-
|
|
491
|
+
/* c8 ignore start -- safetyChecker requires JSDoc annotations not testable via RuleTester */
|
|
488
492
|
if (safetyChecker.isSafe(node, context)) {
|
|
489
493
|
return;
|
|
490
494
|
}
|
|
495
|
+
/* c8 ignore stop */
|
|
491
496
|
context.report({
|
|
492
497
|
node,
|
|
493
498
|
messageId: 'infiniteLoop',
|
|
@@ -500,10 +505,11 @@ exports.noUncheckedLoopCondition = (0, eslint_devkit_1.createRule)({
|
|
|
500
505
|
}
|
|
501
506
|
// Check for missing test condition (for(;condition;))
|
|
502
507
|
if (!node.test) {
|
|
503
|
-
|
|
508
|
+
/* c8 ignore start -- safetyChecker requires JSDoc annotations not testable via RuleTester */
|
|
504
509
|
if (safetyChecker.isSafe(node, context)) {
|
|
505
510
|
return;
|
|
506
511
|
}
|
|
512
|
+
/* c8 ignore stop */
|
|
507
513
|
context.report({
|
|
508
514
|
node,
|
|
509
515
|
messageId: 'missingLoopTermination',
|
|
@@ -516,10 +522,11 @@ exports.noUncheckedLoopCondition = (0, eslint_devkit_1.createRule)({
|
|
|
516
522
|
}
|
|
517
523
|
// Check for user-controlled loop bounds
|
|
518
524
|
if (involvesUserInput(node.test)) {
|
|
519
|
-
|
|
525
|
+
/* c8 ignore start -- safetyChecker requires JSDoc annotations not testable via RuleTester */
|
|
520
526
|
if (safetyChecker.isSafe(node, context)) {
|
|
521
527
|
return;
|
|
522
528
|
}
|
|
529
|
+
/* c8 ignore stop */
|
|
523
530
|
context.report({
|
|
524
531
|
node: node.test,
|
|
525
532
|
messageId: 'userControlledLoopBound',
|
|
@@ -532,10 +539,11 @@ exports.noUncheckedLoopCondition = (0, eslint_devkit_1.createRule)({
|
|
|
532
539
|
}
|
|
533
540
|
// Check for complex DoS patterns in for loops
|
|
534
541
|
if (checkComplexDoSPatterns(node.test) || checkComplexDoSPatternsInScope(node.test)) {
|
|
535
|
-
|
|
542
|
+
/* c8 ignore start -- safetyChecker requires JSDoc annotations not testable via RuleTester */
|
|
536
543
|
if (safetyChecker.isSafe(node, context)) {
|
|
537
544
|
return;
|
|
538
545
|
}
|
|
546
|
+
/* c8 ignore stop */
|
|
539
547
|
context.report({
|
|
540
548
|
node: node.test,
|
|
541
549
|
messageId: 'userControlledLoopBound',
|
|
@@ -549,10 +557,11 @@ exports.noUncheckedLoopCondition = (0, eslint_devkit_1.createRule)({
|
|
|
549
557
|
// Check for potentially large iteration counts
|
|
550
558
|
const estimatedIterations = estimateIterations(node);
|
|
551
559
|
if (estimatedIterations && estimatedIterations > maxStaticIterations) {
|
|
552
|
-
|
|
560
|
+
/* c8 ignore start -- safetyChecker requires JSDoc annotations not testable via RuleTester */
|
|
553
561
|
if (safetyChecker.isSafe(node, context)) {
|
|
554
562
|
return;
|
|
555
563
|
}
|
|
564
|
+
/* c8 ignore stop */
|
|
556
565
|
context.report({
|
|
557
566
|
node: node.test,
|
|
558
567
|
messageId: 'largeLoopBound',
|
|
@@ -568,10 +577,11 @@ exports.noUncheckedLoopCondition = (0, eslint_devkit_1.createRule)({
|
|
|
568
577
|
const test = node.test;
|
|
569
578
|
// Check for user-controlled conditions
|
|
570
579
|
if (involvesUserInput(test)) {
|
|
571
|
-
|
|
580
|
+
/* c8 ignore start -- safetyChecker requires JSDoc annotations not testable via RuleTester */
|
|
572
581
|
if (safetyChecker.isSafe(node, context)) {
|
|
573
582
|
return;
|
|
574
583
|
}
|
|
584
|
+
/* c8 ignore stop */
|
|
575
585
|
context.report({
|
|
576
586
|
node: test,
|
|
577
587
|
messageId: 'userControlledLoopBound',
|
|
@@ -588,10 +598,11 @@ exports.noUncheckedLoopCondition = (0, eslint_devkit_1.createRule)({
|
|
|
588
598
|
// Check if iterating over user-controlled collections
|
|
589
599
|
if (involvesUserInput(right)) {
|
|
590
600
|
// This could be problematic if the collection is very large
|
|
591
|
-
|
|
601
|
+
/* c8 ignore start -- safetyChecker requires JSDoc annotations not testable via RuleTester */
|
|
592
602
|
if (safetyChecker.isSafe(node, context)) {
|
|
593
603
|
return;
|
|
594
604
|
}
|
|
605
|
+
/* c8 ignore stop */
|
|
595
606
|
context.report({
|
|
596
607
|
node: right,
|
|
597
608
|
messageId: 'uncheckedLoopCondition',
|
|
@@ -613,10 +624,11 @@ exports.noUncheckedLoopCondition = (0, eslint_devkit_1.createRule)({
|
|
|
613
624
|
if (isValidated) {
|
|
614
625
|
return; // Collection is validated, safe to iterate
|
|
615
626
|
}
|
|
616
|
-
|
|
627
|
+
/* c8 ignore start -- safetyChecker requires JSDoc annotations not testable via RuleTester */
|
|
617
628
|
if (safetyChecker.isSafe(node, context)) {
|
|
618
629
|
return;
|
|
619
630
|
}
|
|
631
|
+
/* c8 ignore stop */
|
|
620
632
|
context.report({
|
|
621
633
|
node: right,
|
|
622
634
|
messageId: 'uncheckedLoopCondition',
|
|
@@ -632,4 +644,4 @@ exports.noUncheckedLoopCondition = (0, eslint_devkit_1.createRule)({
|
|
|
632
644
|
};
|
|
633
645
|
},
|
|
634
646
|
});
|
|
635
|
-
//# sourceMappingURL=
|
|
647
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-secure-coding/src/rules/no-unchecked-loop-condition/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Prevent sensitive data in unencrypted local storage
|
|
3
|
+
* @see https://owasp.org/www-project-mobile-top-10/
|
|
4
|
+
* @see https://cwe.mitre.org/data/definitions/311.html
|
|
5
|
+
*/
|
|
6
|
+
export interface Options {
|
|
7
|
+
}
|
|
8
|
+
export declare const noUnencryptedLocalStorage: ESLintUtils.RuleModule<MessageIds, Options, unknown, ESLintUtils.RuleListener>;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Prevent sensitive data in unencrypted local storage
|
|
4
|
+
* @see https://owasp.org/www-project-mobile-top-10/
|
|
5
|
+
* @see https://cwe.mitre.org/data/definitions/311.html
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.noUnencryptedLocalStorage = void 0;
|
|
9
|
+
const eslint_devkit_1 = require("@interlace/eslint-devkit");
|
|
10
|
+
exports.noUnencryptedLocalStorage = (0, eslint_devkit_1.createRule)({
|
|
11
|
+
name: 'no-unencrypted-local-storage',
|
|
12
|
+
meta: {
|
|
13
|
+
type: 'problem',
|
|
14
|
+
docs: {
|
|
15
|
+
description: 'Prevent sensitive data in unencrypted local storage',
|
|
16
|
+
category: 'Security',
|
|
17
|
+
recommended: true,
|
|
18
|
+
owaspMobile: ['M9'],
|
|
19
|
+
cweIds: ["CWE-311"],
|
|
20
|
+
},
|
|
21
|
+
messages: {
|
|
22
|
+
violationDetected: (0, eslint_devkit_1.formatLLMMessage)({
|
|
23
|
+
icon: eslint_devkit_1.MessageIcons.SECURITY,
|
|
24
|
+
issueName: 'violation Detected',
|
|
25
|
+
cwe: 'CWE-312',
|
|
26
|
+
description: 'Prevent sensitive data in unencrypted local storage detected - this is a security risk',
|
|
27
|
+
severity: 'HIGH',
|
|
28
|
+
fix: 'Review and apply secure practices',
|
|
29
|
+
documentationLink: 'https://cwe.mitre.org/data/definitions/312.html',
|
|
30
|
+
})
|
|
31
|
+
},
|
|
32
|
+
schema: [],
|
|
33
|
+
},
|
|
34
|
+
defaultOptions: [],
|
|
35
|
+
create(context) {
|
|
36
|
+
const sourceCode = context.sourceCode;
|
|
37
|
+
function report(node) {
|
|
38
|
+
context.report({
|
|
39
|
+
node,
|
|
40
|
+
messageId: 'violationDetected',
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
CallExpression(node) {
|
|
45
|
+
// Similar to no-credentials-in-storage-api but broader
|
|
46
|
+
if (node.type === 'CallExpression' &&
|
|
47
|
+
node.callee.type === 'MemberExpression' &&
|
|
48
|
+
node.callee.property.name === 'setItem' &&
|
|
49
|
+
['localStorage', 'sessionStorage'].includes(node.callee.object.name)) {
|
|
50
|
+
const keyArg = node.arguments[0];
|
|
51
|
+
if (keyArg && keyArg.type === 'Literal') {
|
|
52
|
+
const key = keyArg.value.toString().toLowerCase();
|
|
53
|
+
const sensitiveKeys = ['creditcard', 'ssn', 'passport', 'license', 'medical', 'health'];
|
|
54
|
+
if (sensitiveKeys.some(k => key.includes(k))) {
|
|
55
|
+
report(node);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-secure-coding/src/rules/no-unencrypted-local-storage/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,4DAAsF;AAUzE,QAAA,yBAAyB,GAAG,IAAA,0BAAU,EAA0B;IAC3E,IAAI,EAAE,8BAA8B;IACpC,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,qDAAqD;YAClE,QAAQ,EAAE,UAAU;YACpB,WAAW,EAAE,IAAI;YACjB,WAAW,EAAE,CAAC,IAAI,CAAC;YACnB,MAAM,EAAE,CAAC,SAAS,CAAC;SACpB;QACD,QAAQ,EAAE;YACR,iBAAiB,EAAE,IAAA,gCAAgB,EAAC;gBAClC,IAAI,EAAE,4BAAY,CAAC,QAAQ;gBAC3B,SAAS,EAAE,oBAAoB;gBAC/B,GAAG,EAAE,SAAS;gBACd,WAAW,EAAE,wFAAwF;gBACrG,QAAQ,EAAE,MAAM;gBAChB,GAAG,EAAE,mCAAmC;gBACxC,iBAAiB,EAAE,iDAAiD;aACrE,CAAC;SACH;QACD,MAAM,EAAE,EAAE;KACX;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QAEtC,SAAS,MAAM,CAAC,IAAmB;YACjC,OAAO,CAAC,MAAM,CAAC;gBACb,IAAI;gBACJ,SAAS,EAAE,mBAAmB;aAC/B,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,cAAc,CAAC,IAA6B;gBAE5C,uDAAuD;gBACvD,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB;oBAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,kBAAkB;oBACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS;oBACvC,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBAEzE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;wBACxC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;wBAClD,MAAM,aAAa,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;wBAExF,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC7C,MAAM,CAAC,IAAI,CAAC,CAAC;wBACf,CAAC;oBACH,CAAC;gBACH,CAAC;YAED,CAAC;SACN,CAAC;IACA,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-secure-coding/src/rules/no-unencrypted-transmission/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-secure-coding/src/rules/no-unescaped-url-parameter/index.ts"],"names":[],"mappings":";;;AASA,4DAA0E;AAC1E,4DAAsD;AAiBtD;;GAEG;AACH,SAAS,oBAAoB,CAC3B,IAAmB,EACnB,UAA+B,EAC/B,gBAA0B;IAE1B,IAAI,OAAO,GAAyB,IAAI,CAAC;IAEzC,OAAO,OAAO,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAE9B,0CAA0C;YAC1C,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACjC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;gBAC/B,IAAI,CAAC,oBAAoB,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBACvE,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAED,uCAAuC;YACvC,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBACvC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;gBAC7B,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBACjC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;oBAC7C,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC;wBACzE,OAAO,IAAI,CAAC;oBACd,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,IAAI,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YAC1C,OAAO,GAAG,OAAO,CAAC,MAAuB,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,IAAY,EAAE,cAAwB;IAClE,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QACnC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACvC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAAmB,EAAE,UAA+B;IAC7E,IAAI,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC,0EAA0E;IAC1E,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACpC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,sCAAsC;IACtC,MAAM,WAAW,GAAG;QAClB,eAAe,EAAG,kBAAkB;QACpC,kBAAkB;QAClB,iBAAiB,EAAG,gBAAgB;QACpC,YAAY,EAAG,QAAQ;QACvB,oBAAoB;QACpB,kBAAkB;QAClB,qBAAqB;QACrB,UAAU,EAAG,mBAAmB;KACjC,CAAC;IAEF,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzD,CAAC;AAEY,QAAA,uBAAuB,GAAG,IAAA,0BAAU,EAA0B;IACzE,IAAI,EAAE,4BAA4B;IAClC,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,kCAAkC;SAChD;QACD,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE;YACR,qBAAqB,EAAE,IAAA,gCAAgB,EAAC;gBACtC,IAAI,EAAE,4BAAY,CAAC,QAAQ;gBAC3B,SAAS,EAAE,yBAAyB;gBACpC,GAAG,EAAE,QAAQ;gBACb,WAAW,EAAE,iDAAiD;gBAC9D,QAAQ,EAAE,MAAM;gBAChB,GAAG,EAAE,qBAAqB;gBAC1B,iBAAiB,EAAE,gDAAgD;aACpE,CAAC;YACF,qBAAqB,EAAE,IAAA,gCAAgB,EAAC;gBACtC,IAAI,EAAE,4BAAY,CAAC,IAAI;gBACvB,SAAS,EAAE,wBAAwB;gBACnC,WAAW,EAAE,uCAAuC;gBACpD,QAAQ,EAAE,KAAK;gBACf,GAAG,EAAE,sDAAsD;gBAC3D,iBAAiB,EAAE,qGAAqG;aACzH,CAAC;YACF,kBAAkB,EAAE,IAAA,gCAAgB,EAAC;gBACnC,IAAI,EAAE,4BAAY,CAAC,IAAI;gBACvB,SAAS,EAAE,qBAAqB;gBAChC,WAAW,EAAE,+CAA+C;gBAC5D,QAAQ,EAAE,KAAK;gBACf,GAAG,EAAE,8CAA8C;gBACnD,iBAAiB,EAAE,kEAAkE;aACtF,CAAC;SACH;QACD,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,YAAY,EAAE;wBACZ,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,KAAK;wBACd,WAAW,EAAE,8CAA8C;qBAC5D;oBACD,gBAAgB,EAAE;wBAChB,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBACzB,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC;wBAC/B,WAAW,EAAE,oCAAoC;qBAClD;oBACD,cAAc,EAAE;wBACd,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBACzB,OAAO,EAAE,EAAE;wBACX,WAAW,EAAE,oCAAoC;qBAClD;iBACF;gBACD,oBAAoB,EAAE,KAAK;aAC5B;SACF;KACF;IACD,cAAc,EAAE;QACd;YACE,YAAY,EAAE,KAAK;YACnB,gBAAgB,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC;YACxC,cAAc,EAAE,EAAE;SACnB;KACF;IACD,MAAM,CACJ,OAAsD,EACtD,CAAC,OAAO,GAAG,EAAE,CAAC;QAEd,MAAM,EACJ,YAAY,GAAG,KAAK,EACpB,gBAAgB,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,EACzC,cAAc,GAAG,EAAE,GACpB,GAAG,OAAkB,CAAC;QAEvB,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,YAAY,IAAI,iCAAiC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpF,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC;QAE5D,SAAS,oBAAoB,CAAC,IAA8B;YAC1D,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO;YACT,CAAC;YAED,sCAAsC;YACtC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;gBACzC,OAAO;YACT,CAAC;YAED,wCAAwC;YACxC,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC1C,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAE5C,yCAAyC;gBACzC,IAAI,oBAAoB,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC;oBAC/C,SAAS;gBACX,CAAC;gBAED,gCAAgC;gBAChC,IAAI,oBAAoB,CAAC,UAAU,EAAE,UAAU,EAAE,gBAAgB,CAAC,EAAE,CAAC;oBACnE,SAAS;gBACX,CAAC;gBAED,qCAAqC;gBACrC,MAAM,iBAAiB,GAAG;oBACxB,4CAA4C;oBAC5C,gCAAgC;oBAChC,gBAAgB;oBAChB,YAAY;oBACZ,kBAAkB;oBAClB,YAAY,EAAE,yBAAyB;iBACxC,CAAC;gBAEF,+DAA+D;gBAC/D,iDAAiD;gBACjD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC1C,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAChD,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACtD,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACzD,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACzD,6DAA6D;oBAC7D,CAAC,UAAU,CAAC,IAAI,KAAK,kBAAkB;wBACtC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;4BAC/B,wDAAwD;4BACxD,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAChC,CAAC,CAAC,CAAC,CAAC;gBAExB,IAAI,WAAW,EAAE,CAAC;oBAChB,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI,EAAE,UAAU;wBAChB,SAAS,EAAE,uBAAuB;wBAClC,IAAI,EAAE;4BACJ,SAAS,EAAE,IAAI;4BACf,eAAe,EAAE,0GAA0G,IAAI,OAAO;yBACvI;wBACD,OAAO,EAAE;4BACP;gCACE,SAAS,EAAE,uBAAuB;gCAClC,6DAA6D;gCAC7D,GAAG,EAAE,CAAC,MAA0B,EAAE,EAAE,CAAC,IAAI;6BAC1C;4BACD;gCACE,SAAS,EAAE,oBAAoB;gCAC/B,6DAA6D;gCAC7D,GAAG,EAAE,CAAC,MAA0B,EAAE,EAAE,CAAC,IAAI;6BAC1C;yBACF;qBACF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,SAAS,qBAAqB,CAAC,IAA+B;YAC5D,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO;YACT,CAAC;YAED,qDAAqD;YACrD,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE,CAAC;gBAC1B,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;oBACzC,OAAO;gBACT,CAAC;gBAED,2CAA2C;gBAC3C,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAClC,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAEjD,yCAAyC;oBACzC,IAAI,oBAAoB,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,CAAC;wBACpD,OAAO;oBACT,CAAC;oBAED,gCAAgC;oBAChC,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,gBAAgB,CAAC,EAAE,CAAC;wBACnE,OAAO;oBACT,CAAC;oBAED,qCAAqC;oBACrC,MAAM,iBAAiB,GAAG;wBACxB,4BAA4B;wBAC5B,gCAAgC;wBAChC,eAAe;wBACf,WAAW;qBACZ,CAAC;oBAEF,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;oBAE/E,IAAI,WAAW,EAAE,CAAC;wBAChB,OAAO,CAAC,MAAM,CAAC;4BACb,IAAI,EAAE,IAAI,CAAC,KAAK;4BAChB,SAAS,EAAE,uBAAuB;4BAClC,IAAI,EAAE;gCACJ,SAAS,EAAE,SAAS;gCACpB,eAAe,EAAE,6BAA6B,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,SAAS,GAAG;6BACjH;4BACD,OAAO,EAAE;gCACP;oCACE,SAAS,EAAE,uBAAuB;oCAClC,6DAA6D;oCAC7D,GAAG,EAAE,CAAC,MAA0B,EAAE,EAAE,CAAC,IAAI;iCAC1C;6BACF;yBACF,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,SAAS,gBAAgB,CAAC,IAAmB,EAAE,UAAU,IAAI,GAAG,EAAU;YACxE,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEtC,MAAM,QAAQ,GAAG;gBACf,4CAA4C;gBAC5C,gCAAgC;gBAChC,gBAAgB;gBAChB,YAAY;gBACZ,kBAAkB;gBAClB,YAAY;gBACZ,gBAAgB;gBAChB,UAAU;gBACV,eAAe;gBACf,WAAW;aACZ,CAAC;YAEF,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;YAElD,oBAAoB;YACpB,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEvB,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACxC,8DAA8D;gBAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;gBAExE,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC7B,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;wBAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;wBAC3B,sDAAsD;wBACtD,IAAI,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC;4BAAE,OAAO,IAAI,CAAC;wBAEjD,2EAA2E;wBAC3E,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;4BAClC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;wBAC1E,CAAC;wBAED,oDAAoD;wBACpD,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;4BACnC,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;wBACzF,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO;YACL,eAAe,EAAE,oBAAoB;YACrC,gBAAgB,EAAE,qBAAqB;YACvC,oBAAoB,CAAC,IAAmC;gBACtD,IAAI,UAAU;oBAAE,OAAO;gBAEvB,gEAAgE;gBAChE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACvB,IAAI,oBAAoB,GAAG,KAAK,CAAC;gBAEjC,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;oBAClC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;wBACxD,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAClG,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;oBAE/E,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,QAAQ,KAAK,UAAU,CAAC;wBACpD,CAAC,QAAQ,KAAK,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;wBAC3D,oBAAoB,GAAG,IAAI,CAAC;oBAChC,CAAC;gBACN,CAAC;qBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC/D,qCAAqC;oBACrC,oBAAoB,GAAG,IAAI,CAAC;gBACjC,CAAC;gBAED,IAAI,oBAAoB,EAAE,CAAC;oBACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;oBACzB,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAE5C,sFAAsF;oBACtF,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;wBACxE,OAAO;oBACX,CAAC;oBAED,IAAI,oBAAoB,CAAC,SAAS,EAAE,cAAc,CAAC;wBAAE,OAAO;oBAC5D,IAAI,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,gBAAgB,CAAC;wBAAE,OAAO;oBAErE,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC1B,OAAO,CAAC,MAAM,CAAC;4BACZ,IAAI,EAAE,KAAK;4BACX,SAAS,EAAE,uBAAuB;4BAClC,IAAI,EAAE;gCACJ,SAAS,EAAE,SAAS;gCACpB,eAAe,EAAE,4CAA4C;6BAC9D;yBACH,CAAC,CAAC;oBACP,CAAC;gBACN,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
|