@greenberry/linting-config 0.1.71 → 0.1.73

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.
@@ -1,360 +1,4 @@
1
1
  export default config;
2
- declare const config: ({
3
- files: string[];
4
- languageOptions: {
5
- parser: typeof tsParser;
6
- parserOptions: {
7
- ecmaVersion: string;
8
- sourceType: string;
9
- ecmaFeatures: {
10
- jsx: boolean;
11
- };
12
- project: string;
13
- };
14
- };
15
- plugins: {
16
- "@typescript-eslint": {
17
- configs: Record<string, import("@typescript-eslint/utils/ts-eslint").ClassicConfig.Config>;
18
- meta: import("@typescript-eslint/utils/ts-eslint").FlatConfig.PluginMeta;
19
- rules: typeof import("@typescript-eslint/eslint-plugin/use-at-your-own-risk/rules");
20
- };
21
- react: {
22
- deprecatedRules: Partial<{
23
- 'boolean-prop-naming': import("eslint").Rule.RuleModule;
24
- 'button-has-type': import("eslint").Rule.RuleModule;
25
- 'checked-requires-onchange-or-readonly': import("eslint").Rule.RuleModule;
26
- 'default-props-match-prop-types': import("eslint").Rule.RuleModule;
27
- 'destructuring-assignment': import("eslint").Rule.RuleModule;
28
- 'display-name': import("eslint").Rule.RuleModule;
29
- 'forbid-component-props': import("eslint").Rule.RuleModule;
30
- 'forbid-dom-props': import("eslint").Rule.RuleModule;
31
- 'forbid-elements': import("eslint").Rule.RuleModule;
32
- 'forbid-foreign-prop-types': import("eslint").Rule.RuleModule;
33
- 'forbid-prop-types': import("eslint").Rule.RuleModule;
34
- 'forward-ref-uses-ref': import("eslint").Rule.RuleModule;
35
- 'function-component-definition': import("eslint").Rule.RuleModule;
36
- 'hook-use-state': import("eslint").Rule.RuleModule;
37
- 'iframe-missing-sandbox': import("eslint").Rule.RuleModule;
38
- 'jsx-boolean-value': import("eslint").Rule.RuleModule;
39
- 'jsx-child-element-spacing': import("eslint").Rule.RuleModule;
40
- 'jsx-closing-bracket-location': import("eslint").Rule.RuleModule;
41
- 'jsx-closing-tag-location': import("eslint").Rule.RuleModule;
42
- 'jsx-curly-spacing': import("eslint").Rule.RuleModule;
43
- 'jsx-curly-newline': import("eslint").Rule.RuleModule;
44
- 'jsx-equals-spacing': import("eslint").Rule.RuleModule;
45
- 'jsx-filename-extension': import("eslint").Rule.RuleModule;
46
- 'jsx-first-prop-new-line': import("eslint").Rule.RuleModule;
47
- 'jsx-handler-names': import("eslint").Rule.RuleModule;
48
- 'jsx-indent': import("eslint").Rule.RuleModule;
49
- 'jsx-indent-props': import("eslint").Rule.RuleModule;
50
- 'jsx-key': import("eslint").Rule.RuleModule;
51
- 'jsx-max-depth': import("eslint").Rule.RuleModule;
52
- 'jsx-max-props-per-line': import("eslint").Rule.RuleModule;
53
- 'jsx-newline': import("eslint").Rule.RuleModule;
54
- 'jsx-no-bind': import("eslint").Rule.RuleModule;
55
- 'jsx-no-comment-textnodes': import("eslint").Rule.RuleModule;
56
- 'jsx-no-constructed-context-values': import("eslint").Rule.RuleModule;
57
- 'jsx-no-duplicate-props': import("eslint").Rule.RuleModule;
58
- 'jsx-no-leaked-render': import("eslint").Rule.RuleModule;
59
- 'jsx-no-literals': import("eslint").Rule.RuleModule;
60
- 'jsx-no-script-url': import("eslint").Rule.RuleModule;
61
- 'jsx-no-target-blank': import("eslint").Rule.RuleModule;
62
- 'jsx-no-useless-fragment': import("eslint").Rule.RuleModule;
63
- 'jsx-one-expression-per-line': import("eslint").Rule.RuleModule;
64
- 'jsx-no-undef': import("eslint").Rule.RuleModule;
65
- 'jsx-curly-brace-presence': import("eslint").Rule.RuleModule;
66
- 'jsx-pascal-case': import("eslint").Rule.RuleModule;
67
- 'jsx-fragments': import("eslint").Rule.RuleModule;
68
- 'jsx-props-no-multi-spaces': import("eslint").Rule.RuleModule;
69
- 'jsx-props-no-spreading': import("eslint").Rule.RuleModule;
70
- 'jsx-props-no-spread-multi': import("eslint").Rule.RuleModule;
71
- 'jsx-sort-default-props': import("eslint").Rule.RuleModule;
72
- 'jsx-sort-props': import("eslint").Rule.RuleModule;
73
- 'jsx-space-before-closing': import("eslint").Rule.RuleModule;
74
- 'jsx-tag-spacing': import("eslint").Rule.RuleModule;
75
- 'jsx-uses-react': import("eslint").Rule.RuleModule;
76
- 'jsx-uses-vars': import("eslint").Rule.RuleModule;
77
- 'jsx-wrap-multilines': import("eslint").Rule.RuleModule;
78
- 'no-invalid-html-attribute': import("eslint").Rule.RuleModule;
79
- 'no-access-state-in-setstate': import("eslint").Rule.RuleModule;
80
- 'no-adjacent-inline-elements': import("eslint").Rule.RuleModule;
81
- 'no-array-index-key': import("eslint").Rule.RuleModule;
82
- 'no-arrow-function-lifecycle': import("eslint").Rule.RuleModule;
83
- 'no-children-prop': import("eslint").Rule.RuleModule;
84
- 'no-danger': import("eslint").Rule.RuleModule;
85
- 'no-danger-with-children': import("eslint").Rule.RuleModule;
86
- 'no-deprecated': import("eslint").Rule.RuleModule;
87
- 'no-did-mount-set-state': import("eslint").Rule.RuleModule;
88
- 'no-did-update-set-state': import("eslint").Rule.RuleModule;
89
- 'no-direct-mutation-state': import("eslint").Rule.RuleModule;
90
- 'no-find-dom-node': import("eslint").Rule.RuleModule;
91
- 'no-is-mounted': import("eslint").Rule.RuleModule;
92
- 'no-multi-comp': import("eslint").Rule.RuleModule;
93
- 'no-namespace': import("eslint").Rule.RuleModule;
94
- 'no-set-state': import("eslint").Rule.RuleModule;
95
- 'no-string-refs': import("eslint").Rule.RuleModule;
96
- 'no-redundant-should-component-update': import("eslint").Rule.RuleModule;
97
- 'no-render-return-value': import("eslint").Rule.RuleModule;
98
- 'no-this-in-sfc': import("eslint").Rule.RuleModule;
99
- 'no-typos': import("eslint").Rule.RuleModule;
100
- 'no-unescaped-entities': import("eslint").Rule.RuleModule;
101
- 'no-unknown-property': import("eslint").Rule.RuleModule;
102
- 'no-unsafe': import("eslint").Rule.RuleModule;
103
- 'no-unstable-nested-components': import("eslint").Rule.RuleModule;
104
- 'no-unused-class-component-methods': import("eslint").Rule.RuleModule;
105
- 'no-unused-prop-types': import("eslint").Rule.RuleModule;
106
- 'no-unused-state': import("eslint").Rule.RuleModule;
107
- 'no-object-type-as-default-prop': import("eslint").Rule.RuleModule;
108
- 'no-will-update-set-state': import("eslint").Rule.RuleModule;
109
- 'prefer-es6-class': import("eslint").Rule.RuleModule;
110
- 'prefer-exact-props': import("eslint").Rule.RuleModule;
111
- 'prefer-read-only-props': import("eslint").Rule.RuleModule;
112
- 'prefer-stateless-function': import("eslint").Rule.RuleModule;
113
- 'prop-types': import("eslint").Rule.RuleModule;
114
- 'react-in-jsx-scope': import("eslint").Rule.RuleModule;
115
- 'require-default-props': import("eslint").Rule.RuleModule;
116
- 'require-optimization': import("eslint").Rule.RuleModule;
117
- 'require-render-return': import("eslint").Rule.RuleModule;
118
- 'self-closing-comp': import("eslint").Rule.RuleModule;
119
- 'sort-comp': import("eslint").Rule.RuleModule;
120
- 'sort-default-props': import("eslint").Rule.RuleModule;
121
- 'sort-prop-types': import("eslint").Rule.RuleModule;
122
- 'state-in-constructor': import("eslint").Rule.RuleModule;
123
- 'static-property-placement': import("eslint").Rule.RuleModule;
124
- 'style-prop-object': import("eslint").Rule.RuleModule;
125
- 'void-dom-elements-no-children': import("eslint").Rule.RuleModule;
126
- }>;
127
- rules: {
128
- 'boolean-prop-naming': import("eslint").Rule.RuleModule;
129
- 'button-has-type': import("eslint").Rule.RuleModule;
130
- 'checked-requires-onchange-or-readonly': import("eslint").Rule.RuleModule;
131
- 'default-props-match-prop-types': import("eslint").Rule.RuleModule;
132
- 'destructuring-assignment': import("eslint").Rule.RuleModule;
133
- 'display-name': import("eslint").Rule.RuleModule;
134
- 'forbid-component-props': import("eslint").Rule.RuleModule;
135
- 'forbid-dom-props': import("eslint").Rule.RuleModule;
136
- 'forbid-elements': import("eslint").Rule.RuleModule;
137
- 'forbid-foreign-prop-types': import("eslint").Rule.RuleModule;
138
- 'forbid-prop-types': import("eslint").Rule.RuleModule;
139
- 'forward-ref-uses-ref': import("eslint").Rule.RuleModule;
140
- 'function-component-definition': import("eslint").Rule.RuleModule;
141
- 'hook-use-state': import("eslint").Rule.RuleModule;
142
- 'iframe-missing-sandbox': import("eslint").Rule.RuleModule;
143
- 'jsx-boolean-value': import("eslint").Rule.RuleModule;
144
- 'jsx-child-element-spacing': import("eslint").Rule.RuleModule;
145
- 'jsx-closing-bracket-location': import("eslint").Rule.RuleModule;
146
- 'jsx-closing-tag-location': import("eslint").Rule.RuleModule;
147
- 'jsx-curly-spacing': import("eslint").Rule.RuleModule;
148
- 'jsx-curly-newline': import("eslint").Rule.RuleModule;
149
- 'jsx-equals-spacing': import("eslint").Rule.RuleModule;
150
- 'jsx-filename-extension': import("eslint").Rule.RuleModule;
151
- 'jsx-first-prop-new-line': import("eslint").Rule.RuleModule;
152
- 'jsx-handler-names': import("eslint").Rule.RuleModule;
153
- 'jsx-indent': import("eslint").Rule.RuleModule;
154
- 'jsx-indent-props': import("eslint").Rule.RuleModule;
155
- 'jsx-key': import("eslint").Rule.RuleModule;
156
- 'jsx-max-depth': import("eslint").Rule.RuleModule;
157
- 'jsx-max-props-per-line': import("eslint").Rule.RuleModule;
158
- 'jsx-newline': import("eslint").Rule.RuleModule;
159
- 'jsx-no-bind': import("eslint").Rule.RuleModule;
160
- 'jsx-no-comment-textnodes': import("eslint").Rule.RuleModule;
161
- 'jsx-no-constructed-context-values': import("eslint").Rule.RuleModule;
162
- 'jsx-no-duplicate-props': import("eslint").Rule.RuleModule;
163
- 'jsx-no-leaked-render': import("eslint").Rule.RuleModule;
164
- 'jsx-no-literals': import("eslint").Rule.RuleModule;
165
- 'jsx-no-script-url': import("eslint").Rule.RuleModule;
166
- 'jsx-no-target-blank': import("eslint").Rule.RuleModule;
167
- 'jsx-no-useless-fragment': import("eslint").Rule.RuleModule;
168
- 'jsx-one-expression-per-line': import("eslint").Rule.RuleModule;
169
- 'jsx-no-undef': import("eslint").Rule.RuleModule;
170
- 'jsx-curly-brace-presence': import("eslint").Rule.RuleModule;
171
- 'jsx-pascal-case': import("eslint").Rule.RuleModule;
172
- 'jsx-fragments': import("eslint").Rule.RuleModule;
173
- 'jsx-props-no-multi-spaces': import("eslint").Rule.RuleModule;
174
- 'jsx-props-no-spreading': import("eslint").Rule.RuleModule;
175
- 'jsx-props-no-spread-multi': import("eslint").Rule.RuleModule;
176
- 'jsx-sort-default-props': import("eslint").Rule.RuleModule;
177
- 'jsx-sort-props': import("eslint").Rule.RuleModule;
178
- 'jsx-space-before-closing': import("eslint").Rule.RuleModule;
179
- 'jsx-tag-spacing': import("eslint").Rule.RuleModule;
180
- 'jsx-uses-react': import("eslint").Rule.RuleModule;
181
- 'jsx-uses-vars': import("eslint").Rule.RuleModule;
182
- 'jsx-wrap-multilines': import("eslint").Rule.RuleModule;
183
- 'no-invalid-html-attribute': import("eslint").Rule.RuleModule;
184
- 'no-access-state-in-setstate': import("eslint").Rule.RuleModule;
185
- 'no-adjacent-inline-elements': import("eslint").Rule.RuleModule;
186
- 'no-array-index-key': import("eslint").Rule.RuleModule;
187
- 'no-arrow-function-lifecycle': import("eslint").Rule.RuleModule;
188
- 'no-children-prop': import("eslint").Rule.RuleModule;
189
- 'no-danger': import("eslint").Rule.RuleModule;
190
- 'no-danger-with-children': import("eslint").Rule.RuleModule;
191
- 'no-deprecated': import("eslint").Rule.RuleModule;
192
- 'no-did-mount-set-state': import("eslint").Rule.RuleModule;
193
- 'no-did-update-set-state': import("eslint").Rule.RuleModule;
194
- 'no-direct-mutation-state': import("eslint").Rule.RuleModule;
195
- 'no-find-dom-node': import("eslint").Rule.RuleModule;
196
- 'no-is-mounted': import("eslint").Rule.RuleModule;
197
- 'no-multi-comp': import("eslint").Rule.RuleModule;
198
- 'no-namespace': import("eslint").Rule.RuleModule;
199
- 'no-set-state': import("eslint").Rule.RuleModule;
200
- 'no-string-refs': import("eslint").Rule.RuleModule;
201
- 'no-redundant-should-component-update': import("eslint").Rule.RuleModule;
202
- 'no-render-return-value': import("eslint").Rule.RuleModule;
203
- 'no-this-in-sfc': import("eslint").Rule.RuleModule;
204
- 'no-typos': import("eslint").Rule.RuleModule;
205
- 'no-unescaped-entities': import("eslint").Rule.RuleModule;
206
- 'no-unknown-property': import("eslint").Rule.RuleModule;
207
- 'no-unsafe': import("eslint").Rule.RuleModule;
208
- 'no-unstable-nested-components': import("eslint").Rule.RuleModule;
209
- 'no-unused-class-component-methods': import("eslint").Rule.RuleModule;
210
- 'no-unused-prop-types': import("eslint").Rule.RuleModule;
211
- 'no-unused-state': import("eslint").Rule.RuleModule;
212
- 'no-object-type-as-default-prop': import("eslint").Rule.RuleModule;
213
- 'no-will-update-set-state': import("eslint").Rule.RuleModule;
214
- 'prefer-es6-class': import("eslint").Rule.RuleModule;
215
- 'prefer-exact-props': import("eslint").Rule.RuleModule;
216
- 'prefer-read-only-props': import("eslint").Rule.RuleModule;
217
- 'prefer-stateless-function': import("eslint").Rule.RuleModule;
218
- 'prop-types': import("eslint").Rule.RuleModule;
219
- 'react-in-jsx-scope': import("eslint").Rule.RuleModule;
220
- 'require-default-props': import("eslint").Rule.RuleModule;
221
- 'require-optimization': import("eslint").Rule.RuleModule;
222
- 'require-render-return': import("eslint").Rule.RuleModule;
223
- 'self-closing-comp': import("eslint").Rule.RuleModule;
224
- 'sort-comp': import("eslint").Rule.RuleModule;
225
- 'sort-default-props': import("eslint").Rule.RuleModule;
226
- 'sort-prop-types': import("eslint").Rule.RuleModule;
227
- 'state-in-constructor': import("eslint").Rule.RuleModule;
228
- 'static-property-placement': import("eslint").Rule.RuleModule;
229
- 'style-prop-object': import("eslint").Rule.RuleModule;
230
- 'void-dom-elements-no-children': import("eslint").Rule.RuleModule;
231
- };
232
- configs: {
233
- recommended: {
234
- plugins: ["react"];
235
- parserOptions: {
236
- ecmaFeatures: {
237
- jsx: boolean;
238
- };
239
- };
240
- rules: {
241
- "react/display-name": 2;
242
- "react/jsx-key": 2;
243
- "react/jsx-no-comment-textnodes": 2;
244
- "react/jsx-no-duplicate-props": 2;
245
- "react/jsx-no-target-blank": 2;
246
- "react/jsx-no-undef": 2;
247
- "react/jsx-uses-react": 2;
248
- "react/jsx-uses-vars": 2;
249
- "react/no-children-prop": 2;
250
- "react/no-danger-with-children": 2;
251
- "react/no-deprecated": 2;
252
- "react/no-direct-mutation-state": 2;
253
- "react/no-find-dom-node": 2;
254
- "react/no-is-mounted": 2;
255
- "react/no-render-return-value": 2;
256
- "react/no-string-refs": 2;
257
- "react/no-unescaped-entities": 2;
258
- "react/no-unknown-property": 2;
259
- "react/no-unsafe": 0;
260
- "react/prop-types": 2;
261
- "react/react-in-jsx-scope": 2;
262
- "react/require-render-return": 2;
263
- };
264
- };
265
- all: {
266
- plugins: ["react"];
267
- parserOptions: {
268
- ecmaFeatures: {
269
- jsx: boolean;
270
- };
271
- };
272
- rules: Record<"boolean-prop-naming" | "button-has-type" | "checked-requires-onchange-or-readonly" | "default-props-match-prop-types" | "destructuring-assignment" | "display-name" | "forbid-component-props" | "forbid-dom-props" | "forbid-elements" | "forbid-foreign-prop-types" | "forbid-prop-types" | "prop-types" | "forward-ref-uses-ref" | "function-component-definition" | "hook-use-state" | "iframe-missing-sandbox" | "jsx-boolean-value" | "jsx-child-element-spacing" | "jsx-closing-bracket-location" | "jsx-closing-tag-location" | "jsx-curly-spacing" | "jsx-curly-newline" | "jsx-equals-spacing" | "jsx-filename-extension" | "jsx-first-prop-new-line" | "jsx-handler-names" | "jsx-indent" | "jsx-indent-props" | "jsx-key" | "jsx-max-depth" | "jsx-max-props-per-line" | "jsx-newline" | "jsx-no-bind" | "jsx-no-comment-textnodes" | "jsx-no-constructed-context-values" | "jsx-no-duplicate-props" | "jsx-no-leaked-render" | "jsx-no-literals" | "jsx-no-script-url" | "jsx-no-target-blank" | "jsx-no-useless-fragment" | "jsx-one-expression-per-line" | "jsx-no-undef" | "jsx-curly-brace-presence" | "jsx-pascal-case" | "jsx-fragments" | "jsx-props-no-multi-spaces" | "jsx-props-no-spreading" | "jsx-props-no-spread-multi" | "sort-default-props" | "jsx-sort-default-props" | "jsx-sort-props" | "jsx-tag-spacing" | "jsx-space-before-closing" | "jsx-uses-react" | "jsx-uses-vars" | "jsx-wrap-multilines" | "no-invalid-html-attribute" | "no-access-state-in-setstate" | "no-adjacent-inline-elements" | "no-array-index-key" | "no-arrow-function-lifecycle" | "no-children-prop" | "no-danger" | "no-danger-with-children" | "no-deprecated" | "no-direct-mutation-state" | "no-find-dom-node" | "no-is-mounted" | "no-multi-comp" | "no-namespace" | "no-set-state" | "no-string-refs" | "no-redundant-should-component-update" | "no-render-return-value" | "no-this-in-sfc" | "no-typos" | "no-unescaped-entities" | "no-unknown-property" | "no-unsafe" | "no-unstable-nested-components" | "no-unused-class-component-methods" | "no-unused-prop-types" | "no-unused-state" | "no-object-type-as-default-prop" | "prefer-es6-class" | "prefer-exact-props" | "prefer-read-only-props" | "prefer-stateless-function" | "react-in-jsx-scope" | "require-default-props" | "require-optimization" | "require-render-return" | "self-closing-comp" | "sort-comp" | "sort-prop-types" | "state-in-constructor" | "static-property-placement" | "style-prop-object" | "void-dom-elements-no-children" | "no-did-mount-set-state" | "no-did-update-set-state" | "no-will-update-set-state", 2 | "error">;
273
- };
274
- 'jsx-runtime': {
275
- plugins: ["react"];
276
- parserOptions: {
277
- ecmaFeatures: {
278
- jsx: boolean;
279
- };
280
- jsxPragma: any;
281
- };
282
- rules: {
283
- "react/react-in-jsx-scope": 0;
284
- "react/jsx-uses-react": 0;
285
- };
286
- };
287
- flat: Record<string, reactPlugin.ReactFlatConfig>;
288
- } & {
289
- flat: Record<string, reactPlugin.ReactFlatConfig>;
290
- };
291
- };
292
- "react-hooks": typeof reactHooksPlugin;
293
- import: import("eslint").ESLint.Plugin & {
294
- meta: {
295
- name: string;
296
- version: string;
297
- };
298
- configs: {
299
- "recommended": import("eslint").Linter.LegacyConfig;
300
- "errors": import("eslint").Linter.LegacyConfig;
301
- "warnings": import("eslint").Linter.LegacyConfig;
302
- "stage-0": import("eslint").Linter.LegacyConfig;
303
- "react": import("eslint").Linter.LegacyConfig;
304
- "react-native": import("eslint").Linter.LegacyConfig;
305
- "electron": import("eslint").Linter.LegacyConfig;
306
- "typescript": import("eslint").Linter.LegacyConfig;
307
- };
308
- flatConfigs: {
309
- "recommended": import("eslint").Linter.FlatConfig;
310
- "errors": import("eslint").Linter.FlatConfig;
311
- "warnings": import("eslint").Linter.FlatConfig;
312
- "stage-0": import("eslint").Linter.FlatConfig;
313
- "react": import("eslint").Linter.FlatConfig;
314
- "react-native": import("eslint").Linter.FlatConfig;
315
- "electron": import("eslint").Linter.FlatConfig;
316
- "typescript": import("eslint").Linter.FlatConfig;
317
- };
318
- rules: {
319
- [key: string]: import("eslint").Rule.RuleModule;
320
- };
321
- };
322
- unicorn: import("eslint").ESLint.Plugin & {
323
- configs: {
324
- recommended: import("eslint").Linter.FlatConfig;
325
- all: import("eslint").Linter.FlatConfig;
326
- "flat/all": import("eslint").Linter.FlatConfig;
327
- "flat/recommended": import("eslint").Linter.FlatConfig;
328
- };
329
- };
330
- "@next/next": typeof nextPlugin;
331
- "jsx-a11y": any;
332
- prettier: import("eslint").ESLint.Plugin;
333
- "react-compiler": typeof reactCompilerPlugin;
334
- };
335
- settings: {
336
- "import/resolver": {
337
- typescript: {
338
- project: string;
339
- };
340
- };
341
- react: {
342
- version: string;
343
- };
344
- };
345
- rules: any;
346
- ignores?: undefined;
347
- } | {
348
- ignores: string[];
349
- files?: undefined;
350
- languageOptions?: undefined;
351
- plugins?: undefined;
352
- settings?: undefined;
353
- rules?: undefined;
354
- })[];
355
- import tsParser from "@typescript-eslint/parser";
356
- import reactPlugin from "eslint-plugin-react";
357
- import reactHooksPlugin from "eslint-plugin-react-hooks";
358
- import nextPlugin from "@next/eslint-plugin-next";
359
- import reactCompilerPlugin from "eslint-plugin-react-compiler";
2
+ /** @type {import("eslint").Linter.Config[]} */
3
+ declare const config: import("eslint").Linter.Config[];
360
4
  //# sourceMappingURL=eslint.config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"eslint.config.d.ts","sourceRoot":"","sources":["../src/eslint.config.js"],"names":[],"mappings":";AAWA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkLE;qBA3LmB,2BAA2B;wBAIxB,qBAAqB;6BAEhB,2BAA2B;uBARjC,0BAA0B;gCAOjB,8BAA8B"}
