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 importPlugin from 'eslint-plugin-import' import tanstackQuery from '@tanstack/eslint-plugin-query' import localRules from './eslint-rules/index.js' import eslintConfigPrettier from 'eslint-config-prettier' export default tseslint.config( { ignores: ['dist', 'coverage', 'playwright-report', 'test-results', '*.tsbuildinfo'] }, ...tanstackQuery.configs['flat/recommended'], { extends: [js.configs.recommended, ...tseslint.configs.recommended], files: ['**/*.{ts,tsx}'], languageOptions: { ecmaVersion: 2023, globals: globals.browser, }, plugins: { 'react-hooks': reactHooks, 'react-refresh': reactRefresh, import: importPlugin, '@tanstack/query': tanstackQuery, local: localRules, }, rules: { ...reactHooks.configs.recommended.rules, 'react-refresh/only-export-components': ['warn', { allowConstantExport: true }], 'no-console': ['error', { allow: ['warn', 'error'] }], '@typescript-eslint/consistent-type-imports': [ 'error', { prefer: 'type-imports', fixStyle: 'inline-type-imports' }, ], '@typescript-eslint/no-non-null-assertion': 'error', 'local/no-hardcoded-color-in-style': 'warn', 'import/order': [ 'warn', { groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index', 'type'], 'newlines-between': 'never', alphabetize: { order: 'asc', caseInsensitive: true }, pathGroups: [{ pattern: '@/**', group: 'internal', position: 'before' }], }, ], }, }, { files: ['src/__tests__/**', 'e2e/**'], rules: { '@typescript-eslint/no-non-null-assertion': 'off', 'react-hooks/exhaustive-deps': 'off', '@typescript-eslint/consistent-type-imports': 'off', 'no-console': 'off', }, }, eslintConfigPrettier )