eslint-plugin-secure-coding 3.0.0 → 3.0.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.
Files changed (158) hide show
  1. package/AGENTS.md +1 -1
  2. package/CHANGELOG.md +1 -1
  3. package/README.md +90 -422
  4. package/package.json +6 -5
  5. package/src/index.d.ts +5 -14
  6. package/src/index.js +36 -265
  7. package/src/rules/detect-non-literal-regexp/index.d.ts +20 -1
  8. package/src/rules/detect-non-literal-regexp/index.js +5 -0
  9. package/src/rules/detect-object-injection/index.d.ts +25 -1
  10. package/src/rules/detect-object-injection/index.js +5 -0
  11. package/src/rules/detect-weak-password-validation/index.d.ts +8 -2
  12. package/src/rules/detect-weak-password-validation/index.js +6 -1
  13. package/src/rules/no-directive-injection/index.d.ts +27 -1
  14. package/src/rules/no-directive-injection/index.js +5 -0
  15. package/src/rules/no-electron-security-issues/index.d.ts +27 -1
  16. package/src/rules/no-electron-security-issues/index.js +5 -0
  17. package/src/rules/no-format-string-injection/index.d.ts +28 -1
  18. package/src/rules/no-format-string-injection/index.js +5 -0
  19. package/src/rules/no-graphql-injection/index.d.ts +29 -1
  20. package/src/rules/no-graphql-injection/index.js +5 -0
  21. package/src/rules/no-hardcoded-credentials/index.d.ts +19 -1
  22. package/src/rules/no-hardcoded-credentials/index.js +5 -0
  23. package/src/rules/no-hardcoded-session-tokens/index.d.ts +8 -2
  24. package/src/rules/no-hardcoded-session-tokens/index.js +6 -1
  25. package/src/rules/no-improper-sanitization/index.d.ts +27 -1
  26. package/src/rules/no-improper-sanitization/index.js +5 -0
  27. package/src/rules/no-improper-type-validation/index.d.ts +27 -1
  28. package/src/rules/no-improper-type-validation/index.js +5 -0
  29. package/src/rules/no-insecure-comparison/index.d.ts +20 -1
  30. package/src/rules/no-insecure-comparison/index.js +5 -0
  31. package/src/rules/no-ldap-injection/index.d.ts +30 -1
  32. package/src/rules/no-ldap-injection/index.js +5 -0
  33. package/src/rules/no-missing-authentication/index.d.ts +20 -1
  34. package/src/rules/no-missing-authentication/index.js +5 -1
  35. package/src/rules/no-pii-in-logs/index.d.ts +8 -4
  36. package/src/rules/no-pii-in-logs/index.js +15 -12
  37. package/src/rules/no-privilege-escalation/index.d.ts +20 -1
  38. package/src/rules/no-privilege-escalation/index.js +5 -0
  39. package/src/rules/no-redos-vulnerable-regex/index.d.ts +22 -1
  40. package/src/rules/no-redos-vulnerable-regex/index.js +5 -0
  41. package/src/rules/no-sensitive-data-exposure/index.d.ts +20 -1
  42. package/src/rules/no-sensitive-data-exposure/index.js +5 -0
  43. package/src/rules/no-unchecked-loop-condition/index.d.ts +27 -1
  44. package/src/rules/no-unchecked-loop-condition/index.js +5 -0
  45. package/src/rules/no-unlimited-resource-allocation/index.d.ts +27 -1
  46. package/src/rules/no-unlimited-resource-allocation/index.js +5 -0
  47. package/src/rules/no-unsafe-deserialization/index.d.ts +31 -1
  48. package/src/rules/no-unsafe-deserialization/index.js +5 -0
  49. package/src/rules/no-unsafe-regex-construction/index.d.ts +22 -1
  50. package/src/rules/no-unsafe-regex-construction/index.js +5 -0
  51. package/src/rules/no-weak-password-recovery/index.d.ts +27 -1
  52. package/src/rules/no-weak-password-recovery/index.js +5 -0
  53. package/src/rules/no-xpath-injection/index.d.ts +30 -1
  54. package/src/rules/no-xpath-injection/index.js +5 -0
  55. package/src/rules/no-xxe-injection/index.d.ts +30 -1
  56. package/src/rules/no-xxe-injection/index.js +5 -0
  57. package/src/rules/require-backend-authorization/index.d.ts +8 -2
  58. package/src/rules/require-backend-authorization/index.js +6 -1
  59. package/src/rules/require-secure-defaults/index.d.ts +8 -4
  60. package/src/rules/require-secure-defaults/index.js +7 -6
  61. package/src/types/index.d.ts +10 -52
  62. package/src/types/index.js +3 -12
  63. package/src/rules/detect-child-process/index.d.ts +0 -11
  64. package/src/rules/detect-child-process/index.js +0 -529
  65. package/src/rules/detect-eval-with-expression/index.d.ts +0 -9
  66. package/src/rules/detect-eval-with-expression/index.js +0 -392
  67. package/src/rules/detect-mixed-content/index.d.ts +0 -8
  68. package/src/rules/detect-mixed-content/index.js +0 -44
  69. package/src/rules/detect-non-literal-fs-filename/index.d.ts +0 -7
  70. package/src/rules/detect-non-literal-fs-filename/index.js +0 -454
  71. package/src/rules/detect-suspicious-dependencies/index.d.ts +0 -8
  72. package/src/rules/detect-suspicious-dependencies/index.js +0 -71
  73. package/src/rules/no-allow-arbitrary-loads/index.d.ts +0 -8
  74. package/src/rules/no-allow-arbitrary-loads/index.js +0 -47
  75. package/src/rules/no-arbitrary-file-access/index.d.ts +0 -13
  76. package/src/rules/no-arbitrary-file-access/index.js +0 -195
  77. package/src/rules/no-buffer-overread/index.d.ts +0 -29
  78. package/src/rules/no-buffer-overread/index.js +0 -606
  79. package/src/rules/no-clickjacking/index.d.ts +0 -10
  80. package/src/rules/no-clickjacking/index.js +0 -396
  81. package/src/rules/no-client-side-auth-logic/index.d.ts +0 -6
  82. package/src/rules/no-client-side-auth-logic/index.js +0 -69
  83. package/src/rules/no-credentials-in-query-params/index.d.ts +0 -8
  84. package/src/rules/no-credentials-in-query-params/index.js +0 -57
  85. package/src/rules/no-data-in-temp-storage/index.d.ts +0 -6
  86. package/src/rules/no-data-in-temp-storage/index.js +0 -64
  87. package/src/rules/no-debug-code-in-production/index.d.ts +0 -8
  88. package/src/rules/no-debug-code-in-production/index.js +0 -51
  89. package/src/rules/no-disabled-certificate-validation/index.d.ts +0 -6
  90. package/src/rules/no-disabled-certificate-validation/index.js +0 -61
  91. package/src/rules/no-dynamic-dependency-loading/index.d.ts +0 -8
  92. package/src/rules/no-dynamic-dependency-loading/index.js +0 -51
  93. package/src/rules/no-exposed-debug-endpoints/index.d.ts +0 -6
  94. package/src/rules/no-exposed-debug-endpoints/index.js +0 -62
  95. package/src/rules/no-exposed-sensitive-data/index.d.ts +0 -11
  96. package/src/rules/no-exposed-sensitive-data/index.js +0 -340
  97. package/src/rules/no-http-urls/index.d.ts +0 -12
  98. package/src/rules/no-http-urls/index.js +0 -114
  99. package/src/rules/no-insecure-redirects/index.d.ts +0 -7
  100. package/src/rules/no-insecure-redirects/index.js +0 -216
  101. package/src/rules/no-insecure-websocket/index.d.ts +0 -6
  102. package/src/rules/no-insecure-websocket/index.js +0 -61
  103. package/src/rules/no-missing-cors-check/index.d.ts +0 -9
  104. package/src/rules/no-missing-cors-check/index.js +0 -399
  105. package/src/rules/no-missing-csrf-protection/index.d.ts +0 -11
  106. package/src/rules/no-missing-csrf-protection/index.js +0 -180
  107. package/src/rules/no-missing-security-headers/index.d.ts +0 -7
  108. package/src/rules/no-missing-security-headers/index.js +0 -218
  109. package/src/rules/no-password-in-url/index.d.ts +0 -8
  110. package/src/rules/no-password-in-url/index.js +0 -54
  111. package/src/rules/no-permissive-cors/index.d.ts +0 -8
  112. package/src/rules/no-permissive-cors/index.js +0 -65
  113. package/src/rules/no-sensitive-data-in-analytics/index.d.ts +0 -8
  114. package/src/rules/no-sensitive-data-in-analytics/index.js +0 -62
  115. package/src/rules/no-sensitive-data-in-cache/index.d.ts +0 -8
  116. package/src/rules/no-sensitive-data-in-cache/index.js +0 -52
  117. package/src/rules/no-toctou-vulnerability/index.d.ts +0 -7
  118. package/src/rules/no-toctou-vulnerability/index.js +0 -208
  119. package/src/rules/no-tracking-without-consent/index.d.ts +0 -6
  120. package/src/rules/no-tracking-without-consent/index.js +0 -67
  121. package/src/rules/no-unencrypted-transmission/index.d.ts +0 -11
  122. package/src/rules/no-unencrypted-transmission/index.js +0 -236
  123. package/src/rules/no-unescaped-url-parameter/index.d.ts +0 -9
  124. package/src/rules/no-unescaped-url-parameter/index.js +0 -355
  125. package/src/rules/no-unsafe-dynamic-require/index.d.ts +0 -5
  126. package/src/rules/no-unsafe-dynamic-require/index.js +0 -106
  127. package/src/rules/no-unvalidated-deeplinks/index.d.ts +0 -6
  128. package/src/rules/no-unvalidated-deeplinks/index.js +0 -62
  129. package/src/rules/no-unvalidated-user-input/index.d.ts +0 -9
  130. package/src/rules/no-unvalidated-user-input/index.js +0 -420
  131. package/src/rules/no-verbose-error-messages/index.d.ts +0 -8
  132. package/src/rules/no-verbose-error-messages/index.js +0 -68
  133. package/src/rules/no-zip-slip/index.d.ts +0 -9
  134. package/src/rules/no-zip-slip/index.js +0 -445
  135. package/src/rules/require-code-minification/index.d.ts +0 -8
  136. package/src/rules/require-code-minification/index.js +0 -47
  137. package/src/rules/require-csp-headers/index.d.ts +0 -6
  138. package/src/rules/require-csp-headers/index.js +0 -64
  139. package/src/rules/require-data-minimization/index.d.ts +0 -8
  140. package/src/rules/require-data-minimization/index.js +0 -53
  141. package/src/rules/require-dependency-integrity/index.d.ts +0 -6
  142. package/src/rules/require-dependency-integrity/index.js +0 -64
  143. package/src/rules/require-https-only/index.d.ts +0 -8
  144. package/src/rules/require-https-only/index.js +0 -62
  145. package/src/rules/require-mime-type-validation/index.d.ts +0 -6
  146. package/src/rules/require-mime-type-validation/index.js +0 -66
  147. package/src/rules/require-network-timeout/index.d.ts +0 -8
  148. package/src/rules/require-network-timeout/index.js +0 -50
  149. package/src/rules/require-package-lock/index.d.ts +0 -8
  150. package/src/rules/require-package-lock/index.js +0 -63
  151. package/src/rules/require-secure-credential-storage/index.d.ts +0 -8
  152. package/src/rules/require-secure-credential-storage/index.js +0 -50
  153. package/src/rules/require-secure-deletion/index.d.ts +0 -8
  154. package/src/rules/require-secure-deletion/index.js +0 -44
  155. package/src/rules/require-storage-encryption/index.d.ts +0 -8
  156. package/src/rules/require-storage-encryption/index.js +0 -50
  157. package/src/rules/require-url-validation/index.d.ts +0 -6
  158. package/src/rules/require-url-validation/index.js +0 -72
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-secure-coding",
3
- "version": "3.0.0",
3
+ "version": "3.0.2",
4
4
  "description": "Security-focused ESLint plugin with 89 AI-parseable rules for detecting and preventing vulnerabilities. OWASP Top 10 2021 + Mobile Top 10 2024 coverage, CWE references, and AI-assisted fix guidance.",
