From a40468c437f05bb9d974250de2d433611037d588 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Thu, 26 Mar 2020 20:04:51 +0400 Subject: Updated Unicorn to v18.0.0 Signed-off-by: Valentin Popov --- src/rules/unicorn/default.json | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/rules') diff --git a/src/rules/unicorn/default.json b/src/rules/unicorn/default.json index 7a7dc1b..bb3abab 100644 --- a/src/rules/unicorn/default.json +++ b/src/rules/unicorn/default.json @@ -11,6 +11,12 @@ "unicorn/no-console-spaces": [ "error" ], + "unicorn/prefer-number-properties": [ + "error" + ], + "unicorn/prefer-set-has": [ + "error" + ], "unicorn/prevent-abbreviations": [ "error", { @@ -25,5 +31,8 @@ "replacements": {}, "whitelist": {} } + ], + "unicorn/string-content": [ + "error" ] } -- cgit v1.2.3 From 09caa0dcba54156523309186a5e08e57d30e154d Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Thu, 26 Mar 2020 20:36:44 +0400 Subject: Updated TypeScript to v2.25.0 Signed-off-by: Valentin Popov --- ROADMAP.md | 10 ++++++-- package.json | 8 +++--- src/rules/typescript/default.json | 54 ++++++++++++++++++++++++++++++++++++++- yarn.lock | 49 ++++++++++++++++++++--------------- 4 files changed, 93 insertions(+), 28 deletions(-) (limited to 'src/rules') diff --git a/ROADMAP.md b/ROADMAP.md index 4ab6b9c..d47b7fb 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -389,6 +389,7 @@ - [ ] "ban-types" - [ ] "brace-style" - [ ] "camelcase" +- [X] "class-literal-property-style" - [ ] "class-name-casing" - [X] "comma-spacing" - [ ] "consistent-type-assertions" @@ -406,6 +407,7 @@ - [ ] "member-ordering" - [ ] "naming-convention" - [ ] "no-array-constructor" +- [X] "no-base-to-string" - [ ] "no-dupe-class-members" - [ ] "no-dynamic-delete" - [ ] "no-empty-function" @@ -431,10 +433,13 @@ - [ ] "no-throw-literal" - [X] "no-type-alias" - [ ] "no-unnecessary-boolean-literal-compare" -- [ ] "no-unnecessary-condition" +- [X] "no-unnecessary-condition" - [ ] "no-unnecessary-qualifier" - [ ] "no-unnecessary-type-arguments" -- [ ] "no-unnecessary-type-assertion" +- [X] "no-unnecessary-type-assertion" +- [X] "no-unsafe-call" +- [X] "no-unsafe-member-access" +- [X] "no-unsafe-return" - [X] "no-untyped-public-signature" - [ ] "no-unused-expressions" - [X] "no-unused-vars" @@ -450,6 +455,7 @@ - [ ] "prefer-nullish-coalescing" - [ ] "prefer-optional-chain" - [ ] "prefer-readonly" +- [X] "prefer-readonly-parameter-types" - [ ] "prefer-regexp-exec" - [ ] "prefer-string-starts-ends-with" - [ ] "promise-function-async" diff --git a/package.json b/package.json index 37b6584..ac8bae0 100644 --- a/package.json +++ b/package.json @@ -13,8 +13,8 @@ "devDependencies": { "@rollup/plugin-json": "^4.0.2", "@rollup/plugin-typescript": "^3.0.0", - "@typescript-eslint/eslint-plugin": "^2.20.0", - "@typescript-eslint/parser": "^2.20.0", + "@typescript-eslint/eslint-plugin": "^2.25.0", + "@typescript-eslint/parser": "^2.25.0", "eslint": "^6.8.0", "eslint-plugin-eslint-comments": "^3.1.2", "eslint-plugin-import": "^2.20.1", @@ -28,8 +28,8 @@ "typescript": "^3.7.5" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^2.19.0", - "@typescript-eslint/parser": "^2.19.0", + "@typescript-eslint/eslint-plugin": "^2.25.0", + "@typescript-eslint/parser": "^2.25.0", "eslint": "^6.8.0", "eslint-plugin-eslint-comments": "^3.1.2", "eslint-plugin-import": "^2.20.1", diff --git a/src/rules/typescript/default.json b/src/rules/typescript/default.json index 43ad740..a580318 100644 --- a/src/rules/typescript/default.json +++ b/src/rules/typescript/default.json @@ -2,6 +2,10 @@ "@typescript-eslint/await-thenable": [ "error" ], + "@typescript-eslint/class-literal-property-style": [ + "error", + "getters" + ], "@typescript-eslint/comma-spacing": [ "error", { @@ -64,6 +68,9 @@ "prefixWithI": "always" } ], + "@typescript-eslint/no-base-to-string": [ + "error" + ], "@typescript-eslint/no-empty-interface": [ "warn", { @@ -115,6 +122,26 @@ "allowTupleTypes": "in-unions-and-intersections" } ], + "@typescript-eslint/no-unnecessary-condition": [ + "error", + { + "allowConstantLoopConditions": false, + "checkArrayPredicates": true, + "ignoreRhs": true + } + ], + "@typescript-eslint/no-unnecessary-type-assertion": [ + "error" + ], + "@typescript-eslint/no-unsafe-call": [ + "error" + ], + "@typescript-eslint/no-unsafe-member-access": [ + "error" + ], + "@typescript-eslint/no-unsafe-return": [ + "error" + ], "@typescript-eslint/no-untyped-public-signature": [ "warn", { @@ -151,6 +178,12 @@ "@typescript-eslint/no-var-requires": [ "error" ], + "@typescript-eslint/prefer-readonly-parameter-types": [ + "error", + { + "checkParameterProperties": true + } + ], "@typescript-eslint/quotes": [ "error", "double", @@ -188,6 +221,8 @@ "@typescript-eslint/type-annotation-spacing": [ "error", { + "after": true, + "before": true, "overrides": { "arrow": { "after": true, @@ -196,6 +231,22 @@ "colon": { "after": true, "before": false + }, + "parameter": { + "after": true, + "before": true + }, + "property": { + "after": true, + "before": true + }, + "returnType": { + "after": true, + "before": true + }, + "variable": { + "after": true, + "before": true } } } @@ -209,7 +260,8 @@ "objectDestructuring": true, "parameter": true, "propertyDeclaration": true, - "variableDeclaration": true + "variableDeclaration": true, + "variableDeclarationIgnoreFunction": false } ], "comma-spacing": [ diff --git a/yarn.lock b/yarn.lock index eb928f7..2ce11af 100644 --- a/yarn.lock +++ b/yarn.lock @@ -65,40 +65,40 @@ resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== -"@typescript-eslint/eslint-plugin@^2.20.0": - version "2.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.20.0.tgz#a522d0e1e4898f7c9c6a8e1ed3579b60867693fa" - integrity sha512-cimIdVDV3MakiGJqMXw51Xci6oEDEoPkvh8ggJe2IIzcc0fYqAxOXN6Vbeanahz6dLZq64W+40iUEc9g32FLDQ== +"@typescript-eslint/eslint-plugin@^2.25.0": + version "2.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.25.0.tgz#0b60917332f20dcff54d0eb9be2a9e9f4c9fbd02" + integrity sha512-W2YyMtjmlrOjtXc+FtTelVs9OhuR6OlYc4XKIslJ8PUJOqgYYAPRJhAqkYRQo3G4sjvG8jSodsNycEn4W2gHUw== dependencies: - "@typescript-eslint/experimental-utils" "2.20.0" - eslint-utils "^1.4.3" + "@typescript-eslint/experimental-utils" "2.25.0" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.20.0": - version "2.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.20.0.tgz#3b6fa5a6b8885f126d5a4280e0d44f0f41e73e32" - integrity sha512-fEBy9xYrwG9hfBLFEwGW2lKwDRTmYzH3DwTmYbT+SMycmxAoPl0eGretnBFj/s+NfYBG63w/5c3lsvqqz5mYag== +"@typescript-eslint/experimental-utils@2.25.0": + version "2.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.25.0.tgz#13691c4fe368bd377b1e5b1e4ad660b220bf7714" + integrity sha512-0IZ4ZR5QkFYbaJk+8eJ2kYeA+1tzOE1sBjbwwtSV85oNWYUBep+EyhlZ7DLUCyhMUGuJpcCCFL0fDtYAP1zMZw== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.20.0" + "@typescript-eslint/typescript-estree" "2.25.0" eslint-scope "^5.0.0" + eslint-utils "^2.0.0" -"@typescript-eslint/parser@^2.20.0": - version "2.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.20.0.tgz#608e5bb06ba98a415b64ace994c79ab20f9772a9" - integrity sha512-o8qsKaosLh2qhMZiHNtaHKTHyCHc3Triq6aMnwnWj7budm3xAY9owSZzV1uon5T9cWmJRJGzTFa90aex4m77Lw== +"@typescript-eslint/parser@^2.25.0": + version "2.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.25.0.tgz#abfb3d999084824d9a756d9b9c0f36fba03adb76" + integrity sha512-mccBLaBSpNVgp191CP5W+8U1crTyXsRziWliCqzj02kpxdjKMvFHGJbK33NroquH3zB/gZ8H511HEsJBa2fNEg== dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.20.0" - "@typescript-eslint/typescript-estree" "2.20.0" + "@typescript-eslint/experimental-utils" "2.25.0" + "@typescript-eslint/typescript-estree" "2.25.0" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/typescript-estree@2.20.0": - version "2.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.20.0.tgz#90a0f5598826b35b966ca83483b1a621b1a4d0c9" - integrity sha512-WlFk8QtI8pPaE7JGQGxU7nGcnk1ccKAJkhbVookv94ZcAef3m6oCE/jEDL6dGte3JcD7reKrA0o55XhBRiVT3A== +"@typescript-eslint/typescript-estree@2.25.0": + version "2.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.25.0.tgz#b790497556734b7476fa7dd3fa539955a5c79e2c" + integrity sha512-VUksmx5lDxSi6GfmwSK7SSoIKSw9anukWWNitQPqt58LuYrKalzsgeuignbqnB+rK/xxGlSsCy8lYnwFfB6YJg== dependencies: debug "^4.1.1" eslint-visitor-keys "^1.1.0" @@ -481,6 +481,13 @@ eslint-utils@^1.4.3: dependencies: eslint-visitor-keys "^1.1.0" +eslint-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.0.0.tgz#7be1cc70f27a72a76cd14aa698bcabed6890e1cd" + integrity sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA== + dependencies: + eslint-visitor-keys "^1.1.0" + eslint-visitor-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" -- cgit v1.2.3 From 5d9c8c8b4e0874b0acb3a63159040e994b511887 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Thu, 26 Mar 2020 20:43:49 +0400 Subject: fix(typescript): no-explicit-any Signed-off-by: Valentin Popov --- src/rules/typescript/default.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/rules') diff --git a/src/rules/typescript/default.json b/src/rules/typescript/default.json index a580318..fe556bc 100644 --- a/src/rules/typescript/default.json +++ b/src/rules/typescript/default.json @@ -80,7 +80,7 @@ "@typescript-eslint/no-explicit-any": [ "warn", { - "fixToUnknown": false, + "fixToUnknown": true, "ignoreRestArgs": false } ], -- cgit v1.2.3 From 46d05009cc38f7c1c97f5bb42d3c018cb606b681 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Thu, 26 Mar 2020 21:12:27 +0400 Subject: feat(sonarjs): Added rules Signed-off-by: Valentin Popov --- ROADMAP.md | 50 +++++++++++++------------- src/rules/sonarjs/default.json | 81 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 105 insertions(+), 26 deletions(-) (limited to 'src/rules') diff --git a/ROADMAP.md b/ROADMAP.md index d47b7fb..c85dd63 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -353,31 +353,31 @@ ## SonarJS -- [ ] "cognitive-complexity" -- [ ] "max-switch-cases" -- [ ] "no-all-duplicated-branches" -- [ ] "no-collapsible-if" -- [ ] "no-collection-size-mischeck" -- [ ] "no-duplicate-string" -- [ ] "no-duplicated-branches" -- [ ] "no-element-overwrite" -- [ ] "no-extra-arguments" -- [ ] "no-identical-conditions" -- [ ] "no-identical-expressions" -- [ ] "no-identical-functions" -- [ ] "no-inverted-boolean-check" -- [ ] "no-one-iteration-loop" -- [ ] "no-redundant-boolean" -- [ ] "no-redundant-jump" -- [ ] "no-same-line-conditional" -- [ ] "no-small-switch" -- [ ] "no-unused-collection" -- [ ] "no-use-of-empty-return-value" -- [ ] "no-useless-catch" -- [ ] "prefer-immediate-return" -- [ ] "prefer-object-literal" -- [ ] "prefer-single-boolean-return" -- [ ] "prefer-while" +- [X] "cognitive-complexity" +- [X] "max-switch-cases" +- [X] "no-all-duplicated-branches" +- [X] "no-collapsible-if" +- [X] "no-collection-size-mischeck" +- [X] "no-duplicate-string" +- [X] "no-duplicated-branches" +- [X] "no-element-overwrite" +- [X] "no-extra-arguments" +- [X] "no-identical-conditions" +- [X] "no-identical-expressions" +- [X] "no-identical-functions" +- [X] "no-inverted-boolean-check" +- [X] "no-one-iteration-loop" +- [X] "no-redundant-boolean" +- [X] "no-redundant-jump" +- [X] "no-same-line-conditional" +- [X] "no-small-switch" +- [X] "no-unused-collection" +- [X] "no-use-of-empty-return-value" +- [X] "no-useless-catch" +- [X] "prefer-immediate-return" +- [X] "prefer-object-literal" +- [X] "prefer-single-boolean-return" +- [X] "prefer-while" ## TypeScript diff --git a/src/rules/sonarjs/default.json b/src/rules/sonarjs/default.json index 0967ef4..cc5897a 100644 --- a/src/rules/sonarjs/default.json +++ b/src/rules/sonarjs/default.json @@ -1 +1,80 @@ -{} +{ + "sonarjs/cognitive-complexity": [ + "warn", + 25 + ], + "sonarjs/max-switch-cases": [ + "warn", + 30 + ], + "sonarjs/no-all-duplicated-branches": [ + "error" + ], + "sonarjs/no-collapsible-if": [ + "error" + ], + "sonarjs/no-collection-size-mischeck": [ + "error" + ], + "sonarjs/no-duplicate-string": [ + "warn", + 5 + ], + "sonarjs/no-duplicated-branches": [ + "error" + ], + "sonarjs/no-element-overwrite": [ + "error" + ], + "sonarjs/no-extra-arguments": [ + "error" + ], + "sonarjs/no-identical-conditions": [ + "error" + ], + "sonarjs/no-identical-expressions": [ + "error" + ], + "sonarjs/no-identical-functions": [ + "error" + ], + "sonarjs/no-inverted-boolean-check": [ + "error" + ], + "sonarjs/no-one-iteration-loop": [ + "error" + ], + "sonarjs/no-redundant-boolean": [ + "error" + ], + "sonarjs/no-redundant-jump": [ + "error" + ], + "sonarjs/no-same-line-conditional": [ + "error" + ], + "sonarjs/no-small-switch": [ + "error" + ], + "sonarjs/no-unused-collection": [ + "error" + ], + "sonarjs/no-use-of-empty-return-value": [ + "error" + ], + "sonarjs/no-useless-catch": [ + "warn" + ], + "sonarjs/please-immediate-return": [ + "error" + ], + "sonarjs/prefer-object-literal": [ + "error" + ], + "sonarjs/prefer-single-boolean-return": [ + "error" + ], + "sonarjs/prefer-while": [ + "error" + ] +} -- cgit v1.2.3 From 4925f485eafcd63b4a60204911a16d405069b1b3 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Thu, 26 Mar 2020 21:32:18 +0400 Subject: feat(import): order Signed-off-by: Valentin Popov --- ROADMAP.md | 2 +- src/rules/import/default.json | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) (limited to 'src/rules') diff --git a/ROADMAP.md b/ROADMAP.md index c85dd63..e381ebe 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -331,7 +331,7 @@ - [ ] "no-unused-modules" - [ ] "no-useless-path-segments" - [X] "no-webpack-loader-syntax" -- [ ] "order" +- [X] "order" - [ ] "prefer-default-export" - [ ] "unambiguous" diff --git a/src/rules/import/default.json b/src/rules/import/default.json index 77ec282..291e45f 100644 --- a/src/rules/import/default.json +++ b/src/rules/import/default.json @@ -13,5 +13,30 @@ ], "import/no-webpack-loader-syntax": [ "error" + ], + "import/order": [ + "error", + { + "alphabetize": { + "caseInsensitive": false, + "order": "asc" + }, + "groups": [ + [ + "builtin", + "external" + ], + [ + "internal", + "parent", + "sibling" + ], + [ + "index" + ], + "unknown" + ], + "newlines-between": "always" + } ] } -- cgit v1.2.3 From 9ba18706cdcd61618ad1e92f14587fb855deb1c8 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Thu, 26 Mar 2020 21:34:11 +0400 Subject: fix(sonarjs): prefer-immediate-return Signed-off-by: Valentin Popov --- src/rules/sonarjs/default.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/rules') diff --git a/src/rules/sonarjs/default.json b/src/rules/sonarjs/default.json index cc5897a..5c39836 100644 --- a/src/rules/sonarjs/default.json +++ b/src/rules/sonarjs/default.json @@ -65,7 +65,7 @@ "sonarjs/no-useless-catch": [ "warn" ], - "sonarjs/please-immediate-return": [ + "sonarjs/prefer-immediate-return": [ "error" ], "sonarjs/prefer-object-literal": [ -- cgit v1.2.3