@pumpn/eslint-config 11.1.2 → 12.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.
Files changed (68) hide show
  1. package/.ls-lint.yml +6 -0
  2. package/.tool-versions +1 -0
  3. package/.vscode/settings.json +7 -0
  4. package/config.js +91 -62
  5. package/deno.json +40 -0
  6. package/deno.lock +3152 -0
  7. package/eslint.config.js +13 -0
  8. package/import-map.json +26 -0
  9. package/jsdoc.json +51 -0
  10. package/package.json +24 -17
  11. package/plugins.js +40 -0
  12. package/rules/_exports.js +21 -0
  13. package/rules/eslint-comments/_exports.js +2 -0
  14. package/rules/eslint-comments/best-practices.js +10 -0
  15. package/rules/eslint-comments/stylistic-issues.js +12 -0
  16. package/rules/eslint-comments.js +12 -0
  17. package/rules/github.js +27 -0
  18. package/rules/import/_exports.js +4 -0
  19. package/rules/import/helpful-warnings.js +18 -0
  20. package/rules/import/module-systems.js +9 -0
  21. package/rules/import/static-analysis.js +71 -0
  22. package/rules/import/style-guide.js +86 -0
  23. package/rules/import.js +12 -0
  24. package/rules/jsdoc.js +255 -54
  25. package/rules/jsx-a11y.js +139 -0
  26. package/rules/layout-and-formatting.js +4 -260
  27. package/rules/no-secrets.js +18 -0
  28. package/rules/no-unsanitized.js +6 -0
  29. package/rules/perfectionist.js +267 -0
  30. package/rules/possible-problems.js +74 -15
  31. package/rules/promise.js +25 -0
  32. package/rules/react.js +105 -2
  33. package/rules/redos.js +15 -0
  34. package/rules/regexp/_exports.js +3 -0
  35. package/rules/regexp/best-practices.js +43 -0
  36. package/rules/regexp/possible-errors.js +26 -0
  37. package/rules/regexp/stylistic-issues.js +62 -0
  38. package/rules/regexp.js +12 -0
  39. package/rules/security.js +18 -0
  40. package/rules/sonarjs/_exports.js +2 -0
  41. package/rules/sonarjs/bug-detection.js +14 -0
  42. package/rules/sonarjs/code-smell-detection.js +37 -0
  43. package/rules/sonarjs.js +12 -0
  44. package/rules/stylistic/_common/_exports.js +3 -0
  45. package/rules/stylistic/_common/min-items-for-array-newline.js +3 -0
  46. package/rules/stylistic/_exports.js +13 -0
  47. package/rules/stylistic/brackets.js +79 -0
  48. package/rules/stylistic/commas.js +13 -0
  49. package/rules/stylistic/comments.js +23 -0
  50. package/rules/stylistic/disallow.js +31 -0
  51. package/rules/stylistic/indent.js +12 -0
  52. package/rules/stylistic/jsx.js +35 -0
  53. package/rules/stylistic/linebreaks.js +74 -0
  54. package/rules/stylistic/misc.js +32 -0
  55. package/rules/stylistic/operators.js +26 -0
  56. package/rules/stylistic/quotes.js +7 -0
  57. package/rules/stylistic/semis.js +14 -0
  58. package/rules/stylistic/spacing.js +53 -0
  59. package/rules/stylistic/types.js +7 -0
  60. package/rules/stylistic.js +12 -0
  61. package/rules/suggestions.js +152 -135
  62. package/rules/tailwindcss.js +11 -0
  63. package/rules/unicorn.js +200 -0
  64. package/rules.js +11 -14
  65. package/.np-config.cjs +0 -1
  66. package/addons/deno.js +0 -15
  67. package/addons.js +0 -1
  68. package/rules/imports.js +0 -135
