import js from "@eslint/js"; import globals from "globals"; import react from "@eslint-react/eslint-plugin"; import reactHooks from "eslint-plugin-react-hooks"; import reactRefresh from "eslint-plugin-react-refresh"; import tseslint from "typescript-eslint"; import eslintReactKit from "@eslint-react/kit"; import { defineConfig, globalIgnores } from "eslint/config"; import { preferNamespaceImport } from "./.config/preferNamespaceImport"; export default defineConfig([ globalIgnores(["dist"]), { files: ["**/*.{ts,tsx}"], extends: [ js.configs.recommended, tseslint.configs.strictTypeChecked, tseslint.configs.stylisticTypeChecked, react.configs.strict, reactHooks.configs.flat.recommended, reactRefresh.configs.vite, eslintReactKit().use(preferNamespaceImport).getConfig(), ], rules: { "@typescript-eslint/array-type": [ "error", { default: "array", }, ], "@typescript-eslint/consistent-generic-constructors": [ "error", "constructor", ], "@typescript-eslint/no-unsafe-type-assertion": "error", "@typescript-eslint/strict-boolean-expressions": "error", "@typescript-eslint/switch-exhaustiveness-check": [ "error", { requireDefaultForNonUnion: true, considerDefaultExhaustiveForUnions: true, }, ], "no-extra-boolean-cast": "off", "no-fallthrough": [ "error", { reportUnusedFallthroughComment: true, }, ], "@typescript-eslint/no-unused-vars": [ "error", { varsIgnorePattern: "^_", reportUsedIgnorePattern: true, }, ], }, languageOptions: { globals: globals.browser, parserOptions: { projectService: true, }, }, }, ]);