5
5
  "type": "commonjs",
6
6
  "main": "./src/index.js",
@@ -17,10 +17,10 @@
17
17
  },
18
18
  "author": "Ofri Peretz <ofriperetzdev@gmail.com>",
19
19
  "license": "MIT",
20
- "homepage": "https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-secure-coding/README.md",
20
+ "homepage": "https://github.com/ofri-peretz/eslint/tree/main/packages/eslint-plugin-secure-coding#readme",
21
21
  "repository": {
22
22
  "type": "git",
23
- "url": "git+https://github.com/ofri-peretz/eslint.git",
23
+ "url": "https://github.com/ofri-peretz/eslint",
24
24
  "directory": "packages/eslint-plugin-secure-coding"
25
25
  },
26
26
  "bugs": {
@@ -41,6 +41,7 @@
41
41
  "eslint",
42
42
  "eslint-plugin",
43
43
  "eslintplugin",
44
+ "interlace-security",
44
45
  "security",
45
46
  "secure-coding",
46
47
  "owasp",
@@ -69,8 +70,8 @@
69
70
  "node": ">=18.0.0"
70
71
  },
71
72
  "dependencies": {
72
- "@interlace/eslint-devkit": "^1.2.1",
73
- "tslib": "^2.3.0"
73
+ "tslib": "^2.3.0",
74
+ "@interlace/eslint-devkit": "^1.2.1"
74
75
  },
