import { fixupConfigRules } from '@eslint/compat'; import prettier from 'eslint-plugin-prettier'; import react from 'eslint-plugin-react'; import reactHooks from 'eslint-plugin-react-hooks'; import jsxA11y from 'eslint-plugin-jsx-a11y'; import js from '@eslint/js'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; import { FlatCompat } from '@eslint/eslintrc'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const compat = new FlatCompat({ baseDirectory: __dirname, recommendedConfig: js.configs.recommended, allConfig: js.configs.all }); export default [ ...fixupConfigRules(compat.extends('prettier')), { plugins: { prettier, react, 'react-hooks': reactHooks, 'jsx-a11y': jsxA11y }, languageOptions: { ecmaVersion: 2020, sourceType: 'module', parserOptions: { ecmaFeatures: { jsx: true } } }, settings: { react: { version: 'detect' } }, rules: { 'react/jsx-filename-extension': 'off', 'no-param-reassign': 'off', 'react/prop-types': 'off', 'react/require-default-props': 'off', 'react/no-array-index-key': 'off', 'react/react-in-jsx-scope': 'off', 'react/jsx-props-no-spreading': 'off', 'import/order': 'off', 'no-console': 'off', 'no-shadow': 'off', 'import/no-cycle': 'off', 'import/no-extraneous-dependencies': 'off', 'jsx-a11y/label-has-associated-control': 'off', 'jsx-a11y/no-autofocus': 'off', 'react/jsx-uses-react': 'off', 'react/jsx-uses-vars': 'error', 'react-hooks/rules-of-hooks': 'error', 'react-hooks/exhaustive-deps': 'warn', 'no-unused-vars': 'off', 'no-restricted-imports': [ 'error', { patterns: ['@mui/*/*/*', '!@mui/material/test-utils/*'] } ], 'no-unused-vars': [ 'error', { vars: 'all', args: 'none' } ], 'prettier/prettier': 'warn' } }, { ignores: ['node_modules/**'], files: ['src/**/*.{js,jsx}'] } ];