import js from "@eslint/js"; import tseslint from "typescript-eslint"; import nextPlugin from "@next/eslint-plugin-next"; import reactPlugin from "eslint-plugin-react"; import hooksPlugin from "eslint-plugin-react-hooks"; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); export default tseslint.config( { ignores: ["**/dist/**", "**/node_modules/**", "**/.next/**", "**/out/**"], }, js.configs.recommended, ...tseslint.configs.recommended, { files: ["apps/web/**/*.{js,jsx,ts,tsx}"], plugins: { "react": reactPlugin, "react-hooks": hooksPlugin, "@next/next": nextPlugin, }, rules: { ...reactPlugin.configs.recommended.rules, ...nextPlugin.configs.recommended.rules, ...nextPlugin.configs["core-web-vitals"].rules, "react/react-in-jsx-scope": "off", "react/no-unescaped-entities": "off", "@next/next/no-img-element": "warn", "no-unused-vars": "warn", "@typescript-eslint/no-unused-vars": ["warn", { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_", "caughtErrorsIgnorePattern": "^_" }], "no-console": "off", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/ban-ts-comment": "off", "no-empty": "warn", "react-hooks/rules-of-hooks": "off", "react-hooks/exhaustive-deps": "off", "@typescript-eslint/no-require-imports": "off", "no-useless-assignment": "off", "react-hooks/set-state-in-effect": "off", "react/jsx-key": "warn", "no-use-before-define": "off", "react-hooks/immutability": "off", "react-hooks/refs": "off", "@typescript-eslint/no-use-before-define": "off", "prefer-const": "off", "no-useless-escape": "off", "no-self-assign": "off", "no-control-regex": "off", }, settings: { react: { version: "detect", }, }, }, );