{ "root": true, "env": { "node": true, "es2022": true }, "extends": [ "eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:prettier/recommended" ], "parser": "@typescript-eslint/parser", "parserOptions": { "ecmaVersion": "latest", "sourceType": "module", "project": "./tsconfig.json" }, "plugins": ["@typescript-eslint", "prettier"], "rules": { // Error prevention "no-console": ["warn", { "allow": ["warn", "error"] }], "no-debugger": "warn", "no-duplicate-imports": "error", "no-unused-vars": "off", "@typescript-eslint/no-unused-vars": [ "error", { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_", "caughtErrorsIgnorePattern": "^_" } ], "@typescript-eslint/no-explicit-any": "warn", "@typescript-eslint/explicit-function-return-type": [ "warn", { "allowExpressions": true, "allowTypedFunctionExpressions": true } ], "@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/prefer-nullish-coalescing": "error", "@typescript-eslint/prefer-optional-chain": "error", "@typescript-eslint/consistent-type-imports": [ "error", { "prefer": "type-imports", "disallowTypeAnnotations": false } ], // Code style "prettier/prettier": [ "error", { "singleQuote": true, "trailingComma": "es5", "printWidth": 100, "tabWidth": 2, "semi": true } ], "arrow-body-style": ["error", "as-needed"], "prefer-arrow-callback": "error", "no-var": "error", "prefer-const": "error", "eqeqeq": ["error", "always", { "null": "ignore" }], "no-multiple-empty-lines": ["error", { "max": 1, "maxEOF": 0 }], "no-trailing-spaces": "error", "eol-last": "error", "comma-dangle": ["error", "always-multiline"], "quotes": ["error", "single", { "avoidEscape": true }], "semi": ["error", "always"], "object-curly-spacing": ["error", "always"], "array-bracket-spacing": ["error", "never"], "computed-property-spacing": ["error", "never"], "space-before-function-paren": [ "error", { "anonymous": "always", "named": "never", "asyncArrow": "always" } ], "space-before-blocks": ["error", "always"], "keyword-spacing": ["error", { "before": true, "after": true }], "space-infix-ops": "error", "no-multi-spaces": "error", "no-whitespace-before-property": "error", "func-call-spacing": ["error", "never"], "no-spaced-func": "error", "no-unexpected-multiline": "error", "no-mixed-spaces-and-tabs": "error", "no-tabs": "error", "indent": [ "error", 2, { "SwitchCase": 1, "FunctionDeclaration": { "parameters": "first" }, "FunctionExpression": { "parameters": "first" }, "CallExpression": { "arguments": "first" }, "ArrayExpression": "first", "ObjectExpression": "first" } ] }, "ignorePatterns": [ "node_modules/", "dist/", ".nuxt/", ".output/", "coverage/", "*.config.js", "*.config.ts" ] }