11import eslint from '@eslint/js' ;
22import configPrettier from 'eslint-config-prettier' ;
33import pluginPrettierRecommended from 'eslint-plugin-prettier/recommended' ;
4- import pluginReact from 'eslint-plugin-react' ;
5- import reactPlugin from 'eslint-plugin-react-hooks' ;
4+ import reactPlugin from 'eslint-plugin-react' ;
5+ import reactHooks from 'eslint-plugin-react-hooks' ;
6+ import { defineConfig } from 'eslint/config' ;
67import tseslint from 'typescript-eslint' ;
78
8- export default tseslint . config (
9+ export default defineConfig (
910 eslint . configs . recommended ,
1011 tseslint . configs . strictTypeChecked ,
1112 tseslint . configs . stylisticTypeChecked ,
1213
1314 {
14- ignores : [ 'dist/**/*' , 'eslint.config.mjs' , 'prettier.config.js' , ' tailwind.config.js' , 'vite.config.mjs '] ,
15+ ignores : [ 'dist/**/*' , 'tailwind.config.js' ] ,
1516 } ,
17+
18+ // configuration for rules that require type information
1619 {
1720 languageOptions : {
18- ...pluginReact . configs . flat . recommended . languageOptions ,
21+ ...reactPlugin . configs . flat . recommended . languageOptions ,
1922 parserOptions : {
2023 projectService : true ,
21- tsconfigRootDir : import . meta. dirname ,
2224 } ,
2325 } ,
2426 } ,
2527
2628 // eslint-rules
2729 {
2830 rules : {
29- 'linebreak-style' : [ 'error' , 'unix' ] ,
30- 'no-unused-vars' : 'off' ,
31+ 'no-unused-vars' : 'off' , // Note: you must disable the base rule as it can report incorrect errors
3132 'no-warning-comments' : 'warn' ,
3233 eqeqeq : 'error' ,
33- indent : [ 'error' , 2 , { SwitchCase : 1 } ] ,
34- quotes : [ 'error' , 'single' ] ,
35- semi : [ 'error' , 'always' ] ,
3634 } ,
3735 } ,
3836
3937 // typescript-eslint rules
4038 {
4139 rules : {
40+ '@typescript-eslint/consistent-type-definitions' : 'off' ,
4241 '@typescript-eslint/explicit-member-accessibility' : [ 'error' , { accessibility : 'explicit' } ] ,
43- '@typescript-eslint/interface-name-prefix' : 'off' ,
44- '@typescript-eslint/no-floating-promises' : 'error' ,
45- '@typescript-eslint/no-parameter-properties' : [ 'off' ] ,
46- '@typescript-eslint/no-require-imports' : 'warn' ,
42+ '@typescript-eslint/no-shadow' : 'error' ,
4743 '@typescript-eslint/no-unused-vars' : [
4844 'warn' ,
4945 {
@@ -61,12 +57,10 @@ export default tseslint.config(
6157 } ,
6258
6359 // plugin-react and plugin-react-hooks
64- pluginReact . configs . flat . recommended ,
60+ reactPlugin . configs . flat . recommended ,
61+ reactPlugin . configs . flat [ 'jsx-runtime' ] ,
62+ reactHooks . configs . flat . recommended ,
6563 {
66- plugins : {
67- react : pluginReact ,
68- 'react-hooks' : reactPlugin ,
69- } ,
7064 rules : {
7165 'react/self-closing-comp' : [ 'error' , { component : true , html : true } ] ,
7266 'react-hooks/rules-of-hooks' : 'error' ,
0 commit comments