eslint-plugin-secure-coding 2.4.0 → 3.0.1
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/CHANGELOG.md +1 -1
- package/README.md +149 -315
- package/package.json +1 -1
- package/src/index.d.ts +3 -12
- package/src/index.js +7 -2
- package/src/rules/detect-child-process/index.d.ts +18 -1
- package/src/rules/detect-child-process/index.js +5 -0
- package/src/rules/detect-eval-with-expression/index.d.ts +18 -1
- package/src/rules/detect-eval-with-expression/index.js +5 -0
- package/src/rules/detect-mixed-content/index.d.ts +6 -4
- package/src/rules/detect-mixed-content/index.js +7 -6
- package/src/rules/detect-non-literal-fs-filename/index.d.ts +18 -1
- package/src/rules/detect-non-literal-fs-filename/index.js +5 -0
- package/src/rules/detect-non-literal-regexp/index.d.ts +18 -1
- package/src/rules/detect-non-literal-regexp/index.js +5 -0
- package/src/rules/detect-object-injection/index.d.ts +23 -1
- package/src/rules/detect-object-injection/index.js +5 -0
- package/src/rules/detect-suspicious-dependencies/index.d.ts +6 -4
- package/src/rules/detect-suspicious-dependencies/index.js +7 -2
- package/src/rules/detect-weak-password-validation/index.d.ts +6 -2
- package/src/rules/detect-weak-password-validation/index.js +6 -1
- package/src/rules/no-allow-arbitrary-loads/index.d.ts +6 -4
- package/src/rules/no-allow-arbitrary-loads/index.js +7 -6
- package/src/rules/no-arbitrary-file-access/index.d.ts +6 -9
- package/src/rules/no-arbitrary-file-access/index.js +7 -2
- package/src/rules/no-buffer-overread/index.d.ts +10 -2
- package/src/rules/no-buffer-overread/index.js +5 -0
- package/src/rules/no-clickjacking/index.d.ts +25 -1
- package/src/rules/no-clickjacking/index.js +5 -0
- package/src/rules/no-client-side-auth-logic/index.d.ts +6 -2
- package/src/rules/no-client-side-auth-logic/index.js +6 -1
- package/src/rules/no-credentials-in-query-params/index.d.ts +6 -4
- package/src/rules/no-credentials-in-query-params/index.js +7 -2
- package/src/rules/no-data-in-temp-storage/index.d.ts +6 -2
- package/src/rules/no-data-in-temp-storage/index.js +6 -1
- package/src/rules/no-debug-code-in-production/index.d.ts +6 -4
- package/src/rules/no-debug-code-in-production/index.js +10 -7
- package/src/rules/no-directive-injection/index.d.ts +25 -1
- package/src/rules/no-directive-injection/index.js +5 -0
- package/src/rules/no-disabled-certificate-validation/index.d.ts +6 -2
- package/src/rules/no-disabled-certificate-validation/index.js +6 -1
- package/src/rules/no-dynamic-dependency-loading/index.d.ts +6 -4
- package/src/rules/no-dynamic-dependency-loading/index.js +10 -7
- package/src/rules/no-electron-security-issues/index.d.ts +25 -1
- package/src/rules/no-electron-security-issues/index.js +5 -0
- package/src/rules/no-exposed-debug-endpoints/index.d.ts +6 -2
- package/src/rules/no-exposed-debug-endpoints/index.js +6 -1
- package/src/rules/no-exposed-sensitive-data/index.d.ts +18 -1
- package/src/rules/no-exposed-sensitive-data/index.js +5 -0
- package/src/rules/no-format-string-injection/index.d.ts +26 -1
- package/src/rules/no-format-string-injection/index.js +5 -0
- package/src/rules/no-graphql-injection/index.d.ts +27 -1
- package/src/rules/no-graphql-injection/index.js +5 -0
- package/src/rules/no-hardcoded-credentials/index.d.ts +17 -1
- package/src/rules/no-hardcoded-credentials/index.js +5 -0
- package/src/rules/no-hardcoded-session-tokens/index.d.ts +6 -2
- package/src/rules/no-hardcoded-session-tokens/index.js +6 -1
- package/src/rules/no-http-urls/index.d.ts +7 -4
- package/src/rules/no-http-urls/index.js +7 -2
- package/src/rules/no-improper-sanitization/index.d.ts +25 -1
- package/src/rules/no-improper-sanitization/index.js +5 -0
- package/src/rules/no-improper-type-validation/index.d.ts +25 -1
- package/src/rules/no-improper-type-validation/index.js +5 -0
- package/src/rules/no-insecure-comparison/index.d.ts +18 -1
- package/src/rules/no-insecure-comparison/index.js +5 -0
- package/src/rules/no-insecure-redirects/index.d.ts +18 -1
- package/src/rules/no-insecure-redirects/index.js +5 -0
- package/src/rules/no-insecure-websocket/index.d.ts +6 -2
- package/src/rules/no-insecure-websocket/index.js +6 -1
- package/src/rules/no-ldap-injection/index.d.ts +28 -1
- package/src/rules/no-ldap-injection/index.js +5 -0
- package/src/rules/no-missing-authentication/index.d.ts +18 -1
- package/src/rules/no-missing-authentication/index.js +5 -0
- package/src/rules/no-missing-cors-check/index.d.ts +18 -1
- package/src/rules/no-missing-cors-check/index.js +5 -0
- package/src/rules/no-missing-csrf-protection/index.d.ts +18 -1
- package/src/rules/no-missing-csrf-protection/index.js +5 -0
- package/src/rules/no-missing-security-headers/index.d.ts +18 -1
- package/src/rules/no-missing-security-headers/index.js +5 -0
- package/src/rules/no-password-in-url/index.d.ts +6 -4
- package/src/rules/no-password-in-url/index.js +7 -6
- package/src/rules/no-permissive-cors/index.d.ts +6 -4
- package/src/rules/no-permissive-cors/index.js +22 -13
- package/src/rules/no-pii-in-logs/index.d.ts +6 -4
- package/src/rules/no-pii-in-logs/index.js +15 -12
- package/src/rules/no-privilege-escalation/index.d.ts +18 -1
- package/src/rules/no-privilege-escalation/index.js +5 -0
- package/src/rules/no-redos-vulnerable-regex/index.d.ts +20 -1
- package/src/rules/no-redos-vulnerable-regex/index.js +5 -0
- package/src/rules/no-sensitive-data-exposure/index.d.ts +18 -1
- package/src/rules/no-sensitive-data-exposure/index.js +5 -0
- package/src/rules/no-sensitive-data-in-analytics/index.d.ts +6 -4
- package/src/rules/no-sensitive-data-in-analytics/index.js +15 -11
- package/src/rules/no-sensitive-data-in-cache/index.d.ts +6 -4
- package/src/rules/no-sensitive-data-in-cache/index.js +7 -6
- package/src/rules/no-toctou-vulnerability/index.d.ts +18 -1
- package/src/rules/no-toctou-vulnerability/index.js +5 -0
- package/src/rules/no-tracking-without-consent/index.d.ts +6 -2
- package/src/rules/no-tracking-without-consent/index.js +6 -1
- package/src/rules/no-unchecked-loop-condition/index.d.ts +25 -1
- package/src/rules/no-unchecked-loop-condition/index.js +5 -0
- package/src/rules/no-unencrypted-transmission/index.d.ts +18 -1
- package/src/rules/no-unencrypted-transmission/index.js +5 -0
- package/src/rules/no-unescaped-url-parameter/index.d.ts +18 -1
- package/src/rules/no-unescaped-url-parameter/index.js +5 -0
- package/src/rules/no-unlimited-resource-allocation/index.d.ts +25 -1
- package/src/rules/no-unlimited-resource-allocation/index.js +5 -0
- package/src/rules/no-unsafe-deserialization/index.d.ts +29 -1
- package/src/rules/no-unsafe-deserialization/index.js +5 -0
- package/src/rules/no-unsafe-dynamic-require/index.d.ts +13 -1
- package/src/rules/no-unsafe-dynamic-require/index.js +5 -0
- package/src/rules/no-unsafe-regex-construction/index.d.ts +20 -1
- package/src/rules/no-unsafe-regex-construction/index.js +5 -0
- package/src/rules/no-unvalidated-deeplinks/index.d.ts +6 -2
- package/src/rules/no-unvalidated-deeplinks/index.js +6 -1
- package/src/rules/no-unvalidated-user-input/index.d.ts +18 -1
- package/src/rules/no-unvalidated-user-input/index.js +5 -0
- package/src/rules/no-verbose-error-messages/index.d.ts +6 -4
- package/src/rules/no-verbose-error-messages/index.js +7 -2
- package/src/rules/no-weak-password-recovery/index.d.ts +25 -1
- package/src/rules/no-weak-password-recovery/index.js +5 -0
- package/src/rules/no-xpath-injection/index.d.ts +28 -1
- package/src/rules/no-xpath-injection/index.js +5 -0
- package/src/rules/no-xxe-injection/index.d.ts +28 -1
- package/src/rules/no-xxe-injection/index.js +5 -0
- package/src/rules/no-zip-slip/index.d.ts +25 -1
- package/src/rules/no-zip-slip/index.js +5 -0
- package/src/rules/require-backend-authorization/index.d.ts +6 -2
- package/src/rules/require-backend-authorization/index.js +6 -1
- package/src/rules/require-code-minification/index.d.ts +6 -4
- package/src/rules/require-code-minification/index.js +7 -6
- package/src/rules/require-csp-headers/index.d.ts +6 -2
- package/src/rules/require-csp-headers/index.js +6 -1
- package/src/rules/require-data-minimization/index.d.ts +6 -4
- package/src/rules/require-data-minimization/index.js +9 -7
- package/src/rules/require-dependency-integrity/index.d.ts +6 -2
- package/src/rules/require-dependency-integrity/index.js +6 -1
- package/src/rules/require-https-only/index.d.ts +6 -4
- package/src/rules/require-https-only/index.js +24 -19
- package/src/rules/require-mime-type-validation/index.d.ts +6 -2
- package/src/rules/require-mime-type-validation/index.js +6 -1
- package/src/rules/require-network-timeout/index.d.ts +6 -4
- package/src/rules/require-network-timeout/index.js +18 -11
- package/src/rules/require-package-lock/index.d.ts +6 -4
- package/src/rules/require-package-lock/index.js +7 -6
- package/src/rules/require-secure-credential-storage/index.d.ts +6 -4
- package/src/rules/require-secure-credential-storage/index.js +12 -9
- package/src/rules/require-secure-defaults/index.d.ts +6 -4
- package/src/rules/require-secure-defaults/index.js +7 -6
- package/src/rules/require-secure-deletion/index.d.ts +6 -4
- package/src/rules/require-secure-deletion/index.js +7 -6
- package/src/rules/require-storage-encryption/index.d.ts +6 -4
- package/src/rules/require-storage-encryption/index.js +10 -7
- package/src/rules/require-url-validation/index.d.ts +6 -2
- package/src/rules/require-url-validation/index.js +6 -1
- package/src/types/index.d.ts +5 -0
- package/src/types/index.js +3 -12
package/src/index.d.ts
CHANGED
|
@@ -1,16 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
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
|
/**
|
package/src/index.js
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
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
|
*
|
|
@@ -13,8 +20,6 @@
|
|
|
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
24
|
const detect_eval_with_expression_1 = require("./rules/detect-eval-with-expression");
|
|
20
25
|
const detect_child_process_1 = require("./rules/detect-child-process");
|
|
@@ -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-child-process
|
|
8
|
+
* Detects instances of child_process & non-literal exec() calls
|
|
9
|
+
* LLM-optimized with comprehensive command injection prevention guidance
|
|
10
|
+
*
|
|
11
|
+
* @see https://owasp.org/www-community/attacks/Command_Injection
|
|
12
|
+
* @see https://cwe.mitre.org/data/definitions/78.html
|
|
13
|
+
*/
|
|
14
|
+
import type { TSESLint } from '@interlace/eslint-devkit';
|
|
15
|
+
type MessageIds = 'childProcessCommandInjection' | 'useExecFile' | 'useSpawn' | 'useSaferLibrary' | 'validateInput' | 'useShellFalse' | 'strategyValidate' | 'strategySanitize' | 'strategyRestrict';
|
|
1
16
|
export interface Options {
|
|
2
17
|
/** Allow exec() with literal strings. Default: false (stricter) */
|
|
3
18
|
allowLiteralStrings?: boolean;
|
|
@@ -8,4 +23,6 @@ export interface Options {
|
|
|
8
23
|
/** Strategy for fixing command injection: 'validate', 'sanitize', 'restrict', or 'auto' */
|
|
9
24
|
strategy?: 'validate' | 'sanitize' | 'restrict' | 'auto';
|
|
10
25
|
}
|
|
11
|
-
|
|
26
|
+
type RuleOptions = [Options?];
|
|
27
|
+
export declare const detectChildProcess: TSESLint.RuleModule<MessageIds, RuleOptions, unknown, TSESLint.RuleListener>;
|
|
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.detectChildProcess = void 0;
|
|
4
9
|
const eslint_devkit_1 = require("@interlace/eslint-devkit");
|
|
@@ -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-eval-with-expression
|
|
8
|
+
* Detects eval(variable) which can allow an attacker to run arbitrary code
|
|
9
|
+
* LLM-optimized with comprehensive fix guidance and security context
|
|
10
|
+
*
|
|
11
|
+
* @see https://owasp.org/www-community/attacks/Code_Injection
|
|
12
|
+
* @see https://cwe.mitre.org/data/definitions/95.html
|
|
13
|
+
*/
|
|
14
|
+
import type { TSESLint } from '@interlace/eslint-devkit';
|
|
15
|
+
type MessageIds = 'evalWithExpression' | 'useJsonParse' | 'useObjectAccess' | 'useTemplateLiteral' | 'useFunctionConstructor' | 'useSaferAlternative' | 'strategyRemove' | 'strategyRefactor' | 'strategyValidate';
|
|
1
16
|
export interface Options {
|
|
2
17
|
/** Allow eval with literal strings. Default: false (stricter) */
|
|
3
18
|
allowLiteralStrings?: boolean;
|
|
@@ -6,4 +21,6 @@ export interface Options {
|
|
|
6
21
|
/** Strategy for fixing eval usage: 'remove', 'refactor', 'validate', or 'auto' */
|
|
7
22
|
strategy?: 'remove' | 'refactor' | 'validate' | 'auto';
|
|
8
23
|
}
|
|
9
|
-
|
|
24
|
+
type RuleOptions = [Options?];
|
|
25
|
+
export declare const detectEvalWithExpression: TSESLint.RuleModule<MessageIds, RuleOptions, unknown, TSESLint.RuleListener>;
|
|
26
|
+
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.detectEvalWithExpression = void 0;
|
|
4
9
|
const eslint_devkit_1 = require("@interlace/eslint-devkit");
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
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
5
|
*/
|
|
6
6
|
export interface Options {
|
|
7
7
|
}
|
|
8
|
-
|
|
8
|
+
type RuleOptions = [Options?];
|
|
9
|
+
export declare const detectMixedContent: import("@typescript-eslint/utils/ts-eslint").RuleModule<"violationDetected", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
10
|
+
export {};
|
|
@@ -1,11 +1,16 @@
|
|
|
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.detectMixedContent = void 0;
|
|
2
9
|
/**
|
|
3
10
|
* @fileoverview Detect HTTP resources in HTTPS pages
|
|
4
11
|
* @see https://owasp.org/www-project-mobile-top-10/
|
|
5
12
|
* @see https://cwe.mitre.org/data/definitions/311.html
|
|
6
13
|
*/
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.detectMixedContent = void 0;
|
|
9
14
|
const eslint_devkit_1 = require("@interlace/eslint-devkit");
|
|
10
15
|
exports.detectMixedContent = (0, eslint_devkit_1.createRule)({
|
|
11
16
|
name: 'detect-mixed-content',
|
|
@@ -13,10 +18,6 @@ exports.detectMixedContent = (0, eslint_devkit_1.createRule)({
|
|
|
13
18
|
type: 'problem',
|
|
14
19
|
docs: {
|
|
15
20
|
description: 'Detect HTTP resources in HTTPS pages',
|
|
16
|
-
category: 'Security',
|
|
17
|
-
recommended: true,
|
|
18
|
-
owaspMobile: ['M5'],
|
|
19
|
-
cweIds: ["CWE-311"],
|
|
20
21
|
},
|
|
21
22
|
messages: {
|
|
22
23
|
violationDetected: (0, eslint_devkit_1.formatLLMMessage)({
|
|
@@ -1,7 +1,24 @@
|
|
|
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-fs-filename
|
|
8
|
+
* Detects variable in filename argument of fs calls, which might allow an attacker to access anything on your system
|
|
9
|
+
* LLM-optimized with comprehensive path traversal prevention guidance
|
|
10
|
+
*
|
|
11
|
+
* @see https://owasp.org/www-community/attacks/Path_Traversal
|
|
12
|
+
* @see https://cwe.mitre.org/data/definitions/22.html
|
|
13
|
+
*/
|
|
14
|
+
import type { TSESLint } from '@interlace/eslint-devkit';
|
|
15
|
+
type MessageIds = 'fsPathTraversal' | 'usePathResolve' | 'validatePath' | 'useBasename' | 'createSafeDir' | 'whitelistExtensions';
|
|
1
16
|
export interface Options {
|
|
2
17
|
/** Allow literal strings. Default: false (stricter) */
|
|
3
18
|
allowLiterals?: boolean;
|
|
4
19
|
/** Additional fs methods to check */
|
|
5
20
|
additionalMethods?: string[];
|
|
6
21
|
}
|
|
7
|
-
|
|
22
|
+
type RuleOptions = [Options?];
|
|
23
|
+
export declare const detectNonLiteralFsFilename: TSESLint.RuleModule<MessageIds, RuleOptions, unknown, TSESLint.RuleListener>;
|
|
24
|
+
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.detectNonLiteralFsFilename = void 0;
|
|
4
9
|
const eslint_devkit_1 = require("@interlace/eslint-devkit");
|
|
@@ -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,6 @@ export interface Options {
|
|
|
6
21
|
/** Maximum allowed pattern length for dynamic regex */
|
|
7
22
|
maxPatternLength?: number;
|
|
8
23
|
}
|
|
9
|
-
|
|
24
|
+
type RuleOptions = [Options?];
|
|
25
|
+
export declare const detectNonLiteralRegexp: TSESLint.RuleModule<MessageIds, RuleOptions, unknown, TSESLint.RuleListener>;
|
|
26
|
+
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,6 @@ 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
|
-
|
|
31
|
+
type RuleOptions = [Options?];
|
|
32
|
+
export declare const detectObjectInjection: TSESLint.RuleModule<MessageIds, RuleOptions, unknown, TSESLint.RuleListener>;
|
|
33
|
+
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,8 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
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
5
|
*/
|
|
6
6
|
export interface Options {
|
|
7
7
|
}
|
|
8
|
-
|
|
8
|
+
type RuleOptions = [Options?];
|
|
9
|
+
export declare const detectSuspiciousDependencies: import("@typescript-eslint/utils/ts-eslint").RuleModule<"violationDetected", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
10
|
+
export {};
|
|
@@ -1,11 +1,16 @@
|
|
|
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.detectSuspiciousDependencies = void 0;
|
|
2
9
|
/**
|
|
3
10
|
* @fileoverview Detect potential typosquatting in dependencies
|
|
4
11
|
* @see https://owasp.org/www-project-mobile-top-10/
|
|
5
12
|
* @see https://cwe.mitre.org/data/definitions/506.html
|
|
6
13
|
*/
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.detectSuspiciousDependencies = void 0;
|
|
9
14
|
const eslint_devkit_1 = require("@interlace/eslint-devkit");
|
|
10
15
|
exports.detectSuspiciousDependencies = (0, eslint_devkit_1.createRule)({
|
|
11
16
|
name: 'detect-suspicious-dependencies',
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
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
|
-
|
|
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
|
+
export {};
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
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',
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
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
5
|
*/
|
|
6
6
|
export interface Options {
|
|
7
7
|
}
|
|
8
|
-
|
|
8
|
+
type RuleOptions = [Options?];
|
|
9
|
+
export declare const noAllowArbitraryLoads: import("@typescript-eslint/utils/ts-eslint").RuleModule<"violationDetected", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
10
|
+
export {};
|
|
@@ -1,11 +1,16 @@
|
|
|
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.noAllowArbitraryLoads = void 0;
|
|
2
9
|
/**
|
|
3
10
|
* @fileoverview Prevent configuration allowing insecure loads
|
|
4
11
|
* @see https://owasp.org/www-project-mobile-top-10/
|
|
5
12
|
* @see https://cwe.mitre.org/data/definitions/749.html
|
|
6
13
|
*/
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.noAllowArbitraryLoads = void 0;
|
|
9
14
|
const eslint_devkit_1 = require("@interlace/eslint-devkit");
|
|
10
15
|
exports.noAllowArbitraryLoads = (0, eslint_devkit_1.createRule)({
|
|
11
16
|
name: 'no-allow-arbitrary-loads',
|
|
@@ -13,10 +18,6 @@ exports.noAllowArbitraryLoads = (0, eslint_devkit_1.createRule)({
|
|
|
13
18
|
type: 'problem',
|
|
14
19
|
docs: {
|
|
15
20
|
description: 'Prevent configuration allowing insecure loads',
|
|
16
|
-
category: 'Security',
|
|
17
|
-
recommended: true,
|
|
18
|
-
owaspMobile: ['M5'],
|
|
19
|
-
cweIds: ["CWE-749"],
|
|
20
21
|
},
|
|
21
22
|
messages: {
|
|
22
23
|
violationDetected: (0, eslint_devkit_1.formatLLMMessage)({
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* This rule detects safe patterns including:
|
|
6
|
-
* - path.basename() sanitization
|
|
7
|
-
* - path.join() with validated base directories
|
|
8
|
-
* - startsWith() validation guards
|
|
9
|
-
* - Early-return throw patterns
|
|
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.
|
|
10
5
|
*/
|
|
11
6
|
export interface Options {
|
|
12
7
|
}
|
|
13
|
-
|
|
8
|
+
type RuleOptions = [Options?];
|
|
9
|
+
export declare const noArbitraryFileAccess: import("@typescript-eslint/utils/ts-eslint").RuleModule<"violationDetected", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
10
|
+
export {};
|
|
@@ -1,4 +1,11 @@
|
|
|
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.noArbitraryFileAccess = void 0;
|
|
2
9
|
/**
|
|
3
10
|
* @fileoverview Prevent file access from user input
|
|
4
11
|
*
|
|
@@ -9,8 +16,6 @@
|
|
|
9
16
|
* - startsWith() validation guards
|
|
10
17
|
* - Early-return throw patterns
|
|
11
18
|
*/
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.noArbitraryFileAccess = void 0;
|
|
14
19
|
const eslint_devkit_1 = require("@interlace/eslint-devkit");
|
|
15
20
|
exports.noArbitraryFileAccess = (0, eslint_devkit_1.createRule)({
|
|
16
21
|
name: 'no-arbitrary-file-access',
|
|
@@ -1,3 +1,8 @@
|
|
|
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
|
+
*/
|
|
1
6
|
/**
|
|
2
7
|
* ESLint Rule: no-buffer-overread
|
|
3
8
|
* Detects buffer access beyond bounds (CWE-126)
|
|
@@ -13,7 +18,8 @@
|
|
|
13
18
|
* - JSDoc annotations (@safe, @validated)
|
|
14
19
|
* - Input validation functions
|
|
15
20
|
*/
|
|
16
|
-
import type { SecurityRuleOptions } from '@interlace/eslint-devkit';
|
|
21
|
+
import type { TSESLint, SecurityRuleOptions } from '@interlace/eslint-devkit';
|
|
22
|
+
type MessageIds = 'bufferOverread' | 'unsafeBufferAccess' | 'missingBoundsCheck' | 'negativeBufferIndex' | 'userControlledBufferIndex' | 'unsafeBufferSlice' | 'bufferLengthNotChecked' | 'useSafeBufferAccess' | 'validateBufferIndices' | 'checkBufferBounds' | 'strategyBoundsChecking' | 'strategyInputValidation' | 'strategySafeBuffers';
|
|
17
23
|
export interface Options extends SecurityRuleOptions {
|
|
18
24
|
/** Buffer methods to check for bounds safety */
|
|
19
25
|
bufferMethods?: string[];
|
|
@@ -26,4 +32,6 @@ export interface Options extends SecurityRuleOptions {
|
|
|
26
32
|
/** Additional JSDoc annotations to consider as safe markers */
|
|
27
33
|
strictMode?: boolean;
|
|
28
34
|
}
|
|
29
|
-
|
|
35
|
+
type RuleOptions = [Options?];
|
|
36
|
+
export declare const noBufferOverread: TSESLint.RuleModule<MessageIds, RuleOptions, unknown, TSESLint.RuleListener>;
|
|
37
|
+
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.noBufferOverread = void 0;
|
|
4
9
|
const eslint_devkit_1 = require("@interlace/eslint-devkit");
|
|
@@ -1,4 +1,26 @@
|
|
|
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: no-clickjacking
|
|
8
|
+
* Detects clickjacking vulnerabilities (CWE-1021)
|
|
9
|
+
*
|
|
10
|
+
* Clickjacking tricks users into clicking on invisible or disguised elements
|
|
11
|
+
* by overlaying them with transparent frames. This rule detects missing
|
|
12
|
+
* protections against clickjacking attacks.
|
|
13
|
+
*
|
|
14
|
+
* False Positive Reduction:
|
|
15
|
+
* This rule uses security utilities to reduce false positives by detecting:
|
|
16
|
+
* - Safe iframe usage patterns
|
|
17
|
+
* - Trusted frame sources
|
|
18
|
+
* - JSDoc annotations (@trusted-frame, @safe-iframe)
|
|
19
|
+
* - Frame-busting protections
|
|
20
|
+
*/
|
|
21
|
+
import type { TSESLint } from '@interlace/eslint-devkit';
|
|
1
22
|
import { type SecurityRuleOptions } from '@interlace/eslint-devkit';
|
|
23
|
+
type MessageIds = 'clickjackingVulnerability' | 'missingFrameBusting' | 'unsafeIframeUsage' | 'missingXFrameOptions' | 'missingCspFrameAncestors' | 'transparentFrameOverlay' | 'frameManipulation' | 'implementFrameBusting' | 'useXFrameOptions' | 'setCspFrameAncestors' | 'strategyFrameProtection' | 'strategyContentSecurity' | 'strategyUserInteraction';
|
|
2
24
|
export interface Options extends SecurityRuleOptions {
|
|
3
25
|
/** Trusted iframe sources */
|
|
4
26
|
trustedSources?: string[];
|
|
@@ -7,4 +29,6 @@ export interface Options extends SecurityRuleOptions {
|
|
|
7
29
|
/** Detect transparent overlays */
|
|
8
30
|
detectTransparentOverlays?: boolean;
|
|
9
31
|
}
|
|
10
|
-
|
|
32
|
+
type RuleOptions = [Options?];
|
|
33
|
+
export declare const noClickjacking: TSESLint.RuleModule<MessageIds, RuleOptions, unknown, TSESLint.RuleListener>;
|
|
34
|
+
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.noClickjacking = void 0;
|
|
4
9
|
const eslint_devkit_1 = require("@interlace/eslint-devkit");
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
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
|
-
|
|
8
|
+
type RuleOptions = [Options?];
|
|
9
|
+
export declare const noClientSideAuthLogic: import("@typescript-eslint/utils/ts-eslint").RuleModule<"violationDetected", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
10
|
+
export {};
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
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.noClientSideAuthLogic = void 0;
|
|
9
|
+
/**
|
|
10
|
+
* @fileoverview Prevent authentication logic in client code
|
|
11
|
+
*/
|
|
7
12
|
const eslint_devkit_1 = require("@interlace/eslint-devkit");
|
|
8
13
|
exports.noClientSideAuthLogic = (0, eslint_devkit_1.createRule)({
|
|
9
14
|
name: 'no-client-side-auth-logic',
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
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
5
|
*/
|
|
6
6
|
export interface Options {
|
|
7
7
|
}
|
|
8
|
-
|
|
8
|
+
type RuleOptions = [Options?];
|
|
9
|
+
export declare const noCredentialsInQueryParams: import("@typescript-eslint/utils/ts-eslint").RuleModule<"violationDetected", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
10
|
+
export {};
|
|
@@ -1,11 +1,16 @@
|
|
|
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.noCredentialsInQueryParams = void 0;
|
|
2
9
|
/**
|
|
3
10
|
* @fileoverview Disallow credentials in URL query parameters
|
|
4
11
|
* @see https://owasp.org/www-project-mobile-top-10/
|
|
5
12
|
* @see https://cwe.mitre.org/data/definitions/598.html
|
|
6
13
|
*/
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.noCredentialsInQueryParams = void 0;
|
|
9
14
|
const eslint_devkit_1 = require("@interlace/eslint-devkit");
|
|
10
15
|
exports.noCredentialsInQueryParams = (0, eslint_devkit_1.createRule)({
|
|
11
16
|
name: 'no-credentials-in-query-params',
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
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
|
-
|
|
8
|
+
type RuleOptions = [Options?];
|
|
9
|
+
export declare const noDataInTempStorage: import("@typescript-eslint/utils/ts-eslint").RuleModule<"violationDetected", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
10
|
+
export {};
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
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.noDataInTempStorage = void 0;
|
|
9
|
+
/**
|
|
10
|
+
* @fileoverview Prevent sensitive data in temp directories
|
|
11
|
+
*/
|
|
7
12
|
const eslint_devkit_1 = require("@interlace/eslint-devkit");
|
|
8
13
|
exports.noDataInTempStorage = (0, eslint_devkit_1.createRule)({
|
|
9
14
|
name: 'no-data-in-temp-storage',
|