{ "parserOptions": { "project": "./tsconfig.strictNullChecks.json" }, "extends": [ "plugin:@typescript-eslint/recommended", "plugin:@stylistic/recommended-extends", "plugin:import/recommended", "plugin:import/typescript", "prettier" ], "plugins": ["@typescript-eslint", "@stylistic", "import", "unused-imports", "switch-allman", "strict-null-checks"], "settings": { "import/resolver": { "typescript": { "project": "tsconfig.json" }, "node": { "extensions": [".ts", ".mjs"] } } }, "rules": { "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-dynamic-delete": "off", "@typescript-eslint/no-unused-vars": "off", "@typescript-eslint/no-empty-interface": "off", "@typescript-eslint/no-var-requires": "error", "@typescript-eslint/explicit-module-boundary-types": [ "error", { "allowArgumentsExplicitlyTypedAsAny": true } ], "@typescript-eslint/naming-convention": [ "error", { "selector": "default", "format": ["camelCase"], "leadingUnderscore": "allow" }, { "selector": "typeLike", "format": ["PascalCase"] }, { "selector": "objectLiteralProperty", "format": ["PascalCase", "camelCase", "snake_case"], "leadingUnderscore": "allow" }, { "selector": "typeProperty", "format": ["PascalCase", "camelCase"], "leadingUnderscore": "allow" }, { "selector": "enumMember", "format": ["UPPER_CASE"] }, { "selector": "property", "modifiers": ["readonly", "static"], "format": ["UPPER_CASE"] } ], "@stylistic/indent": ["error", 4, { "MemberExpression": 1, "SwitchCase": 1 }], "@stylistic/brace-style": ["error", "allman", { "allowSingleLine": false }], "@stylistic/semi": ["error", "always"], "@stylistic/quotes": ["error", "double", { "avoidEscape": true }], "@stylistic/operator-linebreak": ["error", "before"], "@stylistic/arrow-parens": ["error", "always"], "@stylistic/max-len": [ "warn", { "code": 121, // +1 to prevent conflicts with Prettier rule. "tabWidth": 4, "ignoreComments": true, "ignoreTrailingComments": true, "ignoreUrls": true, "ignoreStrings": true, "ignoreTemplateLiterals": true, "ignoreRegExpLiterals": true } ], "@stylistic/multiline-ternary": ["error", "always-multiline"], "import/order": [ "error", { "groups": ["builtin", "external", "internal", "parent", "sibling", "index"], "pathGroups": [ { "pattern": "tsyringe", "group": "builtin", "position": "before" } ], "newlines-between": "never", "alphabetize": { "order": "asc", "caseInsensitive": true } } ], "unused-imports/no-unused-imports-ts": "error", "switch-allman/case-allman": "error", "strict-null-checks/all": "warn" }, "overrides": [ { "files": ["src/di/**/*.ts"], "rules": { "@typescript-eslint/no-extraneous-class": "off" } }, { "files": ["src/loaders/**/*.ts"], "rules": { "@typescript-eslint/no-var-requires": "off" } } ] }