import js from "@eslint/js"; import tseslint from "typescript-eslint"; import reactHooks from "eslint-plugin-react-hooks"; import reactRefresh from "eslint-plugin-react-refresh"; import eslintConfigPrettier from "eslint-config-prettier"; export default tseslint.config( { ignores: ["dist"] }, { extends: [js.configs.recommended, ...tseslint.configs.recommended], files: ["**/*.{ts,tsx}"], plugins: { "react-hooks": reactHooks, "react-refresh": reactRefresh, }, rules: { ...reactHooks.configs.recommended.rules, "react-refresh/only-export-components": [ "warn", { allowConstantExport: true }, ], "@typescript-eslint/no-unused-vars": [ "error", { argsIgnorePattern: "^_", varsIgnorePattern: "^_" }, ], "@typescript-eslint/no-explicit-any": "error", "@typescript-eslint/no-empty-object-type": [ "error", { allowInterfaces: "with-single-extends" }, ], // New react-hooks v7 rules — warn for now, tighten later. "react-hooks/exhaustive-deps": "warn", "react-hooks/rules-of-hooks": "error", "react-hooks/set-state-in-effect": "warn", "react-hooks/refs": "warn", "react-hooks/preserve-manual-memoization": "warn", }, }, eslintConfigPrettier, );