import js from '@eslint/js'; import globals from 'globals'; import reactHooks from 'eslint-plugin-react-hooks'; import reactRefresh from 'eslint-plugin-react-refresh'; import tseslint from 'typescript-eslint'; import prettier from 'eslint-config-prettier'; import { defineConfig, globalIgnores } from 'eslint/config'; export default defineConfig([ globalIgnores([ 'dist', 'coverage', 'playwright-report', 'test-results', 'node_modules', 'e2e/**', 'playwright.config.ts', 'vitest.config.ts', 'vite.config.ts', ]), { files: ['**/*.{ts,tsx}'], extends: [ js.configs.recommended, tseslint.configs.recommendedTypeChecked, reactHooks.configs.flat.recommended, reactRefresh.configs.vite, prettier, ], languageOptions: { globals: globals.browser, parserOptions: { projectService: true, tsconfigRootDir: import.meta.dirname, }, }, rules: { 'react-hooks/exhaustive-deps': 'error', '@typescript-eslint/consistent-type-imports': ['error', { prefer: 'type-imports' }], '@typescript-eslint/no-floating-promises': 'error', '@typescript-eslint/no-misused-promises': 'error', '@typescript-eslint/no-unused-vars': [ 'error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }, ], }, }, { files: ['**/*.test.{ts,tsx}', 'src/test/**'], rules: { '@typescript-eslint/no-floating-promises': 'off', }, }, ]);