@pumpn/eslint-config 16.2.1 → 17.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config.js +1 -0
- package/deno.json +26 -22
- package/deno.lock +293 -435
- package/eslint.config.js +0 -15
- package/package.json +22 -22
- package/plugins.js +4 -14
- package/rules/_exports.js +1 -5
- package/rules/eslint-comments/best-practices.js +0 -1
- package/rules/import-x/helpful-warnings.js +1 -0
- package/rules/jsdoc.js +2 -0
- package/rules/perfectionist.js +3 -2
- package/rules/react/_exports.js +1 -1
- package/rules/react/core.js +24 -10
- package/rules/react/naming-convention.js +2 -24
- package/rules/react/rsc.js +5 -0
- package/rules/regexp/stylistic-issues.js +2 -2
- package/rules/sonarjs/_exports.js +2 -2
- package/rules/sonarjs/problem.js +122 -0
- package/rules/sonarjs/suggestion.js +135 -0
- package/rules/stylistic/jsx.js +11 -0
- package/rules/stylistic/spacing.js +15 -0
- package/rules/suggestions.js +15 -1
- package/rules/unicorn.js +9 -0
- package/rules/github.js +0 -34
- package/rules/jsx-a11y.js +0 -146
- package/rules/no-unsanitized.js +0 -13
- package/rules/react/hooks-extra.js +0 -5
- package/rules/redos.js +0 -22
- package/rules/sonarjs/bug-detection.js +0 -13
- package/rules/sonarjs/code-smell-detection.js +0 -37
package/eslint.config.js
CHANGED
|
@@ -19,21 +19,6 @@ const eslintConfig = [
|
|
|
19
19
|
rules: {
|
|
20
20
|
"unicorn/string-content": "off"
|
|
21
21
|
}
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
files: ["plugins.js", "rules/_exports.js", "rules/func-params-args.js"],
|
|
25
|
-
rules: {
|
|
26
|
-
"unicorn/prevent-abbreviations": [
|
|
27
|
-
"error",
|
|
28
|
-
{
|
|
29
|
-
allowList: {
|
|
30
|
-
"func-params-args": true,
|
|
31
|
-
funcParamsArgs: true,
|
|
32
|
-
funcParamsArgsRules: true
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
]
|
|
36
|
-
}
|
|
37
22
|
}
|
|
38
23
|
];
|
|
39
24
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pumpn/eslint-config",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "17.0.0",
|
|
4
4
|
"description": "standard eslint config for pumpn code projects",
|
|
5
5
|
"main": "config.js",
|
|
6
6
|
"author": "Nano Miratus <nanomiratus@gmail.com>",
|
|
@@ -17,34 +17,34 @@
|
|
|
17
17
|
"test": "echo 'no tests yet'"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
|
-
"eslint": "^
|
|
20
|
+
"eslint": "^10.0.3"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@eslint-community/eslint-plugin-eslint-comments": "^4.
|
|
24
|
-
"@stylistic/eslint-plugin": "^5.
|
|
25
|
-
"@typescript-eslint/parser": "^8.
|
|
23
|
+
"@eslint-community/eslint-plugin-eslint-comments": "^4.7.1",
|
|
24
|
+
"@stylistic/eslint-plugin": "^5.10.0",
|
|
25
|
+
"@typescript-eslint/parser": "^8.57.1",
|
|
26
26
|
"eslint-import-resolver-typescript": "^4.4.4",
|
|
27
|
-
"eslint-plugin-command": "^3.
|
|
28
|
-
"eslint-plugin-depend": "^1.
|
|
29
|
-
"eslint-plugin-import-x": "^4.16.
|
|
30
|
-
"eslint-plugin-jsdoc": "^62.
|
|
31
|
-
"eslint-plugin-no-secrets": "^2.
|
|
32
|
-
"eslint-plugin-perfectionist": "^5.
|
|
27
|
+
"eslint-plugin-command": "^3.5.2",
|
|
28
|
+
"eslint-plugin-depend": "^1.5.0",
|
|
29
|
+
"eslint-plugin-import-x": "^4.16.2",
|
|
30
|
+
"eslint-plugin-jsdoc": "^62.8.0",
|
|
31
|
+
"eslint-plugin-no-secrets": "^2.3.3",
|
|
32
|
+
"eslint-plugin-perfectionist": "^5.7.0",
|
|
33
33
|
"eslint-plugin-promise": "^7.2.1",
|
|
34
|
-
"eslint-plugin-react-dom": "^
|
|
35
|
-
"eslint-plugin-react-
|
|
36
|
-
"eslint-plugin-react-
|
|
37
|
-
"eslint-plugin-react-web-api": "^
|
|
38
|
-
"eslint-plugin-react-x": "^
|
|
34
|
+
"eslint-plugin-react-dom": "^3.0.0",
|
|
35
|
+
"eslint-plugin-react-naming-convention": "^3.0.0",
|
|
36
|
+
"eslint-plugin-react-rsc": "^3.0.0",
|
|
37
|
+
"eslint-plugin-react-web-api": "^3.0.0",
|
|
38
|
+
"eslint-plugin-react-x": "^3.0.0",
|
|
39
39
|
"eslint-plugin-redos": "^4.5.0",
|
|
40
|
-
"eslint-plugin-regexp": "^
|
|
41
|
-
"eslint-plugin-security": "^
|
|
42
|
-
"eslint-plugin-sonarjs": "^
|
|
40
|
+
"eslint-plugin-regexp": "^3.1.0",
|
|
41
|
+
"eslint-plugin-security": "^4.0.0",
|
|
42
|
+
"eslint-plugin-sonarjs": "^4.0.2",
|
|
43
43
|
"eslint-plugin-tailwindcss": "^4.0.0-beta.0",
|
|
44
|
-
"eslint-plugin-unicorn": "^
|
|
45
|
-
"globals": "^17.
|
|
44
|
+
"eslint-plugin-unicorn": "^63.0.0",
|
|
45
|
+
"globals": "^17.4.0"
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
48
|
-
"eslint": "^
|
|
48
|
+
"eslint": "^10.0.3"
|
|
49
49
|
}
|
|
50
50
|
}
|
package/plugins.js
CHANGED
|
@@ -2,9 +2,6 @@
|
|
|
2
2
|
/* eslint-disable import-x/default -- see above */
|
|
3
3
|
/* eslint-disable import-x/max-dependencies -- collection file */
|
|
4
4
|
|
|
5
|
-
// import github from "eslint-plugin-github";
|
|
6
|
-
// import jsxA11y from "eslint-plugin-jsx-a11y";
|
|
7
|
-
// import noUnsanitized from "eslint-plugin-no-unsanitized";
|
|
8
5
|
import eslintComments from "@eslint-community/eslint-plugin-eslint-comments";
|
|
9
6
|
import stylistic from "@stylistic/eslint-plugin";
|
|
10
7
|
import command from "eslint-plugin-command";
|
|
@@ -15,12 +12,11 @@ import noSecrets from "eslint-plugin-no-secrets";
|
|
|
15
12
|
import perfectionist from "eslint-plugin-perfectionist";
|
|
16
13
|
import promise from "eslint-plugin-promise";
|
|
17
14
|
import reactDom from "eslint-plugin-react-dom";
|
|
18
|
-
import reactHooksExtra from "eslint-plugin-react-hooks-extra";
|
|
19
15
|
import reactNamingConvention from "eslint-plugin-react-naming-convention";
|
|
16
|
+
import reactRsc from "eslint-plugin-react-rsc";
|
|
20
17
|
import reactWebApi from "eslint-plugin-react-web-api";
|
|
21
18
|
import react from "eslint-plugin-react-x";
|
|
22
|
-
import
|
|
23
|
-
import * as regexp from "eslint-plugin-regexp";
|
|
19
|
+
import regexp from "eslint-plugin-regexp";
|
|
24
20
|
import security from "eslint-plugin-security";
|
|
25
21
|
import sonarjs from "eslint-plugin-sonarjs";
|
|
26
22
|
import tailwindcss from "eslint-plugin-tailwindcss";
|
|
@@ -44,20 +40,14 @@ const plugins = /** @type {const} */ ({
|
|
|
44
40
|
|
|
45
41
|
"@eslint-react": react,
|
|
46
42
|
"@eslint-react/dom": reactDom,
|
|
47
|
-
"@eslint-react/hooks-extra": reactHooksExtra,
|
|
48
43
|
"@eslint-react/naming-convention": reactNamingConvention,
|
|
44
|
+
"@eslint-react/rsc": reactRsc,
|
|
49
45
|
"@eslint-react/web-api": reactWebApi,
|
|
50
|
-
|
|
51
|
-
"import-x": /** @type {ESLint.Plugin} */ (
|
|
52
|
-
/** @type {unknown} */ (
|
|
53
|
-
importX
|
|
54
|
-
)
|
|
55
|
-
),
|
|
46
|
+
"import-x": importX,
|
|
56
47
|
jsdoc,
|
|
57
48
|
"no-secrets": noSecrets,
|
|
58
49
|
perfectionist,
|
|
59
50
|
promise,
|
|
60
|
-
redos,
|
|
61
51
|
regexp,
|
|
62
52
|
security,
|
|
63
53
|
sonarjs,
|
package/rules/_exports.js
CHANGED
|
@@ -1,19 +1,15 @@
|
|
|
1
|
+
export { default as commandRules } from "./command.js";
|
|
1
2
|
export { default as dependRules } from "./depend.js";
|
|
2
3
|
export { default as eslintCommentsRules } from "./eslint-comments.js";
|
|
3
|
-
// export { default as githubRules } from "./github.js";
|
|
4
4
|
export { default as importXRules } from "./import-x.js";
|
|
5
5
|
export { default as jsdocRules } from "./jsdoc.js";
|
|
6
|
-
// export { default as jsxA11yRules } from "./jsx-a11y.js";
|
|
7
6
|
export {
|
|
8
7
|
default as layoutAndFormattingRules
|
|
9
8
|
} from "./layout-and-formatting.js";
|
|
10
9
|
export { default as noSecretsRules } from "./no-secrets.js";
|
|
11
|
-
// export { default as noUnsanitizedRules } from "./no-unsanitized.js";
|
|
12
10
|
export { default as perfectionistRules } from "./perfectionist.js";
|
|
13
11
|
export { default as possibleProblemsRules } from "./possible-problems.js";
|
|
14
12
|
export { default as reactRules } from "./react.js";
|
|
15
|
-
// export { default as redosRules } from "./redos.js";
|
|
16
|
-
export { default as commandRules } from "./command.js";
|
|
17
13
|
export { default as regexpRules } from "./regexp.js";
|
|
18
14
|
export { default as securityRules } from "./security.js";
|
|
19
15
|
export { default as sonarjsRules } from "./sonarjs.js";
|
|
@@ -3,7 +3,6 @@ const bestPracticesRules = {
|
|
|
3
3
|
"@eslint-community/eslint-comments/no-aggregating-enable": "error",
|
|
4
4
|
"@eslint-community/eslint-comments/no-duplicate-disable": "error",
|
|
5
5
|
"@eslint-community/eslint-comments/no-unlimited-disable": "error",
|
|
6
|
-
"@eslint-community/eslint-comments/no-unused-disable": "error",
|
|
7
6
|
"@eslint-community/eslint-comments/no-unused-enable": "error"
|
|
8
7
|
};
|
|
9
8
|
|
package/rules/jsdoc.js
CHANGED
|
@@ -415,11 +415,13 @@ const jsdocRules = {
|
|
|
415
415
|
objectFieldSeparator: "comma-and-linebreak",
|
|
416
416
|
objectFieldSeparatorOptionalLinebreak: true,
|
|
417
417
|
objectFieldSeparatorTrailingPunctuation: false,
|
|
418
|
+
objectTypeBracketSpacing: "",
|
|
418
419
|
parameterDefaultValueSpacing: " ",
|
|
419
420
|
postMethodNameSpacing: "",
|
|
420
421
|
postNewSpacing: " ",
|
|
421
422
|
separatorForSingleObjectField: false,
|
|
422
423
|
stringQuotes: "double",
|
|
424
|
+
trailingPunctuationMultilineOnly: false,
|
|
423
425
|
typeBracketSpacing: "",
|
|
424
426
|
unionSpacing: " "
|
|
425
427
|
}
|
package/rules/perfectionist.js
CHANGED
|
@@ -9,7 +9,7 @@ const perfectionistRules = {
|
|
|
9
9
|
"perfectionist/sort-array-includes": [
|
|
10
10
|
"error",
|
|
11
11
|
{
|
|
12
|
-
groups: ["literal"
|
|
12
|
+
groups: ["literal"]
|
|
13
13
|
}
|
|
14
14
|
],
|
|
15
15
|
"perfectionist/sort-classes": [
|
|
@@ -304,7 +304,8 @@ const perfectionistRules = {
|
|
|
304
304
|
"groupColor2",
|
|
305
305
|
"groupColor3",
|
|
306
306
|
"unknown"
|
|
307
|
-
]
|
|
307
|
+
],
|
|
308
|
+
sortBy: "name"
|
|
308
309
|
}
|
|
309
310
|
],
|
|
310
311
|
"perfectionist/sort-sets": "error",
|
package/rules/react/_exports.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { default as coreRules } from "./core.js";
|
|
2
2
|
export { default as debugRules } from "./debug.js";
|
|
3
3
|
export { default as domRules } from "./dom.js";
|
|
4
|
-
export { default as hooksExtraRules } from "./hooks-extra.js";
|
|
5
4
|
export { default as namingConventionRules } from "./naming-convention.js";
|
|
5
|
+
export { default as rscRules } from "./rsc.js";
|
|
6
6
|
export { default as webApiRules } from "./web-api.js";
|
package/rules/react/core.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
const coreRules = {
|
|
2
|
+
"@eslint-react/component-hook-factories": "error",
|
|
3
|
+
"@eslint-react/error-boundaries": "error",
|
|
4
|
+
"@eslint-react/exhaustive-deps": "error",
|
|
5
|
+
"@eslint-react/immutability": "error",
|
|
2
6
|
"@eslint-react/jsx-dollar": "error",
|
|
3
7
|
"@eslint-react/jsx-key-before-spread": "error",
|
|
4
8
|
"@eslint-react/jsx-no-comment-textnodes": "error",
|
|
5
|
-
"@eslint-react/jsx-no-duplicate-props": "error",
|
|
6
9
|
"@eslint-react/jsx-shorthand-boolean": "error",
|
|
7
10
|
"@eslint-react/jsx-shorthand-fragment": "error",
|
|
8
|
-
"@eslint-react/jsx-uses-vars": "error",
|
|
9
11
|
"@eslint-react/no-access-state-in-setstate": "error",
|
|
10
12
|
"@eslint-react/no-array-index-key": "error",
|
|
11
13
|
"@eslint-react/no-children-count": "error",
|
|
@@ -20,25 +22,23 @@ const coreRules = {
|
|
|
20
22
|
"@eslint-react/no-component-will-receive-props": "error",
|
|
21
23
|
"@eslint-react/no-component-will-update": "error",
|
|
22
24
|
"@eslint-react/no-create-ref": "error",
|
|
23
|
-
"@eslint-react/no-default-props": "error",
|
|
24
25
|
"@eslint-react/no-direct-mutation-state": "error",
|
|
25
26
|
"@eslint-react/no-duplicate-key": "error",
|
|
27
|
+
"@eslint-react/no-forward-ref": "error",
|
|
28
|
+
"@eslint-react/no-implicit-children": "error",
|
|
26
29
|
"@eslint-react/no-implicit-key": "error",
|
|
30
|
+
"@eslint-react/no-implicit-ref": "error",
|
|
27
31
|
"@eslint-react/no-leaked-conditional-rendering": "error",
|
|
28
32
|
"@eslint-react/no-missing-component-display-name": "error",
|
|
29
33
|
"@eslint-react/no-missing-key": "error",
|
|
30
34
|
"@eslint-react/no-nested-component-definitions": "error",
|
|
31
|
-
"@eslint-react/no-prop-types": "error",
|
|
32
35
|
"@eslint-react/no-redundant-should-component-update": "error",
|
|
33
36
|
"@eslint-react/no-set-state-in-component-did-mount": "error",
|
|
34
37
|
"@eslint-react/no-set-state-in-component-did-update": "error",
|
|
35
38
|
"@eslint-react/no-set-state-in-component-will-update": "error",
|
|
36
|
-
"@eslint-react/no-string-refs": "error",
|
|
37
|
-
"@eslint-react/no-unnecessary-key": "error",
|
|
38
39
|
"@eslint-react/no-unnecessary-use-callback": "error",
|
|
39
40
|
"@eslint-react/no-unnecessary-use-memo": "error",
|
|
40
41
|
"@eslint-react/no-unnecessary-use-prefix": "error",
|
|
41
|
-
"@eslint-react/no-unnecessary-use-ref": "error",
|
|
42
42
|
"@eslint-react/no-unsafe-component-will-mount": "error",
|
|
43
43
|
"@eslint-react/no-unsafe-component-will-receive-props": "error",
|
|
44
44
|
"@eslint-react/no-unsafe-component-will-update": "error",
|
|
@@ -47,7 +47,6 @@ const coreRules = {
|
|
|
47
47
|
"@eslint-react/no-unused-class-component-members": "error",
|
|
48
48
|
"@eslint-react/no-unused-props": "error",
|
|
49
49
|
"@eslint-react/no-unused-state": "error",
|
|
50
|
-
"@eslint-react/no-useless-forward-ref": "error",
|
|
51
50
|
"@eslint-react/no-useless-fragment": [
|
|
52
51
|
"error",
|
|
53
52
|
{
|
|
@@ -57,8 +56,23 @@ const coreRules = {
|
|
|
57
56
|
],
|
|
58
57
|
"@eslint-react/prefer-destructuring-assignment": "error",
|
|
59
58
|
"@eslint-react/prefer-namespace-import": "error",
|
|
60
|
-
"@eslint-react/
|
|
61
|
-
"@eslint-react/
|
|
59
|
+
"@eslint-react/purity": "error",
|
|
60
|
+
"@eslint-react/refs": "error",
|
|
61
|
+
"@eslint-react/rules-of-hooks": "error",
|
|
62
|
+
"@eslint-react/set-state-in-effect": "error",
|
|
63
|
+
"@eslint-react/set-state-in-render": "error",
|
|
64
|
+
"@eslint-react/unstable-rules-of-props": "error",
|
|
65
|
+
"@eslint-react/unstable-rules-of-state": "error",
|
|
66
|
+
"@eslint-react/unsupported-syntax": "error",
|
|
67
|
+
"@eslint-react/use-memo": "error",
|
|
68
|
+
"@eslint-react/use-state": [
|
|
69
|
+
"error",
|
|
70
|
+
{
|
|
71
|
+
enforceAssignment: true,
|
|
72
|
+
enforceLazyInitialization: true,
|
|
73
|
+
enforceSetterName: true
|
|
74
|
+
}
|
|
75
|
+
]
|
|
62
76
|
};
|
|
63
77
|
|
|
64
78
|
export default coreRules;
|
|
@@ -1,28 +1,6 @@
|
|
|
1
1
|
const namingConventionRules = {
|
|
2
|
-
"@eslint-react/naming-convention/
|
|
3
|
-
|
|
4
|
-
{
|
|
5
|
-
allowAllCaps: false,
|
|
6
|
-
excepts: [],
|
|
7
|
-
rule: "PascalCase"
|
|
8
|
-
}
|
|
9
|
-
],
|
|
10
|
-
"@eslint-react/naming-convention/filename": ["error", { rule: "kebab-case" }],
|
|
11
|
-
"@eslint-react/naming-convention/filename-extension": [
|
|
12
|
-
"error",
|
|
13
|
-
{
|
|
14
|
-
allow: "as-needed",
|
|
15
|
-
extensions: [".jsx", ".tsx"]
|
|
16
|
-
}
|
|
17
|
-
],
|
|
18
|
-
"@eslint-react/naming-convention/ref-name": "off",
|
|
19
|
-
"@eslint-react/naming-convention/use-state": [
|
|
20
|
-
"error",
|
|
21
|
-
{
|
|
22
|
-
enforceAssignment: false,
|
|
23
|
-
enforceSetterName: true
|
|
24
|
-
}
|
|
25
|
-
]
|
|
2
|
+
"@eslint-react/naming-convention/id-name": "error",
|
|
3
|
+
"@eslint-react/naming-convention/ref-name": "off"
|
|
26
4
|
};
|
|
27
5
|
|
|
28
6
|
export default namingConventionRules;
|
|
@@ -6,8 +6,8 @@ const stylisticIssuesRules = {
|
|
|
6
6
|
{
|
|
7
7
|
caseInsensitive: "lowercase",
|
|
8
8
|
controlEscape: "uppercase",
|
|
9
|
-
hexadecimalEscape: "
|
|
10
|
-
unicodeEscape: "
|
|
9
|
+
hexadecimalEscape: "uppercase",
|
|
10
|
+
unicodeEscape: "uppercase"
|
|
11
11
|
}
|
|
12
12
|
],
|
|
13
13
|
"regexp/match-any": "error",
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { default as
|
|
2
|
-
export { default as
|
|
1
|
+
export { default as problemRules } from "./problem.js";
|
|
2
|
+
export { default as suggestionRules } from "./suggestion.js";
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
const problemRules = {
|
|
2
|
+
"sonarjs/anchor-precedence": "error",
|
|
3
|
+
"sonarjs/array-callback-without-return": "error",
|
|
4
|
+
"sonarjs/aws-apigateway-public-api": "error",
|
|
5
|
+
"sonarjs/aws-ec2-rds-dms-public": "error",
|
|
6
|
+
"sonarjs/aws-ec2-unencrypted-ebs-volume": "error",
|
|
7
|
+
"sonarjs/aws-efs-unencrypted": "error",
|
|
8
|
+
"sonarjs/aws-iam-all-privileges": "error",
|
|
9
|
+
"sonarjs/aws-iam-all-resources-accessible": "error",
|
|
10
|
+
"sonarjs/aws-iam-privilege-escalation": "error",
|
|
11
|
+
"sonarjs/aws-iam-public-access": "error",
|
|
12
|
+
"sonarjs/aws-opensearchservice-domain": "error",
|
|
13
|
+
"sonarjs/aws-rds-unencrypted-databases": "error",
|
|
14
|
+
"sonarjs/aws-restricted-ip-admin-access": "error",
|
|
15
|
+
"sonarjs/aws-s3-bucket-granted-access": "error",
|
|
16
|
+
"sonarjs/aws-s3-bucket-insecure-http": "error",
|
|
17
|
+
"sonarjs/aws-s3-bucket-public-access": "error",
|
|
18
|
+
"sonarjs/aws-s3-bucket-versioning": "error",
|
|
19
|
+
"sonarjs/aws-sagemaker-unencrypted-notebook": "error",
|
|
20
|
+
"sonarjs/aws-sns-unencrypted-topics": "error",
|
|
21
|
+
"sonarjs/aws-sqs-unencrypted-queue": "error",
|
|
22
|
+
"sonarjs/bitwise-operators": "error",
|
|
23
|
+
"sonarjs/code-eval": "error",
|
|
24
|
+
"sonarjs/comma-or-logical-or-case": "error",
|
|
25
|
+
"sonarjs/confidential-information-logging": "error",
|
|
26
|
+
"sonarjs/constructor-for-side-effects": "error",
|
|
27
|
+
"sonarjs/content-length": "error",
|
|
28
|
+
"sonarjs/content-security-policy": "error",
|
|
29
|
+
"sonarjs/cookie-no-httponly": "error",
|
|
30
|
+
"sonarjs/cors": "error",
|
|
31
|
+
"sonarjs/csrf": "error",
|
|
32
|
+
"sonarjs/different-types-comparison": "error",
|
|
33
|
+
"sonarjs/disabled-auto-escaping": "error",
|
|
34
|
+
"sonarjs/disabled-resource-integrity": "error",
|
|
35
|
+
"sonarjs/disabled-timeout": "error",
|
|
36
|
+
"sonarjs/empty-string-repetition": "error",
|
|
37
|
+
"sonarjs/encryption-secure-mode": "error",
|
|
38
|
+
"sonarjs/existing-groups": "error",
|
|
39
|
+
"sonarjs/file-permissions": "error",
|
|
40
|
+
"sonarjs/file-uploads": "error",
|
|
41
|
+
"sonarjs/for-in": "error",
|
|
42
|
+
"sonarjs/for-loop-increment-sign": "error",
|
|
43
|
+
"sonarjs/frame-ancestors": "error",
|
|
44
|
+
"sonarjs/generator-without-yield": "error",
|
|
45
|
+
"sonarjs/hashing": "error",
|
|
46
|
+
"sonarjs/hidden-files": "error",
|
|
47
|
+
"sonarjs/in-operator-type-error": "error",
|
|
48
|
+
"sonarjs/insecure-cookie": "error",
|
|
49
|
+
"sonarjs/insecure-jwt-token": "error",
|
|
50
|
+
"sonarjs/jsx-no-leaked-render": "error",
|
|
51
|
+
"sonarjs/link-with-target-blank": "error",
|
|
52
|
+
"sonarjs/new-operator-misuse": "error",
|
|
53
|
+
"sonarjs/no-all-duplicated-branches": "error",
|
|
54
|
+
"sonarjs/no-alphabetical-sort": "error",
|
|
55
|
+
"sonarjs/no-angular-bypass-sanitization": "error",
|
|
56
|
+
"sonarjs/no-built-in-override": "error",
|
|
57
|
+
"sonarjs/no-clear-text-protocols": "error",
|
|
58
|
+
"sonarjs/no-collection-size-mischeck": "error",
|
|
59
|
+
"sonarjs/no-control-regex": "error",
|
|
60
|
+
"sonarjs/no-delete-var": "error",
|
|
61
|
+
"sonarjs/no-element-overwrite": "error",
|
|
62
|
+
"sonarjs/no-empty-alternatives": "error",
|
|
63
|
+
"sonarjs/no-empty-character-class": "error",
|
|
64
|
+
"sonarjs/no-empty-collection": "error",
|
|
65
|
+
"sonarjs/no-exclusive-tests": "error",
|
|
66
|
+
"sonarjs/no-extra-arguments": "error",
|
|
67
|
+
"sonarjs/no-function-declaration-in-block": "error",
|
|
68
|
+
"sonarjs/no-globals-shadowing": "error",
|
|
69
|
+
"sonarjs/no-hardcoded-ip": "error",
|
|
70
|
+
"sonarjs/no-hardcoded-passwords": "error",
|
|
71
|
+
"sonarjs/no-hardcoded-secrets": "error",
|
|
72
|
+
"sonarjs/no-hook-setter-in-body": "error",
|
|
73
|
+
"sonarjs/no-identical-conditions": "error",
|
|
74
|
+
"sonarjs/no-identical-expressions": "error",
|
|
75
|
+
"sonarjs/no-ignored-return": "error",
|
|
76
|
+
"sonarjs/no-intrusive-permissions": "error",
|
|
77
|
+
"sonarjs/no-invalid-regexp": "error",
|
|
78
|
+
"sonarjs/no-ip-forward": "error",
|
|
79
|
+
"sonarjs/no-literal-call": "error",
|
|
80
|
+
"sonarjs/no-mime-sniff": "error",
|
|
81
|
+
"sonarjs/no-misleading-character-class": "error",
|
|
82
|
+
"sonarjs/no-mixed-content": "error",
|
|
83
|
+
"sonarjs/no-os-command-from-path": "error",
|
|
84
|
+
"sonarjs/no-parameter-reassignment": "error",
|
|
85
|
+
"sonarjs/no-reference-error": "error",
|
|
86
|
+
"sonarjs/no-referrer-policy": "error",
|
|
87
|
+
"sonarjs/no-same-argument-assert": "error",
|
|
88
|
+
"sonarjs/no-try-promise": "error",
|
|
89
|
+
"sonarjs/no-unsafe-unzip": "error",
|
|
90
|
+
"sonarjs/no-unthrown-error": "error",
|
|
91
|
+
"sonarjs/no-use-of-empty-return-value": "error",
|
|
92
|
+
"sonarjs/no-useless-increment": "error",
|
|
93
|
+
"sonarjs/no-useless-intersection": "error",
|
|
94
|
+
"sonarjs/no-useless-react-setstate": "error",
|
|
95
|
+
"sonarjs/no-weak-cipher": "error",
|
|
96
|
+
"sonarjs/no-weak-keys": "error",
|
|
97
|
+
"sonarjs/non-existent-operator": "error",
|
|
98
|
+
"sonarjs/null-dereference": "error",
|
|
99
|
+
"sonarjs/os-command": "error",
|
|
100
|
+
"sonarjs/post-message": "error",
|
|
101
|
+
"sonarjs/production-debug": "error",
|
|
102
|
+
"sonarjs/pseudo-random": "error",
|
|
103
|
+
"sonarjs/publicly-writable-directories": "error",
|
|
104
|
+
"sonarjs/reduce-initial-value": "error",
|
|
105
|
+
"sonarjs/session-regeneration": "error",
|
|
106
|
+
"sonarjs/slow-regex": "error",
|
|
107
|
+
"sonarjs/sql-queries": "error",
|
|
108
|
+
"sonarjs/stateful-regex": "error",
|
|
109
|
+
"sonarjs/strict-transport-security": "error",
|
|
110
|
+
"sonarjs/table-header": "error",
|
|
111
|
+
"sonarjs/table-header-reference": "error",
|
|
112
|
+
"sonarjs/unicode-aware-regex": "error",
|
|
113
|
+
"sonarjs/unverified-certificate": "error",
|
|
114
|
+
"sonarjs/unverified-hostname": "error",
|
|
115
|
+
"sonarjs/updated-const-var": "error",
|
|
116
|
+
"sonarjs/weak-ssl": "error",
|
|
117
|
+
"sonarjs/x-powered-by": "error",
|
|
118
|
+
"sonarjs/xml-parser-xxe": "error"
|
|
119
|
+
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
export default problemRules;
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
const suggestionRules = {
|
|
2
|
+
"sonarjs/argument-type": "error",
|
|
3
|
+
"sonarjs/arguments-order": "error",
|
|
4
|
+
"sonarjs/arguments-usage": "error",
|
|
5
|
+
"sonarjs/array-constructor": "error",
|
|
6
|
+
"sonarjs/arrow-function-convention": "off",
|
|
7
|
+
"sonarjs/assertions-in-tests": "error",
|
|
8
|
+
"sonarjs/block-scoped-var": "error",
|
|
9
|
+
"sonarjs/bool-param-default": "error",
|
|
10
|
+
"sonarjs/call-argument-line": "error",
|
|
11
|
+
"sonarjs/chai-determinate-assertion": "error",
|
|
12
|
+
"sonarjs/class-name": "error",
|
|
13
|
+
"sonarjs/class-prototype": "error",
|
|
14
|
+
"sonarjs/cognitive-complexity": "error",
|
|
15
|
+
"sonarjs/comment-regex": "error",
|
|
16
|
+
"sonarjs/concise-regex": "error",
|
|
17
|
+
"sonarjs/cyclomatic-complexity": "error",
|
|
18
|
+
"sonarjs/declarations-in-global-scope": "error",
|
|
19
|
+
"sonarjs/deprecation": "error",
|
|
20
|
+
"sonarjs/destructuring-assignment-syntax": "error",
|
|
21
|
+
"sonarjs/duplicates-in-character-class": "error",
|
|
22
|
+
"sonarjs/elseif-without-else": "error",
|
|
23
|
+
"sonarjs/expression-complexity": "error",
|
|
24
|
+
"sonarjs/file-header": "off",
|
|
25
|
+
"sonarjs/file-name-differ-from-class": "off",
|
|
26
|
+
"sonarjs/fixme-tag": "error",
|
|
27
|
+
"sonarjs/function-inside-loop": "error",
|
|
28
|
+
"sonarjs/function-name": "error",
|
|
29
|
+
"sonarjs/function-return-type": "error",
|
|
30
|
+
"sonarjs/future-reserved-words": "error",
|
|
31
|
+
"sonarjs/inconsistent-function-call": "error",
|
|
32
|
+
"sonarjs/index-of-compare-to-positive-number": "error",
|
|
33
|
+
"sonarjs/inverted-assertion-arguments": "error",
|
|
34
|
+
"sonarjs/label-position": "error",
|
|
35
|
+
"sonarjs/max-lines": "error",
|
|
36
|
+
"sonarjs/max-lines-per-function": "error",
|
|
37
|
+
"sonarjs/max-switch-cases": "error",
|
|
38
|
+
"sonarjs/max-union-size": "error",
|
|
39
|
+
"sonarjs/misplaced-loop-counter": "error",
|
|
40
|
+
"sonarjs/nested-control-flow": "error",
|
|
41
|
+
"sonarjs/no-array-delete": "error",
|
|
42
|
+
"sonarjs/no-associative-arrays": "error",
|
|
43
|
+
"sonarjs/no-async-constructor": "error",
|
|
44
|
+
"sonarjs/no-case-label-in-switch": "error",
|
|
45
|
+
"sonarjs/no-code-after-done": "error",
|
|
46
|
+
"sonarjs/no-collapsible-if": "error",
|
|
47
|
+
"sonarjs/no-commented-code": "error",
|
|
48
|
+
"sonarjs/no-dead-store": "error",
|
|
49
|
+
"sonarjs/no-duplicate-in-composite": "error",
|
|
50
|
+
"sonarjs/no-duplicate-string": "error",
|
|
51
|
+
"sonarjs/no-duplicated-branches": "error",
|
|
52
|
+
"sonarjs/no-empty-after-reluctant": "error",
|
|
53
|
+
"sonarjs/no-empty-group": "error",
|
|
54
|
+
"sonarjs/no-empty-test-file": "error",
|
|
55
|
+
"sonarjs/no-equals-in-for-termination": "error",
|
|
56
|
+
"sonarjs/no-fallthrough": "error",
|
|
57
|
+
"sonarjs/no-for-in-iterable": "error",
|
|
58
|
+
"sonarjs/no-global-this": "error",
|
|
59
|
+
"sonarjs/no-gratuitous-expressions": "error",
|
|
60
|
+
"sonarjs/no-identical-functions": "error",
|
|
61
|
+
"sonarjs/no-ignored-exceptions": "error",
|
|
62
|
+
"sonarjs/no-implicit-dependencies": "off",
|
|
63
|
+
"sonarjs/no-implicit-global": "error",
|
|
64
|
+
"sonarjs/no-in-misuse": "error",
|
|
65
|
+
"sonarjs/no-incomplete-assertions": "error",
|
|
66
|
+
"sonarjs/no-inconsistent-returns": "error",
|
|
67
|
+
"sonarjs/no-incorrect-string-concat": "error",
|
|
68
|
+
"sonarjs/no-internal-api-use": "error",
|
|
69
|
+
"sonarjs/no-invariant-returns": "error",
|
|
70
|
+
"sonarjs/no-inverted-boolean-check": "error",
|
|
71
|
+
"sonarjs/no-labels": "error",
|
|
72
|
+
"sonarjs/no-misleading-array-reverse": "error",
|
|
73
|
+
"sonarjs/no-nested-assignment": "error",
|
|
74
|
+
"sonarjs/no-nested-conditional": "error",
|
|
75
|
+
"sonarjs/no-nested-functions": "error",
|
|
76
|
+
"sonarjs/no-nested-incdec": "error",
|
|
77
|
+
"sonarjs/no-nested-switch": "error",
|
|
78
|
+
"sonarjs/no-nested-template-literals": "error",
|
|
79
|
+
"sonarjs/no-primitive-wrappers": "error",
|
|
80
|
+
"sonarjs/no-redundant-assignments": "error",
|
|
81
|
+
"sonarjs/no-redundant-boolean": "error",
|
|
82
|
+
"sonarjs/no-redundant-jump": "error",
|
|
83
|
+
"sonarjs/no-redundant-optional": "error",
|
|
84
|
+
"sonarjs/no-regex-spaces": "error",
|
|
85
|
+
"sonarjs/no-require-or-define": "error",
|
|
86
|
+
"sonarjs/no-return-type-any": "error",
|
|
87
|
+
"sonarjs/no-same-line-conditional": "error",
|
|
88
|
+
"sonarjs/no-selector-parameter": "error",
|
|
89
|
+
"sonarjs/no-skipped-tests": "error",
|
|
90
|
+
"sonarjs/no-small-switch": "error",
|
|
91
|
+
"sonarjs/no-sonar-comments": "error",
|
|
92
|
+
"sonarjs/no-table-as-layout": "error",
|
|
93
|
+
"sonarjs/no-undefined-argument": "error",
|
|
94
|
+
"sonarjs/no-undefined-assignment": "off",
|
|
95
|
+
"sonarjs/no-unenclosed-multiline-block": "error",
|
|
96
|
+
"sonarjs/no-uniq-key": "error",
|
|
97
|
+
"sonarjs/no-unused-collection": "error",
|
|
98
|
+
"sonarjs/no-unused-function-argument": "error",
|
|
99
|
+
"sonarjs/no-unused-vars": "error",
|
|
100
|
+
"sonarjs/no-useless-catch": "error",
|
|
101
|
+
"sonarjs/no-variable-usage-before-declaration": "error",
|
|
102
|
+
"sonarjs/no-wildcard-import": "off",
|
|
103
|
+
"sonarjs/non-number-in-arithmetic-expression": "error",
|
|
104
|
+
"sonarjs/object-alt-content": "error",
|
|
105
|
+
"sonarjs/operation-returning-nan": "error",
|
|
106
|
+
"sonarjs/prefer-default-last": "error",
|
|
107
|
+
"sonarjs/prefer-immediate-return": "error",
|
|
108
|
+
"sonarjs/prefer-object-literal": "error",
|
|
109
|
+
"sonarjs/prefer-promise-shorthand": "error",
|
|
110
|
+
"sonarjs/prefer-read-only-props": "error",
|
|
111
|
+
"sonarjs/prefer-regexp-exec": "error",
|
|
112
|
+
"sonarjs/prefer-single-boolean-return": "error",
|
|
113
|
+
"sonarjs/prefer-type-guard": "error",
|
|
114
|
+
"sonarjs/prefer-while": "error",
|
|
115
|
+
"sonarjs/public-static-readonly": "error",
|
|
116
|
+
"sonarjs/redundant-type-aliases": "error",
|
|
117
|
+
"sonarjs/regex-complexity": "error",
|
|
118
|
+
"sonarjs/shorthand-property-grouping": "off",
|
|
119
|
+
"sonarjs/single-char-in-character-classes": "error",
|
|
120
|
+
"sonarjs/single-character-alternation": "error",
|
|
121
|
+
"sonarjs/stable-tests": "error",
|
|
122
|
+
"sonarjs/strings-comparison": "error",
|
|
123
|
+
"sonarjs/test-check-exception": "error",
|
|
124
|
+
"sonarjs/todo-tag": "off",
|
|
125
|
+
"sonarjs/too-many-break-or-continue-in-loop": "error",
|
|
126
|
+
"sonarjs/unused-import": "error",
|
|
127
|
+
"sonarjs/unused-named-groups": "error",
|
|
128
|
+
"sonarjs/updated-loop-counter": "error",
|
|
129
|
+
"sonarjs/use-type-alias": "error",
|
|
130
|
+
"sonarjs/values-not-convertible-to-numbers": "error",
|
|
131
|
+
"sonarjs/variable-name": "error",
|
|
132
|
+
"sonarjs/void-use": "error"
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
export default suggestionRules;
|
package/rules/stylistic/jsx.js
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
const jsxRules = {
|
|
2
|
+
"@stylistic/exp-jsx-props-style": [
|
|
3
|
+
"error",
|
|
4
|
+
{
|
|
5
|
+
multiLine: {
|
|
6
|
+
minItems: 0
|
|
7
|
+
},
|
|
8
|
+
singleLine: {
|
|
9
|
+
maxItems: 3
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
],
|
|
2
13
|
"@stylistic/jsx-child-element-spacing": "error",
|
|
3
14
|
"@stylistic/jsx-closing-tag-location": ["error", "line-aligned"],
|
|
4
15
|
"@stylistic/jsx-equals-spacing": ["error", "never"],
|
|
@@ -8,6 +8,21 @@ const spacingRules = {
|
|
|
8
8
|
],
|
|
9
9
|
"@stylistic/block-spacing": ["error", "always"],
|
|
10
10
|
"@stylistic/computed-property-spacing": ["error", "never"],
|
|
11
|
+
"@stylistic/exp-list-style": [
|
|
12
|
+
"error",
|
|
13
|
+
{
|
|
14
|
+
multiLine: {
|
|
15
|
+
minItems: 0
|
|
16
|
+
},
|
|
17
|
+
overrides: {
|
|
18
|
+
"{}": { singleLine: { spacing: "always" } }
|
|
19
|
+
},
|
|
20
|
+
singleLine: {
|
|
21
|
+
maxItems: 3,
|
|
22
|
+
spacing: "never"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
],
|
|
11
26
|
"@stylistic/function-call-spacing": ["error", "never"],
|
|
12
27
|
"@stylistic/generator-star-spacing": ["error", "after"],
|
|
13
28
|
"@stylistic/key-spacing": [
|