+ "no-lonely-if": "error",
+ "no-trailing-spaces": "error",
+ "no-whitespace-before-property": "error",
+ "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": true,
+ "ignoreMemberSort": false,
+ "memberSyntaxSortOrder": ["none", "all", "multiple", "single"],
+ "allowSeparatedGroups": true
+ }
+ ],
+ "import/no-unresolved": "error",
+ "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": {
+ /* Sort in ascending order. Options: ["ignore", "asc", "desc"] */
+ "order": "asc",
+ /* Ignore case. Options: [true, false] */
+ "caseInsensitive": true
+ }
+ }
+ ],
+ "object-curly-spacing": ["error", "always"],
+ "lines-between-class-members": [
+ "error",
+ "always",
+ {
+ "exceptAfterSingleLine": true
+ }
+ ],
+ "quotes": [
+ "error",
+ "single",
+ {
+ "avoidEscape": true,
+ "allowTemplateLiterals": false
+ }
+ ]
+ },
+ "overrides": [
+ {
+ "files": ["**/*.ts"],
+ "parser": "@typescript-eslint/parser",
+ "parserOptions": {
+ "ecmaVersion": 2020,
+ "sourceType": "module",
+ "project": "./tsconfig.json"
+ },
+ "extends": [
+ "plugin:@typescript-eslint/recommended",
+ "plugin:@typescript-eslint/recommended-requiring-type-checking",
+ "plugin:import/typescript"
+ ],
+ "plugins": ["@typescript-eslint"],
+ "rules": {
+ "@typescript-eslint/array-type": "off",
+ "semi": "off",
+ "@typescript-eslint/semi": ["error", "always"],
+ "@typescript-eslint/no-empty-function": "warn",
+ "@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",
+ "no-shadow": "off", // This one is generating false positive no-shadow errors on exported/const enums
+ "@typescript-eslint/no-shadow": "error"
+ }
+ },
+ {
+ "files": ["**/*.js"],
+ "extends": "plugin:node/recommended",
+ "rules": {
+ "node/shebang": "off"
+ }
+ }
+ ]