// Configuration ESLint (format « flat », ESLint 9). // L'application avait des commentaires `eslint-disable` un peu partout… // sans qu'ESLint ne soit installé. Il l'est maintenant. import js from '@eslint/js' import globals from 'globals' import tseslint from 'typescript-eslint' import reactHooks from 'eslint-plugin-react-hooks' import reactRefresh from 'eslint-plugin-react-refresh' export default tseslint.config( { ignores: ['dist', 'node_modules', 'src-tauri', 'supabase/functions'] }, { extends: [js.configs.recommended, ...tseslint.configs.recommended], files: ['src/**/*.{ts,tsx}'], languageOptions: { ecmaVersion: 2022, globals: globals.browser }, plugins: { 'react-hooks': reactHooks, 'react-refresh': reactRefresh }, rules: { ...reactHooks.configs.recommended.rules, 'react-refresh/only-export-components': 'off', // Les dépendances de hooks manquantes ont causé de vrais bugs de // rafraîchissement : c'est une erreur, pas un avertissement. 'react-hooks/exhaustive-deps': 'error', // Avertissement, pas erreur : réagir à un changement de contexte externe // (notification qui demande d'ouvrir une fiche, ouverture d'un menu) // passe légitimement par un setState dans un effet. 'react-hooks/set-state-in-effect': 'warn', '@typescript-eslint/no-unused-vars': [ 'error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' } ], '@typescript-eslint/no-explicit-any': 'error', '@typescript-eslint/consistent-type-definitions': ['error', 'interface'], eqeqeq: ['error', 'smart'], 'no-console': ['warn', { allow: ['warn', 'error'] }], 'prefer-const': 'error' } } )