const { resolve } = require("node:path"); const project = resolve(process.cwd(), "tsconfig.json"); /** @type {import("eslint").Linter.Config} */ module.exports = { extends: [ "next/core-web-vitals", "plugin:@typescript-eslint/recommended-type-checked", "plugin:@typescript-eslint/stylistic-type-checked", "plugin:eslint-plugin-next-on-pages/recommended", "prettier", require.resolve("@vercel/style-guide/eslint/next"), ], globals: { React: true, JSX: true, }, env: { node: true, browser: true, }, plugins: ["only-warn"], settings: { "import/resolver": { typescript: { project, }, }, }, ignorePatterns: [ // Ignore dotfiles ".*.js", "node_modules/", ], overrides: [{ files: ["*.js?(x)", "*.ts?(x)"] }], rules: { // These opinionated rules are enabled in stylistic-type-checked above. // Feel free to reconfigure them to your own preference. "@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 }, }, ], }, };