75
76
  "devDependencies": {
76
77
  "@typescript-eslint/parser": "^8.46.2",
package/src/index.d.ts CHANGED
@@ -1,20 +1,11 @@
1
1
  /**
2
- * eslint-plugin-secure-coding
3
- *
4
- * A comprehensive security-focused ESLint plugin with 48+ rules
5
- * for detecting and preventing security vulnerabilities in JavaScript/TypeScript code.
6
- *
7
- * Features:
8
- * - LLM-optimized error messages with CWE references
9
- * - OWASP Top 10 coverage
10
- * - Auto-fix capabilities where safe
11
- * - Structured context for AI assistants
12
- *
13
- * @see https://github.com/ofri-peretz/eslint#readme
2
+ * Copyright (c) 2025 Ofri Peretz
3
+ * Licensed under the MIT License. Use of this source code is governed by the
4
+ * MIT license that can be found in the LICENSE file.
14
5
  */
15
6
  import { TSESLint } from '@interlace/eslint-devkit';
16
7
  /**
17
- * Collection of all security ESLint rules
8
+ * Collection of all core security ESLint rules
18
9
  */
19
10
  export declare const rules: Record<string, TSESLint.RuleModule<string, readonly unknown[]>>;
20
11
  /**
@@ -29,4 +20,4 @@ export default plugin;
29
20
  /**
30
21
  * Re-export all types from the types barrel
31
22
  */
32
- export type { DetectEvalWithExpressionOptions, DetectChildProcessOptions, NoUnsafeDynamicRequireOptions, NoGraphqlInjectionOptions, NoXxeInjectionOptions, NoXpathInjectionOptions, NoLdapInjectionOptions, NoDirectiveInjectionOptions, NoFormatStringInjectionOptions, DetectNonLiteralFsFilenameOptions, NoZipSlipOptions, NoToctouVulnerabilityOptions, DetectNonLiteralRegexpOptions, NoRedosVulnerableRegexOptions, NoUnsafeRegexConstructionOptions, DetectObjectInjectionOptions, NoUnsafeDeserializationOptions, NoHardcodedCredentialsOptions, NoInsecureComparisonOptions, NoUnvalidatedUserInputOptions, NoUnescapedUrlParameterOptions, NoImproperSanitizationOptions, NoImproperTypeValidationOptions, NoMissingAuthenticationOptions, NoPrivilegeEscalationOptions, NoWeakPasswordRecoveryOptions, NoMissingCsrfProtectionOptions, NoMissingCorsCheckOptions, NoMissingSecurityHeadersOptions, NoInsecureRedirectsOptions, NoUnencryptedTransmissionOptions, NoClickjackingOptions, NoExposedSensitiveDataOptions, NoSensitiveDataExposureOptions, NoBufferOverreadOptions, NoUnlimitedResourceAllocationOptions, NoUncheckedLoopConditionOptions, NoElectronSecurityIssuesOptions, AllSecurityRulesOptions, } from './types/index';
23
+ export type { AllSecurityRulesOptions, } from './types/index';
package/src/index.js CHANGED
@@ -1,34 +1,32 @@
1
1
  "use strict";
2
+ /**
3
+ * Copyright (c) 2025 Ofri Peretz
4
+ * Licensed under the MIT License. Use of this source code is governed by the
5
+ * MIT license that can be found in the LICENSE file.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.configs = exports.plugin = exports.rules = void 0;
2
9
  /**
3
10
  * eslint-plugin-secure-coding
4
11
  *
5
- * A comprehensive security-focused ESLint plugin with 48+ rules
6
- * for detecting and preventing security vulnerabilities in JavaScript/TypeScript code.
12
+ * A comprehensive security-focused ESLint plugin restricted to "pure coding security rules"
13
+ * (logic, AST patterns, and generic vulnerabilities independent of environment).
7
14
  *
8
- * Features:
9
- * - LLM-optimized error messages with CWE references
10
- * - OWASP Top 10 coverage
11
- * - Auto-fix capabilities where safe
12
- * - Structured context for AI assistants
15
+ * Rules focus on:
16
+ * - Language-level logic flaws
17
+ * - AST pattern risks
18
+ * - Generic injection patterns
19
+ * - Cryptographic logic (logic level)
13
20
  *
14
21
  * @see https://github.com/ofri-peretz/eslint#readme
15
22
  */
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.configs = exports.plugin = exports.rules = void 0;
18
23
  // Security rules - Injection
19
- const detect_eval_with_expression_1 = require("./rules/detect-eval-with-expression");
20
- const detect_child_process_1 = require("./rules/detect-child-process");
21
- const no_unsafe_dynamic_require_1 = require("./rules/no-unsafe-dynamic-require");
22
24
  const no_graphql_injection_1 = require("./rules/no-graphql-injection");
23
25
  const no_xxe_injection_1 = require("./rules/no-xxe-injection");
24
26
  const no_xpath_injection_1 = require("./rules/no-xpath-injection");
25
27
  const no_ldap_injection_1 = require("./rules/no-ldap-injection");
26
28
  const no_directive_injection_1 = require("./rules/no-directive-injection");
27
29
  const no_format_string_injection_1 = require("./rules/no-format-string-injection");
28
- // Security rules - Path & File
29
- const detect_non_literal_fs_filename_1 = require("./rules/detect-non-literal-fs-filename");
30
- const no_zip_slip_1 = require("./rules/no-zip-slip");
31
- const no_toctou_vulnerability_1 = require("./rules/no-toctou-vulnerability");
32
30
  // Security rules - Regex
33
31
  const detect_non_literal_regexp_1 = require("./rules/detect-non-literal-regexp");
34
32
  const no_redos_vulnerable_regex_1 = require("./rules/no-redos-vulnerable-regex");
@@ -39,170 +37,53 @@ const no_unsafe_deserialization_1 = require("./rules/no-unsafe-deserialization")
39
37
  // Security rules - Credentials & Crypto
40
38
  const no_hardcoded_credentials_1 = require("./rules/no-hardcoded-credentials");
41
39
  const no_insecure_comparison_1 = require("./rules/no-insecure-comparison");
42
- // Security rules - Input Validation & XSS
43
- const no_unvalidated_user_input_1 = require("./rules/no-unvalidated-user-input");
44
- const no_unescaped_url_parameter_1 = require("./rules/no-unescaped-url-parameter");
40
+ // Security rules - Input Validation
45
41
  const no_improper_sanitization_1 = require("./rules/no-improper-sanitization");
46
42
  const no_improper_type_validation_1 = require("./rules/no-improper-type-validation");
47
43
  // Security rules - Authentication & Authorization
48
44
  const no_missing_authentication_1 = require("./rules/no-missing-authentication");
49
45
  const no_privilege_escalation_1 = require("./rules/no-privilege-escalation");
50
46
  const no_weak_password_recovery_1 = require("./rules/no-weak-password-recovery");
51
- // Security rules - Session & Cookies
52
- const no_missing_csrf_protection_1 = require("./rules/no-missing-csrf-protection");
53
- // Security rules - Network & Headers
54
- const no_missing_cors_check_1 = require("./rules/no-missing-cors-check");
55
- const no_missing_security_headers_1 = require("./rules/no-missing-security-headers");
56
- const no_insecure_redirects_1 = require("./rules/no-insecure-redirects");
57
- const no_unencrypted_transmission_1 = require("./rules/no-unencrypted-transmission");
58
- const no_clickjacking_1 = require("./rules/no-clickjacking");
47
+ const require_backend_authorization_1 = require("./rules/require-backend-authorization");
59
48
  // Security rules - Data Exposure
60
- const no_exposed_sensitive_data_1 = require("./rules/no-exposed-sensitive-data");
61
49
  const no_sensitive_data_exposure_1 = require("./rules/no-sensitive-data-exposure");
62
- // Security rules - Buffer & Memory
63
- const no_buffer_overread_1 = require("./rules/no-buffer-overread");
50
+ const no_pii_in_logs_1 = require("./rules/no-pii-in-logs");
64
51
  // Security rules - Resource & DoS
65
52
  const no_unlimited_resource_allocation_1 = require("./rules/no-unlimited-resource-allocation");
66
53
  const no_unchecked_loop_condition_1 = require("./rules/no-unchecked-loop-condition");
67
- // Security rules - Platform Specific
68
- const no_electron_security_issues_1 = require("./rules/no-electron-security-issues");
69
- // OWASP Mobile Top 10 2023/2024 - Mobile Security Rules (40 rules)
70
- // M1: Improper Credential Usage (3 rules)
71
- const no_credentials_in_query_params_1 = require("./rules/no-credentials-in-query-params");
72
- const require_secure_credential_storage_1 = require("./rules/require-secure-credential-storage");
73
- // M2: Inadequate Supply Chain Security (4 rules)
74
- const require_dependency_integrity_1 = require("./rules/require-dependency-integrity");
75
- const detect_suspicious_dependencies_1 = require("./rules/detect-suspicious-dependencies");
76
- const no_dynamic_dependency_loading_1 = require("./rules/no-dynamic-dependency-loading");
77
- const require_package_lock_1 = require("./rules/require-package-lock");
78
- // M3: Insecure Authentication/Authorization (5 rules)
79
- const no_client_side_auth_logic_1 = require("./rules/no-client-side-auth-logic");
80
- const require_backend_authorization_1 = require("./rules/require-backend-authorization");
81
- const no_hardcoded_session_tokens_1 = require("./rules/no-hardcoded-session-tokens");
82
- const detect_weak_password_validation_1 = require("./rules/detect-weak-password-validation");
83
- const no_password_in_url_1 = require("./rules/no-password-in-url");
84
- // M4: Insufficient Input/Output Validation (6 rules)
85
- const no_unvalidated_deeplinks_1 = require("./rules/no-unvalidated-deeplinks");
86
- const require_url_validation_1 = require("./rules/require-url-validation");
87
- const no_arbitrary_file_access_1 = require("./rules/no-arbitrary-file-access");
88
- const require_mime_type_validation_1 = require("./rules/require-mime-type-validation");
89
- const require_csp_headers_1 = require("./rules/require-csp-headers");
90
- // M5: Insecure Communication (7 rules)
91
- const no_http_urls_1 = require("./rules/no-http-urls");
92
- const no_disabled_certificate_validation_1 = require("./rules/no-disabled-certificate-validation");
93
- const require_https_only_1 = require("./rules/require-https-only");
94
- const no_insecure_websocket_1 = require("./rules/no-insecure-websocket");
95
- const detect_mixed_content_1 = require("./rules/detect-mixed-content");
96
- const no_allow_arbitrary_loads_1 = require("./rules/no-allow-arbitrary-loads");
97
- const require_network_timeout_1 = require("./rules/require-network-timeout");
98
- // M6: Inadequate Privacy Controls (4 rules)
99
- const no_pii_in_logs_1 = require("./rules/no-pii-in-logs");
100
- const no_tracking_without_consent_1 = require("./rules/no-tracking-without-consent");
101
- const require_data_minimization_1 = require("./rules/require-data-minimization");
102
- const no_sensitive_data_in_analytics_1 = require("./rules/no-sensitive-data-in-analytics");
103
- // M7: Insufficient Binary Protections (2 rules)
104
- const no_debug_code_in_production_1 = require("./rules/no-debug-code-in-production");
105
- const require_code_minification_1 = require("./rules/require-code-minification");
106
- // M8: Security Misconfiguration (4 rules)
107
- const no_verbose_error_messages_1 = require("./rules/no-verbose-error-messages");
108
- const no_exposed_debug_endpoints_1 = require("./rules/no-exposed-debug-endpoints");
109
- const require_secure_defaults_1 = require("./rules/require-secure-defaults");
110
- const no_permissive_cors_1 = require("./rules/no-permissive-cors");
111
- // M9: Insecure Data Storage (5 rules)
112
- const no_sensitive_data_in_cache_1 = require("./rules/no-sensitive-data-in-cache");
113
- const require_storage_encryption_1 = require("./rules/require-storage-encryption");
114
- const no_data_in_temp_storage_1 = require("./rules/no-data-in-temp-storage");
115
- const require_secure_deletion_1 = require("./rules/require-secure-deletion");
116
54
  /**
117
- * Collection of all security ESLint rules
55
+ * Collection of all core security ESLint rules
118
56
  */
119
57
  exports.rules = {
120
- // Flat rule names (recommended usage)
121
- 'detect-eval-with-expression': detect_eval_with_expression_1.detectEvalWithExpression,
122
- 'detect-child-process': detect_child_process_1.detectChildProcess,
123
- 'no-unsafe-dynamic-require': no_unsafe_dynamic_require_1.noUnsafeDynamicRequire,
58
+ // Fundamental Injection (6 rules)
124
59
  'no-graphql-injection': no_graphql_injection_1.noGraphqlInjection,
125
60
  'no-xxe-injection': no_xxe_injection_1.noXxeInjection,
126
61
  'no-xpath-injection': no_xpath_injection_1.noXpathInjection,
127
62
  'no-ldap-injection': no_ldap_injection_1.noLdapInjection,
128
63
  'no-directive-injection': no_directive_injection_1.noDirectiveInjection,
129
64
  'no-format-string-injection': no_format_string_injection_1.noFormatStringInjection,
130
- 'detect-non-literal-fs-filename': detect_non_literal_fs_filename_1.detectNonLiteralFsFilename,
131
- 'no-zip-slip': no_zip_slip_1.noZipSlip,
132
- 'no-toctou-vulnerability': no_toctou_vulnerability_1.noToctouVulnerability,
65
+ // Regex Safety & Stability (3 rules)
133
66
  'detect-non-literal-regexp': detect_non_literal_regexp_1.detectNonLiteralRegexp,
134
67
  'no-redos-vulnerable-regex': no_redos_vulnerable_regex_1.noRedosVulnerableRegex,
135
68
  'no-unsafe-regex-construction': no_unsafe_regex_construction_1.noUnsafeRegexConstruction,
69
+ // Data & Logic Integrity (5 rules)
136
70
  'detect-object-injection': detect_object_injection_1.detectObjectInjection,
137
71
  'no-unsafe-deserialization': no_unsafe_deserialization_1.noUnsafeDeserialization,
138
- 'no-hardcoded-credentials': no_hardcoded_credentials_1.noHardcodedCredentials,
139
72
  'no-insecure-comparison': no_insecure_comparison_1.noInsecureComparison,
140
- 'no-unvalidated-user-input': no_unvalidated_user_input_1.noUnvalidatedUserInput,
141
- 'no-unescaped-url-parameter': no_unescaped_url_parameter_1.noUnescapedUrlParameter,
142
73
  'no-improper-sanitization': no_improper_sanitization_1.noImproperSanitization,
143
74
  'no-improper-type-validation': no_improper_type_validation_1.noImproperTypeValidation,
75
+ // Auth/Access Logic (4 rules)
144
76
  'no-missing-authentication': no_missing_authentication_1.noMissingAuthentication,
145
77
  'no-privilege-escalation': no_privilege_escalation_1.noPrivilegeEscalation,
146
78
  'no-weak-password-recovery': no_weak_password_recovery_1.noWeakPasswordRecovery,
147
- 'no-missing-csrf-protection': no_missing_csrf_protection_1.noMissingCsrfProtection,
148
- 'no-missing-cors-check': no_missing_cors_check_1.noMissingCorsCheck,
149
- 'no-missing-security-headers': no_missing_security_headers_1.noMissingSecurityHeaders,
150
- 'no-insecure-redirects': no_insecure_redirects_1.noInsecureRedirects,
151
- 'no-unencrypted-transmission': no_unencrypted_transmission_1.noUnencryptedTransmission,
152
- 'no-clickjacking': no_clickjacking_1.noClickjacking,
153
- 'no-exposed-sensitive-data': no_exposed_sensitive_data_1.noExposedSensitiveData,
79
+ 'require-backend-authorization': require_backend_authorization_1.requireBackendAuthorization,
80
+ // Secrets & Exposure (3 rules)
81
+ 'no-hardcoded-credentials': no_hardcoded_credentials_1.noHardcodedCredentials,
154
82
  'no-sensitive-data-exposure': no_sensitive_data_exposure_1.noSensitiveDataExposure,
155
- 'no-buffer-overread': no_buffer_overread_1.noBufferOverread,
83
+ 'no-pii-in-logs': no_pii_in_logs_1.noPiiInLogs,
84
+ // Resource Handling (2 rules)
156
85
  'no-unlimited-resource-allocation': no_unlimited_resource_allocation_1.noUnlimitedResourceAllocation,
157
86
  'no-unchecked-loop-condition': no_unchecked_loop_condition_1.noUncheckedLoopCondition,
158
- 'no-electron-security-issues': no_electron_security_issues_1.noElectronSecurityIssues,
159
- // OWASP Mobile Top 10 2023/2024 rules (40 rules)
160
- // M1: Improper Credential Usage (3 rules)
161
- 'no-credentials-in-query-params': no_credentials_in_query_params_1.noCredentialsInQueryParams,
162
- 'require-secure-credential-storage': require_secure_credential_storage_1.requireSecureCredentialStorage,
163
- // M2: Inadequate Supply Chain Security (4 rules)
164
- 'require-dependency-integrity': require_dependency_integrity_1.requireDependencyIntegrity,
165
- 'detect-suspicious-dependencies': detect_suspicious_dependencies_1.detectSuspiciousDependencies,
166
- 'no-dynamic-dependency-loading': no_dynamic_dependency_loading_1.noDynamicDependencyLoading,
167
- 'require-package-lock': require_package_lock_1.requirePackageLock,
168
- // M3: Insecure Authentication/Authorization (5 rules)
169
- 'no-client-side-auth-logic': no_client_side_auth_logic_1.noClientSideAuthLogic,
170
- 'require-backend-authorization': require_backend_authorization_1.requireBackendAuthorization,
171
- 'no-hardcoded-session-tokens': no_hardcoded_session_tokens_1.noHardcodedSessionTokens,
172
- 'detect-weak-password-validation': detect_weak_password_validation_1.detectWeakPasswordValidation,
173
- 'no-password-in-url': no_password_in_url_1.noPasswordInUrl,
174
- // M4: Insufficient Input/Output Validation (6 rules)
175
- 'no-unvalidated-deeplinks': no_unvalidated_deeplinks_1.noUnvalidatedDeeplinks,
176
- 'require-url-validation': require_url_validation_1.requireUrlValidation,
177
- 'no-arbitrary-file-access': no_arbitrary_file_access_1.noArbitraryFileAccess,
178
- 'require-mime-type-validation': require_mime_type_validation_1.requireMimeTypeValidation,
179
- 'require-csp-headers': require_csp_headers_1.requireCspHeaders,
180
- // M5: Insecure Communication (7 rules)
181
- 'no-http-urls': no_http_urls_1.noHttpUrls,
182
- 'no-disabled-certificate-validation': no_disabled_certificate_validation_1.noDisabledCertificateValidation,
183
- 'require-https-only': require_https_only_1.requireHttpsOnly,
184
- 'no-insecure-websocket': no_insecure_websocket_1.noInsecureWebsocket,
185
- 'detect-mixed-content': detect_mixed_content_1.detectMixedContent,
186
- 'no-allow-arbitrary-loads': no_allow_arbitrary_loads_1.noAllowArbitraryLoads,
187
- 'require-network-timeout': require_network_timeout_1.requireNetworkTimeout,
188
- // M6: Inadequate Privacy Controls (4 rules)
189
- 'no-pii-in-logs': no_pii_in_logs_1.noPiiInLogs,
190
- 'no-tracking-without-consent': no_tracking_without_consent_1.noTrackingWithoutConsent,
191
- 'require-data-minimization': require_data_minimization_1.requireDataMinimization,
192
- 'no-sensitive-data-in-analytics': no_sensitive_data_in_analytics_1.noSensitiveDataInAnalytics,
193
- // M7: Insufficient Binary Protections (2 rules)
194
- 'no-debug-code-in-production': no_debug_code_in_production_1.noDebugCodeInProduction,
195
- 'require-code-minification': require_code_minification_1.requireCodeMinification,
196
- // M8: Security Misconfiguration (4 rules)
197
- 'no-verbose-error-messages': no_verbose_error_messages_1.noVerboseErrorMessages,
198
- 'no-exposed-debug-endpoints': no_exposed_debug_endpoints_1.noExposedDebugEndpoints,
199
- 'require-secure-defaults': require_secure_defaults_1.requireSecureDefaults,
200
- 'no-permissive-cors': no_permissive_cors_1.noPermissiveCors,
201
- // M9: Insecure Data Storage (5 rules)
202
- 'no-sensitive-data-in-cache': no_sensitive_data_in_cache_1.noSensitiveDataInCache,
203
- 'require-storage-encryption': require_storage_encryption_1.requireStorageEncryption,
204
- 'no-data-in-temp-storage': no_data_in_temp_storage_1.noDataInTempStorage,
205
- 'require-secure-deletion': require_secure_deletion_1.requireSecureDeletion,
206
87
  };
207
88
  /**
208
89
  * ESLint Plugin object
@@ -210,7 +91,7 @@ exports.rules = {
210
91
  exports.plugin = {
211
92
  meta: {
212
93
  name: 'eslint-plugin-secure-coding',
213
- version: '1.0.0',
94
+ version: '1.1.0',
214
95
  },
215
96
  rules: exports.rules,
216
97
  };
@@ -218,20 +99,11 @@ exports.plugin = {
218
99
  * Preset configurations for security rules
219
100
  */
220
101
  const recommendedRules = {
221
- // Critical - Injection vulnerabilities (OWASP A03)
222
- 'secure-coding/detect-eval-with-expression': 'error',
223
- 'secure-coding/detect-child-process': 'error',
224
- 'secure-coding/no-unsafe-dynamic-require': 'error',
102
+ // Critical - Injection vulnerabilities
225
103
  'secure-coding/no-graphql-injection': 'error',
226
104
  'secure-coding/no-xxe-injection': 'error',
227
105
  'secure-coding/no-xpath-injection': 'error',
228
106
  'secure-coding/no-ldap-injection': 'error',
229
- 'secure-coding/no-directive-injection': 'error',
230
- 'secure-coding/no-format-string-injection': 'error',
231
- // Critical - Path traversal & file operations
232
- 'secure-coding/detect-non-literal-fs-filename': 'error',
233
- 'secure-coding/no-zip-slip': 'error',
234
- 'secure-coding/no-toctou-vulnerability': 'error',
235
107
  // Critical - Deserialization
236
108
  'secure-coding/no-unsafe-deserialization': 'error',
237
109
  // High - Regex vulnerabilities
@@ -240,55 +112,26 @@ const recommendedRules = {
240
112
  'secure-coding/no-unsafe-regex-construction': 'warn',
241
113
  // High - Prototype pollution
242
114
  'secure-coding/detect-object-injection': 'warn',
243
- // Critical - Cryptography (OWASP A02)
115
+ // Critical - Credentials
244
116
  'secure-coding/no-hardcoded-credentials': 'error',
245
117
  'secure-coding/no-insecure-comparison': 'warn',
246
- // Critical - XSS vulnerabilities (OWASP A03)
247
- 'secure-coding/no-unvalidated-user-input': 'warn',
248
- 'secure-coding/no-unescaped-url-parameter': 'warn',
118
+ // Critical - Data integrity
249
119
  'secure-coding/no-improper-sanitization': 'error',
250
- 'secure-coding/no-improper-type-validation': 'warn',
251
- // High - Authentication & Authorization (OWASP A01, A07)
120
+ // High - Logic
252
121
  'secure-coding/no-missing-authentication': 'warn',
253
122
  'secure-coding/no-privilege-escalation': 'warn',
254
123
  'secure-coding/no-weak-password-recovery': 'error',
255
- // High - Session & Cookies
256
- 'secure-coding/no-missing-csrf-protection': 'warn',
257
- // High - Network & Headers (OWASP A05)
258
- 'secure-coding/no-missing-cors-check': 'warn',
259
- 'secure-coding/no-missing-security-headers': 'warn',
260
- 'secure-coding/no-insecure-redirects': 'warn',
261
- 'secure-coding/no-unencrypted-transmission': 'warn',
262
- 'secure-coding/no-clickjacking': 'error',
263
- // High - Data Exposure (OWASP A01)
264
- 'secure-coding/no-exposed-sensitive-data': 'error',
124
+ // High - Exposure
265
125
  'secure-coding/no-sensitive-data-exposure': 'warn',
266
- // Medium - Buffer & Memory
267
- 'secure-coding/no-buffer-overread': 'error',
268
126
  // Medium - Resource & DoS
269
127
  'secure-coding/no-unlimited-resource-allocation': 'error',
270
128
  'secure-coding/no-unchecked-loop-condition': 'error',
271
- // Medium - Platform specific
272
- 'secure-coding/no-electron-security-issues': 'error',
273
- // Mobile & General Security (OWASP Mobile)
274
- 'secure-coding/no-credentials-in-query-params': 'error',
275
- 'secure-coding/no-http-urls': 'error',
276
- 'secure-coding/require-https-only': 'error',
277
- 'secure-coding/no-pii-in-logs': 'warn',
278
- 'secure-coding/no-verbose-error-messages': 'warn',
279
- 'secure-coding/no-hardcoded-session-tokens': 'error',
280
- 'secure-coding/detect-mixed-content': 'error',
281
- 'secure-coding/no-unvalidated-deeplinks': 'error',
282
- 'secure-coding/no-insecure-websocket': 'error',
283
- 'secure-coding/detect-suspicious-dependencies': 'warn',
284
129
  };
285
130
  exports.configs = {
286
131
  /**
287
132
  * Recommended security configuration
288
133
  *
289
- * Enables all security rules with sensible severity levels:
290
- * - Critical injection vulnerabilities as errors
291
- * - Important security issues as warnings
134
+ * Enables all core security rules with sensible severity levels.
292
135
  */
293
136
  recommended: {
294
137
  plugins: {
@@ -299,7 +142,7 @@ exports.configs = {
299
142
  /**
300
143
  * Strict security configuration
301
144
  *
302
- * All security rules set to 'error' for maximum protection
145
+ * All security rules set to 'error' for maximum protection.
303
146
  */
304
147
  strict: {
305
148
  plugins: {
@@ -310,7 +153,7 @@ exports.configs = {
310
153
  /**
311
154
  * OWASP Top 10 focused configuration
312
155
  *
313
- * Rules mapped to OWASP Top 10 2021 categories
156
+ * Rules mapped to OWASP Top 10 2021 categories.
314
157
  */
315
158
  'owasp-top-10': {
316
159
  plugins: {
@@ -320,93 +163,21 @@ exports.configs = {
320
163
  // A01:2021 – Broken Access Control
321
164
  'secure-coding/no-missing-authentication': 'error',
322
165
  'secure-coding/no-privilege-escalation': 'error',
323
- 'secure-coding/no-exposed-sensitive-data': 'error',
324
- 'secure-coding/no-insecure-redirects': 'error',
325
166
  // A02:2021 – Cryptographic Failures
326
167
  'secure-coding/no-hardcoded-credentials': 'error',
327
- 'secure-coding/no-unencrypted-transmission': 'error',
328
168
  'secure-coding/no-sensitive-data-exposure': 'error',
329
169
  // A03:2021 – Injection
330
- 'secure-coding/detect-eval-with-expression': 'error',
331
- 'secure-coding/detect-child-process': 'error',
332
170
  'secure-coding/no-graphql-injection': 'error',
333
171
  'secure-coding/no-xxe-injection': 'error',
334
172
  'secure-coding/no-xpath-injection': 'error',
335
173
  'secure-coding/no-ldap-injection': 'error',
336
- 'secure-coding/no-unescaped-url-parameter': 'error',
337
174
  // A04:2021 – Insecure Design
338
175
  'secure-coding/no-weak-password-recovery': 'error',
339
176
  'secure-coding/no-improper-type-validation': 'error',
340
- // A05:2021 – Security Misconfiguration
341
- 'secure-coding/no-missing-security-headers': 'error',
342
- 'secure-coding/no-missing-cors-check': 'error',
343
- 'secure-coding/no-clickjacking': 'error',
344
- 'secure-coding/no-electron-security-issues': 'error',
345
177
  // A07:2021 – Identification and Authentication Failures
346
178
  'secure-coding/no-insecure-comparison': 'error',
347
- 'secure-coding/no-missing-csrf-protection': 'error',
348
179
  // A08:2021 – Software and Data Integrity Failures
349
180
  'secure-coding/no-unsafe-deserialization': 'error',
350
- 'secure-coding/no-unsafe-dynamic-require': 'error',
351
- },
352
- },
353
- /**
354
- * OWASP Mobile Top 10 focused configuration
355
- *
356
- * Rules mapped to OWASP Mobile Top 10 2024 categories
357
- */
358
- 'owasp-mobile-top-10': {
359
- plugins: {
360
- 'secure-coding': exports.plugin,
361
- },
362
- rules: {
363
- // M1: Improper Credential Usage
364
- 'secure-coding/no-credentials-in-query-params': 'error',
365
- 'secure-coding/require-secure-credential-storage': 'error',
366
- 'secure-coding/no-hardcoded-credentials': 'error',
367
- // M2: Inadequate Supply Chain Security
368
- 'secure-coding/require-dependency-integrity': 'error',
369
- 'secure-coding/detect-suspicious-dependencies': 'error',
370
- 'secure-coding/no-dynamic-dependency-loading': 'error',
371
- 'secure-coding/require-package-lock': 'error',
372
- // M3: Insecure Authentication/Authorization
373
- 'secure-coding/no-client-side-auth-logic': 'error',
374
- 'secure-coding/require-backend-authorization': 'error',
375
- 'secure-coding/no-hardcoded-session-tokens': 'error',
376
- 'secure-coding/detect-weak-password-validation': 'error',
377
- 'secure-coding/no-password-in-url': 'error',
378
- // M4: Insufficient Input/Output Validation
379
- 'secure-coding/no-unvalidated-deeplinks': 'error',
380
- 'secure-coding/require-url-validation': 'error',
381
- 'secure-coding/no-arbitrary-file-access': 'error',
382
- 'secure-coding/require-mime-type-validation': 'error',
383
- 'secure-coding/require-csp-headers': 'error',
384
- // M5: Insecure Communication
385
- 'secure-coding/no-http-urls': 'error',
386
- 'secure-coding/no-disabled-certificate-validation': 'error',
387
- 'secure-coding/require-https-only': 'error',
388
- 'secure-coding/no-insecure-websocket': 'error',
389
- 'secure-coding/detect-mixed-content': 'error',
390
- 'secure-coding/no-allow-arbitrary-loads': 'error',
391
- 'secure-coding/require-network-timeout': 'error',
392
- // M6: Inadequate Privacy Controls
393
- 'secure-coding/no-pii-in-logs': 'error',
394
- 'secure-coding/no-tracking-without-consent': 'error',
395
- 'secure-coding/require-data-minimization': 'error',
396
- 'secure-coding/no-sensitive-data-in-analytics': 'error',
397
- // M7: Insufficient Binary Protections
398
- 'secure-coding/no-debug-code-in-production': 'error',
399
- 'secure-coding/require-code-minification': 'error',
400
- // M8: Security Misconfiguration
401
- 'secure-coding/no-verbose-error-messages': 'error',
402
- 'secure-coding/no-exposed-debug-endpoints': 'error',
403
- 'secure-coding/require-secure-defaults': 'error',
404
- 'secure-coding/no-permissive-cors': 'error',
405
- // M9: Insecure Data Storage
406
- 'secure-coding/no-sensitive-data-in-cache': 'error',
407
- 'secure-coding/require-storage-encryption': 'error',
408
- 'secure-coding/no-data-in-temp-storage': 'error',
409
- 'secure-coding/require-secure-deletion': 'error',
410
181
  },
411
182
  },
412
183
  };
@@ -1,3 +1,18 @@
1
+ /**
2
+ * Copyright (c) 2025 Ofri Peretz
3
+ * Licensed under the MIT License. Use of this source code is governed by the
4
+ * MIT license that can be found in the LICENSE file.
5
+ */
6
+ /**
7
+ * ESLint Rule: detect-non-literal-regexp
8
+ * Detects RegExp(variable), which might allow an attacker to DOS your server with a long-running regular expression
9
+ * LLM-optimized with comprehensive ReDoS prevention guidance
10
+ *
11
+ * @see https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS
12
+ * @see https://cwe.mitre.org/data/definitions/400.html
13
+ */
14
+ import type { TSESLint } from '@interlace/eslint-devkit';
15
+ type MessageIds = 'regexpReDoS' | 'useStaticRegex' | 'validateInput' | 'useRegexLibrary' | 'addTimeout' | 'escapeUserInput';
1
16
  export interface Options {
2
17
  /** Allow literal string regex patterns. Default: false (stricter) */
3
18
  allowLiterals?: boolean;
@@ -6,4 +21,8 @@ export interface Options {
6
21
  /** Maximum allowed pattern length for dynamic regex */
7
22
  maxPatternLength?: number;
8
23
  }
9
- export declare const detectNonLiteralRegexp: ESLintUtils.RuleModule<MessageIds, Options, unknown, ESLintUtils.RuleListener>;
24
+ type RuleOptions = [Options?];
25
+ export declare const detectNonLiteralRegexp: TSESLint.RuleModule<MessageIds, RuleOptions, unknown, TSESLint.RuleListener> & {
26
+ name: string;
27
+ };
28
+ export {};
@@ -1,4 +1,9 @@
1
1
  "use strict";
2
+ /**
3
+ * Copyright (c) 2025 Ofri Peretz
4
+ * Licensed under the MIT License. Use of this source code is governed by the
5
+ * MIT license that can be found in the LICENSE file.
6
+ */
2
7
  Object.defineProperty(exports, "__esModule", { value: true });
3
8
  exports.detectNonLiteralRegexp = void 0;
4
9
  const eslint_devkit_1 = require("@interlace/eslint-devkit");
@@ -1,3 +1,23 @@
1
+ /**
2
+ * Copyright (c) 2025 Ofri Peretz
3
+ * Licensed under the MIT License. Use of this source code is governed by the
4
+ * MIT license that can be found in the LICENSE file.
5
+ */
6
+ /**
7
+ * ESLint Rule: detect-object-injection
8
+ * Detects variable[key] as a left- or right-hand assignment operand (prototype pollution)
9
+ * LLM-optimized with comprehensive object injection prevention guidance
10
+ *
11
+ * Type-Aware Enhancement:
12
+ * This rule uses TypeScript type information when available to reduce false positives.
13
+ * If a property key is constrained to a union of string literals (e.g., 'name' | 'email'),
14
+ * the access is considered safe because the values are statically known at compile time.
15
+ *
16
+ * @see https://portswigger.net/web-security/prototype-pollution
17
+ * @see https://cwe.mitre.org/data/definitions/915.html
18
+ */
19
+ import { TSESLint } from '@interlace/eslint-devkit';
20
+ type MessageIds = 'objectInjection' | 'useMapInstead' | 'useHasOwnProperty' | 'whitelistKeys' | 'useObjectCreate' | 'freezePrototypes' | 'strategyValidate' | 'strategyWhitelist' | 'strategyFreeze';
1
21
  export interface Options {
2
22
  /** Allow bracket notation with literal strings. Default: false (stricter) */
3
23
  allowLiterals?: boolean;
@@ -8,4 +28,8 @@ export interface Options {
8
28
  /** Strategy for fixing object injection: 'validate', 'whitelist', 'freeze', or 'auto' */
9
29
  strategy?: 'validate' | 'whitelist' | 'freeze' | 'auto';
10
30
  }
11
- export declare const detectObjectInjection: ESLintUtils.RuleModule<MessageIds, Options, unknown, ESLintUtils.RuleListener>;
31
+ type RuleOptions = [Options?];
32
+ export declare const detectObjectInjection: TSESLint.RuleModule<MessageIds, RuleOptions, unknown, TSESLint.RuleListener> & {
33
+ name: string;
34
+ };
35
+ export {};
@@ -1,4 +1,9 @@
1
1
  "use strict";
2
+ /**
3
+ * Copyright (c) 2025 Ofri Peretz
4
+ * Licensed under the MIT License. Use of this source code is governed by the
5
+ * MIT license that can be found in the LICENSE file.
6
+ */
2
7
  Object.defineProperty(exports, "__esModule", { value: true });
3
8
  exports.detectObjectInjection = void 0;
4
9
  /**
@@ -1,6 +1,12 @@
1
1
  /**
2
- * @fileoverview Identify weak password requirements
2
+ * Copyright (c) 2025 Ofri Peretz
3
+ * Licensed under the MIT License. Use of this source code is governed by the
4
+ * MIT license that can be found in the LICENSE file.
3
5
  */
4
6
  export interface Options {
5
7
  }
6
- export declare const detectWeakPasswordValidation: ESLintUtils.RuleModule<MessageIds, Options, unknown, ESLintUtils.RuleListener>;
8
+ type RuleOptions = [Options?];
9
+ export declare const detectWeakPasswordValidation: import("@typescript-eslint/utils/ts-eslint").RuleModule<"violationDetected", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
10
+ name: string;
11
+ };
12
+ export {};
@@ -1,9 +1,14 @@
1
1
  "use strict";
2
2
  /**
3
- * @fileoverview Identify weak password requirements
3
+ * Copyright (c) 2025 Ofri Peretz
4
+ * Licensed under the MIT License. Use of this source code is governed by the
5
+ * MIT license that can be found in the LICENSE file.
4
6
  */
5
7
  Object.defineProperty(exports, "__esModule", { value: true });
6
8
  exports.detectWeakPasswordValidation = void 0;
9
+ /**
10
+ * @fileoverview Identify weak password requirements
11
+ */
7
12
  const eslint_devkit_1 = require("@interlace/eslint-devkit");
8
13
  exports.detectWeakPasswordValidation = (0, eslint_devkit_1.createRule)({
9
14
  name: 'detect-weak-password-validation',