@eslint-react/eslint-plugin 3.0.0-next.9 → 3.0.0-rc.1

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/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  [![Version](https://img.shields.io/npm/v/@eslint-react/eslint-plugin?style=flat&colorA=111111&colorB=000000)](https://npmjs.com/package/@eslint-react/eslint-plugin)
6
6
  [![Downloads](https://img.shields.io/npm/dt/@eslint-react/eslint-plugin.svg?style=flat&colorA=222222&colorB=000000)](https://npmjs.com/package/@eslint-react/eslint-plugin)
7
7
  [![License](https://img.shields.io/npm/l/@eslint-react/eslint-plugin?style=flat&colorA=333333&colorB=000000)](https://npmjs.com/package/@eslint-react/eslint-plugin)
8
- [![Build with](https://img.shields.io/badge/built_with-tsdown@0.20.3-000000?style=flat)](https://tsdown.dev)
8
+ [![Build with](https://img.shields.io/badge/built_with-tsdown@0.21.2-000000?style=flat)](https://tsdown.dev)
9
9
 
10
10
  4-7x faster, composable ESLint rules for React and friends.
11
11
 
@@ -14,8 +14,8 @@
14
14
  - [Table of Contents](#table-of-contents)
15
15
  - [Features](#features)
16
16
  - [Public Packages](#public-packages)
17
- - [Unified ESLint Plugin](#unified-eslint-plugin)
18
17
  - [Modular ESLint Plugins](#modular-eslint-plugins)
18
+ - [Unified ESLint Plugin](#unified-eslint-plugin)
19
19
  - [Installation](#installation)
20
20
  - [Install](#install)
21
21
  - [Setup](#setup)
@@ -28,6 +28,7 @@
28
28
  - [Rules](#rules)
29
29
  - [Benchmark](#benchmark)
30
30
  - [FAQ](#faq)
31
+ - [Changelog](#changelog)
31
32
  - [Roadmap](#roadmap)
32
33
  - [Disclaimer](#disclaimer)
33
34
  - [Contributing](#contributing)
@@ -42,10 +43,6 @@
42
43
 
43
44
  ## Public Packages
44
45
 
45
- ### Unified ESLint Plugin
46
-
47
- - [`@eslint-react/eslint-plugin`](https://npmx.dev/package/@eslint-react/eslint-plugin) - A unified plugin that combines all individual plugins into one.
48
-
49
46
  ### Modular ESLint Plugins
50
47
 
51
48
  - [`eslint-plugin-react-x`](https://npmx.dev/package/eslint-plugin-react-x) - X rules (renderer-agnostic, compatible with x-platform).
@@ -54,6 +51,10 @@
54
51
  - [`eslint-plugin-react-web-api`](https://npmx.dev/package/eslint-plugin-react-web-api) - Rules for interacting with Web APIs.
55
52
  - [`eslint-plugin-react-naming-convention`](https://npmx.dev/package/eslint-plugin-react-naming-convention) - Naming convention rules.
56
53
 
54
+ ### Unified ESLint Plugin
55
+
56
+ - [`@eslint-react/eslint-plugin`](https://npmx.dev/package/@eslint-react/eslint-plugin) - A unified plugin that combines all individual plugins into one.
57
+
57
58
  > [!NOTE]\
58
59
  > Don't know which one to use? See our [FAQ](https://eslint-react.xyz/docs/faq#which-one-should-i-use-unified-plugin-or-individual-plugins) for guidance.
59
60
 
@@ -62,8 +63,8 @@
62
63
  > [!NOTE]\
63
64
  > ESLint React requires the following minimum versions:
64
65
  >
65
- > - Node.js: 20.19.0
66
- > - ESLint: 9.36.0
66
+ > - Node.js: 22.0.0
67
+ > - ESLint: 10.0.0
67
68
  > - TypeScript: 5.0.0
68
69
 
69
70
  ### Install
@@ -153,17 +154,6 @@ export default defineConfig(
153
154
  - `strict-type-checked`\
154
155
  Same as the `strict-typescript` preset but enables additional rules that require type information.
155
156
 
156
- ### Category Based
157
-
158
- <!-- TODO: Add hooks and performance presets later -->
159
- <!-- - `hooks`\ -->
160
- <!-- Enable all rules related to React Hooks. -->
161
- <!-- - `performance`\ -->
162
- <!-- Enable all rules related to React performance optimizations. -->
163
-
164
- - `no-deprecated`\
165
- Enable all rules that disallow deprecated React APIs with "error" severity.
166
-
167
157
  ### Other
168
158
 
169
159
  - `disable-rsc`\
@@ -178,6 +168,8 @@ export default defineConfig(
178
168
  Disable rules that require type information.
179
169
  - `disable-conflict-eslint-plugin-react`\
180
170
  Disable rules in `eslint-plugin-react` that conflict with rules in our plugins.
171
+ - `disable-conflict-eslint-plugin-react-hooks`\
172
+ Disable rules in `eslint-plugin-react-hooks` that conflict with rules in our plugins.
181
173
  - `off`\
182
174
  Disable all rules in this plugin except for debug rules.
183
175
 
@@ -195,6 +187,10 @@ export default defineConfig(
195
187
 
196
188
  [Frequently Asked Questions ↗](https://eslint-react.xyz/docs/faq)
197
189
 
190
+ ## Changelog
191
+
192
+ [Changelog ↗](https://www.eslint-react.xyz/docs/changelog)
193
+
198
194
  ## Roadmap
199
195
 
200
196
  - [Milestone 3.0 ↗](https://eslint-react.xyz/docs/roadmap#milestone-30-tbd)
package/dist/index.d.ts CHANGED
@@ -1,13 +1,13 @@
1
- import { CompatibleConfig, CompatiblePlugin } from "@eslint-react/shared";
1
+ import { ESLint, Linter } from "eslint";
2
2
 
3
3
  //#region src/index.d.ts
4
- type ConfigName = "all" | "disable-conflict-eslint-plugin-react" | "disable-dom" | "disable-rsc" | "disable-experimental" | "disable-type-checked" | "disable-web-api" | "dom" | "rsc" | "no-deprecated" | "off" | "recommended" | "recommended-type-checked" | "recommended-typescript" | "strict" | "strict-type-checked" | "strict-typescript" | "web-api" | "x";
5
- declare const plugin: CompatiblePlugin & {
4
+ type ConfigName = "all" | "disable-conflict-eslint-plugin-react" | "disable-conflict-eslint-plugin-react-hooks" | "disable-dom" | "disable-rsc" | "disable-experimental" | "disable-type-checked" | "disable-web-api" | "dom" | "rsc" | "off" | "recommended" | "recommended-type-checked" | "recommended-typescript" | "strict" | "strict-type-checked" | "strict-typescript" | "web-api" | "x";
5
+ declare const plugin: ESLint.Plugin & {
6
6
  /**
7
7
  * For more information about each preset, please refer to the documentation.
8
8
  * @see https://eslint-react.xyz/docs/presets
9
9
  */
10
- configs: Record<ConfigName, CompatibleConfig>;
10
+ configs: Record<ConfigName, Linter.Config>;
11
11
  };
12
12
  //#endregion
13
13
  export { plugin as default };
package/dist/index.js CHANGED
@@ -24,13 +24,13 @@ var __exportAll = (all, no_symbols) => {
24
24
  //#endregion
25
25
  //#region package.json
26
26
  var name$19 = "@eslint-react/eslint-plugin";
27
- var version = "3.0.0-next.9";
27
+ var version = "3.0.0-rc.1";
28
28
 
29
29
  //#endregion
30
30
  //#region src/configs/dom.ts
31
31
  var dom_exports = /* @__PURE__ */ __exportAll({
32
32
  name: () => name$18,
33
- plugins: () => plugins$11,
33
+ plugins: () => plugins$10,
34
34
  rules: () => rules$19
35
35
  });
36
36
  const name$18 = "@eslint-react/dom";
@@ -48,24 +48,24 @@ const rules$19 = {
48
48
  "@eslint-react/dom/no-use-form-state": "error",
49
49
  "@eslint-react/dom/no-void-elements-with-children": "error"
50
50
  };
51
- const plugins$11 = { "@eslint-react/dom": reactDom };
51
+ const plugins$10 = { "@eslint-react/dom": reactDom };
52
52
 
53
53
  //#endregion
54
54
  //#region src/configs/rsc.ts
55
55
  var rsc_exports = /* @__PURE__ */ __exportAll({
56
56
  name: () => name$17,
57
- plugins: () => plugins$10,
57
+ plugins: () => plugins$9,
58
58
  rules: () => rules$18
59
59
  });
60
60
  const name$17 = "@eslint-react/rsc";
61
61
  const rules$18 = { "@eslint-react/rsc/function-definition": "error" };
62
- const plugins$10 = { "@eslint-react/rsc": reactRsc };
62
+ const plugins$9 = { "@eslint-react/rsc": reactRsc };
63
63
 
64
64
  //#endregion
65
65
  //#region src/configs/x.ts
66
66
  var x_exports = /* @__PURE__ */ __exportAll({
67
67
  name: () => name$16,
68
- plugins: () => plugins$9,
68
+ plugins: () => plugins$8,
69
69
  rules: () => rules$17,
70
70
  settings: () => settings$8
71
71
  });
@@ -76,9 +76,6 @@ const rules$17 = {
76
76
  "@eslint-react/exhaustive-deps": "warn",
77
77
  "@eslint-react/jsx-key-before-spread": "warn",
78
78
  "@eslint-react/jsx-no-comment-textnodes": "warn",
79
- "@eslint-react/jsx-no-duplicate-props": "warn",
80
- "@eslint-react/jsx-uses-react": "warn",
81
- "@eslint-react/jsx-uses-vars": "warn",
82
79
  "@eslint-react/no-access-state-in-setstate": "error",
83
80
  "@eslint-react/no-array-index-key": "warn",
84
81
  "@eslint-react/no-children-count": "warn",
@@ -107,22 +104,22 @@ const rules$17 = {
107
104
  "@eslint-react/no-unsafe-component-will-update": "warn",
108
105
  "@eslint-react/no-unused-class-component-members": "warn",
109
106
  "@eslint-react/no-use-context": "warn",
110
- "@eslint-react/no-useless-forward-ref": "warn",
111
- "@eslint-react/prefer-use-state-lazy-initialization": "warn",
112
107
  "@eslint-react/purity": "warn",
113
108
  "@eslint-react/rules-of-hooks": "error",
114
109
  "@eslint-react/set-state-in-effect": "warn",
115
110
  "@eslint-react/set-state-in-render": "error",
116
- "@eslint-react/unsupported-syntax": "error"
111
+ "@eslint-react/unsupported-syntax": "error",
112
+ "@eslint-react/use-memo": "error",
113
+ "@eslint-react/use-state": "warn"
117
114
  };
118
- const plugins$9 = { "@eslint-react": react };
115
+ const plugins$8 = { "@eslint-react": react };
119
116
  const settings$8 = { "react-x": DEFAULT_ESLINT_REACT_SETTINGS };
120
117
 
121
118
  //#endregion
122
119
  //#region src/configs/all.ts
123
120
  var all_exports = /* @__PURE__ */ __exportAll({
124
121
  name: () => name$15,
125
- plugins: () => plugins$8,
122
+ plugins: () => plugins$7,
126
123
  rules: () => rules$16,
127
124
  settings: () => settings$7
128
125
  });
@@ -131,15 +128,12 @@ const rules$16 = {
131
128
  "@eslint-react/component-hook-factories": "error",
132
129
  "@eslint-react/error-boundaries": "error",
133
130
  "@eslint-react/exhaustive-deps": "warn",
131
+ "@eslint-react/immutability": "error",
134
132
  "@eslint-react/jsx-dollar": "warn",
135
133
  "@eslint-react/jsx-key-before-spread": "warn",
136
134
  "@eslint-react/jsx-no-comment-textnodes": "warn",
137
- "@eslint-react/jsx-no-duplicate-props": "warn",
138
- "@eslint-react/jsx-no-undef": "error",
139
135
  "@eslint-react/jsx-shorthand-boolean": "warn",
140
136
  "@eslint-react/jsx-shorthand-fragment": "warn",
141
- "@eslint-react/jsx-uses-react": "warn",
142
- "@eslint-react/jsx-uses-vars": "warn",
143
137
  "@eslint-react/no-access-state-in-setstate": "error",
144
138
  "@eslint-react/no-array-index-key": "warn",
145
139
  "@eslint-react/no-children-count": "warn",
@@ -179,14 +173,17 @@ const rules$16 = {
179
173
  "@eslint-react/no-unused-class-component-members": "warn",
180
174
  "@eslint-react/no-unused-state": "warn",
181
175
  "@eslint-react/no-use-context": "warn",
182
- "@eslint-react/no-useless-forward-ref": "warn",
183
176
  "@eslint-react/no-useless-fragment": "warn",
184
177
  "@eslint-react/prefer-destructuring-assignment": "warn",
185
178
  "@eslint-react/prefer-namespace-import": "warn",
186
- "@eslint-react/prefer-use-state-lazy-initialization": "warn",
187
179
  "@eslint-react/purity": "warn",
180
+ "@eslint-react/refs": "error",
188
181
  "@eslint-react/rules-of-hooks": "error",
189
182
  "@eslint-react/set-state-in-effect": "warn",
183
+ "@eslint-react/set-state-in-render": "error",
184
+ "@eslint-react/unsupported-syntax": "error",
185
+ "@eslint-react/use-memo": "error",
186
+ "@eslint-react/use-state": "warn",
190
187
  "@eslint-react/dom/no-dangerously-set-innerhtml": "warn",
191
188
  "@eslint-react/dom/no-dangerously-set-innerhtml-with-children": "error",
192
189
  "@eslint-react/dom/no-find-dom-node": "error",
@@ -210,16 +207,14 @@ const rules$16 = {
210
207
  "@eslint-react/web-api/no-leaked-interval": "warn",
211
208
  "@eslint-react/web-api/no-leaked-resize-observer": "warn",
212
209
  "@eslint-react/web-api/no-leaked-timeout": "warn",
213
- "@eslint-react/naming-convention/component-name": "warn",
214
210
  "@eslint-react/naming-convention/context-name": "warn",
215
211
  "@eslint-react/naming-convention/id-name": "warn",
216
- "@eslint-react/naming-convention/ref-name": "warn",
217
- "@eslint-react/naming-convention/use-state": "warn"
212
+ "@eslint-react/naming-convention/ref-name": "warn"
218
213
  };
219
- const plugins$8 = {
214
+ const plugins$7 = {
215
+ ...plugins$8,
220
216
  ...plugins$9,
221
217
  ...plugins$10,
222
- ...plugins$11,
223
218
  "@eslint-react/naming-convention": reactNamingConvention,
224
219
  "@eslint-react/web-api": reactWebApi
225
220
  };
@@ -231,158 +226,101 @@ var disable_conflict_eslint_plugin_react_exports = /* @__PURE__ */ __exportAll({
231
226
  name: () => name$14,
232
227
  rules: () => rules$15
233
228
  });
234
- const conflictingRules = [
235
- "react/button-has-type",
236
- "react/destructuring-assignment",
237
- "react/display-name",
238
- "react/forbid-prop-types",
239
- "react/forward-ref-uses-ref",
240
- "react/hook-use-state",
241
- "react/iframe-missing-sandbox",
242
- "react/jsx-boolean-value",
243
- "react/jsx-filename-extension",
244
- "react/jsx-fragments",
245
- "react/jsx-key",
246
- "react/jsx-no-comment-textnodes",
247
- "react/jsx-no-constructed-context-values",
248
- "react/jsx-no-duplicate-props",
249
- "react/jsx-no-leaked-render",
250
- "react/jsx-no-script-url",
251
- "react/jsx-no-target-blank",
252
- "react/jsx-no-undef",
253
- "react/jsx-no-useless-fragment",
254
- "react/jsx-pascal-case",
255
- "react/jsx-uses-react",
256
- "react/jsx-uses-vars",
257
- "react/no-access-state-in-setstate",
258
- "react/no-array-index-key",
259
- "react/no-children-prop",
260
- "react/no-danger",
261
- "react/no-danger-with-children",
262
- "react/no-deprecated",
263
- "react/no-did-mount-set-state",
264
- "react/no-did-update-set-state",
265
- "react/no-direct-mutation-state",
266
- "react/no-find-dom-node",
267
- "react/no-namespace",
268
- "react/no-object-type-as-default-prop",
269
- "react/no-redundant-should-component-update",
270
- "react/no-render-return-value",
271
- "react/no-string-refs",
272
- "react/no-unknown-property",
273
- "react/no-unsafe",
274
- "react/no-unstable-nested-components",
275
- "react/no-unused-class-component-members",
276
- "react/no-unused-state",
277
- "react/no-will-update-set-state",
278
- "react/prefer-read-only-props",
279
- "react/prop-types",
280
- "react/void-dom-elements-no-children"
281
- ];
282
229
  const name$14 = "@eslint-react/disable-conflict-eslint-plugin-react";
283
- const rules$15 = Object.fromEntries(conflictingRules.map((key) => [key, "off"]));
230
+ const rules$15 = react.configs["disable-conflict-eslint-plugin-react"].rules ?? {};
284
231
 
285
232
  //#endregion
286
- //#region src/configs/disable-dom.ts
287
- var disable_dom_exports = /* @__PURE__ */ __exportAll({
233
+ //#region src/configs/disable-conflict-eslint-plugin-react-hooks.ts
234
+ var disable_conflict_eslint_plugin_react_hooks_exports = /* @__PURE__ */ __exportAll({
288
235
  name: () => name$13,
289
236
  rules: () => rules$14
290
237
  });
291
- const name$13 = "@eslint-react/disable-dom";
292
- const rules$14 = Object.fromEntries(Object.entries(rules$19).map(([key]) => [key, "off"]));
238
+ const name$13 = "@eslint-react/disable-conflict-eslint-plugin-react-hooks";
239
+ const rules$14 = react.configs["disable-conflict-eslint-plugin-react-hooks"].rules ?? {};
293
240
 
294
241
  //#endregion
295
- //#region src/configs/disable-experimental.ts
296
- var disable_experimental_exports = /* @__PURE__ */ __exportAll({
242
+ //#region src/configs/disable-dom.ts
243
+ var disable_dom_exports = /* @__PURE__ */ __exportAll({
297
244
  name: () => name$12,
298
245
  rules: () => rules$13
299
246
  });
300
- const name$12 = "@eslint-react/disable-experimental";
301
- const rules$13 = {
247
+ const name$12 = "@eslint-react/disable-dom";
248
+ const rules$13 = Object.fromEntries(Object.entries(rules$19).map(([key]) => [key, "off"]));
249
+
250
+ //#endregion
251
+ //#region src/configs/disable-experimental.ts
252
+ var disable_experimental_exports = /* @__PURE__ */ __exportAll({
253
+ name: () => name$11,
254
+ rules: () => rules$12
255
+ });
256
+ const name$11 = "@eslint-react/disable-experimental";
257
+ const rules$12 = {
258
+ "@eslint-react/immutability": "off",
302
259
  "@eslint-react/jsx-key-before-spread": "off",
303
260
  "@eslint-react/no-duplicate-key": "off",
261
+ "@eslint-react/no-implicit-children": "off",
304
262
  "@eslint-react/no-implicit-key": "off",
263
+ "@eslint-react/no-implicit-ref": "off",
305
264
  "@eslint-react/no-misused-capture-owner-stack": "off",
306
265
  "@eslint-react/no-unnecessary-use-callback": "off",
307
266
  "@eslint-react/no-unnecessary-use-memo": "off",
308
267
  "@eslint-react/no-unused-props": "off",
309
- "@eslint-react/prefer-read-only-props": "off",
268
+ "@eslint-react/refs": "off",
269
+ "@eslint-react/set-state-in-render": "off",
270
+ "@eslint-react/unstable-rules-of-props": "off",
310
271
  "@eslint-react/rsc/function-definition": "off"
311
272
  };
312
273
 
313
274
  //#endregion
314
275
  //#region src/configs/disable-rsc.ts
315
276
  var disable_rsc_exports = /* @__PURE__ */ __exportAll({
316
- name: () => name$11,
317
- rules: () => rules$12
277
+ name: () => name$10,
278
+ rules: () => rules$11
318
279
  });
319
- const name$11 = "@eslint-react/disable-rsc";
320
- const rules$12 = Object.fromEntries(Object.entries(rules$18).map(([key]) => [key, "off"]));
280
+ const name$10 = "@eslint-react/disable-rsc";
281
+ const rules$11 = Object.fromEntries(Object.entries(rules$18).map(([key]) => [key, "off"]));
321
282
 
322
283
  //#endregion
323
284
  //#region src/configs/disable-type-checked.ts
324
285
  var disable_type_checked_exports = /* @__PURE__ */ __exportAll({
325
- name: () => name$10,
326
- rules: () => rules$11
286
+ name: () => name$9,
287
+ rules: () => rules$10
327
288
  });
328
- const name$10 = "@eslint-react/disable-type-checked";
329
- const rules$11 = {
289
+ const name$9 = "@eslint-react/disable-type-checked";
290
+ const rules$10 = {
291
+ "@eslint-react/no-implicit-children": "off",
330
292
  "@eslint-react/no-implicit-key": "off",
293
+ "@eslint-react/no-implicit-ref": "off",
331
294
  "@eslint-react/no-leaked-conditional-rendering": "off",
332
- "@eslint-react/no-unused-props": "off",
333
- "@eslint-react/prefer-read-only-props": "off"
295
+ "@eslint-react/no-unused-props": "off"
334
296
  };
335
297
 
336
298
  //#endregion
337
299
  //#region src/configs/web-api.ts
338
300
  var web_api_exports = /* @__PURE__ */ __exportAll({
339
- name: () => name$9,
340
- plugins: () => plugins$7,
341
- rules: () => rules$10,
301
+ name: () => name$8,
302
+ plugins: () => plugins$6,
303
+ rules: () => rules$9,
342
304
  settings: () => settings$6
343
305
  });
344
- const name$9 = "@eslint-react/web-api";
345
- const rules$10 = {
306
+ const name$8 = "@eslint-react/web-api";
307
+ const rules$9 = {
346
308
  "@eslint-react/web-api/no-leaked-event-listener": "warn",
347
309
  "@eslint-react/web-api/no-leaked-interval": "warn",
348
310
  "@eslint-react/web-api/no-leaked-resize-observer": "warn",
349
311
  "@eslint-react/web-api/no-leaked-timeout": "warn"
350
312
  };
351
- const plugins$7 = { "@eslint-react/web-api": reactWebApi };
313
+ const plugins$6 = { "@eslint-react/web-api": reactWebApi };
352
314
  const settings$6 = { ...settings$8 };
353
315
 
354
316
  //#endregion
355
317
  //#region src/configs/disable-web-api.ts
356
318
  var disable_web_api_exports = /* @__PURE__ */ __exportAll({
357
- name: () => name$8,
358
- rules: () => rules$9
359
- });
360
- const name$8 = "@eslint-react/disable-web-api";
361
- const rules$9 = Object.fromEntries(Object.entries(rules$10).map(([key]) => [key, "off"]));
362
-
363
- //#endregion
364
- //#region src/configs/no-deprecated.ts
365
- var no_deprecated_exports = /* @__PURE__ */ __exportAll({
366
319
  name: () => name$7,
367
- plugins: () => plugins$6,
368
320
  rules: () => rules$8
369
321
  });
370
- const name$7 = "@eslint-react/no-deprecated";
371
- const rules$8 = {
372
- "@eslint-react/no-component-will-mount": "error",
373
- "@eslint-react/no-component-will-receive-props": "error",
374
- "@eslint-react/no-component-will-update": "error",
375
- "@eslint-react/no-create-ref": "error",
376
- "@eslint-react/no-forward-ref": "error",
377
- "@eslint-react/dom/no-find-dom-node": "error",
378
- "@eslint-react/dom/no-hydrate": "error",
379
- "@eslint-react/dom/no-render": "error",
380
- "@eslint-react/dom/no-render-return-value": "error"
381
- };
382
- const plugins$6 = {
383
- ...plugins$9,
384
- ...plugins$11
385
- };
322
+ const name$7 = "@eslint-react/disable-web-api";
323
+ const rules$8 = Object.fromEntries(Object.entries(rules$9).map(([key]) => [key, "off"]));
386
324
 
387
325
  //#endregion
388
326
  //#region src/configs/off.ts
@@ -393,7 +331,7 @@ var off_exports = /* @__PURE__ */ __exportAll({
393
331
  const name$6 = "@eslint-react/off";
394
332
  const rules$7 = {
395
333
  ...Object.fromEntries(Object.entries(rules$16).map(([key]) => [key, "off"])),
396
- ...rules$11
334
+ ...rules$10
397
335
  };
398
336
 
399
337
  //#endregion
@@ -409,17 +347,17 @@ const rules$6 = {
409
347
  ...rules$17,
410
348
  ...rules$18,
411
349
  ...rules$19,
412
- ...rules$10,
350
+ ...rules$9,
413
351
  "@eslint-react/naming-convention/context-name": "warn",
414
352
  "@eslint-react/naming-convention/id-name": "warn",
415
353
  "@eslint-react/naming-convention/ref-name": "warn",
416
- "@eslint-react/naming-convention/use-state": "warn"
354
+ "@eslint-react/use-state": "warn"
417
355
  };
418
356
  const plugins$5 = {
357
+ ...plugins$8,
419
358
  ...plugins$9,
420
359
  ...plugins$10,
421
- ...plugins$11,
422
- ...plugins$7,
360
+ ...plugins$6,
423
361
  "@eslint-react/naming-convention": reactNamingConvention
424
362
  };
425
363
  const settings$5 = { ...settings$8 };
@@ -431,11 +369,7 @@ const settings$5 = { ...settings$8 };
431
369
  */
432
370
  const rules$5 = {
433
371
  "@eslint-react/dom/no-string-style-prop": "off",
434
- "@eslint-react/dom/no-unknown-property": "off",
435
- "@eslint-react/jsx-no-duplicate-props": "off",
436
- "@eslint-react/jsx-no-undef": "off",
437
- "@eslint-react/jsx-uses-react": "off",
438
- "@eslint-react/jsx-uses-vars": "off"
372
+ "@eslint-react/dom/no-unknown-property": "off"
439
373
  };
440
374
 
441
375
  //#endregion
@@ -465,7 +399,6 @@ var recommended_type_checked_exports = /* @__PURE__ */ __exportAll({
465
399
  const name$3 = "@eslint-react/recommended-type-checked";
466
400
  const rules$3 = {
467
401
  ...rules$4,
468
- "@eslint-react/no-implicit-key": "error",
469
402
  "@eslint-react/no-leaked-conditional-rendering": "error"
470
403
  };
471
404
  const plugins$3 = { ...plugins$4 };
@@ -526,7 +459,6 @@ var strict_type_checked_exports = /* @__PURE__ */ __exportAll({
526
459
  const name = "@eslint-react/strict-type-checked";
527
460
  const rules = {
528
461
  ...rules$1,
529
- "@eslint-react/no-implicit-key": "error",
530
462
  "@eslint-react/no-leaked-conditional-rendering": "error",
531
463
  "@eslint-react/no-unused-props": "warn"
532
464
  };
@@ -543,13 +475,13 @@ const plugin = {
543
475
  configs: {
544
476
  ["all"]: all_exports,
545
477
  ["disable-conflict-eslint-plugin-react"]: disable_conflict_eslint_plugin_react_exports,
478
+ ["disable-conflict-eslint-plugin-react-hooks"]: disable_conflict_eslint_plugin_react_hooks_exports,
546
479
  ["disable-dom"]: disable_dom_exports,
547
480
  ["disable-experimental"]: disable_experimental_exports,
548
481
  ["disable-rsc"]: disable_rsc_exports,
549
482
  ["disable-type-checked"]: disable_type_checked_exports,
550
483
  ["disable-web-api"]: disable_web_api_exports,
551
484
  ["dom"]: dom_exports,
552
- ["no-deprecated"]: no_deprecated_exports,
553
485
  ["off"]: off_exports,
554
486
  ["recommended"]: recommended_exports,
555
487
  ["recommended-type-checked"]: recommended_type_checked_exports,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eslint-react/eslint-plugin",
3
- "version": "3.0.0-next.9",
3
+ "version": "3.0.0-rc.1",
4
4
  "description": "A unified plugin that combines all individual plugins from the eslint-react monorepo into one.",
5
5
  "keywords": [
6
6
  "react",
@@ -46,21 +46,21 @@
46
46
  "@typescript-eslint/types": "canary",
47
47
  "@typescript-eslint/utils": "canary",
48
48
  "ts-api-utils": "^2.4.0",
49
- "@eslint-react/eff": "3.0.0-next.9",
50
- "@eslint-react/shared": "3.0.0-next.9",
51
- "eslint-plugin-react-dom": "3.0.0-next.9",
52
- "eslint-plugin-react-naming-convention": "3.0.0-next.9",
53
- "eslint-plugin-react-rsc": "3.0.0-next.9",
54
- "eslint-plugin-react-x": "3.0.0-next.9",
55
- "eslint-plugin-react-web-api": "3.0.0-next.9"
49
+ "@eslint-react/shared": "3.0.0-rc.1",
50
+ "eslint-plugin-react-naming-convention": "3.0.0-rc.1",
51
+ "eslint-plugin-react-rsc": "3.0.0-rc.1",
52
+ "eslint-plugin-react-web-api": "3.0.0-rc.1",
53
+ "eslint-plugin-react-x": "3.0.0-rc.1",
54
+ "eslint-plugin-react-dom": "3.0.0-rc.1"
56
55
  },
57
56
  "devDependencies": {
58
- "tsdown": "^0.20.3",
59
- "@local/configs": "0.0.0"
57
+ "tsdown": "^0.21.2",
58
+ "@local/configs": "0.0.0",
59
+ "@local/eff": "3.0.0-beta.72"
60
60
  },
61
61
  "peerDependencies": {
62
- "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
63
- "typescript": ">=4.8.4 <6.0.0"
62
+ "eslint": "^10.0.0",
63
+ "typescript": "*"
64
64
  },
65
65
  "engines": {
66
66
  "node": ">=22.0.0"
@@ -68,9 +68,12 @@
68
68
  "publishConfig": {
69
69
  "access": "public"
70
70
  },
71
+ "inlinedDependencies": {
72
+ "@local/eff": "workspace:*"
73
+ },
71
74
  "scripts": {
72
75
  "build": "tsdown",
73
76
  "lint:publish": "pnpm publint",
74
- "lint:ts": "tsc --noEmit"
77
+ "lint:ts": "tsl"
75
78
  }
76
79
  }