{ "extends": [ "next/core-web-vitals", "next/typescript" ], "parser": "@typescript-eslint/parser", "parserOptions": { "ecmaVersion": 2020, "sourceType": "module", "project": "./tsconfig.json" }, "rules": { "@typescript-eslint/no-unused-vars": [ "error", { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_", "caughtErrorsIgnorePattern": "^_" } ], "@typescript-eslint/no-explicit-any": "error", "@typescript-eslint/explicit-function-return-type": "off", "@typescript-eslint/explicit-module-boundary-types": "off", "@typescript-eslint/no-floating-promises": "error", "@typescript-eslint/no-misused-promises": "error", "@typescript-eslint/await-thenable": "error", "@typescript-eslint/no-unnecessary-type-assertion": "error", "@typescript-eslint/no-non-null-assertion": "error", "@typescript-eslint/prefer-nullish-coalescing": "error", "@typescript-eslint/prefer-optional-chain": "error", "@typescript-eslint/no-non-null-asserted-optional-chain": "error", "no-console": ["warn", { "allow": ["warn", "error"] }], "no-debugger": "error", "no-alert": "error", "prefer-const": "error", "no-var": "error", "object-shorthand": "error", "prefer-arrow-callback": "warn", "prefer-template": "error", "eqeqeq": ["error", "always"], "curly": ["error", "all"], "no-throw-literal": "error", "no-return-await": "error", "require-await": "warn", "no-await-in-loop": "warn", "react-hooks/rules-of-hooks": "error", "react-hooks/exhaustive-deps": "error", "react/jsx-key": "error", "react/jsx-no-duplicate-props": "error", "react/jsx-no-undef": "error", "react/no-unescaped-entities": "warn", "react/no-unknown-property": "error", "max-lines": ["error", { "max": 250, "skipBlankLines": false, "skipComments": false }], "max-lines-per-function": ["error", { "max": 40, "skipBlankLines": false, "skipComments": false, "IIFEs": true }] } }