@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/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.1",
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": [
@@ -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"],
@@ -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": [