@infernodesign/eslint-config 1.25.0 → 1.26.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/README.md CHANGED
@@ -306,7 +306,6 @@ Since flat config requires us to explicitly provide the plugin names (instead of
306
306
  | `node` | `n` | [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) |
307
307
  | `react` | `@eslint-react` | [@eslint-react/eslint-plugin](https://github.com/eslint-react/eslint-plugin) |
308
308
  | `react-dom` | `@eslint-react/dom` | [@eslint-react/eslint-plugin](https://github.com/eslint-react/eslint-plugin) |
309
- | `react-hooks-extra` | `@eslint-react/hooks-extra` | [@eslint-react/eslint-plugin](https://github.com/eslint-react/eslint-plugin) |
310
309
  | `react-naming-convention` | `@eslint-react/naming-convention` | [@eslint-react/eslint-plugin](https://github.com/eslint-react/eslint-plugin) |
311
310
  | `style` | `@stylistic` | [@stylistic/eslint-plugin](https://github.com/eslint-stylistic/eslint-stylistic) |
312
311
  | `tailwindcss/*` | `better-tailwindcss/*` | [eslint-plugin-better-tailwindcss](https://github.com/unjs/eslint-plugin-better-tailwindcss) |
@@ -496,7 +495,7 @@ export default config( {
496
495
  Running `npx eslint` should prompt you to install the required dependencies, otherwise, you can install them manually:
497
496
 
498
497
  ```bash
499
- npm i -D @eslint-react/eslint-plugin eslint-plugin-react-hooks eslint-plugin-react-refresh
498
+ npm i -D @eslint-react/eslint-plugin eslint-plugin-react-refresh
500
499
  ```
501
500
 
502
501
  #### Next.js
package/dist/cli.js CHANGED
@@ -8,7 +8,7 @@ import { cac } from "cac";
8
8
  import parse from "parse-gitignore";
9
9
  import { execSync } from "node:child_process";
10
10
  //#region package.json
11
- var version = "1.25.0";
11
+ var version = "1.26.0";
12
12
  //#endregion
13
13
  //#region src/cli/constants.ts
14
14
  const vscodeSettingsString = `
@@ -122,11 +122,7 @@ const dependenciesMap = {
122
122
  formatterAstro: ["prettier-plugin-astro"],
123
123
  nextjs: ["@next/eslint-plugin-next"],
124
124
  node: [],
125
- react: [
126
- "@eslint-react/eslint-plugin",
127
- "eslint-plugin-react-hooks",
128
- "eslint-plugin-react-refresh"
129
- ],
125
+ react: ["@eslint-react/eslint-plugin", "eslint-plugin-react-refresh"],
130
126
  slidev: ["prettier-plugin-slidev"],
131
127
  solid: ["eslint-plugin-solid"],
132
128
  storybook: ["eslint-plugin-storybook"],
@@ -198,7 +194,6 @@ const versionsMap = {
198
194
  "eslint-plugin-astro": "^1.6.0",
199
195
  "eslint-plugin-better-tailwindcss": "^4.3.2",
200
196
  "eslint-plugin-format": "^2.0.1",
201
- "eslint-plugin-react-hooks": "^7.0.1",
202
197
  "eslint-plugin-react-refresh": "^0.5.2",
203
198
  "eslint-plugin-solid": "^0.14.5",
204
199
  "eslint-plugin-storybook": "^10.3.1",
package/dist/index.d.ts CHANGED
@@ -3377,124 +3377,6 @@ interface RuleOptions {
3377
3377
  * @see https://eslint-react.xyz/docs/rules/dom-prefer-namespace-import
3378
3378
  */
3379
3379
  'react-dom/prefer-namespace-import'?: Linter.RuleEntry<[]>;
3380
- /**
3381
- * Verifies that automatic effect dependencies are compiled if opted-in
3382
- */
3383
- 'react-hooks/automatic-effect-dependencies'?: Linter.RuleEntry<ReactHooksAutomaticEffectDependencies>;
3384
- /**
3385
- * Validates against calling capitalized functions/methods instead of using JSX
3386
- */
3387
- 'react-hooks/capitalized-calls'?: Linter.RuleEntry<ReactHooksCapitalizedCalls>;
3388
- /**
3389
- * Validates against higher order functions defining nested components or hooks. Components and hooks should be defined at the module level
3390
- */
3391
- 'react-hooks/component-hook-factories'?: Linter.RuleEntry<ReactHooksComponentHookFactories>;
3392
- /**
3393
- * Validates the compiler configuration options
3394
- */
3395
- 'react-hooks/config'?: Linter.RuleEntry<ReactHooksConfig>;
3396
- /**
3397
- * Validates usage of error boundaries instead of try/catch for errors in child components
3398
- */
3399
- 'react-hooks/error-boundaries'?: Linter.RuleEntry<ReactHooksErrorBoundaries>;
3400
- /**
3401
- * verifies the list of dependencies for Hooks like useEffect and similar
3402
- * @see https://github.com/facebook/react/issues/14920
3403
- */
3404
- 'react-hooks/exhaustive-deps'?: Linter.RuleEntry<ReactHooksExhaustiveDeps>;
3405
- /**
3406
- * Validates usage of fbt
3407
- */
3408
- 'react-hooks/fbt'?: Linter.RuleEntry<ReactHooksFbt>;
3409
- /**
3410
- * Validates usage of `fire`
3411
- */
3412
- 'react-hooks/fire'?: Linter.RuleEntry<ReactHooksFire>;
3413
- /**
3414
- * Validates configuration of [gating mode](https://react.dev/reference/react-compiler/gating)
3415
- */
3416
- 'react-hooks/gating'?: Linter.RuleEntry<ReactHooksGating>;
3417
- /**
3418
- * Validates against assignment/mutation of globals during render, part of ensuring that [side effects must render outside of render](https://react.dev/reference/rules/components-and-hooks-must-be-pure#side-effects-must-run-outside-of-render)
3419
- */
3420
- 'react-hooks/globals'?: Linter.RuleEntry<ReactHooksGlobals>;
3421
- /**
3422
- * Validates the rules of hooks
3423
- */
3424
- 'react-hooks/hooks'?: Linter.RuleEntry<ReactHooksHooks>;
3425
- /**
3426
- * Validates against mutating props, state, and other values that [are immutable](https://react.dev/reference/rules/components-and-hooks-must-be-pure#props-and-state-are-immutable)
3427
- */
3428
- 'react-hooks/immutability'?: Linter.RuleEntry<ReactHooksImmutability>;
3429
- /**
3430
- * Validates against usage of libraries which are incompatible with memoization (manual or automatic)
3431
- */
3432
- 'react-hooks/incompatible-library'?: Linter.RuleEntry<ReactHooksIncompatibleLibrary>;
3433
- /**
3434
- * Internal invariants
3435
- */
3436
- 'react-hooks/invariant'?: Linter.RuleEntry<ReactHooksInvariant>;
3437
- /**
3438
- * Validates that effect dependencies are memoized
3439
- */
3440
- 'react-hooks/memoized-effect-dependencies'?: Linter.RuleEntry<ReactHooksMemoizedEffectDependencies>;
3441
- /**
3442
- * Validates against deriving values from state in an effect
3443
- */
3444
- 'react-hooks/no-deriving-state-in-effects'?: Linter.RuleEntry<ReactHooksNoDerivingStateInEffects>;
3445
- /**
3446
- * Validates that existing manual memoized is preserved by the compiler. React Compiler will only compile components and hooks if its inference [matches or exceeds the existing manual memoization](https://react.dev/learn/react-compiler/introduction#what-should-i-do-about-usememo-usecallback-and-reactmemo)
3447
- */
3448
- 'react-hooks/preserve-manual-memoization'?: Linter.RuleEntry<ReactHooksPreserveManualMemoization>;
3449
- /**
3450
- * Validates that [components/hooks are pure](https://react.dev/reference/rules/components-and-hooks-must-be-pure) by checking that they do not call known-impure functions
3451
- */
3452
- 'react-hooks/purity'?: Linter.RuleEntry<ReactHooksPurity>;
3453
- /**
3454
- * Validates correct usage of refs, not reading/writing during render. See the "pitfalls" section in [`useRef()` usage](https://react.dev/reference/react/useRef#usage)
3455
- */
3456
- 'react-hooks/refs'?: Linter.RuleEntry<ReactHooksRefs>;
3457
- /**
3458
- * Validates against suppression of other rules
3459
- */
3460
- 'react-hooks/rule-suppression'?: Linter.RuleEntry<ReactHooksRuleSuppression>;
3461
- /**
3462
- * enforces the Rules of Hooks
3463
- * @see https://react.dev/reference/rules/rules-of-hooks
3464
- */
3465
- 'react-hooks/rules-of-hooks'?: Linter.RuleEntry<ReactHooksRulesOfHooks>;
3466
- /**
3467
- * Validates against calling setState synchronously in an effect, which can lead to re-renders that degrade performance
3468
- */
3469
- 'react-hooks/set-state-in-effect'?: Linter.RuleEntry<ReactHooksSetStateInEffect>;
3470
- /**
3471
- * Validates against setting state during render, which can trigger additional renders and potential infinite render loops
3472
- */
3473
- 'react-hooks/set-state-in-render'?: Linter.RuleEntry<ReactHooksSetStateInRender>;
3474
- /**
3475
- * Validates that components are static, not recreated every render. Components that are recreated dynamically can reset state and trigger excessive re-rendering
3476
- */
3477
- 'react-hooks/static-components'?: Linter.RuleEntry<ReactHooksStaticComponents>;
3478
- /**
3479
- * Validates against invalid syntax
3480
- */
3481
- 'react-hooks/syntax'?: Linter.RuleEntry<ReactHooksSyntax>;
3482
- /**
3483
- * Unimplemented features
3484
- */
3485
- 'react-hooks/todo'?: Linter.RuleEntry<ReactHooksTodo>;
3486
- /**
3487
- * Validates against syntax that we do not plan to support in React Compiler
3488
- */
3489
- 'react-hooks/unsupported-syntax'?: Linter.RuleEntry<ReactHooksUnsupportedSyntax>;
3490
- /**
3491
- * Validates usage of the useMemo() hook against common mistakes. See [`useMemo()` docs](https://react.dev/reference/react/useMemo) for more information.
3492
- */
3493
- 'react-hooks/use-memo'?: Linter.RuleEntry<ReactHooksUseMemo>;
3494
- /**
3495
- * Validates that useMemos always return a value and that the result of the useMemo is used by the component/hook. See [`useMemo()` docs](https://react.dev/reference/react/useMemo) for more information.
3496
- */
3497
- 'react-hooks/void-use-memo'?: Linter.RuleEntry<ReactHooksVoidUseMemo>;
3498
3380
  /**
3499
3381
  * Enforces the context name to be a valid component name with the suffix 'Context'.
3500
3382
  * @see https://eslint-react.xyz/docs/rules/naming-convention-context-name
@@ -14134,96 +14016,6 @@ type Radix = [] | [("always" | "as-needed")]; // ----- react-dom/no-unknown-prop
14134
14016
  type ReactDomNoUnknownProperty = [] | [{
14135
14017
  ignore?: string[];
14136
14018
  requireDataLowercase?: boolean;
14137
- }]; // ----- react-hooks/automatic-effect-dependencies -----
14138
- type ReactHooksAutomaticEffectDependencies = [] | [{
14139
- [k: string]: unknown | undefined;
14140
- }]; // ----- react-hooks/capitalized-calls -----
14141
- type ReactHooksCapitalizedCalls = [] | [{
14142
- [k: string]: unknown | undefined;
14143
- }]; // ----- react-hooks/component-hook-factories -----
14144
- type ReactHooksComponentHookFactories = [] | [{
14145
- [k: string]: unknown | undefined;
14146
- }]; // ----- react-hooks/config -----
14147
- type ReactHooksConfig = [] | [{
14148
- [k: string]: unknown | undefined;
14149
- }]; // ----- react-hooks/error-boundaries -----
14150
- type ReactHooksErrorBoundaries = [] | [{
14151
- [k: string]: unknown | undefined;
14152
- }]; // ----- react-hooks/exhaustive-deps -----
14153
- type ReactHooksExhaustiveDeps = [] | [{
14154
- additionalHooks?: string;
14155
- enableDangerousAutofixThisMayCauseInfiniteLoops?: boolean;
14156
- experimental_autoDependenciesHooks?: string[];
14157
- requireExplicitEffectDeps?: boolean;
14158
- }]; // ----- react-hooks/fbt -----
14159
- type ReactHooksFbt = [] | [{
14160
- [k: string]: unknown | undefined;
14161
- }]; // ----- react-hooks/fire -----
14162
- type ReactHooksFire = [] | [{
14163
- [k: string]: unknown | undefined;
14164
- }]; // ----- react-hooks/gating -----
14165
- type ReactHooksGating = [] | [{
14166
- [k: string]: unknown | undefined;
14167
- }]; // ----- react-hooks/globals -----
14168
- type ReactHooksGlobals = [] | [{
14169
- [k: string]: unknown | undefined;
14170
- }]; // ----- react-hooks/hooks -----
14171
- type ReactHooksHooks = [] | [{
14172
- [k: string]: unknown | undefined;
14173
- }]; // ----- react-hooks/immutability -----
14174
- type ReactHooksImmutability = [] | [{
14175
- [k: string]: unknown | undefined;
14176
- }]; // ----- react-hooks/incompatible-library -----
14177
- type ReactHooksIncompatibleLibrary = [] | [{
14178
- [k: string]: unknown | undefined;
14179
- }]; // ----- react-hooks/invariant -----
14180
- type ReactHooksInvariant = [] | [{
14181
- [k: string]: unknown | undefined;
14182
- }]; // ----- react-hooks/memoized-effect-dependencies -----
14183
- type ReactHooksMemoizedEffectDependencies = [] | [{
14184
- [k: string]: unknown | undefined;
14185
- }]; // ----- react-hooks/no-deriving-state-in-effects -----
14186
- type ReactHooksNoDerivingStateInEffects = [] | [{
14187
- [k: string]: unknown | undefined;
14188
- }]; // ----- react-hooks/preserve-manual-memoization -----
14189
- type ReactHooksPreserveManualMemoization = [] | [{
14190
- [k: string]: unknown | undefined;
14191
- }]; // ----- react-hooks/purity -----
14192
- type ReactHooksPurity = [] | [{
14193
- [k: string]: unknown | undefined;
14194
- }]; // ----- react-hooks/refs -----
14195
- type ReactHooksRefs = [] | [{
14196
- [k: string]: unknown | undefined;
14197
- }]; // ----- react-hooks/rule-suppression -----
14198
- type ReactHooksRuleSuppression = [] | [{
14199
- [k: string]: unknown | undefined;
14200
- }]; // ----- react-hooks/rules-of-hooks -----
14201
- type ReactHooksRulesOfHooks = [] | [{
14202
- additionalHooks?: string;
14203
- }]; // ----- react-hooks/set-state-in-effect -----
14204
- type ReactHooksSetStateInEffect = [] | [{
14205
- [k: string]: unknown | undefined;
14206
- }]; // ----- react-hooks/set-state-in-render -----
14207
- type ReactHooksSetStateInRender = [] | [{
14208
- [k: string]: unknown | undefined;
14209
- }]; // ----- react-hooks/static-components -----
14210
- type ReactHooksStaticComponents = [] | [{
14211
- [k: string]: unknown | undefined;
14212
- }]; // ----- react-hooks/syntax -----
14213
- type ReactHooksSyntax = [] | [{
14214
- [k: string]: unknown | undefined;
14215
- }]; // ----- react-hooks/todo -----
14216
- type ReactHooksTodo = [] | [{
14217
- [k: string]: unknown | undefined;
14218
- }]; // ----- react-hooks/unsupported-syntax -----
14219
- type ReactHooksUnsupportedSyntax = [] | [{
14220
- [k: string]: unknown | undefined;
14221
- }]; // ----- react-hooks/use-memo -----
14222
- type ReactHooksUseMemo = [] | [{
14223
- [k: string]: unknown | undefined;
14224
- }]; // ----- react-hooks/void-use-memo -----
14225
- type ReactHooksVoidUseMemo = [] | [{
14226
- [k: string]: unknown | undefined;
14227
14019
  }]; // ----- react-refresh/only-export-components -----
14228
14020
  type ReactRefreshOnlyExportComponents = [] | [{
14229
14021
  extraHOCs?: string[];
@@ -18722,7 +18514,6 @@ type TypedFlatConfigItem = Omit<ConfigWithExtends, 'plugins' | 'rules'> & {
18722
18514
  declare const defaultPluginRenaming: {
18723
18515
  '@eslint-react': string;
18724
18516
  '@eslint-react/dom': string;
18725
- '@eslint-react/hooks-extra': string;
18726
18517
  '@eslint-react/naming-convention': string;
18727
18518
  '@next/next': string;
18728
18519
  '@stylistic': string;
package/dist/index.js CHANGED
@@ -1753,35 +1753,24 @@ const NextJsPackages = ["next"];
1753
1753
  const ReactCompilerPackages = ["babel-plugin-react-compiler"];
1754
1754
  async function react(options = {}) {
1755
1755
  const { files = [GLOB_SRC], filesTypeAware = [GLOB_TS, GLOB_TSX], ignoresTypeAware = [`${GLOB_MARKDOWN}/**`, GLOB_ASTRO_TS], overrides = {}, reactCompiler = ReactCompilerPackages.some((i) => isPackageExists(i)), tsconfigPath } = options;
1756
- await ensurePackages([
1757
- "@eslint-react/eslint-plugin",
1758
- "eslint-plugin-react-hooks",
1759
- "eslint-plugin-react-refresh"
1760
- ]);
1756
+ await ensurePackages(["@eslint-react/eslint-plugin", "eslint-plugin-react-refresh"]);
1761
1757
  const isTypeAware = !!tsconfigPath;
1762
1758
  const typeAwareRules = {
1763
1759
  "react/no-implicit-key": "error",
1764
1760
  "react/no-leaked-conditional-rendering": "warn"
1765
1761
  };
1766
- const [pluginReact, pluginReactHooks, pluginReactRefresh] = await Promise.all([
1767
- interopDefault(import("@eslint-react/eslint-plugin")),
1768
- interopDefault(import("eslint-plugin-react-hooks")),
1769
- interopDefault(import("eslint-plugin-react-refresh"))
1770
- ]);
1762
+ const [pluginReact, pluginReactRefresh] = await Promise.all([interopDefault(import("@eslint-react/eslint-plugin")), interopDefault(import("eslint-plugin-react-refresh"))]);
1771
1763
  const isAllowConstantExport = ReactRefreshAllowConstantExportPackages.some((i) => isPackageExists(i));
1772
1764
  const isUsingRemix = RemixPackages.some((i) => isPackageExists(i));
1773
1765
  const isUsingReactRouter = ReactRouterPackages.some((i) => isPackageExists(i));
1774
1766
  const isUsingNext = NextJsPackages.some((i) => isPackageExists(i));
1775
1767
  const plugins = pluginReact.configs.all.plugins;
1776
- const pluginReactHooksExtra = plugins["@eslint-react/hooks-extra"];
1777
1768
  return [
1778
1769
  {
1779
1770
  name: "config/react/setup",
1780
1771
  plugins: {
1781
1772
  "react": plugins["@eslint-react"],
1782
1773
  "react-dom": plugins["@eslint-react/dom"],
1783
- "react-hooks": pluginReactHooks,
1784
- ...pluginReactHooksExtra ? { "react-hooks-extra": pluginReactHooksExtra } : {},
1785
1774
  "react-naming-convention": plugins["@eslint-react/naming-convention"],
1786
1775
  "react-refresh": pluginReactRefresh,
1787
1776
  "react-rsc": plugins["@eslint-react/rsc"],
@@ -1798,9 +1787,6 @@ async function react(options = {}) {
1798
1787
  rules: {
1799
1788
  "react/jsx-key-before-spread": "warn",
1800
1789
  "react/jsx-no-comment-textnodes": "warn",
1801
- "react/jsx-no-duplicate-props": "warn",
1802
- "react/jsx-uses-react": "warn",
1803
- "react/jsx-uses-vars": "warn",
1804
1790
  "react/no-access-state-in-setstate": "error",
1805
1791
  "react/no-array-index-key": "warn",
1806
1792
  "react/no-children-count": "warn",
@@ -1814,26 +1800,22 @@ async function react(options = {}) {
1814
1800
  "react/no-component-will-update": "error",
1815
1801
  "react/no-context-provider": "warn",
1816
1802
  "react/no-create-ref": "error",
1817
- "react/no-default-props": "error",
1818
1803
  "react/no-direct-mutation-state": "error",
1819
1804
  "react/no-forward-ref": "warn",
1820
1805
  "react/no-missing-key": "error",
1821
1806
  "react/no-nested-component-definitions": "error",
1822
1807
  "react/no-nested-lazy-component-declarations": "error",
1823
- "react/no-prop-types": "error",
1824
1808
  "react/no-redundant-should-component-update": "error",
1825
1809
  "react/no-set-state-in-component-did-mount": "warn",
1826
1810
  "react/no-set-state-in-component-did-update": "warn",
1827
1811
  "react/no-set-state-in-component-will-update": "warn",
1828
- "react/no-string-refs": "error",
1829
1812
  "react/no-unnecessary-use-prefix": "warn",
1830
1813
  "react/no-unsafe-component-will-mount": "warn",
1831
1814
  "react/no-unsafe-component-will-receive-props": "warn",
1832
1815
  "react/no-unsafe-component-will-update": "warn",
1833
1816
  "react/no-unused-class-component-members": "warn",
1834
1817
  "react/no-use-context": "warn",
1835
- "react/no-useless-forward-ref": "warn",
1836
- "react/prefer-use-state-lazy-initialization": "warn",
1818
+ "react/set-state-in-effect": "warn",
1837
1819
  "react/prefer-namespace-import": "error",
1838
1820
  "react-rsc/function-definition": "error",
1839
1821
  "react-dom/no-dangerously-set-innerhtml": "warn",
@@ -1848,32 +1830,24 @@ async function react(options = {}) {
1848
1830
  "react-dom/no-unsafe-iframe-sandbox": "warn",
1849
1831
  "react-dom/no-use-form-state": "error",
1850
1832
  "react-dom/no-void-elements-with-children": "error",
1851
- ...pluginReactHooksExtra ? { "react-hooks-extra/no-direct-set-state-in-use-effect": "warn" } : {},
1852
1833
  "react-naming-convention/context-name": "warn",
1853
1834
  "react-naming-convention/ref-name": "warn",
1854
- "react-naming-convention/use-state": "warn",
1855
1835
  "react-web-api/no-leaked-event-listener": "warn",
1856
1836
  "react-web-api/no-leaked-interval": "warn",
1857
1837
  "react-web-api/no-leaked-resize-observer": "warn",
1858
1838
  "react-web-api/no-leaked-timeout": "warn",
1859
- "react-hooks/exhaustive-deps": "warn",
1860
- "react-hooks/rules-of-hooks": "error",
1839
+ "react/exhaustive-deps": "warn",
1840
+ "react/rules-of-hooks": "error",
1861
1841
  ...reactCompiler ? {
1862
- "react-hooks/component-hook-factories": "error",
1863
- "react-hooks/config": "error",
1864
- "react-hooks/error-boundaries": "error",
1865
- "react-hooks/gating": "error",
1866
- "react-hooks/globals": "error",
1867
- "react-hooks/immutability": "error",
1868
- "react-hooks/incompatible-library": "warn",
1869
- "react-hooks/preserve-manual-memoization": "error",
1870
- "react-hooks/purity": "error",
1871
- "react-hooks/refs": "error",
1872
- "react-hooks/set-state-in-effect": "error",
1873
- "react-hooks/set-state-in-render": "error",
1874
- "react-hooks/static-components": "error",
1875
- "react-hooks/unsupported-syntax": "warn",
1876
- "react-hooks/use-memo": "error"
1842
+ "react/component-hook-factories": "error",
1843
+ "react/error-boundaries": "error",
1844
+ "react/immutability": "error",
1845
+ "react/purity": "error",
1846
+ "react/refs": "error",
1847
+ "react/set-state-in-effect": "error",
1848
+ "react/set-state-in-render": "error",
1849
+ "react/unsupported-syntax": "warn",
1850
+ "react/use-memo": "error"
1877
1851
  } : {},
1878
1852
  "react-refresh/only-export-components": ["error", {
1879
1853
  allowConstantExport: isAllowConstantExport,
@@ -1912,11 +1886,7 @@ async function react(options = {}) {
1912
1886
  name: "config/react/typescript",
1913
1887
  rules: {
1914
1888
  "react-dom/no-string-style-prop": "off",
1915
- "react-dom/no-unknown-property": "off",
1916
- "react/jsx-no-duplicate-props": "off",
1917
- "react/jsx-no-undef": "off",
1918
- "react/jsx-uses-react": "off",
1919
- "react/jsx-uses-vars": "off"
1889
+ "react-dom/no-unknown-property": "off"
1920
1890
  }
1921
1891
  },
1922
1892
  ...isTypeAware ? [{
@@ -3109,7 +3079,6 @@ const VuePackages = [
3109
3079
  const defaultPluginRenaming = {
3110
3080
  "@eslint-react": "react",
3111
3081
  "@eslint-react/dom": "react-dom",
3112
- "@eslint-react/hooks-extra": "react-hooks-extra",
3113
3082
  "@eslint-react/naming-convention": "react-naming-convention",
3114
3083
  "@next/next": "next",
3115
3084
  "@stylistic": "style",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@infernodesign/eslint-config",
3
3
  "description": "ESLint config for Inferno Design.",
4
- "version": "1.25.0",
4
+ "version": "1.26.0",
5
5
  "type": "module",
6
6
  "author": "Inferno Design <support@infernodesign.com>",
7
7
  "license": "MIT",
@@ -104,7 +104,6 @@
104
104
  "eslint-plugin-erasable-syntax-only": "0.4.0",
105
105
  "eslint-plugin-format": "2.0.1",
106
106
  "eslint-plugin-jsx-a11y": "6.10.2",
107
- "eslint-plugin-react-hooks": "7.0.1",
108
107
  "eslint-plugin-react-refresh": "0.5.2",
109
108
  "eslint-plugin-solid": "0.14.5",
110
109
  "eslint-plugin-storybook": "10.3.1",
@@ -137,7 +136,6 @@
137
136
  "eslint-plugin-erasable-syntax-only": "^0.4.0",
138
137
  "eslint-plugin-format": "^2.0.1",
139
138
  "eslint-plugin-jsx-a11y": "^6.10.2",
140
- "eslint-plugin-react-hooks": "^7.0.1",
141
139
  "eslint-plugin-react-refresh": "^0.5.2",
142
140
  "eslint-plugin-solid": "^0.14.5",
143
141
  "eslint-plugin-storybook": "^10.3.1",
@@ -178,9 +176,6 @@
178
176
  "eslint-plugin-jsx-a11y": {
179
177
  "optional": true
180
178
  },
181
- "eslint-plugin-react-hooks": {
182
- "optional": true
183
- },
184
179
  "eslint-plugin-react-refresh": {
185
180
  "optional": true
186
181
  },