@@ -0,0 +1,32 @@
1
+ const maxLineLength = 100;
2
+ const tabWidth = 4;
3
+
4
+ const miscRules = {
5
+ "@stylistic/max-len": [
6
+ "error",
7
+ {
8
+ code: maxLineLength,
9
+ ignoreComments: true,
10
+ ignoreRegExpLiterals: true,
11
+ ignoreStrings: true,
12
+ ignoreTemplateLiterals: true,
13
+ ignoreTrailingComments: false,
14
+ ignoreUrls: true,
15
+ tabWidth
16
+ }
17
+ ],
18
+ "@stylistic/max-statements-per-line": ["error", { max: 1 }],
19
+ "@stylistic/member-delimiter-style": "error",
20
+ "@stylistic/nonblock-statement-body-position": ["error", "beside"],
21
+ "@stylistic/one-var-declaration-per-line": ["error", "always"],
22
+ "@stylistic/padded-blocks": [
23
+ "error",
24
+ {
25
+ blocks: "never",
26
+ classes: "always",
27
+ switches: "never"
28
+ }
29
+ ]
30
+ };
31
+
32
+ export default miscRules;
@@ -0,0 +1,26 @@
1
+ const operatorsRules = {
2
+ "@stylistic/dot-location": ["error", "property"],
3
+ "@stylistic/multiline-ternary": ["error", "always-multiline"],
4
+ "@stylistic/no-mixed-operators": "error",
5
+ "@stylistic/operator-linebreak": [
6
+ "error",
7
+ "after",
8
+ {
9
+ overrides: {
10
+ ":": "before",
11
+ "?": "before"
12
+ }
13
+ }
14
+ ],
15
+ "@stylistic/space-infix-ops": ["error", { int32Hint: false }],
16
+ "@stylistic/space-unary-ops": [
17
+ "error",
18
+ {
19
+ nonwords: false,
20
+ overrides: {},
21
+ words: true
22
+ }
23
+ ]
24
+ };
25
+
26
+ export default operatorsRules;
@@ -0,0 +1,7 @@
1
+ const quotesRules = {
2
+ "@stylistic/jsx-quotes": ["error", "prefer-double"],
3
+ "@stylistic/quote-props": ["error", "as-needed"],
4
+ "@stylistic/quotes": ["error", "double"]
5
+ };
6
+
7
+ export default quotesRules;
@@ -0,0 +1,14 @@
1
+ const semisRules = {
2
+ "@stylistic/no-extra-semi": "off",
3
+ "@stylistic/semi": ["error", "always"],
4
+ "@stylistic/semi-spacing": [
5
+ "error",
6
+ {
7
+ before: false,
8
+ after: true
9
+ }
10
+ ],
11
+ "@stylistic/semi-style": ["error", "last"]
12
+ };
13
+
14
+ export default semisRules;
@@ -0,0 +1,53 @@
1
+ const spacingRules = {
2
+ "@stylistic/arrow-spacing": [
3
+ "error",
4
+ {
5
+ before: true,
6
+ after: true
7
+ }
8
+ ],
9
+ "@stylistic/block-spacing": ["error", "always"],
10
+ "@stylistic/computed-property-spacing": ["error", "never"],
11
+ "@stylistic/function-call-spacing": ["error", "never"],
12
+ "@stylistic/generator-star-spacing": [
13
+ "error",
14
+ {
15
+ before: false,
16
+ after: true
17
+ }
18
+ ],
19
+ "@stylistic/key-spacing": [
20
+ "error",
21
+ {
22
+ beforeColon: false,
23
+ afterColon: true,
24
+ mode: "strict"
25
+ }
26
+ ],
27
+ "@stylistic/keyword-spacing": [
28
+ "error",
29
+ {
30
+ before: true,
31
+ after: true
32
+ }
33
+ ],
34
+ "@stylistic/rest-spread-spacing": ["error", "never"],
35
+ "@stylistic/space-before-blocks": ["error", "always"],
36
+ "@stylistic/switch-colon-spacing": [
37
+ "error",
38
+ {
39
+ before: false,
40
+ after: true
41
+ }
42
+ ],
43
+ "@stylistic/template-tag-spacing": ["error", "never"],
44
+ "@stylistic/yield-star-spacing": [
45
+ "error",
46
+ {
47
+ before: false,
48
+ after: true
49
+ }
50
+ ]
51
+ };
52
+
53
+ export default spacingRules;
@@ -0,0 +1,7 @@
1
+ const typesRules = {
2
+ "@stylistic/type-annotation-spacing": "error",
3
+ "@stylistic/type-generic-spacing": "error",
4
+ "@stylistic/type-named-tuple-spacing": "error"
5
+ };
6
+
7
+ export default typesRules;
@@ -0,0 +1,12 @@
1
+ import * as stylisticRuleSets from "./stylistic/_exports.js";
2
+
3
+ const stylisticRules = Object.values(stylisticRuleSets)
4
+ .reduce(
5
+ (allRules, ruleSet) => ({
6
+ ...allRules,
7
+ ...ruleSet
8
+ }),
9
+ {}
10
+ );
11
+
12
+ export default stylisticRules;
@@ -7,41 +7,8 @@ const maxLinesPerFunction = 100;
7
7
  const maxNestedCallbacks = 4;
