@pumpn/eslint-config 16.2.0 → 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/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": "16.2.0",
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": "^9.39.2"
20
+ "eslint": "^10.0.3"
21
21
  },
22
22
  "dependencies": {
23
- "@eslint-community/eslint-plugin-eslint-comments": "^4.6.0",
24
- "@stylistic/eslint-plugin": "^5.7.0",
25
- "@typescript-eslint/parser": "^8.53.0",
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.4.0",
28
- "eslint-plugin-depend": "^1.4.0",
29
- "eslint-plugin-import-x": "^4.16.1",
30
- "eslint-plugin-jsdoc": "^62.1.0",
31
- "eslint-plugin-no-secrets": "^2.2.1",
32
- "eslint-plugin-perfectionist": "^5.3.1",
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": "^2.7.2",
35
- "eslint-plugin-react-hooks-extra": "^2.7.2",
36
- "eslint-plugin-react-naming-convention": "^2.7.2",
37
- "eslint-plugin-react-web-api": "^2.7.2",
38
- "eslint-plugin-react-x": "^2.7.2",
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": "^2.10.0",
41
- "eslint-plugin-security": "^3.0.1",
42
- "eslint-plugin-sonarjs": "^3.0.5",
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": "^62.0.0",
45
- "globals": "^17.0.0"
44
+ "eslint-plugin-unicorn": "^63.0.0",
45
+ "globals": "^17.4.0"
46
46
  },
47
47
  "peerDependencies": {
48
- "eslint": "^9.34.0"
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 redos from "eslint-plugin-redos";
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
- // TODO [2026-07-01]: Remove assertion once https://github.com/un-ts/eslint-plugin-import-x/issues/421 is resolved
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
 
@@ -12,6 +12,7 @@ const helpfulWarningsRules = {
12
12
  {
13
13
  ignoreUnusedTypeExports: true,
14
14
  missingExports: true,
15
+ suppressMissingFileEnumeratorAPIWarning: true,
15
16
  unusedExports: false
16
17
  }
17
18
  ]
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
  }
@@ -9,7 +9,7 @@ const perfectionistRules = {
9
9
  "perfectionist/sort-array-includes": [
10
10
  "error",
11
11
  {
12
- groups: ["literal", "spread"]
12
+ groups: ["literal"]
13
13
  }
14
14
  ],
15
15
  "perfectionist/sort-classes": [
@@ -109,7 +109,7 @@ const perfectionistRules = {
109
109
  "perfectionist/sort-jsx-props": [
110
110
  "error",
111
111
  {
112
- groups: ["shorthand", "unknown", "multiline"]
112
+ groups: ["shorthand-prop", "unknown", "multiline-prop"]
113
113
  }
114
114
  ],
115
115
  "perfectionist/sort-maps": "error",
@@ -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",
@@ -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";
@@ -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/prefer-read-only-props": "error",
61
- "@eslint-react/prefer-use-state-lazy-initialization": "error"
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/component-name": [
3
- "error",
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;
@@ -0,0 +1,5 @@
1
+ const rscRules = {
2
+ "@eslint-react/rsc/function-definition": "error"
3
+ };
4
+
5
+ export default rscRules;
@@ -6,8 +6,8 @@ const stylisticIssuesRules = {
6
6
  {
7
7
  caseInsensitive: "lowercase",
8
8
  controlEscape: "uppercase",
9
- hexadecimalEscape: "lowercase",
10
- unicodeEscape: "lowercase"
9
+ hexadecimalEscape: "uppercase",
10
+ unicodeEscape: "uppercase"
11
11
  }
12
12
  ],
13
13
  "regexp/match-any": "error",
@@ -1,2 +1,2 @@
1
- export { default as bugDetectionRules } from "./bug-detection.js";
2
- export { default as sonarjsCodeSmellRules } from "./code-smell-detection.js";
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;
@@ -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"],