const { resolve } = require("node:path"); const project = resolve(process.cwd(), "tsconfig.json"); /** @type {import("eslint").Linter.Config} */ module.exports = { extends: ["prettier", "plugin:@typescript-eslint/recommended"], parser: "@typescript-eslint/parser", plugins: ["react", "react-hooks", "@typescript-eslint", "import"], globals: { React: true, JSX: true, }, env: { node: true, browser: true, }, settings: { "import/resolver": { typescript: { project, }, }, }, rules: { "no-useless-escape": "off", "prefer-const": "error", "no-irregular-whitespace": "error", "no-trailing-spaces": "error", "no-duplicate-imports": "error", "no-useless-catch": "warn", "no-case-declarations": "error", "no-undef": "error", "no-unreachable": "error", "arrow-body-style": ["error", "as-needed"], "@next/next/no-html-link-for-pages": "off", "@next/next/no-img-element": "off", "react/jsx-key": "error", "react/self-closing-comp": ["error", { component: true, html: true }], "react/jsx-boolean-value": "error", "react/jsx-no-duplicate-props": "error", "react-hooks/exhaustive-deps": "warn", "@typescript-eslint/no-unused-expressions": "warn", "@typescript-eslint/no-unused-vars": [ "warn", { argsIgnorePattern: "^_", varsIgnorePattern: "^_", caughtErrorsIgnorePattern: "^_", }, ], "@typescript-eslint/no-explicit-any": "warn", "@typescript-eslint/no-useless-empty-export": "error", "@typescript-eslint/prefer-ts-expect-error": "warn", "import/order": [ "warn", { groups: ["builtin", "external", "internal", "parent", "sibling"], pathGroups: [ { pattern: "@plane/**", group: "external", position: "after", }, { pattern: "@/**", group: "internal", position: "before", }, ], pathGroupsExcludedImportTypes: ["builtin", "internal", "react"], alphabetize: { order: "asc", caseInsensitive: true, }, }, ], }, ignorePatterns: [".*.js", "node_modules/", "dist/"], };