@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 +1 -2
- package/dist/cli.js +2 -7
- package/dist/index.d.ts +0 -209
- package/dist/index.js +15 -46
- package/package.json +1 -6
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-
|
|
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.
|
|
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,
|
|
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/
|
|
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
|
|
1860
|
-
"react
|
|
1839
|
+
"react/exhaustive-deps": "warn",
|
|
1840
|
+
"react/rules-of-hooks": "error",
|
|
1861
1841
|
...reactCompiler ? {
|
|
1862
|
-
"react
|
|
1863
|
-
"react-
|
|
1864
|
-
"react
|
|
1865
|
-
"react
|
|
1866
|
-
"react
|
|
1867
|
-
"react-
|
|
1868
|
-
"react
|
|
1869
|
-
"react
|
|
1870
|
-
"react-
|
|
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.
|
|
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
|
},
|