From f0f67cdacb3f3cf8354e7dfeed544de165c6b48e Mon Sep 17 00:00:00 2001 From: dw-0 Date: Sun, 6 Oct 2024 16:57:56 +0200 Subject: [PATCH] Feature/set up stylisticTypeChecked rule in eslint configuration (#3878) * Set up stylisticTypeChecked rule in eslint configuration * Update changelog --------- Signed-off-by: Dominik Willner --- .eslintrc.json | 49 ++++++++++++++++++++++++++++++++++----- CHANGELOG.md | 1 + apps/client/tsconfig.json | 2 ++ libs/ui/tsconfig.json | 6 ++--- tsconfig.base.json | 15 +++++++++++- 5 files changed, 63 insertions(+), 10 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 4078da0e8..c2e6b8079 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -34,9 +34,11 @@ { "files": ["*.ts"], "plugins": ["eslint-plugin-import", "@typescript-eslint"], - "extends": ["plugin:@typescript-eslint/recommended-type-checked"], + "extends": [ + "plugin:@typescript-eslint/recommended-type-checked", + "plugin:@typescript-eslint/stylistic-type-checked" + ], "rules": { - "@typescript-eslint/consistent-type-definitions": "warn", "@typescript-eslint/dot-notation": "off", "@typescript-eslint/explicit-member-accessibility": [ "off", @@ -45,8 +47,33 @@ } ], "@typescript-eslint/member-ordering": "warn", - "@typescript-eslint/naming-convention": "off", - "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/naming-convention": [ + "off", + { + "selector": "default", + "format": ["camelCase"], + "leadingUnderscore": "allow", + "trailingUnderscore": "allow" + }, + { + "selector": ["variable", "classProperty", "typeProperty"], + "format": ["camelCase", "UPPER_CASE"], + "leadingUnderscore": "allow", + "trailingUnderscore": "allow" + }, + { + "selector": "objectLiteralProperty", + "format": null + }, + { + "selector": "enumMember", + "format": ["camelCase", "UPPER_CASE", "PascalCase"] + }, + { + "selector": "typeLike", + "format": ["PascalCase"] + } + ], "@typescript-eslint/no-empty-interface": "warn", "@typescript-eslint/no-inferrable-types": [ "warn", @@ -61,7 +88,6 @@ "hoist": "all" } ], - "@typescript-eslint/prefer-function-type": "warn", "@typescript-eslint/unified-signatures": "error", "@typescript-eslint/no-loss-of-precision": "warn", "@typescript-eslint/no-var-requires": "warn", @@ -114,7 +140,18 @@ "@typescript-eslint/require-await": "warn", "@typescript-eslint/restrict-template-expressions": "warn", "@typescript-eslint/unbound-method": "warn", - "prefer-const": "warn" + "prefer-const": "warn", + + // The following rules are part of @typescript-eslint/stylistic-type-checked + // and can be remove once solved + "@typescript-eslint/consistent-type-definitions": "warn", + "@typescript-eslint/prefer-function-type": "warn", + "@typescript-eslint/no-empty-function": "warn", + "@typescript-eslint/prefer-nullish-coalescing": "warn", // TODO: Requires strictNullChecks: true + "@typescript-eslint/consistent-type-assertions": "warn", + "@typescript-eslint/prefer-optional-chain": "warn", + "@typescript-eslint/consistent-indexed-object-style": "warn", + "@typescript-eslint/consistent-generic-constructors": "warn" } } ], diff --git a/CHANGELOG.md b/CHANGELOG.md index cd7de4e76..2cbea2781 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Set up a git-hook via `husky` to lint and format the changes before a commit - Added the `typescript-eslint/recommended-type-checked` rule to the `eslint` configuration +- Added the `typescript-eslint/stylistic-type-checked` rule to the `eslint` configuration ### Changed diff --git a/apps/client/tsconfig.json b/apps/client/tsconfig.json index fa5cdf2a3..1dd30aad1 100644 --- a/apps/client/tsconfig.json +++ b/apps/client/tsconfig.json @@ -15,6 +15,8 @@ ], "angularCompilerOptions": { "strictInjectionParameters": true, + // TODO: Enable stricter rules for this project + "strictInputAccessModifiers": false, "strictTemplates": false }, "compilerOptions": { diff --git a/libs/ui/tsconfig.json b/libs/ui/tsconfig.json index 693f120c7..3ec4903b5 100644 --- a/libs/ui/tsconfig.json +++ b/libs/ui/tsconfig.json @@ -14,11 +14,11 @@ } ], "compilerOptions": { - "forceConsistentCasingInFileNames": true, + "target": "es2020", + // TODO: Remove once solved in tsconfig.base.json "strict": false, "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "target": "es2020" + "noFallthroughCasesInSwitch": true }, "angularCompilerOptions": { "strictInjectionParameters": true, diff --git a/tsconfig.base.json b/tsconfig.base.json index b67024e12..e977a9596 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -20,7 +20,20 @@ "@ghostfolio/client/*": ["apps/client/src/app/*"], "@ghostfolio/common/*": ["libs/common/src/lib/*"], "@ghostfolio/ui/*": ["libs/ui/src/lib/*"] - } + }, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true, + "strict": false, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "noImplicitReturns": false, + "noImplicitAny": false, + "noImplicitThis": false, + "noImplicitOverride": false, + "noPropertyAccessFromIndexSignature": false, + "noUnusedLocals": false, + "noUnusedParameters": false, + "allowUnreachableCode": true }, "exclude": ["node_modules", "tmp"] }