import eslintPluginNext from "@next/eslint-plugin-next"; import tseslint from "typescript-eslint"; import reactPlugin from "eslint-plugin-react"; import reactHooksPlugin from "eslint-plugin-react-hooks"; export default tseslint.config( { ignores: [".next", "next-env.d.ts", "postcss.config.js", "prettier.config.js"], }, { plugins: { "@next/next": eslintPluginNext, "react": reactPlugin, "react-hooks": reactHooksPlugin, }, rules: { ...eslintPluginNext.configs.recommended.rules, ...eslintPluginNext.configs["core-web-vitals"].rules, }, }, { files: ["**/*.ts", "**/*.tsx"], extends: [ ...tseslint.configs.recommended, ...tseslint.configs.recommendedTypeChecked, ...tseslint.configs.stylisticTypeChecked, ], rules: { "@typescript-eslint/array-type": "off", "@typescript-eslint/consistent-type-definitions": "off", "@typescript-eslint/consistent-type-imports": [ "warn", { prefer: "type-imports", fixStyle: "inline-type-imports" }, ], "@typescript-eslint/no-unused-vars": [ "warn", { argsIgnorePattern: "^_" }, ], "@typescript-eslint/require-await": "off", "@typescript-eslint/no-misused-promises": [ "error", { checksVoidReturn: { attributes: false } }, ], // Disable problematic rules that are causing issues with Node.js APIs and WebSocket libraries "@typescript-eslint/unbound-method": "off", "@typescript-eslint/consistent-generic-constructors": "off", "@typescript-eslint/no-unsafe-assignment": "off", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-base-to-string": "off", "@typescript-eslint/no-unsafe-call": "off", "@typescript-eslint/no-unsafe-member-access": "off", }, }, { linterOptions: { reportUnusedDisableDirectives: true, }, languageOptions: { parserOptions: { projectService: true, }, }, }, );