Skip to content

Commit 3404830

Browse files
committed
[eprh] Fix config.flat keys to be inferred correctly
1 parent 4b3e662 commit 3404830

File tree

1 file changed

+36
-29
lines changed
  • packages/eslint-plugin-react-hooks/src

1 file changed

+36
-29
lines changed

packages/eslint-plugin-react-hooks/src/index.ts

Lines changed: 36 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*/
7-
import type {Linter, Rule} from 'eslint';
7+
import type {ESLint, Linter, Rule} from 'eslint';
88

99
import ExhaustiveDeps from './rules/ExhaustiveDeps';
1010
import {
@@ -55,43 +55,50 @@ const recommendedLatestRuleConfigs: Linter.RulesRecord = {
5555
...recommendedLatestCompilerRuleConfigs,
5656
};
5757

58-
const plugins = ['react-hooks'];
59-
60-
type ReactHooksFlatConfig = {
61-
plugins: {react: any};
62-
rules: Linter.RulesRecord;
58+
const pluginsLegacy = ['react-hooks'];
59+
const pluginsFlat = {
60+
'react-hooks': {}, // Assign after creating the plugin object
6361
};
6462

65-
const configs = {
66-
recommended: {
67-
plugins,
68-
rules: recommendedRuleConfigs,
69-
},
70-
'recommended-latest': {
71-
plugins,
72-
rules: recommendedLatestRuleConfigs,
73-
},
74-
flat: {} as Record<string, ReactHooksFlatConfig>,
75-
};
63+
interface Plugin extends Omit<ESLint.Plugin, 'configs'> {
64+
configs: {
65+
recommended: Linter.LegacyConfig;
66+
'recommended-latest': Linter.LegacyConfig;
67+
flat: {
68+
recommended: Linter.Config;
69+
'recommended-latest': Linter.Config;
70+
};
71+
};
72+
}
7673

7774
const plugin = {
7875
meta: {
7976
name: 'eslint-plugin-react-hooks',
8077
version: '7.0.0',
8178
},
8279
rules,
83-
configs,
84-
};
85-
86-
Object.assign(configs.flat, {
87-
'recommended-latest': {
88-
plugins: {'react-hooks': plugin},
89-
rules: configs['recommended-latest'].rules,
80+
configs: {
81+
recommended: {
82+
plugins: pluginsLegacy,
83+
rules: recommendedRuleConfigs,
84+
},
85+
'recommended-latest': {
86+
plugins: pluginsLegacy,
87+
rules: recommendedLatestRuleConfigs,
88+
},
89+
flat: {
90+
recommended: {
91+
plugins: pluginsFlat,
92+
rules: recommendedRuleConfigs,
93+
},
94+
'recommended-latest': {
95+
plugins: pluginsFlat,
96+
rules: recommendedLatestRuleConfigs,
97+
},
98+
},
9099
},
91-
recommended: {
92-
plugins: {'react-hooks': plugin},
93-
rules: configs.recommended.rules,
94-
},
95-
});
100+
} satisfies Plugin;
101+
102+
pluginsFlat['react-hooks'] = plugin;
96103

97104
export default plugin;

0 commit comments

Comments
 (0)