8
8
  const maxParameters = 3;
9
9
  const maxStatements = 20;
10
- const minKeysToSort = 10;
11
10
 
12
- export default {
13
- "accessor-pairs": ["error"],
14
- "arrow-body-style": ["error"],
15
- "block-scoped-var": ["error"],
16
- camelcase: ["error"],
17
- "class-methods-use-this": ["error"],
18
- complexity: ["error"],
19
- "consistent-return": ["error"],
20
- curly: ["error"],
21
- "default-case": ["error"],
22
- "default-case-last": ["error"],
23
- "default-param-last": ["error"],
24
- "dot-notation": ["error"],
25
- eqeqeq: ["error"],
26
- "func-name-matching": ["error"],
27
- "func-style": ["error"],
28
- "grouped-accessor-pairs": ["error"],
29
- "id-denylist": ["error"],
30
- "id-length": [
31
- "error",
32
- {
33
- min: minIdentifierLength,
34
- max: maxIdentifierLength,
35
- properties: "never",
36
- exceptions: [
37
- "x",
38
- "y",
39
- "z"
40
- ]
41
- }
42
- ],
43
- "init-declarations": ["warn"],
44
- "logical-assignment-operators": ["error"],
11
+ const suggestionsRules = {
45
12
  "max-classes-per-file": ["error", maxClassesPerFile],
46
13
  "max-depth": ["error", maxDepth],
47
14
  "max-lines": [
@@ -63,13 +30,54 @@ export default {
63
30
  "max-nested-callbacks": ["error", maxNestedCallbacks],
64
31
  "max-params": ["error", maxParameters],
65
32
  "max-statements": ["error", { max: maxStatements }],
66
- "multiline-comment-style": ["off"],
67
- "new-cap": ["error"],
68
- "no-alert": ["error"],
69
- "no-array-constructor": ["error"],
70
- "no-bitwise": ["error"],
71
- "no-caller": ["error"],
72
- "no-confusing-arrow": ["error"],
33
+ "accessor-pairs": "error",
34
+ "arrow-body-style": "error",
35
+ "block-scoped-var": "error",
36
+ camelcase: "error",
37
+ "capitalized-comments": "off",
38
+ "class-methods-use-this": "error",
39
+ complexity: "error",
40
+ "consistent-return": "error",
41
+ "consistent-this": "error",
42
+ curly: "error",
43
+ "default-case": "error",
44
+ "default-case-last": "error",
45
+ "default-param-last": "error",
46
+ "dot-notation": "error",
47
+ eqeqeq: "error",
48
+ "func-name-matching": "error",
49
+ "func-names": [
50
+ "error",
51
+ "as-needed",
52
+ { generators: "as-needed" }
53
+ ],
54
+ "func-style": "error",
55
+ "grouped-accessor-pairs": "error",
56
+ "guard-for-in": "off",
57
+ "id-denylist": "error",
58
+ "id-length": [
59
+ "error",
60
+ {
61
+ min: minIdentifierLength,
62
+ max: maxIdentifierLength,
63
+ exceptions: [
64
+ "x",
65
+ "y",
66
+ "z"
67
+ ],
68
+ properties: "never"
69
+ }
70
+ ],
71
+ "id-match": "off",
72
+ "init-declarations": "warn",
73
+ "logical-assignment-operators": "error",
74
+ "multiline-comment-style": "off",
75
+ "new-cap": "error",
76
+ "no-alert": "error",
77
+ "no-array-constructor": "error",
78
+ "no-bitwise": "error",
79
+ "no-caller": "error",
80
+ "no-case-declarations": "error",
73
81
  "no-console": [
74
82
  "error",
75
83
  {
@@ -80,57 +88,69 @@ export default {
80
88
  ]
81
89
  }
82
90
  ],
83
- "no-continue": ["off"],
84
- "no-div-regex": ["error"],
85
- "no-else-return": ["error"],
86
- "no-empty": ["error"],
87
- "no-empty-function": ["error"],
88
- "no-empty-static-block": ["error"],
89
- "no-eq-null": ["error"],
90
- "no-eval": ["error"],
91
- "no-extend-native": ["error"],
92
- "no-extra-bind": ["error"],
93
- "no-extra-label": ["error"],
94
- "no-floating-decimal": ["error"],
95
- "no-implicit-coercion": ["error"],
96
- "no-implicit-globals": ["error"],
97
- "no-implied-eval": ["error"],
98
- "no-inline-comments": ["error"],
99
- "no-invalid-this": ["error"],
100
- "no-iterator": ["error"],
101
- "no-label-var": ["error"],
102
- "no-labels": ["off"],
103
- "no-lone-blocks": ["error"],
104
- "no-lonely-if": ["error"],
105
- "no-loop-func": ["error"],
91
+ "no-continue": "off",
92
+ "no-delete-var": "error",
93
+ "no-div-regex": "error",
94
+ "no-else-return": "error",
95
+ "no-empty": "error",
96
+ "no-empty-function": "error",
97
+ "no-empty-static-block": "error",
98
+ "no-eq-null": "error",
99
+ "no-eval": "error",
100
+ "no-extend-native": "error",
101
+ "no-extra-bind": "error",
102
+ "no-extra-boolean-cast": "error",
103
+ "no-extra-label": "error",
104
+ "no-global-assign": "error",
105
+ "no-implicit-coercion": "error",
106
+ "no-implicit-globals": "error",
107
+ "no-implied-eval": "error",
108
+ "no-inline-comments": [
109
+ "error",
110
+ {
111
+ ignorePattern: "@type"
112
+ }
113
+ ],
114
+ "no-invalid-this": "error",
115
+ "no-iterator": "error",
116
+ "no-label-var": "error",
117
+ "no-labels": "off",
118
+ "no-lone-blocks": "error",
119
+ "no-lonely-if": "error",
120
+ "no-loop-func": "error",
106
121
  "no-magic-numbers": [
107
122
  "error",
108
123
  {
124
+ detectObjects: false,
125
+ enforceConst: false,
109
126
  ignore: [
110
127
  -1,
111
128
  0,
112
- 1
129
+ 1,
130
+ 2,
131
+ 10
113
132
  ],
114
133
  ignoreArrayIndexes: false,
115
- ignoreDefaultValues: true,
116
134
  ignoreClassFieldInitialValues: true,
117
- enforceConst: false,
118
- detectObjects: true
135
+ ignoreDefaultValues: true
119
136
  }
120
137
  ],
121
- "no-mixed-operators": ["error"],
122
- "no-multi-assign": ["error"],
123
- "no-multi-str": ["error"],
124
- "no-negated-condition": ["error"],
125
- "no-nested-ternary": ["error"],
126
- "no-new": ["error"],
127
- "no-new-func": ["error"],
128
- "no-new-object": ["error"],
129
- "no-new-wrappers": ["error"],
130
- "no-octal-escape": ["error"],
131
- "no-param-reassign": ["error"],
138
+ "no-multi-assign": "error",
139
+ "no-multi-str": "error",
140
+ "no-negated-condition": "off",
141
+ "no-nested-ternary": "off",
142
+ "no-new": "error",
143
+ "no-new-func": "error",
144
+ "no-new-wrappers": "error",
145
+ "no-nonoctal-decimal-escape": "error",
146
+ "no-object-constructor": "error",
147
+ "no-octal": "error",
148
+ "no-octal-escape": "error",
149
+ "no-param-reassign": "error",
132
150
  "no-plusplus": ["error", { allowForLoopAfterthoughts: true }],
133
- "no-proto": ["error"],
151
+ "no-proto": "error",
152
+ "no-redeclare": "error",
153
+ "no-regex-spaces": "error",
134
154
  "no-restricted-exports": [
135
155
  "error",
136
156
  {
@@ -139,65 +159,62 @@ export default {
139
159
  }
140
160
  }
141
161
  ],
142
- "no-restricted-globals": ["error"],
143
- "no-restricted-imports": ["error"],
144
- "no-restricted-properties": ["error"],
145
- "no-restricted-syntax": ["error"],
146
- "no-return-assign": ["error"],
147
- "no-return-await": ["error"],
148
- "no-script-url": ["error"],
149
- "no-sequences": ["error"],
150
- "no-shadow": ["error"],
151
- "no-ternary": ["off"],
152
- "no-throw-literal": ["error"],
153
- "no-undef-init": ["error"],
154
- "no-undefined": ["error"],
155
- "no-underscore-dangle": ["error"],
156
- "no-unneeded-ternary": ["error"],
157
- "no-unused-expressions": ["error"],
158
- "no-useless-call": ["error"],
159
- "no-useless-computed-key": ["error"],
160
- "no-useless-concat": ["error"],
161
- "no-useless-constructor": ["error"],
162
- "no-useless-rename": ["error"],
163
- "no-useless-return": ["error"],
164
- "no-var": ["error"],
165
- "no-void": ["error"],
166
- "no-warning-comments": ["error"],
162
+ "no-restricted-globals": "error",
163
+ "no-restricted-imports": "error",
164
+ "no-restricted-properties": "error",
165
+ "no-restricted-syntax": "error",
166
+ "no-return-assign": "error",
167
+ "no-script-url": "error",
168
+ "no-sequences": "error",
169
+ "no-shadow": "error",
170
+ "no-shadow-restricted-names": "error",
171
+ "no-ternary": "off",
172
+ "no-throw-literal": "error",
173
+ "no-undef-init": "error",
174
+ "no-undefined": "off",
175
+ "no-underscore-dangle": "error",
176
+ "no-unneeded-ternary": "error",
177
+ "no-unused-expressions": "error",
178
+ "no-unused-labels": "error",
179
+ "no-useless-call": "error",
180
+ "no-useless-catch": "error",
181
+ "no-useless-computed-key": "error",
182
+ "no-useless-concat": "error",
183
+ "no-useless-constructor": "error",
184
+ "no-useless-escape": "error",
185
+ "no-useless-rename": "error",
186
+ "no-useless-return": "error",
187
+ "no-var": "error",
188
+ "no-void": "error",
189
+ "no-warning-comments": "off",
190
+ "no-with": "error",
167
191
  "object-shorthand": ["error", "properties"],
168
192
  "one-var": ["error", "never"],
169
- "one-var-declaration-per-line": ["error", "always"],
170
193
  "operator-assignment": ["error", "always"],
171
- "prefer-arrow-callback": ["error"],
172
- "prefer-const": ["error"],
173
- "prefer-destructuring": ["error"],
174
- "prefer-exponentiation-operator": ["error"],
175
- "prefer-named-capture-group": ["error"],
176
- "prefer-numeric-literals": ["error"],
177
- "prefer-object-has-own": ["error"],
178
- "prefer-object-spread": ["error"],
179
- "prefer-promise-reject-errors": ["error"],
180
- "prefer-regex-literals": ["error"],
181
- "prefer-rest-params": ["error"],
182
- "prefer-spread": ["error"],
183
- "prefer-template": ["error"],
184
- "quote-props": ["error", "as-needed"],
194
+ "prefer-arrow-callback": "error",
195
+ "prefer-const": "error",
196
+ "prefer-destructuring": "error",
197
+ "prefer-exponentiation-operator": "error",
198
+ "prefer-named-capture-group": "off",
199
+ "prefer-numeric-literals": "error",
200
+ "prefer-object-has-own": "error",
201
+ "prefer-object-spread": "error",
202
+ "prefer-promise-reject-errors": "error",
203
+ "prefer-regex-literals": "error",
204
+ "prefer-rest-params": "error",
205
+ "prefer-spread": "error",
206
+ "prefer-template": "error",
185
207
  radix: ["error", "as-needed"],
186
- "require-await": ["error"],
187
- "require-unicode-regexp": ["error"],
188
- "sort-keys-plus/sort-keys": [
189
- "error",
190
- "asc",
191
- {
192
- minKeys: minKeysToSort,
193
- natural: true,
194
- allowLineSeparatedGroups: true
195
- }
196
- ],
197
- "sort-vars": ["error"],
198
- "spaced-comment": ["error", "always"],
208
+ "require-await": "error",
209
+ "require-unicode-regexp": "off",
210
+ "require-yield": "error",
211
+ "sort-imports": "off",
212
+ "sort-keys": "off",
213
+ "sort-vars": "off",
199
214
  strict: ["error", "never"],
200
- "symbol-description": ["error"],
201
- "vars-on-top": ["error"],
215
+ "symbol-description": "error",
216
+ "vars-on-top": "error",
202
217
  yoda: ["error", "never"]
203
218
  };
219
+
220
+ export default suggestionsRules;
@@ -0,0 +1,11 @@
1
+ const tailwindcssRules = {
2
+ "tailwindcss/classnames-order": "error",
3
+ "tailwindcss/enforces-negative-arbitrary-values": "error",
4
+ "tailwindcss/enforces-shorthand": "error",
5
+ "tailwindcss/migration-from-tailwind-2": "error",
6
+ "tailwindcss/no-arbitrary-value": "off",
7
+ "tailwindcss/no-contradicting-classname": "error",
8
+ "tailwindcss/no-custom-classname": "off"
9
+ };
10
+
11
+ export default tailwindcssRules;