1
+ {"version":3,"file":"eslint.config.d.ts","sourceRoot":"","sources":["../src/eslint.config.js"],"names":[],"mappings":";AAYA,+CAA+C;AAC/C,sBADW,OAAO,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAoMzC"}
@@ -3,11 +3,13 @@ import tsPlugin from "@typescript-eslint/eslint-plugin";
3
3
  import tsParser from "@typescript-eslint/parser";
4
4
  import importPlugin from "eslint-plugin-import";
5
5
  import jsxA11yPlugin from "eslint-plugin-jsx-a11y";
6
+ import perfectionistPlugin from "eslint-plugin-perfectionist";
6
7
  import prettierPlugin from "eslint-plugin-prettier";
7
8
  import reactPlugin from "eslint-plugin-react";
8
9
  import reactCompilerPlugin from "eslint-plugin-react-compiler";
9
10
  import reactHooksPlugin from "eslint-plugin-react-hooks";
10
11
  import unicornPlugin from "eslint-plugin-unicorn";
12
+ /** @type {import("eslint").Linter.Config[]} */
11
13
  const config = [
12
14
  {
13
15
  files: ["**/*.{js,mjs,cjs,jsx,ts,tsx}"],
@@ -28,6 +30,7 @@ const config = [
28
30
  "react-hooks": reactHooksPlugin,
29
31
  import: importPlugin,
30
32
  unicorn: unicornPlugin,
33
+ perfectionist: perfectionistPlugin,
31
34
  "@next/next": nextPlugin,
32
35
  "jsx-a11y": jsxA11yPlugin,
33
36
  prettier: prettierPlugin,
@@ -146,6 +149,21 @@ const config = [
146
149
  "@next/next/next-script-for-ga": "error",
147
150
  "@next/next/no-typos": "error",
148
151
  "@next/next/no-duplicate-head": "error",
152
+ // Perfectionist rules
153
+ "perfectionist/sort-jsx-props": [
154
+ "error",
155
+ {
156
+ type: "alphabetical",
157
+ ignoreCase: true,
158
+ customGroups: [
159
+ { groupName: "key", elementNamePattern: "^key$" },
160
+ { groupName: "ref", elementNamePattern: "^ref$" },
161
+ { groupName: "id", elementNamePattern: "^id$" },
162
+ { groupName: "className", elementNamePattern: "^className$" },
163
+ ],
164
+ groups: ["key", "ref", "id", "unknown", "className"],
165
+ },
166
+ ],
149
167
  // Other rules
150
168
  "jsx-a11y/alt-text": "error",
151
169
  "jsx-a11y/media-has-caption": "warn",
@@ -1 +1 @@
1
- {"version":3,"file":"eslint.config.js","sourceRoot":"","sources":["../src/eslint.config.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eslint.config.js","sourceRoot":"","sources":["../src/eslint.config.js"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@greenberry/linting-config",
3
- "version": "0.1.71",
3
+ "version": "0.1.73",
4
4
  "private": false,
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -28,7 +28,10 @@
28
28
  "eslint": "^9.32.0",
29
29
  "eslint-config-next": "^15.4.4",
30
30
  "eslint-config-prettier": "^10.1.8",
31
+ "eslint-import-resolver-typescript": "3.8.3",
32
+ "eslint-plugin-import": "2.32.0",
31
33
  "eslint-plugin-jsx-a11y": "^6.10.2",
34
+ "eslint-plugin-perfectionist": "^4.15.0",
32
35
  "eslint-plugin-prettier": "^5.5.3",
33
36
  "eslint-plugin-react": "^7.37.5",
34
37
  "eslint-plugin-react-compiler": "^19.1.0-rc.2",
@@ -39,9 +42,7 @@
39
42
  "stylelint": "^16.23.0",
40
43
  "stylelint-config-standard-scss": "^15.0.1",
41
44
  "stylelint-prettier": "^5.0.3",
42
- "typescript-eslint": "^8.38.0",
43
- "eslint-import-resolver-typescript": "3.8.3",
44
- "eslint-plugin-import": "2.32.0"
45
+ "typescript-eslint": "^8.38.0"
45
46
  },
46
47
  "devDependencies": {
47
48
  "typescript": "^5.8.3"