{ "root": true, "parser": "@typescript-eslint/parser", "parserOptions": { "project": "./tsconfig.json" }, "extends": [ "eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:@typescript-eslint/recommended-requiring-type-checking", "plugin:import/errors", "plugin:import/warnings", "plugin:import/typescript", "plugin:jsdoc/recommended", "prettier" ], "plugins": ["import", "jsdoc", "@typescript-eslint"], "settings": { "jsdoc": { "mode": "typescript" } }, "rules": { "indent": "off", "@typescript-eslint/indent": [ "error", 2, { "SwitchCase": 1, "CallExpression": { "arguments": 1 }, "FunctionDeclaration": { "parameters": 2, "body": 1 }, "FunctionExpression": { "parameters": 2, "body": 1 } } ], "@typescript-eslint/array-type": "off", "semi": "off", "@typescript-eslint/semi": ["error", "always"], "space-before-blocks": ["error", "always"], "@typescript-eslint/no-empty-function": [ "warn", { "allow": ["arrowFunctions", "methods"] } ], "@typescript-eslint/member-ordering": "error", "@typescript-eslint/await-thenable": "error", "@typescript-eslint/no-floating-promises": "error", "@typescript-eslint/promise-function-async": "error", "@typescript-eslint/no-misused-promises": "error", "curly": "error", "brace-style": "error", "eqeqeq": ["error", "always"], "no-else-return": "error", "no-eq-null": "error", "no-undefined": "error", "no-extra-bind": "error", "no-lone-blocks": "error", "no-multi-spaces": "error", "no-empty": "error", "no-return-assign": ["error", "always"], "no-useless-catch": "error", "no-useless-return": "error", "no-shadow": "off", // This one is generating false positive no-shadow errors on exported/const enums "@typescript-eslint/no-shadow": "error", "no-multiple-empty-lines": [ "error", { "max": 2, "maxEOF": 1 } ], "block-spacing": "error", // "capitalized-comments": [ // "error", // "always", // { // "ignoreConsecutiveComments": true, // "ignorePattern": "pragma|ignored" // } // ], "eol-last": ["error", "always"], "consistent-this": ["error", "self"], "func-call-spacing": ["error", "never"], "keyword-spacing": ["error"], "id-blacklist": [ "error", "any", "Number", "number", "String", "string", "Boolean", "boolean", "Undefined", "undefined", "Symbol", "symbol" ], "linebreak-style": ["error", "unix"], "max-len": [ "warn", { "code": 180, "ignoreComments": true, "ignoreUrls": true, "ignoreStrings": true, "ignoreTemplateLiterals": true, "ignoreRegExpLiterals": true, "ignorePattern": "(^(import|export)|(public|private))\\s.+;" } ], "no-lonely-if": "error", "no-trailing-spaces": "error", "no-whitespace-before-property": "error", "space-before-function-paren": [ "error", { "anonymous": "never", "named": "never", "asyncArrow": "always" } ], "space-in-parens": ["error", "never"], "space-infix-ops": "error", "space-unary-ops": "error", "spaced-comment": ["error", "always"], "switch-colon-spacing": "error", "arrow-body-style": ["error", "as-needed"], "arrow-parens": ["error", "always"], "arrow-spacing": "error", "no-duplicate-imports": "error", "no-var": "error", "prefer-const": "error", "sort-imports": [ "warn", { "ignoreCase": false, "ignoreDeclarationSort": false, "ignoreMemberSort": false, "memberSyntaxSortOrder": ["none", "all", "multiple", "single"] } ], "object-curly-spacing": ["error", "always"], "lines-between-class-members": [ "error", "always", { "exceptAfterSingleLine": true } ], "quotes": ["error", "single"] }, "overrides": [ { "files": ["*.js"], "extends": "plugin:node/recommended", "rules": { "node/shebang": "off", "@typescript-eslint/no-unused-vars": "off", "@typescript-eslint/no-var-requires": "off" } } ] }