{ "root": true, "parser": "@typescript-eslint/parser", "extends": [ "plugin:@typescript-eslint/recommended", "plugin:prettier/recommended", "plugin:typescript-sort-keys/recommended", "plugin:jest/recommended" ], "plugins": [ "sort-destructure-keys", "sort-keys-fix", "typescript-sort-keys", "import", "jest" ], "env": { "es6": true, "node": true, "jest": true, "commonjs": true }, "rules": { "no-var": "warn", "semi": "warn", "indent": ["warn", 2, { "SwitchCase": 1 }], "no-multi-spaces": "warn", "space-in-parens": "warn", "no-multiple-empty-lines": "warn", "prefer-const": "warn", "no-use-before-define": "error", "max-len": [ "warn", 120, { "ignoreComments": true, "ignoreStrings": true, "ignoreTemplateLiterals": true }], "import/order": [ "error", { "groups": [ "builtin", // Built-in imports (come from NodeJS native) go first "external", // <- External imports "internal", // <- Absolute imports ["sibling", "parent"], // <- Relative imports, the sibling and parent types they can be mingled together "index", // <- index imports "unknown" // <- unknown ], "newlines-between": "always", "alphabetize": { "order": "asc", "caseInsensitive": true } } ], "import/newline-after-import": ["error", { "count": 1 }], "sort-imports": ["error", { "ignoreCase": false, "ignoreDeclarationSort": true, "ignoreMemberSort": false, "memberSyntaxSortOrder": [ "none", "all", "multiple", "single" ], "allowSeparatedGroups": true }], "import/no-relative-packages": "error", "@typescript-eslint/ban-types": "off", "@typescript-eslint/camelcase": "off", "@typescript-eslint/class-name-casing": "off", "@typescript-eslint/ban-ts-comment": [ "warn", { "ts-ignore": "allow-with-description", "minimumDescriptionLength": 10 } ], "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/explicit-module-boundary-types": "off", "sort-destructure-keys/sort-destructure-keys": "error", "@typescript-eslint/member-ordering": "warn", "@typescript-eslint/prefer-nullish-coalescing": "error", "@typescript-eslint/consistent-type-definitions": ["warn", "type"], "@typescript-eslint/prefer-optional-chain": "warn", "@typescript-eslint/no-unused-vars": [ "warn", { "ignoreRestSiblings": true } ], "@typescript-eslint/ban-ts-ignore": "off", "@typescript-eslint/explicit-function-return-type": "off", "@typescript-eslint/no-floating-promises": "error", "prefer-destructuring": ["warn"], "prefer-template": "warn", "object-shorthand": "warn", "newline-after-var": ["warn", "always"], "curly": "warn", "sort-keys-fix/sort-keys-fix": "warn", "@typescript-eslint/prefer-ts-expect-error": "error", "new-cap": "off", "no-console": "off", "no-else-return": "error", "no-eval": "error", "no-mixed-operators": "off", "no-nested-ternary": "error", "no-param-reassign": "error", "no-underscore-dangle": "off", "no-unused-vars": "off", "ods-use-this": "off", "no-async-promise-executor": "error", "no-await-in-loop": "error", "no-promise-executor-return": "error", "require-atomic-updates": "error", "max-nested-callbacks": ["error", 3], "no-return-await": "error", "prefer-promise-reject-errors": "error", "padding-line-between-statements": [ "error", { "blankLine": "always", "next": "return", "prev": "*" }, { "blankLine": "always", "next": "*", "prev": "directive" }, { "blankLine": "any", "next": "directive", "prev": "directive" }, { "blankLine": "always", "next": "*", "prev": ["case", "default"] }, { "blankLine": "never", "next": "case", "prev": ["case", "default"] } ], "jest/prefer-expect-resolves": "error", "jest/prefer-hooks-in-order": "error" } }