import { fixupConfigRules, fixupPluginRules } from "@eslint/compat"; import { FlatCompat } from "@eslint/eslintrc"; import js from "@eslint/js"; import jestDom from "eslint-plugin-jest-dom"; import simpleImportSort from "eslint-plugin-simple-import-sort"; import testingLibrary from "eslint-plugin-testing-library"; import path from "node:path"; import { fileURLToPath } from "node:url"; 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, }); const eslintConfig = [ ...fixupConfigRules( compat.extends( "react-app", "plugin:prettier/recommended", "plugin:testing-library/dom", "plugin:jest-dom/recommended", ), ), { plugins: { "simple-import-sort": simpleImportSort, "testing-library": fixupPluginRules(testingLibrary), "jest-dom": fixupPluginRules(jestDom), }, rules: { "sort-imports": "off", "prettier/prettier": "warn", "react/no-unknown-property": [1], "simple-import-sort/imports": [ "warn", { groups: [ ["^react", "^@?\\w"], [ "^(api|actions|config|hooks|components|containers|pages|utils|stores|keycloak|markdown|ws)(/.*|$)", ], ["^(test-utils)(/.*|$)"], ["^\\u0000"], ["^\\.\\.(?!/?$)", "^\\.\\./?$"], ["^\\./(?=.*/)(?!/?$)", "^\\.(?!/?$)", "^\\./?$"], ["^.+\\.s?css$"], ], }, ], "testing-library/await-async-queries": "error", "testing-library/no-await-sync-queries": "error", "testing-library/no-debugging-utils": "warn", "jest-dom/prefer-checked": "error", "jest-dom/prefer-enabled-disabled": "error", "jest-dom/prefer-required": "error", "jest-dom/prefer-to-have-attribute": "error", }, }, ]; export default eslintConfig;