{ "env": { "browser": true, "es6": true, "node": true }, "extends": [ "airbnb-base", "airbnb-base/legacy", "eslint:all", "plugin:@typescript-eslint/eslint-recommended", "plugin:@typescript-eslint/recommended", "plugin:@typescript-eslint/recommended-requiring-type-checking", "plugin:import/errors", "plugin:import/recommended", "plugin:import/typescript", "plugin:import/warnings", "plugin:prettier/recommended", "plugin:unicorn/recommended", "prettier", "prettier/@typescript-eslint", "prettier/unicorn", "xo", "xo-typescript", "xo/browser", "xo/esnext" ], "globals": { "Atomics": "readonly", "SharedArrayBuffer": "readonly" }, "parser": "@typescript-eslint/parser", "parserOptions": { "ecmaVersion": 2020, "project": "tsconfig.json", "sourceType": "module", "tsconfigRootDir": "." }, "plugins": [ "@typescript-eslint", "import", "prettier", "unicorn" ], "rules": { "@typescript-eslint/explicit-function-return-type": [ "error", { "allowExpressions": false, "allowHigherOrderFunctions": false, "allowTypedFunctionExpressions": false } ], "@typescript-eslint/explicit-member-accessibility": "error", "@typescript-eslint/indent": [ "error", 2, { "SwitchCase": 1 } ], "@typescript-eslint/interface-name-prefix": [ "error", { "allowUnderscorePrefix": false, "prefixWithI": "always" } ], "@typescript-eslint/no-empty-interface": "warn", "@typescript-eslint/no-explicit-any": "warn", "@typescript-eslint/no-inferrable-types": "off", "@typescript-eslint/no-magic-numbers": "off", "@typescript-eslint/no-namespace": "off", "@typescript-eslint/no-type-alias": [ "error", { "allowAliases": "in-unions", "allowCallbacks": "always", "allowConditionalTypes": "always", "allowConstructors": "never", "allowLiterals": "never", "allowMappedTypes": "never", "allowTupleTypes": "in-unions" } ], "@typescript-eslint/no-untyped-public-signature": [ "error", { "ignoredMethods": [ "constructor" ] } ], "@typescript-eslint/quotes": [ "error", "double" ], "@typescript-eslint/require-await": "warn", "@typescript-eslint/semi": [ "error", "always" ], "@typescript-eslint/strict-boolean-expressions": [ "error", { "ignoreRhs": true } ], "@typescript-eslint/typedef": [ "error", { "arrayDestructuring": true, "arrowParameter": true, "memberVariableDeclaration": true, "objectDestructuring": true, "parameter": true, "propertyDeclaration": true, "variableDeclaration": true } ], "arrow-parens": [ "error", "always" ], "camelcase": "off", "capitalized-comments": "off", "class-methods-use-this": "off", "comma-dangle": [ "error", { "arrays": "always-multiline", "exports": "always-multiline", "functions": "never", "imports": "always-multiline", "objects": "always-multiline" } ], "comma-spacing": [ "error", { "after": true, "before": false } ], "eslint-comments/disable-enable-pair": "off", "eslint-comments/no-unused-disable": "off", "eslint-comments/no-use": "off", "function-call-argument-newline": "off", "id-length": "warn", "import/default": "off", "import/extensions": [ "error", "ignorePackages", { "js": "never", "jsx": "never", "ts": "never", "tsx": "never", "vue": "never" } ], "import/named": "off", "import/namespace": "off", "import/no-cycle": [ "error", { "maxDepth": 2 } ], "import/no-extraneous-dependencies": [ "error", { "devDependencies": true } ], "import/no-named-as-default-member": "off", "import/order": [ "error", { "groups": [ [ "builtin", "external" ], [ "internal", "parent", "sibling", "index" ], "unknown" ], "newlines-between": "always" } ], "indent": "off", "linebreak-style": [ "error", "unix" ], "lines-around-comment": "off", "lines-between-class-members": [ "error", "always" ], "max-len": [ "error", { "code": 180 } ], "max-lines": [ "error", 450 ], "max-lines-per-function": [ "error", { "IIFEs": false, "max": 100, "skipBlankLines": false, "skipComments": true } ], "max-statements": "off", "multiline-comment-style": "off", "new-cap": "warn", "no-console": "warn", "no-magic-numbers": "off", "no-multiple-empty-lines": [ "error", { "max": 1, "maxEOF": 1 } ], "no-process-env": "off", "no-tabs": "off", "no-ternary": "off", "no-undefined": "off", "no-underscore-dangle": [ "error", { "allowAfterSuper": false, "allowAfterThis": true, "enforceInMethodNames": false } ], "no-unused-vars": "off", "object-curly-newline": "off", "object-curly-spacing": [ "error", "always" ], "prettier/prettier": "error", "quotes": "off", "semi": "off", "sort-imports": [ "error", { "ignoreCase": false, "ignoreDeclarationSort": true, "ignoreMemberSort": false } ], "sort-keys": "warn", "space-before-function-paren": "off", "unicorn/filename-case": [ "error", { "cases": { "kebabCase": true, "pascalCase": true } } ], "unicorn/prevent-abbreviations": "off" } }