From a29b82485c693a602876f6d27844827f94db308d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Mar 2021 21:54:41 +0100 Subject: [PATCH 01/14] chore: bump cspell from 5.2.4 to 5.3.4 (#3126) Bumps [cspell](https://github.com/streetsidesoftware/cspell) from 5.2.4 to 5.3.4. - [Release notes](https://github.com/streetsidesoftware/cspell/releases) - [Changelog](https://github.com/streetsidesoftware/cspell/blob/master/CHANGELOG.md) - [Commits](https://github.com/streetsidesoftware/cspell/compare/v5.2.4...v5.3.4) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 136 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 71 insertions(+), 65 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7391d1c4c005..1fae5791cbc7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -458,14 +458,15 @@ resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-11.0.0.tgz#719cf05fcc1abb6533610a2e0f5dd1e61eac14fe" integrity sha512-VoNqai1vR5anRF5Tuh/+SWDFk7xi7oMwHrHrbm1BprYXjB2RJsWLhUrStMssDxEl5lW/z3EUdg8RvH/IUBccSQ== -"@cspell/cspell-bundled-dicts@^5.2.4": - version "5.2.4" - resolved "https://registry.yarnpkg.com/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-5.2.4.tgz#dd0e161bb2203f19a2dd9358c3eb9daaffb7a336" - integrity sha512-IVoTVdFIWnWmJYBwjbsYtFyH6fD8bClDZrFpUa/a84vXVopcH1ZjpwotDsHO+P3O1GCFTacT1Z2Lyh56xowmxw== +"@cspell/cspell-bundled-dicts@^5.3.4": + version "5.3.4" + resolved "https://registry.yarnpkg.com/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-5.3.4.tgz#8fa6c783788fec59c042290b5fedce64cbca6d55" + integrity sha512-Gx3ceqTxocxhSF/jgb6GkAQMHiycO7+R9c9KXwgk+HYG7Qs6NWYc4bcChn07d19x8wuM4a++gA65FxUh7lC+Yg== dependencies: + "@cspell/dict-ada" "^1.1.1" "@cspell/dict-aws" "^1.0.13" "@cspell/dict-bash" "^1.0.11" - "@cspell/dict-companies" "^1.0.35" + "@cspell/dict-companies" "^1.0.36" "@cspell/dict-cpp" "^1.1.37" "@cspell/dict-cryptocurrencies" "^1.0.10" "@cspell/dict-csharp" "^1.0.10" @@ -479,8 +480,8 @@ "@cspell/dict-fonts" "^1.0.14" "@cspell/dict-fullstack" "^1.0.36" "@cspell/dict-golang" "^1.1.24" - "@cspell/dict-haskell" "^1.0.12" - "@cspell/dict-html" "^1.1.5" + "@cspell/dict-haskell" "^1.0.13" + "@cspell/dict-html" "^1.1.6" "@cspell/dict-html-symbol-entities" "^1.0.23" "@cspell/dict-java" "^1.0.22" "@cspell/dict-latex" "^1.0.23" @@ -491,16 +492,21 @@ "@cspell/dict-php" "^1.0.23" "@cspell/dict-powershell" "^1.0.14" "@cspell/dict-python" "^1.0.33" - "@cspell/dict-ruby" "^1.0.12" + "@cspell/dict-ruby" "^1.0.13" "@cspell/dict-rust" "^1.0.22" "@cspell/dict-scala" "^1.0.21" - "@cspell/dict-software-terms" "^1.0.25" + "@cspell/dict-software-terms" "^1.0.26" "@cspell/dict-typescript" "^1.0.16" -"@cspell/cspell-types@^5.2.4": - version "5.2.4" - resolved "https://registry.yarnpkg.com/@cspell/cspell-types/-/cspell-types-5.2.4.tgz#361fdc6c008b82a5c0dfd6c1fd2bee2cb7255b4b" - integrity sha512-luv2hzoKdDrNs2LPDHuS+r9hOniZlYiJJU8og8ftGyuwjytnSaTUvtY8SzFqquKQJ4+rty6AF2RS/foQ69s/2Q== +"@cspell/cspell-types@^5.3.4": + version "5.3.4" + resolved "https://registry.yarnpkg.com/@cspell/cspell-types/-/cspell-types-5.3.4.tgz#20aafa6debdd58fa825ebf4159016f3f57106be2" + integrity sha512-dM5sblEPqgrCUc53FSzJxrObEqYzVg70iqGMcGrawXy3wk5BiiO7caXWaRuhe0Wy5ooytI5nJK3oRELS8A501g== + +"@cspell/dict-ada@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@cspell/dict-ada/-/dict-ada-1.1.1.tgz#52b636f1728100a493dcc83e82035c371898f39c" + integrity sha512-/tpeKe182ymfKutyVcF3YHVNYnoZPdri3vsUU1v7iyA0WzTu9djb6B78r3QTQVCeizAruBsbSogxMPHBquF/zA== "@cspell/dict-aws@^1.0.13": version "1.0.13" @@ -512,10 +518,10 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-bash/-/dict-bash-1.0.11.tgz#5ba56250e467d2c2ed3f2795081f4934af0c9afc" integrity sha512-DTOugbPacEFIav5s+VniByouu4apD1SKS5inwiBndw0TH3Pkm4MFTPUwfT1y7Ki4HEIyfRI2ughig2045SBqRw== -"@cspell/dict-companies@^1.0.35": - version "1.0.35" - resolved "https://registry.yarnpkg.com/@cspell/dict-companies/-/dict-companies-1.0.35.tgz#3f244e005afa533cdec8896ceaf866c82d77251a" - integrity sha512-lFoXFqXgAUjj14t7VJm+D/j9jU9kn4Eud+Q2gVQTKs6+oMivJ0hROpqZv/CEYHlm/4MpP5Livp0z0E6ARCE0kQ== +"@cspell/dict-companies@^1.0.36": + version "1.0.36" + resolved "https://registry.yarnpkg.com/@cspell/dict-companies/-/dict-companies-1.0.36.tgz#c85bcc1f23ac991c56dd25eea5623078aaa513c2" + integrity sha512-Bk9mMJs9spzrtLxZsxBZIK6ukD9REfQYpuTBNJk/IiTViHVQ6ertHAgw1vRVtJAMxViv8dMLNtDyTpEXeaYm7w== "@cspell/dict-cpp@^1.1.37": version "1.1.37" @@ -582,20 +588,20 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-golang/-/dict-golang-1.1.24.tgz#3830812aec816eca46a6d793fcc7710c09d4f5b9" integrity sha512-qq3Cjnx2U1jpeWAGJL1GL0ylEhUMqyaR36Xij6Y6Aq4bViCRp+HRRqk0x5/IHHbOrti45h3yy7ii1itRFo+Xkg== -"@cspell/dict-haskell@^1.0.12": - version "1.0.12" - resolved "https://registry.yarnpkg.com/@cspell/dict-haskell/-/dict-haskell-1.0.12.tgz#cc6ec4d0466b029683e9f861dea3d0e95c514606" - integrity sha512-JrSSuV2oY8Z1/qYi8j1w5M3eokiFkcpRtCrxpKlHYFXFEvmqTH9D8qvzVbAkrQpefMppy8uIUzknSzhwAc/MQA== +"@cspell/dict-haskell@^1.0.13": + version "1.0.13" + resolved "https://registry.yarnpkg.com/@cspell/dict-haskell/-/dict-haskell-1.0.13.tgz#bd159ef474ef427757dd4bc6a66cda977946c927" + integrity sha512-kvl8T84cnYRPpND/P3D86P6WRSqebsbk0FnMfy27zo15L5MLAb3d3MOiT1kW3vEWfQgzUD7uddX/vUiuroQ8TA== "@cspell/dict-html-symbol-entities@^1.0.23": version "1.0.23" resolved "https://registry.yarnpkg.com/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-1.0.23.tgz#0efbdbc7712c9fbe545e14acac637226ac948f2d" integrity sha512-PV0UBgcBFbBLf/m1wfkVMM8w96kvfHoiCGLWO6BR3Q9v70IXoE4ae0+T+f0CkxcEkacMqEQk/I7vuE9MzrjaNw== -"@cspell/dict-html@^1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@cspell/dict-html/-/dict-html-1.1.5.tgz#45e7a3e23c27f248b4fab962ce71efdc23a0d9fd" - integrity sha512-ecwFDcponQgLpC9VJK7SRAbLu3CAlw6KUSlLtVOiN3zxlh27MDCCMp9jCD4UImZGACe0YQ1Zj0DW7PjXkHuKHg== +"@cspell/dict-html@^1.1.6": + version "1.1.6" + resolved "https://registry.yarnpkg.com/@cspell/dict-html/-/dict-html-1.1.6.tgz#29c40c0ebc51de4cfe2d6041206ba39d74b28b67" + integrity sha512-RsZXIrmsnLcUpXfyZdNg7OtO2+e4p7m/qILg03kM6vhSUMY6ryCQNPWKrHqsl8+LBKd54EgFM+O5zcgq6IIsCw== "@cspell/dict-java@^1.0.22": version "1.0.22" @@ -642,10 +648,10 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-python/-/dict-python-1.0.33.tgz#39ddf401f63ee9b0f95e606d70693e61976a073b" integrity sha512-tRmE4TzHDFPs7sJ1a3XbfyFrvRHwefVz+z1wkm6tkXK9TPrCbIS+rV/T8xhj205q4lpZQ/TkNB3lT40eLB9O8A== -"@cspell/dict-ruby@^1.0.12": - version "1.0.12" - resolved "https://registry.yarnpkg.com/@cspell/dict-ruby/-/dict-ruby-1.0.12.tgz#85af4c0c7e0d03c39115d4a2d1944befe31e04f8" - integrity sha512-1qGZpVbfWfGLujKFyt2Nd9bc7rNXdkjYIRfpGmn/fwVDhWz/D4Q8GLMQPB2ixocSuF3pjfsRTh1D+rKK17WFjg== +"@cspell/dict-ruby@^1.0.13": + version "1.0.13" + resolved "https://registry.yarnpkg.com/@cspell/dict-ruby/-/dict-ruby-1.0.13.tgz#2cb63b575376de3bd85ec9b862bc31cdabb287b9" + integrity sha512-YeN1acY38dgMYlEJ6iWPH+8qXB6seLKHm9BszXxaKT/IzGA9Y9XUWPGobeJFD5E/tC6HjvcqRKxEs8vnvakoLQ== "@cspell/dict-rust@^1.0.22": version "1.0.22" @@ -657,10 +663,10 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-scala/-/dict-scala-1.0.21.tgz#bfda392329061e2352fbcd33d228617742c93831" integrity sha512-5V/R7PRbbminTpPS3ywgdAalI9BHzcEjEj9ug4kWYvBIGwSnS7T6QCFCiu+e9LvEGUqQC+NHgLY4zs1NaBj2vA== -"@cspell/dict-software-terms@^1.0.25": - version "1.0.25" - resolved "https://registry.yarnpkg.com/@cspell/dict-software-terms/-/dict-software-terms-1.0.25.tgz#a42c488ebf0169727386b5ea7981ac2e40212014" - integrity sha512-GOHfmGT/X7QsKXFKS8riPVXI7jOTfcjSz/mzoUP8t1kOTkp+8qw+hxsQ31Z4Ctz5ZI7sh0xpFFYDNFFzG5XWgw== +"@cspell/dict-software-terms@^1.0.26": + version "1.0.26" + resolved "https://registry.yarnpkg.com/@cspell/dict-software-terms/-/dict-software-terms-1.0.26.tgz#ce504130dfa3c6ebef58c5c5e41d30484ab5f7e8" + integrity sha512-NN+mv6VnCwxEWzGxOgFG4akDIRvY0j8slHmgxtoPGKDm+K22zvZITxFwF3/NHGOSxQ4n2hW6sYjqMpxAPGhjCQ== "@cspell/dict-typescript@^1.0.16": version "1.0.16" @@ -2870,10 +2876,10 @@ commander@^6.2.0, commander@~6.2.1: resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== -commander@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.0.0.tgz#3e2bbfd8bb6724760980988fb5b22b7ee6b71ab2" - integrity sha512-ovx/7NkTrnPuIV8sqk/GjUIIM1+iUQeqA3ye2VNpq9sVoiZsooObWlQy+OPWGI17GDaEoybuAGJm6U8yC077BA== +commander@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.1.0.tgz#f2eaecf131f10e36e07d894698226e36ae0eb5ff" + integrity sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg== comment-json@^4.1.0: version "4.1.0" @@ -3156,62 +3162,62 @@ crypto-random-string@^2.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== -cspell-glob@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/cspell-glob/-/cspell-glob-5.2.0.tgz#19bf774562254d5bccd5491d2a904357c6f4a683" - integrity sha512-Zc80PsQ86Sfsl04+PjoImfrUnFcPJh78Beg/gFjeJ9+7oUk3oBlAcAczat0ZdfOAdQ3x/rWCH30SoefuaEfsiw== +cspell-glob@^5.3.4: + version "5.3.4" + resolved "https://registry.yarnpkg.com/cspell-glob/-/cspell-glob-5.3.4.tgz#656188388467f8be7e115924e7b43ba85c234fa4" + integrity sha512-SrtfNUP7CqFstTzuRscGI5IFYu1j3ay5a9ioFTx2CoaFqp2BXqFpE8z9NE6Lao+7z7Fg4hiPgvsCd1gn3J/P8A== dependencies: micromatch "^4.0.2" -cspell-io@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/cspell-io/-/cspell-io-5.2.0.tgz#a482cdaa165872445fdb0a68b973ff6dbe09efb0" - integrity sha512-8GFIa31vFtFleJ2ZC4Nb3QmG426aEglKu9OD3lcufNWSnFL1A6tbJJ0zGhuiYDpnyVRMKVkur/vh1FVNNvR83w== +cspell-io@^5.3.4: + version "5.3.4" + resolved "https://registry.yarnpkg.com/cspell-io/-/cspell-io-5.3.4.tgz#b468ae8d92de863a5aad5d6d4a542e4ebe63b63d" + integrity sha512-1IHuU8Y4zxGj/nyH6DawKwQevRNYiSjPqoLjqyJFeMtd3Nix0mVHf0UxotPiHhuZkuuMgQkxA4EeavGDS5jOng== dependencies: iconv-lite "^0.6.2" iterable-to-stream "^1.0.1" -cspell-lib@^5.2.4: - version "5.2.4" - resolved "https://registry.yarnpkg.com/cspell-lib/-/cspell-lib-5.2.4.tgz#8296c5045fa7c4072dcd8b8995e1ae83949c5873" - integrity sha512-DR0ZSNCwurHCobO5QDYyEuCCmkXRutQvfoK18wICuiUElD4WkgksuWPItRr2s5901t/QvImh349U+2UuO9qwCA== +cspell-lib@^5.3.4: + version "5.3.4" + resolved "https://registry.yarnpkg.com/cspell-lib/-/cspell-lib-5.3.4.tgz#039b4ddd3bfbb24038ef362590ab2b3a2dc8c89c" + integrity sha512-uA35jAW3CAqJeRZhQdAmhDfoHVCK0kBQcXEAerWO1z4xDThE/JRAJEKMAXirVIQufOu9X2btjQZse9ubg0p7sQ== dependencies: - "@cspell/cspell-bundled-dicts" "^5.2.4" - "@cspell/cspell-types" "^5.2.4" + "@cspell/cspell-bundled-dicts" "^5.3.4" + "@cspell/cspell-types" "^5.3.4" comment-json "^4.1.0" configstore "^5.0.1" cosmiconfig "^7.0.0" - cspell-io "^5.2.0" - cspell-trie-lib "^5.2.2" + cspell-glob "^5.3.4" + cspell-io "^5.3.4" + cspell-trie-lib "^5.3.4" fs-extra "^9.1.0" gensequence "^3.1.1" - minimatch "^3.0.4" resolve-from "^5.0.0" resolve-global "^1.0.0" vscode-uri "^3.0.2" -cspell-trie-lib@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/cspell-trie-lib/-/cspell-trie-lib-5.2.2.tgz#5f8878dc09a630ce37a9e6a42f4b5cecaa003ce2" - integrity sha512-Zs4POqx8xPuNF8Cex3NnSv0Ti8sS5UiL5ruo6tKwQWJbpWvrBZ/FTlypG4l2y0BMEqd+/CqmjOv3GX8dDE2lBg== +cspell-trie-lib@^5.3.4: + version "5.3.4" + resolved "https://registry.yarnpkg.com/cspell-trie-lib/-/cspell-trie-lib-5.3.4.tgz#5e10424a265d6362810e2fd0ad64e4e214f46367" + integrity sha512-WaMGBIdbmOwle7pSmrOMQqfY4ndbNIGiQvpU0xuTWAzvcL/sCzgfqiDt7sI8Mr8vnSGnAphRn0xLlNqXzAgn1Q== dependencies: fs-extra "^9.1.0" gensequence "^3.1.1" cspell@^5.2.4: - version "5.2.4" - resolved "https://registry.yarnpkg.com/cspell/-/cspell-5.2.4.tgz#d28b6a6ff93d1824c560a2c6f5e4d9000227a12a" - integrity sha512-ONMoI2Yf9of662Ac8Azg+EKXWSDxZIjSWGtkg6FNQOCzD0AgO6ZJv2ti9mHuSZ9rovfaPJUocmiTJSl9TncK6g== + version "5.3.4" + resolved "https://registry.yarnpkg.com/cspell/-/cspell-5.3.4.tgz#1d79d3bde38a91adcda9fde4b2aa553746ff2f51" + integrity sha512-AXiZzeXXBVZIwRsD30bloqOaJEjTF3e/nzXCLHUq3Eyqiy1ySWMnOMm3OXQ1nI7nkjYpx5+Pdx7cDlH0wFrKYQ== dependencies: + "@cspell/cspell-types" "^5.3.4" chalk "^4.1.0" - commander "^7.0.0" + commander "^7.1.0" comment-json "^4.1.0" - cspell-glob "^5.2.0" - cspell-lib "^5.2.4" + cspell-glob "^5.3.4" + cspell-lib "^5.3.4" fs-extra "^9.1.0" get-stdin "^8.0.0" glob "^7.1.6" - minimatch "^3.0.4" strip-ansi "^6.0.0" cssom@^0.4.4: From 6b16faa0400284b344611dde4950e43e2f809328 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Mar 2021 12:56:35 -0800 Subject: [PATCH 02/14] chore: bump husky from 5.1.1 to 5.1.2 (#3124) Bumps [husky](https://github.com/typicode/husky) from 5.1.1 to 5.1.2. - [Release notes](https://github.com/typicode/husky/releases) - [Commits](https://github.com/typicode/husky/compare/v5.1.1...v5.1.2) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 1fae5791cbc7..c05550ecffee 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4692,9 +4692,9 @@ humanize-ms@^1.2.1: ms "^2.0.0" husky@^5.0.9: - version "5.1.1" - resolved "https://registry.yarnpkg.com/husky/-/husky-5.1.1.tgz#8678953fd8deb86f387cbf1ad50bb2f7f96e83f2" - integrity sha512-80LZ736V0Nr4/st0c2COYaMbEQhHNmAbLMN8J/kLk7/mo0QdUkUGNDjv/7jVkhug377Wh8wfbWyaVXEJ/h2B/Q== + version "5.1.2" + resolved "https://registry.yarnpkg.com/husky/-/husky-5.1.2.tgz#dc6a1f68640455d8d98c28875e073087f86c5081" + integrity sha512-lilaRYeDXcAOj8DuRnN9IxUyEMVbYg9rK7yVNkPB5V4hCvxIUxpMeiv9K2h77CE0HzjCnk1Br0oWe1IghXngDQ== iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" From 00e271e0efea3e25af5377e061a9e93319bc9cb4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Mar 2021 12:56:47 -0800 Subject: [PATCH 03/14] chore: bump ts-jest from 26.5.1 to 26.5.2 (#3123) Bumps [ts-jest](https://github.com/kulshekhar/ts-jest) from 26.5.1 to 26.5.2. - [Release notes](https://github.com/kulshekhar/ts-jest/releases) - [Changelog](https://github.com/kulshekhar/ts-jest/blob/master/CHANGELOG.md) - [Commits](https://github.com/kulshekhar/ts-jest/compare/v26.5.1...v26.5.2) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index c05550ecffee..6f0d209e8df2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8528,9 +8528,9 @@ trim-off-newlines@^1.0.0: integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= ts-jest@^26.5.1: - version "26.5.1" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.5.1.tgz#4d53ee4481552f57c1624f0bd3425c8b17996150" - integrity sha512-G7Rmo3OJMvlqE79amJX8VJKDiRcd7/r61wh9fnvvG8cAjhA9edklGw/dCxRSQmfZ/z8NDums5srSVgwZos1qfg== + version "26.5.2" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.5.2.tgz#5281d6b44c2f94f71205728a389edc3d7995b0c4" + integrity sha512-bwyJ2zJieSugf7RB+o8fgkMeoMVMM2KPDE0UklRLuACxjwJsOrZNo6chrcScmK33YavPSwhARffy8dZx5LJdUQ== dependencies: "@types/jest" "26.x" bs-logger "0.x" From 18c0f282aee3b4b9d19ed6c72975181eb89e54db Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Mar 2021 12:57:54 -0800 Subject: [PATCH 04/14] chore: bump @commitlint/config-conventional from 11.0.0 to 12.0.1 (#3120) Bumps [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint) from 11.0.0 to 12.0.1. - [Release notes](https://github.com/conventional-changelog/commitlint/releases) - [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/CHANGELOG.md) - [Commits](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.1) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index a7a9b8fc318c..ef826dab2300 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ }, "devDependencies": { "@commitlint/cli": "^11.0.0", - "@commitlint/config-conventional": "^11.0.0", + "@commitlint/config-conventional": "^12.0.1", "@commitlint/config-lerna-scopes": "^11.0.0", "@types/babel__code-frame": "^7.0.2", "@types/debug": "^4.1.5", diff --git a/yarn.lock b/yarn.lock index 6f0d209e8df2..b095cc99037f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -331,10 +331,10 @@ resolve-global "1.0.0" yargs "^15.1.0" -"@commitlint/config-conventional@^11.0.0": - version "11.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-11.0.0.tgz#3fa300a1b639273946de3c3f15e1cda518333422" - integrity sha512-SNDRsb5gLuDd2PL83yCOQX6pE7gevC79UPFx+GLbLfw6jGnnbO9/tlL76MLD8MOViqGbo7ZicjChO9Gn+7tHhA== +"@commitlint/config-conventional@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-12.0.1.tgz#7bf3bbf68bda967c5165135ebe8f2055decf1a83" + integrity sha512-1ZhB135lh47zVmf1orwcjxuKuam11fJIH/bdVxW9XiQv8XPwC6iIp19knfl8FcOT78AVBnes1z6EVxgUeP2/4Q== dependencies: conventional-changelog-conventionalcommits "^4.3.1" From e22c9fab4d680a8a40f5ef10dca83e464db4a88b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Mar 2021 21:09:14 +0000 Subject: [PATCH 05/14] chore: bump marked from 2.0.0 to 2.0.1 (#3122) Bumps [marked](https://github.com/markedjs/marked) from 2.0.0 to 2.0.1. - [Release notes](https://github.com/markedjs/marked/releases) - [Changelog](https://github.com/markedjs/marked/blob/master/release.config.js) - [Commits](https://github.com/markedjs/marked/compare/v2.0.0...v2.0.1) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index b095cc99037f..519b387085e2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6190,9 +6190,9 @@ markdownlint@~0.22.0: markdown-it "12.0.2" marked@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/marked/-/marked-2.0.0.tgz#9662bbcb77ebbded0662a7be66ff929a8611cee5" - integrity sha512-NqRSh2+LlN2NInpqTQnS614Y/3NkVMFFU6sJlRFEpxJ/LHuK/qJECH7/fXZjk4VZstPW/Pevjil/VtSONsLc7Q== + version "2.0.1" + resolved "https://registry.yarnpkg.com/marked/-/marked-2.0.1.tgz#5e7ed7009bfa5c95182e4eb696f85e948cefcee3" + integrity sha512-5+/fKgMv2hARmMW7DOpykr2iLhl0NgjyELk5yn92iE7z8Se1IS9n3UsFm86hFXIkvMBmVxki8+ckcpjBeyo/hw== mdurl@^1.0.1: version "1.0.1" From e8b87de0ccfbe506c9f02551dc5d635485ee7db4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Mar 2021 14:54:21 -0800 Subject: [PATCH 06/14] chore: bump @commitlint/config-lerna-scopes from 11.0.0 to 12.0.1 (#3131) Bumps [@commitlint/config-lerna-scopes](https://github.com/conventional-changelog/commitlint) from 11.0.0 to 12.0.1. - [Release notes](https://github.com/conventional-changelog/commitlint/releases) - [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/CHANGELOG.md) - [Commits](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.1) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index ef826dab2300..2ba540a4ad71 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "devDependencies": { "@commitlint/cli": "^11.0.0", "@commitlint/config-conventional": "^12.0.1", - "@commitlint/config-lerna-scopes": "^11.0.0", + "@commitlint/config-lerna-scopes": "^12.0.1", "@types/babel__code-frame": "^7.0.2", "@types/debug": "^4.1.5", "@types/eslint-visitor-keys": "^1.0.0", diff --git a/yarn.lock b/yarn.lock index 519b387085e2..2c540be42cf1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -338,14 +338,15 @@ dependencies: conventional-changelog-conventionalcommits "^4.3.1" -"@commitlint/config-lerna-scopes@^11.0.0": - version "11.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/config-lerna-scopes/-/config-lerna-scopes-11.0.0.tgz#4152287c5d13ea844160507523b2f98b015adf4a" - integrity sha512-/PjLKefMlnG+Sk27MY3MZo+T/9/PrgDcLk1YCSPVHNkXibXiS2Hb5NEMuNHzPxwts4IvJo0WIOb0YOBx5GBsdA== +"@commitlint/config-lerna-scopes@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@commitlint/config-lerna-scopes/-/config-lerna-scopes-12.0.1.tgz#3ae4fe71efbecc49dc92a4c801ea66c00f397f1d" + integrity sha512-k3xT6ey3nyGYFl3xGlzivmuE+/rLJEBWg7wn+3XPRVLdovwxgA3fCqSrK17mJRCKcjcJbto70Uwmj27VDG0Kng== dependencies: + globby "^11.0.1" import-from "3.0.0" resolve-pkg "2.0.0" - semver "7.3.2" + semver "7.3.4" "@commitlint/ensure@^11.0.0": version "11.0.0" @@ -7782,7 +7783,7 @@ semver@7.3.2: resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== -semver@7.x, semver@^7.2.1, semver@^7.3.2: +semver@7.3.4, semver@7.x, semver@^7.2.1, semver@^7.3.2: version "7.3.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== From 3e204e9f2fe7008c7d7127d865f58bff1d978e0a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Mar 2021 14:54:56 -0800 Subject: [PATCH 07/14] chore: bump @commitlint/cli from 11.0.0 to 12.0.1 (#3130) Bumps [@commitlint/cli](https://github.com/conventional-changelog/commitlint) from 11.0.0 to 12.0.1. - [Release notes](https://github.com/conventional-changelog/commitlint/releases) - [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/CHANGELOG.md) - [Commits](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.1) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 255 +++++++++++++++++++++++++++++---------------------- 2 files changed, 147 insertions(+), 110 deletions(-) diff --git a/package.json b/package.json index 2ba540a4ad71..3394f492b9f3 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,7 @@ "node": "^10.12.0 || >=12.0.0" }, "devDependencies": { - "@commitlint/cli": "^11.0.0", + "@commitlint/cli": "^12.0.1", "@commitlint/config-conventional": "^12.0.1", "@commitlint/config-lerna-scopes": "^12.0.1", "@types/babel__code-frame": "^7.0.2", diff --git a/yarn.lock b/yarn.lock index 2c540be42cf1..39ecbe707264 100644 --- a/yarn.lock +++ b/yarn.lock @@ -260,7 +260,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/runtime@^7.11.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.7.6": +"@babel/runtime@^7.11.0", "@babel/runtime@^7.7.6": version "7.13.6" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.6.tgz#86e0fad6cbb46a680e21c1aa4748717a058d345a" integrity sha512-Y/DEVhSQ91u27rxq7D0EH/sewS6+x06p/MgO1VppbDHMzYXLZrAR5cFjCom78e9RUw1BQAq6qJg6fXc/ep7glA== @@ -313,23 +313,21 @@ exec-sh "^0.3.2" minimist "^1.2.0" -"@commitlint/cli@^11.0.0": - version "11.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-11.0.0.tgz#698199bc52afed50aa28169237758fa14a67b5d3" - integrity sha512-YWZWg1DuqqO5Zjh7vUOeSX76vm0FFyz4y0cpGMFhrhvUi5unc4IVfCXZ6337R9zxuBtmveiRuuhQqnRRer+13g== - dependencies: - "@babel/runtime" "^7.11.2" - "@commitlint/format" "^11.0.0" - "@commitlint/lint" "^11.0.0" - "@commitlint/load" "^11.0.0" - "@commitlint/read" "^11.0.0" - chalk "4.1.0" - core-js "^3.6.1" +"@commitlint/cli@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-12.0.1.tgz#8960e34e8f1aed8b2ea50f223ee817fdf2264ffb" + integrity sha512-V+cMYNHJOr40XT9Kvz3Vrz1Eh7QE1rjQrUbifawDAqcOrBJFuoXwU2SAcRtYFCSqFy9EhbreQGhZFs8dYb90KA== + dependencies: + "@commitlint/format" "^12.0.1" + "@commitlint/lint" "^12.0.1" + "@commitlint/load" "^12.0.1" + "@commitlint/read" "^12.0.1" + "@commitlint/types" "^12.0.1" get-stdin "8.0.0" lodash "^4.17.19" resolve-from "5.0.0" resolve-global "1.0.0" - yargs "^15.1.0" + yargs "^16.2.0" "@commitlint/config-conventional@^12.0.1": version "12.0.1" @@ -348,116 +346,120 @@ resolve-pkg "2.0.0" semver "7.3.4" -"@commitlint/ensure@^11.0.0": - version "11.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-11.0.0.tgz#3e796b968ab5b72bc6f8a6040076406306c987fb" - integrity sha512-/T4tjseSwlirKZdnx4AuICMNNlFvRyPQimbZIOYujp9DSO6XRtOy9NrmvWujwHsq9F5Wb80QWi4WMW6HMaENug== +"@commitlint/ensure@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-12.0.1.tgz#0ed5e997026db25eb080559b6e67f55a21eea080" + integrity sha512-XdBq+q1YBBDxWIAEjE3Y1YMbzhUnUuSLAEWD8SU1xsvEpQXWRYwDlMBRkjO7funNWTdL0ZQSkZDzme70imYjbw== dependencies: - "@commitlint/types" "^11.0.0" + "@commitlint/types" "^12.0.1" lodash "^4.17.19" -"@commitlint/execute-rule@^11.0.0": - version "11.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-11.0.0.tgz#3ed60ab7a33019e58d90e2d891b75d7df77b4b4d" - integrity sha512-g01p1g4BmYlZ2+tdotCavrMunnPFPhTzG1ZiLKTCYrooHRbmvqo42ZZn4QMStUEIcn+jfLb6BRZX3JzIwA1ezQ== +"@commitlint/execute-rule@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-12.0.1.tgz#5bb2eba929270cafb2bd8191799d8b451de7fb7e" + integrity sha512-JzyweYfZlFLtXpgP+btzSY3YAkGPg61TqUSYQqBr4+5IaVf1FruMm5v4D5eLu9dAJuNKUfHbM3AEfuEPiZ79pg== -"@commitlint/format@^11.0.0": - version "11.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-11.0.0.tgz#ac47b0b9ca46540c0082c721b290794e67bdc51b" - integrity sha512-bpBLWmG0wfZH/svzqD1hsGTpm79TKJWcf6EXZllh2J/LSSYKxGlv967lpw0hNojme0sZd4a/97R3qA2QHWWSLg== +"@commitlint/format@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-12.0.1.tgz#5164e5a9e8592c1983482cbd71e7ea86a645ff1b" + integrity sha512-rF79ipAxR8yFzPzG5tRoEZ//MRkyxCXj4JhpEjtdaCMBAXMssI8uazn3e5D8z4UFgSDe9qOnL0OmQvql7HTMoA== dependencies: - "@commitlint/types" "^11.0.0" + "@commitlint/types" "^12.0.1" chalk "^4.0.0" -"@commitlint/is-ignored@^11.0.0": - version "11.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-11.0.0.tgz#7b803eda56276dbe7fec51eb1510676198468f39" - integrity sha512-VLHOUBN+sOlkYC4tGuzE41yNPO2w09sQnOpfS+pSPnBFkNUUHawEuA44PLHtDvQgVuYrMAmSWFQpWabMoP5/Xg== - dependencies: - "@commitlint/types" "^11.0.0" - semver "7.3.2" - -"@commitlint/lint@^11.0.0": - version "11.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-11.0.0.tgz#01e062cd1b0e7c3d756aa2c246462e0b6a3348a4" - integrity sha512-Q8IIqGIHfwKr8ecVZyYh6NtXFmKw4YSEWEr2GJTB/fTZXgaOGtGFZDWOesCZllQ63f1s/oWJYtVv5RAEuwN8BQ== - dependencies: - "@commitlint/is-ignored" "^11.0.0" - "@commitlint/parse" "^11.0.0" - "@commitlint/rules" "^11.0.0" - "@commitlint/types" "^11.0.0" - -"@commitlint/load@>6.1.1", "@commitlint/load@^11.0.0": - version "11.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-11.0.0.tgz#f736562f0ffa7e773f8808fea93319042ee18211" - integrity sha512-t5ZBrtgvgCwPfxmG811FCp39/o3SJ7L+SNsxFL92OR4WQxPcu6c8taD0CG2lzOHGuRyuMxZ7ps3EbngT2WpiCg== - dependencies: - "@commitlint/execute-rule" "^11.0.0" - "@commitlint/resolve-extends" "^11.0.0" - "@commitlint/types" "^11.0.0" - chalk "4.1.0" +"@commitlint/is-ignored@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-12.0.1.tgz#0e59b0524e16300b1d9d62f8c138f083f22ebf9a" + integrity sha512-AplfLn5mX/kWTIiSolcOhTYcgphuGLX8FUr+HmyHBEqUkO36jt0z9caysH47fqU71ePtH63v1DWm+RYQ5RPDjg== + dependencies: + "@commitlint/types" "^12.0.1" + semver "7.3.4" + +"@commitlint/lint@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-12.0.1.tgz#a88b01c81cb6ca1867bd3d8fd288ba30017c2b7d" + integrity sha512-1lKyRCq4ahJrY+Xxo8LsqCbALeJkodtEfpmYHeA5HpPMnK7lRSplLqOLcTCjoPfd4vO+gl6aDEZN+ow3YGQBOg== + dependencies: + "@commitlint/is-ignored" "^12.0.1" + "@commitlint/parse" "^12.0.1" + "@commitlint/rules" "^12.0.1" + "@commitlint/types" "^12.0.1" + +"@commitlint/load@>6.1.1", "@commitlint/load@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-12.0.1.tgz#4d180fc88e5b4cfcb476a245d899f85154137502" + integrity sha512-dX8KdCWn7w0bTkkk3zKQpe9X8vsTRa5EM+1ffF313wCX9b6tGa9vujhEHCkSzKAbbE2tFV64CHZygE7rtlHdIA== + dependencies: + "@commitlint/execute-rule" "^12.0.1" + "@commitlint/resolve-extends" "^12.0.1" + "@commitlint/types" "^12.0.1" + chalk "^4.0.0" cosmiconfig "^7.0.0" lodash "^4.17.19" resolve-from "^5.0.0" -"@commitlint/message@^11.0.0": - version "11.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-11.0.0.tgz#83554c3cbbc884fd07b473593bc3e94bcaa3ee05" - integrity sha512-01ObK/18JL7PEIE3dBRtoMmU6S3ecPYDTQWWhcO+ErA3Ai0KDYqV5VWWEijdcVafNpdeUNrEMigRkxXHQLbyJA== +"@commitlint/message@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-12.0.1.tgz#caff6743db78c30a063809501cf4b835c3ce7fa6" + integrity sha512-fXuoxRC+NT1wEQi6p8oHfT7wvWIRgTk+udlRJnWTjmMpiYzVnMmmZfasdShirWr4TtxQtMyL+5DVgh7Y98kURw== -"@commitlint/parse@^11.0.0": - version "11.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-11.0.0.tgz#d18b08cf67c35d02115207d7009306a2e8e7c901" - integrity sha512-DekKQAIYWAXIcyAZ6/PDBJylWJ1BROTfDIzr9PMVxZRxBPc1gW2TG8fLgjZfBP5mc0cuthPkVi91KQQKGri/7A== +"@commitlint/parse@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-12.0.1.tgz#ba8641f53e15b523808ba2eaa48c1bf0129c91c4" + integrity sha512-7oEGASmzBnHir5jSIR7KephXrKh7rIi9a6RpH1tOT+CIENYvhe8EDtIy29qMt+RLa2LlaPF7YrAgaJRfzG0YDQ== dependencies: - conventional-changelog-angular "^5.0.0" + "@commitlint/types" "^12.0.1" + conventional-changelog-angular "^5.0.11" conventional-commits-parser "^3.0.0" -"@commitlint/read@^11.0.0": - version "11.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-11.0.0.tgz#f24240548c63587bba139fa5a364cab926077016" - integrity sha512-37V0V91GSv0aDzMzJioKpCoZw6l0shk7+tRG8RkW1GfZzUIytdg3XqJmM+IaIYpaop0m6BbZtfq+idzUwJnw7g== +"@commitlint/read@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-12.0.1.tgz#41f3295ed9f451d4c65223cd37ddd59ef714bddb" + integrity sha512-baa0YeD4QOctEuthLpExQSi9xPiw0kDPfUVHqp8I88iuIXJECeS8S1+1GBiz89e8dLN9zmEE+sN9vtJHdAp9YA== dependencies: - "@commitlint/top-level" "^11.0.0" + "@commitlint/top-level" "^12.0.1" + "@commitlint/types" "^12.0.1" fs-extra "^9.0.0" git-raw-commits "^2.0.0" -"@commitlint/resolve-extends@^11.0.0": - version "11.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-11.0.0.tgz#158ecbe27d4a2a51d426111a01478e216fbb1036" - integrity sha512-WinU6Uv6L7HDGLqn/To13KM1CWvZ09VHZqryqxXa1OY+EvJkfU734CwnOEeNlSCK7FVLrB4kmodLJtL1dkEpXw== +"@commitlint/resolve-extends@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-12.0.1.tgz#77509f386e08bd30262ec9a75c783d8f4f028fd2" + integrity sha512-Mvg0GDi/68Cqw893ha8uhxE8myHfPmiSSSi7d1x4VJNR4hoS37lBdX89kyx4i9NPmLfviY2cUJKTyK8ZrFznZw== dependencies: import-fresh "^3.0.0" lodash "^4.17.19" resolve-from "^5.0.0" resolve-global "^1.0.0" -"@commitlint/rules@^11.0.0": - version "11.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-11.0.0.tgz#bdb310cc6fc55c9f8d7d917a22b69055c535c375" - integrity sha512-2hD9y9Ep5ZfoNxDDPkQadd2jJeocrwC4vJ98I0g8pNYn/W8hS9+/FuNpolREHN8PhmexXbkjrwyQrWbuC0DVaA== +"@commitlint/rules@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-12.0.1.tgz#1c81345f468597656141338a493d5e426e44dab9" + integrity sha512-A5O0ubNGugZR9WWxk5IVOLo07lpdUwhG5WkAW2lYpgZ7Z/2U4PLob9b4Ih1eHbQu+gnVeFr91k7F0DrpM7B8EQ== dependencies: - "@commitlint/ensure" "^11.0.0" - "@commitlint/message" "^11.0.0" - "@commitlint/to-lines" "^11.0.0" - "@commitlint/types" "^11.0.0" + "@commitlint/ensure" "^12.0.1" + "@commitlint/message" "^12.0.1" + "@commitlint/to-lines" "^12.0.1" + "@commitlint/types" "^12.0.1" -"@commitlint/to-lines@^11.0.0": - version "11.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-11.0.0.tgz#86dea151c10eea41e39ea96fa4de07839258a7fe" - integrity sha512-TIDTB0Y23jlCNubDROUVokbJk6860idYB5cZkLWcRS9tlb6YSoeLn1NLafPlrhhkkkZzTYnlKYzCVrBNVes1iw== +"@commitlint/to-lines@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-12.0.1.tgz#586d89b9f9ff99ef93b3c8aa3d77faffbe3ffedc" + integrity sha512-XwcJ1jY7x2fhudzbGMpNQkTSMVrxWrI8bRMbVe3Abuu7RfYpFf7VXAlhtnLfxBoagaK7RxjC2+eRidp/3txQBg== -"@commitlint/top-level@^11.0.0": - version "11.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-11.0.0.tgz#bb2d1b6e5ed3be56874633b59e1f7de118c32783" - integrity sha512-O0nFU8o+Ws+py5pfMQIuyxOtfR/kwtr5ybqTvR+C2lUPer2x6lnQU+OnfD7hPM+A+COIUZWx10mYQvkR3MmtAA== +"@commitlint/top-level@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-12.0.1.tgz#9c7efd319a4f8d29001f011ba8b0e21fad6044f6" + integrity sha512-rHdgt7U24GEau2/9i2vEAbksxkBRiVjHj5ECFL5dd0AJOIvaK++vMg4EF/ME0X/1yd9qVTHTNOl2Q4tTFK7VBQ== dependencies: find-up "^5.0.0" -"@commitlint/types@^11.0.0": - version "11.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-11.0.0.tgz#719cf05fcc1abb6533610a2e0f5dd1e61eac14fe" - integrity sha512-VoNqai1vR5anRF5Tuh/+SWDFk7xi7oMwHrHrbm1BprYXjB2RJsWLhUrStMssDxEl5lW/z3EUdg8RvH/IUBccSQ== +"@commitlint/types@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-12.0.1.tgz#04a0cbb8aa56b7c004f8939c2d1ef8892ec68327" + integrity sha512-FsNDMV0W7D19/ZbR412klpqAilXASx75Neqh7jPtK278IEwdukOg3vth1r5kTm+BjDScM7wMUEOwIW3NNfAtwg== + dependencies: + chalk "^4.0.0" "@cspell/cspell-bundled-dicts@^5.3.4": version "5.3.4" @@ -2679,14 +2681,6 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@4.1.0, chalk@^4.0.0, chalk@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - chalk@^2.0.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -2696,6 +2690,14 @@ chalk@^2.0.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" @@ -2786,6 +2788,15 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + clone-deep@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" @@ -2981,7 +2992,15 @@ contains-path@^0.1.0: resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= -conventional-changelog-angular@^5.0.0, conventional-changelog-angular@^5.0.3: +conventional-changelog-angular@^5.0.11: + version "5.0.12" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz#c979b8b921cbfe26402eb3da5bbfda02d865a2b9" + integrity sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw== + dependencies: + compare-func "^2.0.0" + q "^1.5.1" + +conventional-changelog-angular@^5.0.3: version "5.0.11" resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.11.tgz#99a3ca16e4a5305e0c2c2fae3ef74fd7631fc3fb" integrity sha512-nSLypht/1yEflhuTogC03i7DX7sOrXGsRn14g131Potqi6cbGbGEE9PSDEHKldabB6N76HiSyw9Ph+kLmC04Qw== @@ -3102,11 +3121,6 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js@^3.6.1: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" - integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== - core-util-is@1.0.2, core-util-is@^1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -4287,7 +4301,7 @@ gensync@^1.0.0-beta.2: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.1: +get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== @@ -9085,6 +9099,11 @@ y18n@^4.0.0: resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== +y18n@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" + integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== + yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" @@ -9121,6 +9140,11 @@ yargs-parser@^18.1.2, yargs-parser@^18.1.3: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^20.2.2: + version "20.2.6" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.6.tgz#69f920addf61aafc0b8b89002f5d66e28f2d8b20" + integrity sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA== + yargs@^14.2.2: version "14.2.3" resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" @@ -9138,7 +9162,7 @@ yargs@^14.2.2: y18n "^4.0.0" yargs-parser "^15.0.1" -yargs@^15.0.1, yargs@^15.1.0, yargs@^15.4.1: +yargs@^15.0.1, yargs@^15.4.1: version "15.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== @@ -9155,6 +9179,19 @@ yargs@^15.0.1, yargs@^15.1.0, yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + yn@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" From 9323eaea81467e51ba99915f8b5d4dc8834e2784 Mon Sep 17 00:00:00 2001 From: Armano Date: Tue, 2 Mar 2021 18:58:23 +0100 Subject: [PATCH 08/14] chore: yarn lock after depencency update (#3134) --- yarn.lock | 5 ----- 1 file changed, 5 deletions(-) diff --git a/yarn.lock b/yarn.lock index 39ecbe707264..815a73208c88 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7792,11 +7792,6 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@7.3.2: - version "7.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== - semver@7.3.4, semver@7.x, semver@^7.2.1, semver@^7.3.2: version "7.3.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" From a64229078e72e52d43cbe3e5e45ee0450ecdf2af Mon Sep 17 00:00:00 2001 From: Armano Date: Fri, 5 Mar 2021 18:27:08 +0100 Subject: [PATCH 09/14] chore: remove redundant lerna:init script (#3139) --- .github/workflows/ci.yml | 6 ------ .github/workflows/manual-release.yml | 1 - package.json | 3 +-- 3 files changed, 1 insertion(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0986c2df8f6c..0cae9596da6e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -43,7 +43,6 @@ jobs: - name: Install dependencies run: | yarn --ignore-engines --frozen-lockfile --ignore-scripts - yarn lerna:init yarn check:clean-workspace-after-install - name: Build @@ -86,7 +85,6 @@ jobs: - name: Install dependencies run: | yarn --ignore-engines --frozen-lockfile --ignore-scripts - yarn lerna:init yarn check:clean-workspace-after-install - name: Build @@ -173,7 +171,6 @@ jobs: - name: Install dependencies run: | yarn --ignore-engines --frozen-lockfile --ignore-scripts - yarn lerna:init yarn check:clean-workspace-after-install - name: Build @@ -217,7 +214,6 @@ jobs: - name: Install dependencies run: | yarn --ignore-engines --frozen-lockfile --ignore-scripts - yarn lerna:init yarn check:clean-workspace-after-install - name: Build @@ -257,7 +253,6 @@ jobs: - name: Install dependencies run: | yarn --ignore-engines --frozen-lockfile --ignore-scripts - yarn lerna:init yarn check:clean-workspace-after-install - name: Build @@ -340,7 +335,6 @@ jobs: - name: Install dependencies run: | yarn --ignore-engines --frozen-lockfile --ignore-scripts - yarn lerna:init yarn check:clean-workspace-after-install - name: Build diff --git a/.github/workflows/manual-release.yml b/.github/workflows/manual-release.yml index 4f75c3b438e7..327d5947236a 100644 --- a/.github/workflows/manual-release.yml +++ b/.github/workflows/manual-release.yml @@ -45,7 +45,6 @@ jobs: - name: Install dependencies run: | yarn --ignore-engines --frozen-lockfile --ignore-scripts - yarn lerna:init yarn check:clean-workspace-after-install - name: Run build diff --git a/package.json b/package.json index 3394f492b9f3..65d383df6c6c 100644 --- a/package.json +++ b/package.json @@ -27,12 +27,11 @@ "cz": "git-cz", "format": "prettier --write \"./**/*.{ts,js,json,md}\"", "generate:contributors": "yarn ts-node --transpile-only ./tools/generate-contributors.ts && yarn all-contributors generate", - "lerna:init": "lerna bootstrap --ignore-scripts && lerna link --force-local", "lint:fix": "eslint . --ext .js,.ts --fix", "lint:markdown:fix": "yarn lint:markdown --fix", "lint:markdown": "markdownlint \"**/*.md\" --config=.markdownlint.json --ignore-path=.markdownlintignore", "lint": "eslint . --ext .js,.ts", - "postinstall": "yarn husky install && yarn lerna:init && yarn build", + "postinstall": "yarn husky install && yarn build", "pre-commit": "yarn lint-staged", "pre-push": "yarn check:format", "test": "lerna run test --concurrency 1", From 84fe328c2c7b4e631711c7f22b706f75ea14a495 Mon Sep 17 00:00:00 2001 From: typicode Date: Fri, 5 Mar 2021 18:27:42 +0100 Subject: [PATCH 10/14] chore: remove husky 4 config (#3149) --- .huskyrc | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 .huskyrc diff --git a/.huskyrc b/.huskyrc deleted file mode 100644 index 687c2614bf8a..000000000000 --- a/.huskyrc +++ /dev/null @@ -1,7 +0,0 @@ -{ - "hooks": { - "pre-commit": "yarn pre-commit", - "pre-push": "yarn pre-push", - "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" - } -} From ae0271cd8d6406e2fa54403f49e5072bd729bddd Mon Sep 17 00:00:00 2001 From: Armano Date: Sat, 6 Mar 2021 21:58:30 +0100 Subject: [PATCH 11/14] docs(eslint-plugin): correct no longer valid references and examples (#3152) --- .../eslint-plugin/docs/rules/consistent-type-imports.md | 2 +- packages/eslint-plugin/docs/rules/no-magic-numbers.md | 8 ++++---- .../eslint-plugin/docs/rules/triple-slash-reference.md | 2 -- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/packages/eslint-plugin/docs/rules/consistent-type-imports.md b/packages/eslint-plugin/docs/rules/consistent-type-imports.md index c30e59b40b99..a5808b455788 100644 --- a/packages/eslint-plugin/docs/rules/consistent-type-imports.md +++ b/packages/eslint-plugin/docs/rules/consistent-type-imports.md @@ -61,6 +61,6 @@ const x: import('Bar') = 1; ## When Not To Use It - If you are not using TypeScript 3.8 (or greater), then you will not be able to use this rule, as type-only imports are not allowed. -- Certain libraries use the non-inlined imports to infer information about the variables. For example, for dependency injection. +- Certain libraries use the non-inlined imports to infer information about the variables. For example, for dependency injection.
type-only imports cannot be used with these libraries. See [#2559](https://github.com/typescript-eslint/typescript-eslint/issues/2559#issuecomment-692780580) - If you specifically want to use both import kinds for stylistic reasons, you can disable this rule. diff --git a/packages/eslint-plugin/docs/rules/no-magic-numbers.md b/packages/eslint-plugin/docs/rules/no-magic-numbers.md index f41204c132bf..8149ad6ddd6b 100644 --- a/packages/eslint-plugin/docs/rules/no-magic-numbers.md +++ b/packages/eslint-plugin/docs/rules/no-magic-numbers.md @@ -53,8 +53,8 @@ Examples of **incorrect** code for the `{ "ignoreEnums": false }` option: ```ts /*eslint @typescript-eslint/no-magic-numbers: ["error", { "ignoreEnums": false }]*/ -enum foo = { - SECOND = 1000, +enum foo { + SECOND = 1000, } ``` @@ -63,8 +63,8 @@ Examples of **correct** code for the `{ "ignoreEnums": true }` option: ```ts /*eslint @typescript-eslint/no-magic-numbers: ["error", { "ignoreEnums": true }]*/ -enum foo = { - SECOND = 1000, +enum foo { + SECOND = 1000, } ``` diff --git a/packages/eslint-plugin/docs/rules/triple-slash-reference.md b/packages/eslint-plugin/docs/rules/triple-slash-reference.md index af9e5498b6d4..9eb463a3c790 100644 --- a/packages/eslint-plugin/docs/rules/triple-slash-reference.md +++ b/packages/eslint-plugin/docs/rules/triple-slash-reference.md @@ -2,8 +2,6 @@ Use of triple-slash reference type directives is discouraged in favor of the newer `import` style. This rule allows you to ban use of `/// `, `/// `, or `/// ` directives. -Consider using this rule in place of [`no-triple-slash-reference`](./no-triple-slash-reference.md) which has been deprecated. - ## Rule Details With `{ "path": "never", "types": "never", "lib": "never" }` options set, the following will all be **incorrect** usage: From 3f9e9a1e9fc3e507bd01d1913ef642cd129de402 Mon Sep 17 00:00:00 2001 From: Nikita Stefaniak Date: Mon, 8 Mar 2021 18:33:28 +0100 Subject: [PATCH 12/14] feat(eslint-plugin): [strict-bool-expr] add fixes and suggestions (#2847) --- packages/eslint-plugin/README.md | 2 +- .../docs/rules/strict-boolean-expressions.md | 32 + .../src/rules/strict-boolean-expressions.ts | 473 +++++++++++++- .../src/util/getWrappingFixer.ts | 109 ++++ packages/eslint-plugin/src/util/index.ts | 1 + .../rules/strict-boolean-expressions.test.ts | 604 ++++++++++++++++-- 6 files changed, 1167 insertions(+), 54 deletions(-) create mode 100644 packages/eslint-plugin/src/util/getWrappingFixer.ts diff --git a/packages/eslint-plugin/README.md b/packages/eslint-plugin/README.md index 3a504fe7d83a..69ea06c23082 100644 --- a/packages/eslint-plugin/README.md +++ b/packages/eslint-plugin/README.md @@ -169,7 +169,7 @@ Pro Tip: For larger codebases you may want to consider splitting our linting int | [`@typescript-eslint/restrict-plus-operands`](./docs/rules/restrict-plus-operands.md) | When adding two variables, operands must both be of type number or of type string | :heavy_check_mark: | | :thought_balloon: | | [`@typescript-eslint/restrict-template-expressions`](./docs/rules/restrict-template-expressions.md) | Enforce template literal expressions to be of string type | :heavy_check_mark: | | :thought_balloon: | | [`@typescript-eslint/sort-type-union-intersection-members`](./docs/rules/sort-type-union-intersection-members.md) | Enforces that members of a type union/intersection are sorted alphabetically | | :wrench: | | -| [`@typescript-eslint/strict-boolean-expressions`](./docs/rules/strict-boolean-expressions.md) | Restricts the types allowed in boolean expressions | | | :thought_balloon: | +| [`@typescript-eslint/strict-boolean-expressions`](./docs/rules/strict-boolean-expressions.md) | Restricts the types allowed in boolean expressions | | :wrench: | :thought_balloon: | | [`@typescript-eslint/switch-exhaustiveness-check`](./docs/rules/switch-exhaustiveness-check.md) | Exhaustiveness checking in switch with union type | | | :thought_balloon: | | [`@typescript-eslint/triple-slash-reference`](./docs/rules/triple-slash-reference.md) | Sets preference level for triple slash directives versus ES6-style import declarations | :heavy_check_mark: | | | | [`@typescript-eslint/type-annotation-spacing`](./docs/rules/type-annotation-spacing.md) | Require consistent spacing around type annotations | | :wrench: | | diff --git a/packages/eslint-plugin/docs/rules/strict-boolean-expressions.md b/packages/eslint-plugin/docs/rules/strict-boolean-expressions.md index 9eb5712ab482..b1ad94d8b340 100644 --- a/packages/eslint-plugin/docs/rules/strict-boolean-expressions.md +++ b/packages/eslint-plugin/docs/rules/strict-boolean-expressions.md @@ -155,6 +155,38 @@ You should be using `strictNullChecks` to ensure complete type-safety in your co If for some reason you cannot turn on `strictNullChecks`, but still want to use this rule - you can use this option to allow it - but know that the behavior of this rule is _undefined_ with the compiler option turned off. We will not accept bug reports if you are using this option. +## Fixes and suggestions + +This rule provides following fixes and suggestions for particular types in boolean context: + +- `boolean` - Always allowed - no fix needed. +- `string` - (when `allowString` is `false`) - Provides following suggestions: + - Change condition to check string's length (`str` → `str.length > 0`) + - Change condition to check for empty string (`str` → `str !== ""`) + - Explicitly cast value to a boolean (`str` → `Boolean(str)`) +- `number` - (when `allowNumber` is `false`): + - For `array.length` - Provides **autofix**: + - Change condition to check for 0 (`array.length` → `array.length > 0`) + - For other number values - Provides following suggestions: + - Change condition to check for 0 (`num` → `num !== 0`) + - Change condition to check for NaN (`num` → `!Number.isNaN(num)`) + - Explicitly cast value to a boolean (`num` → `Boolean(num)`) +- `object | null | undefined` - (when `allowNullableObject` is `false`) - Provides **autofix**: + - Change condition to check for null/undefined (`maybeObj` → `maybeObj != null`) +- `boolean | null | undefined` - Provides following suggestions: + - Explicitly treat nullish value the same as false (`maybeBool` → `maybeBool ?? false`) + - Change condition to check for true/false (`maybeBool` → `maybeBool === true`) +- `string | null | undefined` - Provides following suggestions: + - Change condition to check for null/undefined (`maybeStr` → `maybeStr != null`) + - Explicitly treat nullish value the same as an empty string (`maybeStr` → `maybeStr ?? ""`) + - Explicitly cast value to a boolean (`maybeStr` → `Boolean(maybeStr)`) +- `number | null | undefined` - Provides following suggestions: + - Change condition to check for null/undefined (`maybeNum` → `maybeNum != null`) + - Explicitly treat nullish value the same as 0 (`maybeNum` → `maybeNum ?? 0`) + - Explicitly cast value to a boolean (`maybeNum` → `Boolean(maybeNum)`) +- `any` and `unknown` - Provides following suggestions: + - Explicitly cast value to a boolean (`value` → `Boolean(value)`) + ## Related To - TSLint: [strict-boolean-expressions](https://palantir.github.io/tslint/rules/strict-boolean-expressions) diff --git a/packages/eslint-plugin/src/rules/strict-boolean-expressions.ts b/packages/eslint-plugin/src/rules/strict-boolean-expressions.ts index 51265feb1368..b8e25d4542a3 100644 --- a/packages/eslint-plugin/src/rules/strict-boolean-expressions.ts +++ b/packages/eslint-plugin/src/rules/strict-boolean-expressions.ts @@ -1,9 +1,10 @@ import { - TSESTree, AST_NODE_TYPES, + ParserServices, + TSESTree, } from '@typescript-eslint/experimental-utils'; -import * as ts from 'typescript'; import * as tsutils from 'tsutils'; +import * as ts from 'typescript'; import * as util from '../util'; export type Options = [ @@ -30,12 +31,24 @@ export type MessageId = | 'conditionErrorNullableNumber' | 'conditionErrorObject' | 'conditionErrorNullableObject' - | 'noStrictNullCheck'; + | 'noStrictNullCheck' + | 'conditionFixDefaultFalse' + | 'conditionFixDefaultEmptyString' + | 'conditionFixDefaultZero' + | 'conditionFixCompareNullish' + | 'conditionFixCastBoolean' + | 'conditionFixCompareTrue' + | 'conditionFixCompareFalse' + | 'conditionFixCompareStringLength' + | 'conditionFixCompareEmptyString' + | 'conditionFixCompareZero' + | 'conditionFixCompareNaN'; export default util.createRule({ name: 'strict-boolean-expressions', meta: { type: 'suggestion', + fixable: 'code', docs: { description: 'Restricts the types allowed in boolean expressions', category: 'Best Practices', @@ -93,6 +106,29 @@ export default util.createRule({ 'An explicit null check is required.', noStrictNullCheck: 'This rule requires the `strictNullChecks` compiler option to be turned on to function correctly.', + + conditionFixDefaultFalse: + 'Explicitly treat nullish value the same as false (`value ?? false`)', + conditionFixDefaultEmptyString: + 'Explicitly treat nullish value the same as an empty string (`value ?? ""`)', + conditionFixDefaultZero: + 'Explicitly treat nullish value the same as 0 (`value ?? 0`)', + conditionFixCompareNullish: + 'Change condition to check for null/undefined (`value != null`)', + conditionFixCastBoolean: + 'Explicitly cast value to a boolean (`Boolean(value)`)', + conditionFixCompareTrue: + 'Change condition to check if true (`value === true`)', + conditionFixCompareFalse: + 'Change condition to check if false (`value === false`)', + conditionFixCompareStringLength: + "Change condition to check string's length (`value.length !== 0`)", + conditionFixCompareEmptyString: + 'Change condition to check for empty string (`value !== ""`)', + conditionFixCompareZero: + 'Change condition to check for 0 (`value !== 0`)', + conditionFixCompareNaN: + 'Change condition to check for NaN (`!Number.isNaN(value)`)', }, }, defaultOptions: [ @@ -108,9 +144,10 @@ export default util.createRule({ }, ], create(context, [options]) { - const service = util.getParserServices(context); - const checker = service.program.getTypeChecker(); - const compilerOptions = service.program.getCompilerOptions(); + const parserServices = util.getParserServices(context); + const typeChecker = parserServices.program.getTypeChecker(); + const compilerOptions = parserServices.program.getCompilerOptions(); + const sourceCode = context.getSourceCode(); const isStrictNullChecks = tsutils.isStrictCompilerOptionEnabled( compilerOptions, 'strictNullChecks', @@ -187,8 +224,8 @@ export default util.createRule({ return; } - const tsNode = service.esTreeNodeToTSNodeMap.get(node); - const type = util.getConstrainedTypeAtLocation(checker, tsNode); + const tsNode = parserServices.esTreeNodeToTSNodeMap.get(node); + const type = util.getConstrainedTypeAtLocation(typeChecker, tsNode); const types = inspectVariantTypes(tsutils.unionTypeParts(type)); const is = (...wantedTypes: readonly VariantType[]): boolean => @@ -217,7 +254,56 @@ export default util.createRule({ // nullable boolean if (is('nullish', 'boolean')) { if (!options.allowNullableBoolean) { - context.report({ node, messageId: 'conditionErrorNullableBoolean' }); + if (isLogicalNegationExpression(node.parent!)) { + // if (!nullableBoolean) + context.report({ + node, + messageId: 'conditionErrorNullableBoolean', + suggest: [ + { + messageId: 'conditionFixDefaultFalse', + fix: util.getWrappingFixer({ + sourceCode, + node, + wrap: code => `${code} ?? false`, + }), + }, + { + messageId: 'conditionFixCompareFalse', + fix: util.getWrappingFixer({ + sourceCode, + node: node.parent, + innerNode: node, + wrap: code => `${code} === false`, + }), + }, + ], + }); + } else { + // if (nullableBoolean) + context.report({ + node, + messageId: 'conditionErrorNullableBoolean', + suggest: [ + { + messageId: 'conditionFixDefaultFalse', + fix: util.getWrappingFixer({ + sourceCode, + node, + wrap: code => `${code} ?? false`, + }), + }, + { + messageId: 'conditionFixCompareTrue', + fix: util.getWrappingFixer({ + sourceCode, + node, + wrap: code => `${code} === true`, + }), + }, + ], + }); + } } return; } @@ -225,7 +311,74 @@ export default util.createRule({ // string if (is('string')) { if (!options.allowString) { - context.report({ node, messageId: 'conditionErrorString' }); + if (isLogicalNegationExpression(node.parent!)) { + // if (!string) + context.report({ + node, + messageId: 'conditionErrorString', + suggest: [ + { + messageId: 'conditionFixCompareStringLength', + fix: util.getWrappingFixer({ + sourceCode, + node: node.parent, + innerNode: node, + wrap: code => `${code}.length === 0`, + }), + }, + { + messageId: 'conditionFixCompareEmptyString', + fix: util.getWrappingFixer({ + sourceCode, + node: node.parent, + innerNode: node, + wrap: code => `${code} === ""`, + }), + }, + { + messageId: 'conditionFixCastBoolean', + fix: util.getWrappingFixer({ + sourceCode, + node: node.parent, + innerNode: node, + wrap: code => `!Boolean(${code})`, + }), + }, + ], + }); + } else { + // if (string) + context.report({ + node, + messageId: 'conditionErrorString', + suggest: [ + { + messageId: 'conditionFixCompareStringLength', + fix: util.getWrappingFixer({ + sourceCode, + node, + wrap: code => `${code}.length > 0`, + }), + }, + { + messageId: 'conditionFixCompareEmptyString', + fix: util.getWrappingFixer({ + sourceCode, + node, + wrap: code => `${code} !== ""`, + }), + }, + { + messageId: 'conditionFixCastBoolean', + fix: util.getWrappingFixer({ + sourceCode, + node, + wrap: code => `Boolean(${code})`, + }), + }, + ], + }); + } } return; } @@ -233,7 +386,73 @@ export default util.createRule({ // nullable string if (is('nullish', 'string')) { if (!options.allowNullableString) { - context.report({ node, messageId: 'conditionErrorNullableString' }); + if (isLogicalNegationExpression(node.parent!)) { + // if (!nullableString) + context.report({ + node, + messageId: 'conditionErrorNullableString', + suggest: [ + { + messageId: 'conditionFixCompareNullish', + fix: util.getWrappingFixer({ + sourceCode, + node: node.parent, + innerNode: node, + wrap: code => `${code} == null`, + }), + }, + { + messageId: 'conditionFixDefaultEmptyString', + fix: util.getWrappingFixer({ + sourceCode, + node, + wrap: code => `${code} ?? ""`, + }), + }, + { + messageId: 'conditionFixCastBoolean', + fix: util.getWrappingFixer({ + sourceCode, + node: node.parent, + innerNode: node, + wrap: code => `!Boolean(${code})`, + }), + }, + ], + }); + } else { + // if (nullableString) + context.report({ + node, + messageId: 'conditionErrorNullableString', + suggest: [ + { + messageId: 'conditionFixCompareNullish', + fix: util.getWrappingFixer({ + sourceCode, + node, + wrap: code => `${code} != null`, + }), + }, + { + messageId: 'conditionFixDefaultEmptyString', + fix: util.getWrappingFixer({ + sourceCode, + node, + wrap: code => `${code} ?? ""`, + }), + }, + { + messageId: 'conditionFixCastBoolean', + fix: util.getWrappingFixer({ + sourceCode, + node, + wrap: code => `Boolean(${code})`, + }), + }, + ], + }); + } } return; } @@ -241,7 +460,101 @@ export default util.createRule({ // number if (is('number')) { if (!options.allowNumber) { - context.report({ node, messageId: 'conditionErrorNumber' }); + if (isArrayLengthExpression(node, typeChecker, parserServices)) { + if (isLogicalNegationExpression(node.parent!)) { + // if (!array.length) + context.report({ + node, + messageId: 'conditionErrorNumber', + fix: util.getWrappingFixer({ + sourceCode, + node: node.parent, + innerNode: node, + wrap: code => `${code} === 0`, + }), + }); + } else { + // if (array.length) + context.report({ + node, + messageId: 'conditionErrorNumber', + fix: util.getWrappingFixer({ + sourceCode, + node, + wrap: code => `${code} > 0`, + }), + }); + } + } else if (isLogicalNegationExpression(node.parent!)) { + // if (!number) + context.report({ + node, + messageId: 'conditionErrorNumber', + suggest: [ + { + messageId: 'conditionFixCompareZero', + fix: util.getWrappingFixer({ + sourceCode, + node: node.parent, + innerNode: node, + // TODO: we have to compare to 0n if the type is bigint + wrap: code => `${code} === 0`, + }), + }, + { + // TODO: don't suggest this for bigint because it can't be NaN + messageId: 'conditionFixCompareNaN', + fix: util.getWrappingFixer({ + sourceCode, + node: node.parent, + innerNode: node, + wrap: code => `Number.isNaN(${code})`, + }), + }, + { + messageId: 'conditionFixCastBoolean', + fix: util.getWrappingFixer({ + sourceCode, + node: node.parent, + innerNode: node, + wrap: code => `!Boolean(${code})`, + }), + }, + ], + }); + } else { + // if (number) + context.report({ + node, + messageId: 'conditionErrorNumber', + suggest: [ + { + messageId: 'conditionFixCompareZero', + fix: util.getWrappingFixer({ + sourceCode, + node, + wrap: code => `${code} !== 0`, + }), + }, + { + messageId: 'conditionFixCompareNaN', + fix: util.getWrappingFixer({ + sourceCode, + node, + wrap: code => `!Number.isNaN(${code})`, + }), + }, + { + messageId: 'conditionFixCastBoolean', + fix: util.getWrappingFixer({ + sourceCode, + node, + wrap: code => `Boolean(${code})`, + }), + }, + ], + }); + } } return; } @@ -249,7 +562,73 @@ export default util.createRule({ // nullable number if (is('nullish', 'number')) { if (!options.allowNullableNumber) { - context.report({ node, messageId: 'conditionErrorNullableNumber' }); + if (isLogicalNegationExpression(node.parent!)) { + // if (!nullableNumber) + context.report({ + node, + messageId: 'conditionErrorNullableNumber', + suggest: [ + { + messageId: 'conditionFixCompareNullish', + fix: util.getWrappingFixer({ + sourceCode, + node: node.parent, + innerNode: node, + wrap: code => `${code} == null`, + }), + }, + { + messageId: 'conditionFixDefaultZero', + fix: util.getWrappingFixer({ + sourceCode, + node, + wrap: code => `${code} ?? 0`, + }), + }, + { + messageId: 'conditionFixCastBoolean', + fix: util.getWrappingFixer({ + sourceCode, + node: node.parent, + innerNode: node, + wrap: code => `!Boolean(${code})`, + }), + }, + ], + }); + } else { + // if (nullableNumber) + context.report({ + node, + messageId: 'conditionErrorNullableNumber', + suggest: [ + { + messageId: 'conditionFixCompareNullish', + fix: util.getWrappingFixer({ + sourceCode, + node, + wrap: code => `${code} != null`, + }), + }, + { + messageId: 'conditionFixDefaultZero', + fix: util.getWrappingFixer({ + sourceCode, + node, + wrap: code => `${code} ?? 0`, + }), + }, + { + messageId: 'conditionFixCastBoolean', + fix: util.getWrappingFixer({ + sourceCode, + node, + wrap: code => `Boolean(${code})`, + }), + }, + ], + }); + } } return; } @@ -264,7 +643,30 @@ export default util.createRule({ // nullable object if (is('nullish', 'object')) { if (!options.allowNullableObject) { - context.report({ node, messageId: 'conditionErrorNullableObject' }); + if (isLogicalNegationExpression(node.parent!)) { + // if (!nullableObject) + context.report({ + node, + messageId: 'conditionErrorNullableObject', + fix: util.getWrappingFixer({ + sourceCode, + node: node.parent, + innerNode: node, + wrap: code => `${code} == null`, + }), + }); + } else { + // if (nullableObject) + context.report({ + node, + messageId: 'conditionErrorNullableObject', + fix: util.getWrappingFixer({ + sourceCode, + node, + wrap: code => `${code} != null`, + }), + }); + } } return; } @@ -272,7 +674,20 @@ export default util.createRule({ // any if (is('any')) { if (!options.allowAny) { - context.report({ node, messageId: 'conditionErrorAny' }); + context.report({ + node, + messageId: 'conditionErrorAny', + suggest: [ + { + messageId: 'conditionFixCastBoolean', + fix: util.getWrappingFixer({ + sourceCode, + node, + wrap: code => `Boolean(${code})`, + }), + }, + ], + }); } return; } @@ -370,3 +785,31 @@ export default util.createRule({ } }, }); + +function isLogicalNegationExpression( + node: TSESTree.Node, +): node is TSESTree.UnaryExpression { + return node.type === AST_NODE_TYPES.UnaryExpression && node.operator === '!'; +} + +function isArrayLengthExpression( + node: TSESTree.Node, + typeChecker: ts.TypeChecker, + parserServices: ParserServices, +): node is TSESTree.MemberExpressionNonComputedName { + if (node.type !== AST_NODE_TYPES.MemberExpression) { + return false; + } + if (node.computed) { + return false; + } + if (node.property.name !== 'length') { + return false; + } + const objectTsNode = parserServices.esTreeNodeToTSNodeMap.get(node.object); + const objectType = util.getConstrainedTypeAtLocation( + typeChecker, + objectTsNode, + ); + return util.isTypeArrayTypeOrUnionOfArrayTypes(objectType, typeChecker); +} diff --git a/packages/eslint-plugin/src/util/getWrappingFixer.ts b/packages/eslint-plugin/src/util/getWrappingFixer.ts new file mode 100644 index 000000000000..4a9edcfcc98b --- /dev/null +++ b/packages/eslint-plugin/src/util/getWrappingFixer.ts @@ -0,0 +1,109 @@ +import { + AST_NODE_TYPES, + TSESLint, + TSESTree, +} from '@typescript-eslint/experimental-utils'; +import * as util from '../util'; + +interface WrappingFixerParams { + /** Source code. */ + sourceCode: Readonly; + /** The node we want to modify. */ + node: TSESTree.Node; + /** + * Descendant of `node` we want to preserve. + * Use this to replace some code with another. + * By default it's the node we are modifying (so nothing is removed). + */ + innerNode?: TSESTree.Node; + /** + * The function which gets the code of the `innerNode` and returns some code around it. + * E.g. ``code => `${code} != null` `` + */ + wrap: (code: string) => string; +} + +/** + * Wraps node with some code. Adds parenthesis as necessary. + * @returns Fixer which adds the specified code and parens if necessary. + */ +export function getWrappingFixer( + params: WrappingFixerParams, +): TSESLint.ReportFixFunction { + const { sourceCode, node, innerNode = node, wrap } = params; + return (fixer): TSESLint.RuleFix => { + let code = sourceCode.getText(innerNode); + + // check the inner expression's precedence + if ( + innerNode.type !== AST_NODE_TYPES.Literal && + innerNode.type !== AST_NODE_TYPES.Identifier && + innerNode.type !== AST_NODE_TYPES.MemberExpression && + innerNode.type !== AST_NODE_TYPES.CallExpression + ) { + // we are wrapping something else than a simple variable or function call + // the code we are adding might have stronger precedence than our wrapped node + // let's wrap our node in parens in case it has a weaker precedence than the code we are wrapping it in + code = `(${code})`; + } + + // do the wrapping + code = wrap(code); + + let parent = util.nullThrows( + node.parent, + util.NullThrowsReasons.MissingParent, + ); + + // check the outer expression's precedence + if ( + parent.type !== AST_NODE_TYPES.IfStatement && + parent.type !== AST_NODE_TYPES.ForStatement && + parent.type !== AST_NODE_TYPES.WhileStatement && + parent.type !== AST_NODE_TYPES.DoWhileStatement + ) { + // the whole expression's parent is something else than condition of if/for/while + // we wrapped the node in some expression which very likely has a different precedence than original wrapped node + // let's wrap the whole expression in parens just in case + if (!util.isParenthesized(node, sourceCode)) { + code = `(${code})`; + } + } + + // check if we need to insert semicolon + for (;;) { + const prevParent = parent; + parent = parent.parent!; + if ( + parent.type === AST_NODE_TYPES.LogicalExpression || + parent.type === AST_NODE_TYPES.BinaryExpression + ) { + if (parent.left === prevParent) { + // the next parent is a binary expression and current node is on the left + continue; + } + } + if (parent.type === AST_NODE_TYPES.ExpressionStatement) { + const block = parent.parent!; + if ( + block.type === AST_NODE_TYPES.Program || + block.type === AST_NODE_TYPES.BlockStatement + ) { + // the next parent is an expression in a block + const statementIndex = block.body.indexOf(parent); + const previousStatement = block.body[statementIndex - 1]; + if ( + statementIndex > 0 && + sourceCode.getLastToken(previousStatement)!.value !== ';' + ) { + // the previous statement in a block doesn't end with a semicolon + code = `;${code}`; + } + } + } + break; + } + + return fixer.replaceText(node, code); + }; +} diff --git a/packages/eslint-plugin/src/util/index.ts b/packages/eslint-plugin/src/util/index.ts index fc5346f73466..e7bb53547fc8 100644 --- a/packages/eslint-plugin/src/util/index.ts +++ b/packages/eslint-plugin/src/util/index.ts @@ -4,6 +4,7 @@ export * from './astUtils'; export * from './collectUnusedVariables'; export * from './createRule'; export * from './getFunctionHeadLoc'; +export * from './getWrappingFixer'; export * from './isTypeReadonly'; export * from './misc'; export * from './nullThrows'; diff --git a/packages/eslint-plugin/tests/rules/strict-boolean-expressions.test.ts b/packages/eslint-plugin/tests/rules/strict-boolean-expressions.test.ts index 0d697ebb905d..d24de92ac65f 100644 --- a/packages/eslint-plugin/tests/rules/strict-boolean-expressions.test.ts +++ b/packages/eslint-plugin/tests/rules/strict-boolean-expressions.test.ts @@ -1,13 +1,13 @@ import * as path from 'path'; import rule, { - Options, MessageId, + Options, } from '../../src/rules/strict-boolean-expressions'; import { batchedSingleLineTests, getFixturesRootDir, - RuleTester, noFormat, + RuleTester, } from '../RuleTester'; const rootPath = getFixturesRootDir(); @@ -142,13 +142,49 @@ if (x) { { allowString: false, allowNumber: false, allowNullableObject: false }, ], code: noFormat` - if (true && 1) {} - while (false || "a") {} + if (true && (1 + 1)) {} + while (false || "a" + "b") {} (x: object) => true || false || x ? true : false; `, errors: [ - { messageId: 'conditionErrorNumber', line: 2, column: 13 }, - { messageId: 'conditionErrorString', line: 3, column: 25 }, + { + messageId: 'conditionErrorNumber', + line: 2, + column: 14, + suggestions: [ + { + messageId: 'conditionFixCompareZero', + output: 'if (true && ((1 + 1) !== 0)) {}', + }, + { + messageId: 'conditionFixCompareNaN', + output: 'if (true && (!Number.isNaN((1 + 1)))) {}', + }, + { + messageId: 'conditionFixCastBoolean', + output: 'if (true && (Boolean((1 + 1)))) {}', + }, + ], + }, + { + messageId: 'conditionErrorString', + line: 3, + column: 25, + suggestions: [ + { + messageId: 'conditionFixCompareStringLength', + output: ' while (false || (("a" + "b").length > 0)) {}', + }, + { + messageId: 'conditionFixCompareEmptyString', + output: ' while (false || (("a" + "b") !== "")) {}', + }, + { + messageId: 'conditionFixCastBoolean', + output: ' while (false || (Boolean(("a" + "b")))) {}', + }, + ], + }, { messageId: 'conditionErrorObject', line: 4, column: 41 }, ], }), @@ -158,15 +194,48 @@ if (x) { options: [ { allowString: false, allowNumber: false, allowNullableObject: false }, ], - code: ` - if (('' && {}) || (0 && void 0)) { - } - `, + code: noFormat`if (('' && {}) || (0 && void 0)) { }`, errors: [ - { messageId: 'conditionErrorString', line: 2, column: 14 }, - { messageId: 'conditionErrorObject', line: 2, column: 20 }, - { messageId: 'conditionErrorNumber', line: 2, column: 28 }, - { messageId: 'conditionErrorNullish', line: 2, column: 33 }, + { + messageId: 'conditionErrorString', + line: 1, + column: 6, + suggestions: [ + { + messageId: 'conditionFixCompareStringLength', + output: noFormat`if (((''.length > 0) && {}) || (0 && void 0)) { }`, + }, + { + messageId: 'conditionFixCompareEmptyString', + output: noFormat`if ((('' !== "") && {}) || (0 && void 0)) { }`, + }, + { + messageId: 'conditionFixCastBoolean', + output: noFormat`if (((Boolean('')) && {}) || (0 && void 0)) { }`, + }, + ], + }, + { messageId: 'conditionErrorObject', line: 1, column: 12 }, + { + messageId: 'conditionErrorNumber', + line: 1, + column: 20, + suggestions: [ + { + messageId: 'conditionFixCompareZero', + output: noFormat`if (('' && {}) || ((0 !== 0) && void 0)) { }`, + }, + { + messageId: 'conditionFixCompareNaN', + output: noFormat`if (('' && {}) || ((!Number.isNaN(0)) && void 0)) { }`, + }, + { + messageId: 'conditionFixCastBoolean', + output: noFormat`if (('' && {}) || ((Boolean(0)) && void 0)) { }`, + }, + ], + }, + { messageId: 'conditionErrorNullish', line: 1, column: 25 }, ], }, @@ -213,15 +282,105 @@ if (x) { while ("") {} for (; "foo";) {} declare const x: string; if (x) {} - (x: string) => !x; + (x: string) => (!x); (x: T) => x ? 1 : 0; `, errors: [ - { messageId: 'conditionErrorString', line: 2, column: 8 }, - { messageId: 'conditionErrorString', line: 3, column: 16 }, - { messageId: 'conditionErrorString', line: 4, column: 38 }, - { messageId: 'conditionErrorString', line: 5, column: 25 }, - { messageId: 'conditionErrorString', line: 6, column: 37 }, + { + messageId: 'conditionErrorString', + line: 2, + column: 8, + suggestions: [ + { + messageId: 'conditionFixCompareStringLength', + output: `while ("".length > 0) {}`, + }, + { + messageId: 'conditionFixCompareEmptyString', + output: `while ("" !== "") {}`, + }, + { + messageId: 'conditionFixCastBoolean', + output: `while (Boolean("")) {}`, + }, + ], + }, + { + messageId: 'conditionErrorString', + line: 3, + column: 16, + suggestions: [ + { + messageId: 'conditionFixCompareStringLength', + output: ` for (; "foo".length > 0;) {}`, + }, + { + messageId: 'conditionFixCompareEmptyString', + output: ` for (; "foo" !== "";) {}`, + }, + { + messageId: 'conditionFixCastBoolean', + output: ` for (; Boolean("foo");) {}`, + }, + ], + }, + { + messageId: 'conditionErrorString', + line: 4, + column: 38, + suggestions: [ + { + messageId: 'conditionFixCompareStringLength', + output: ` declare const x: string; if (x.length > 0) {}`, + }, + { + messageId: 'conditionFixCompareEmptyString', + output: ` declare const x: string; if (x !== "") {}`, + }, + { + messageId: 'conditionFixCastBoolean', + output: ` declare const x: string; if (Boolean(x)) {}`, + }, + ], + }, + { + messageId: 'conditionErrorString', + line: 5, + column: 26, + suggestions: [ + { + messageId: 'conditionFixCompareStringLength', + output: ` (x: string) => (x.length === 0);`, + }, + { + messageId: 'conditionFixCompareEmptyString', + output: ` (x: string) => (x === "");`, + }, + { + messageId: 'conditionFixCastBoolean', + output: ` (x: string) => (!Boolean(x));`, + }, + ], + }, + { + messageId: 'conditionErrorString', + line: 6, + column: 37, + suggestions: [ + { + messageId: 'conditionFixCompareStringLength', + output: ` (x: T) => (x.length > 0) ? 1 : 0;`, + }, + { + messageId: 'conditionFixCompareEmptyString', + output: ` (x: T) => (x !== "") ? 1 : 0;`, + }, + { + messageId: 'conditionFixCastBoolean', + output: ` (x: T) => (Boolean(x)) ? 1 : 0;`, + }, + ], + }, ], }), @@ -233,15 +392,169 @@ if (x) { for (; 123;) {} declare const x: number; if (x) {} (x: bigint) => !x; - (x: T) => x ? 1 : 0; + (x: T) => (x) ? 1 : 0; + ![]["length"]; // doesn't count as array.length when computed + declare const a: any[] & { notLength: number }; if (a.notLength) {} + `, + errors: [ + { + messageId: 'conditionErrorNumber', + line: 2, + column: 8, + suggestions: [ + { + messageId: 'conditionFixCompareZero', + // TODO: fix compare zero suggestion for bigint + output: `while (0n !== 0) {}`, + }, + { + // TODO: remove check NaN suggestion for bigint + messageId: 'conditionFixCompareNaN', + output: `while (!Number.isNaN(0n)) {}`, + }, + { + messageId: 'conditionFixCastBoolean', + output: `while (Boolean(0n)) {}`, + }, + ], + }, + { + messageId: 'conditionErrorNumber', + line: 3, + column: 16, + suggestions: [ + { + messageId: 'conditionFixCompareZero', + output: ` for (; 123 !== 0;) {}`, + }, + { + messageId: 'conditionFixCompareNaN', + output: ` for (; !Number.isNaN(123);) {}`, + }, + { + messageId: 'conditionFixCastBoolean', + output: ` for (; Boolean(123);) {}`, + }, + ], + }, + { + messageId: 'conditionErrorNumber', + line: 4, + column: 38, + suggestions: [ + { + messageId: 'conditionFixCompareZero', + output: ` declare const x: number; if (x !== 0) {}`, + }, + { + messageId: 'conditionFixCompareNaN', + output: ` declare const x: number; if (!Number.isNaN(x)) {}`, + }, + { + messageId: 'conditionFixCastBoolean', + output: ` declare const x: number; if (Boolean(x)) {}`, + }, + ], + }, + { + messageId: 'conditionErrorNumber', + line: 5, + column: 25, + suggestions: [ + { + messageId: 'conditionFixCompareZero', + // TODO: fix compare zero suggestion for bigint + output: ` (x: bigint) => (x === 0);`, + }, + { + // TODO: remove check NaN suggestion for bigint + messageId: 'conditionFixCompareNaN', + output: ` (x: bigint) => (Number.isNaN(x));`, + }, + { + messageId: 'conditionFixCastBoolean', + output: ` (x: bigint) => (!Boolean(x));`, + }, + ], + }, + { + messageId: 'conditionErrorNumber', + line: 6, + column: 38, + suggestions: [ + { + messageId: 'conditionFixCompareZero', + output: ` (x: T) => (x !== 0) ? 1 : 0;`, + }, + { + messageId: 'conditionFixCompareNaN', + output: ` (x: T) => (!Number.isNaN(x)) ? 1 : 0;`, + }, + { + messageId: 'conditionFixCastBoolean', + output: ` (x: T) => (Boolean(x)) ? 1 : 0;`, + }, + ], + }, + { + messageId: 'conditionErrorNumber', + line: 7, + column: 10, + suggestions: [ + { + messageId: 'conditionFixCompareZero', + output: ` ([]["length"] === 0); // doesn't count as array.length when computed`, + }, + { + messageId: 'conditionFixCompareNaN', + output: ` (Number.isNaN([]["length"])); // doesn't count as array.length when computed`, + }, + { + messageId: 'conditionFixCastBoolean', + output: ` (!Boolean([]["length"])); // doesn't count as array.length when computed`, + }, + ], + }, + { + messageId: 'conditionErrorNumber', + line: 8, + column: 61, + suggestions: [ + { + messageId: 'conditionFixCompareZero', + output: ` declare const a: any[] & { notLength: number }; if (a.notLength !== 0) {}`, + }, + { + messageId: 'conditionFixCompareNaN', + output: ` declare const a: any[] & { notLength: number }; if (!Number.isNaN(a.notLength)) {}`, + }, + { + messageId: 'conditionFixCastBoolean', + output: ` declare const a: any[] & { notLength: number }; if (Boolean(a.notLength)) {}`, + }, + ], + }, + ], + }), + + // number (array.length) in boolean context + ...batchedSingleLineTests({ + options: [{ allowNumber: false }], + code: noFormat` + if (![].length) {} + (a: number[]) => a.length && "..." + (...a: T) => a.length || "empty"; `, errors: [ - { messageId: 'conditionErrorNumber', line: 2, column: 8 }, - { messageId: 'conditionErrorNumber', line: 3, column: 16 }, - { messageId: 'conditionErrorNumber', line: 4, column: 38 }, - { messageId: 'conditionErrorNumber', line: 5, column: 25 }, - { messageId: 'conditionErrorNumber', line: 6, column: 37 }, + { messageId: 'conditionErrorNumber', line: 2, column: 6 }, + { messageId: 'conditionErrorNumber', line: 3, column: 26 }, + { messageId: 'conditionErrorNumber', line: 4, column: 43 }, ], + output: noFormat` + if ([].length === 0) {} + (a: number[]) => (a.length > 0) && "..." + (...a: T) => (a.length > 0) || "empty"; + `, }), // mixed `string | number` value in boolean context @@ -268,9 +581,51 @@ if (x) { (x: T) => x ? 1 : 0; `, errors: [ - { messageId: 'conditionErrorNullableBoolean', line: 2, column: 38 }, - { messageId: 'conditionErrorNullableBoolean', line: 3, column: 27 }, - { messageId: 'conditionErrorNullableBoolean', line: 4, column: 57 }, + { + messageId: 'conditionErrorNullableBoolean', + line: 2, + column: 38, + suggestions: [ + { + messageId: 'conditionFixDefaultFalse', + output: `declare const x: boolean | null; if (x ?? false) {}`, + }, + { + messageId: 'conditionFixCompareTrue', + output: `declare const x: boolean | null; if (x === true) {}`, + }, + ], + }, + { + messageId: 'conditionErrorNullableBoolean', + line: 3, + column: 27, + suggestions: [ + { + messageId: 'conditionFixDefaultFalse', + output: ` (x?: boolean) => !(x ?? false);`, + }, + { + messageId: 'conditionFixCompareFalse', + output: ` (x?: boolean) => (x === false);`, + }, + ], + }, + { + messageId: 'conditionErrorNullableBoolean', + line: 4, + column: 57, + suggestions: [ + { + messageId: 'conditionFixDefaultFalse', + output: ` (x: T) => (x ?? false) ? 1 : 0;`, + }, + { + messageId: 'conditionFixCompareTrue', + output: ` (x: T) => (x === true) ? 1 : 0;`, + }, + ], + }, ], }), @@ -287,6 +642,11 @@ if (x) { { messageId: 'conditionErrorNullableObject', line: 3, column: 33 }, { messageId: 'conditionErrorNullableObject', line: 4, column: 52 }, ], + output: noFormat` + declare const x: object | null; if (x != null) {} + (x?: { a: number }) => (x == null); + (x: T) => (x != null) ? 1 : 0; + `, }), // nullable string in boolean context @@ -297,9 +657,66 @@ if (x) { (x: T) => x ? 1 : 0; `, errors: [ - { messageId: 'conditionErrorNullableString', line: 2, column: 37 }, - { messageId: 'conditionErrorNullableString', line: 3, column: 26 }, - { messageId: 'conditionErrorNullableString', line: 4, column: 56 }, + { + messageId: 'conditionErrorNullableString', + line: 2, + column: 37, + suggestions: [ + { + messageId: 'conditionFixCompareNullish', + output: 'declare const x: string | null; if (x != null) {}', + }, + { + messageId: 'conditionFixDefaultEmptyString', + output: 'declare const x: string | null; if (x ?? "") {}', + }, + { + messageId: 'conditionFixCastBoolean', + output: 'declare const x: string | null; if (Boolean(x)) {}', + }, + ], + }, + { + messageId: 'conditionErrorNullableString', + line: 3, + column: 26, + suggestions: [ + { + messageId: 'conditionFixCompareNullish', + output: ' (x?: string) => (x == null);', + }, + { + messageId: 'conditionFixDefaultEmptyString', + output: ' (x?: string) => !(x ?? "");', + }, + { + messageId: 'conditionFixCastBoolean', + output: ' (x?: string) => (!Boolean(x));', + }, + ], + }, + { + messageId: 'conditionErrorNullableString', + line: 4, + column: 56, + suggestions: [ + { + messageId: 'conditionFixCompareNullish', + output: + ' (x: T) => (x != null) ? 1 : 0;', + }, + { + messageId: 'conditionFixDefaultEmptyString', + output: + ' (x: T) => (x ?? "") ? 1 : 0;', + }, + { + messageId: 'conditionFixCastBoolean', + output: + ' (x: T) => (Boolean(x)) ? 1 : 0;', + }, + ], + }, ], }), @@ -311,9 +728,66 @@ if (x) { (x: T) => x ? 1 : 0; `, errors: [ - { messageId: 'conditionErrorNullableNumber', line: 2, column: 37 }, - { messageId: 'conditionErrorNullableNumber', line: 3, column: 26 }, - { messageId: 'conditionErrorNullableNumber', line: 4, column: 56 }, + { + messageId: 'conditionErrorNullableNumber', + line: 2, + column: 37, + suggestions: [ + { + messageId: 'conditionFixCompareNullish', + output: 'declare const x: number | null; if (x != null) {}', + }, + { + messageId: 'conditionFixDefaultZero', + output: 'declare const x: number | null; if (x ?? 0) {}', + }, + { + messageId: 'conditionFixCastBoolean', + output: 'declare const x: number | null; if (Boolean(x)) {}', + }, + ], + }, + { + messageId: 'conditionErrorNullableNumber', + line: 3, + column: 26, + suggestions: [ + { + messageId: 'conditionFixCompareNullish', + output: ' (x?: number) => (x == null);', + }, + { + messageId: 'conditionFixDefaultZero', + output: ' (x?: number) => !(x ?? 0);', + }, + { + messageId: 'conditionFixCastBoolean', + output: ' (x?: number) => (!Boolean(x));', + }, + ], + }, + { + messageId: 'conditionErrorNullableNumber', + line: 4, + column: 56, + suggestions: [ + { + messageId: 'conditionFixCompareNullish', + output: + ' (x: T) => (x != null) ? 1 : 0;', + }, + { + messageId: 'conditionFixDefaultZero', + output: + ' (x: T) => (x ?? 0) ? 1 : 0;', + }, + { + messageId: 'conditionFixCastBoolean', + output: + ' (x: T) => (Boolean(x)) ? 1 : 0;', + }, + ], + }, ], }), @@ -326,11 +800,43 @@ if (x) { (x: T) => x ? 1 : 0; `, errors: [ - { messageId: 'conditionErrorAny', line: 2, column: 5 }, - { messageId: 'conditionErrorAny', line: 3, column: 15 }, - { messageId: 'conditionErrorAny', line: 4, column: 34 }, + { + messageId: 'conditionErrorAny', + line: 2, + column: 5, + suggestions: [ + { + messageId: 'conditionFixCastBoolean', + output: 'if (Boolean(x)) {}', + }, + ], + }, + { + messageId: 'conditionErrorAny', + line: 3, + column: 15, + suggestions: [ + { + messageId: 'conditionFixCastBoolean', + output: ' x => !(Boolean(x));', + }, + ], + }, + { + messageId: 'conditionErrorAny', + line: 4, + column: 34, + suggestions: [ + { + messageId: 'conditionFixCastBoolean', + output: ' (x: T) => (Boolean(x)) ? 1 : 0;', + }, + ], + }, ], }), + + // noStrictNullCheck { code: ` declare const x: string[] | null; @@ -353,5 +859,27 @@ if (x) { tsconfigRootDir: path.join(rootPath, 'unstrict'), }, }, + + // automatic semicolon insertion test + { + options: [{ allowNullableObject: false }], + code: noFormat` + declare const obj: { x: number } | null; + !obj + obj || 0 + obj && 1 || 0 + `, + errors: [ + { messageId: 'conditionErrorNullableObject', line: 3, column: 10 }, + { messageId: 'conditionErrorNullableObject', line: 4, column: 9 }, + { messageId: 'conditionErrorNullableObject', line: 5, column: 9 }, + ], + output: noFormat` + declare const obj: { x: number } | null; + (obj == null) + ;(obj != null) || 0 + ;(obj != null) && 1 || 0 + `, + }, ], }); From cb2256168c67e0383083673a5afe77076de49da5 Mon Sep 17 00:00:00 2001 From: Zen <843968788@qq.com> Date: Tue, 9 Mar 2021 01:35:23 +0800 Subject: [PATCH 13/14] fix(eslint-plugin): [no-unnecessary-type-assertion] handle assignment (#3133) --- .../rules/no-unnecessary-type-assertion.ts | 19 +++++++++ packages/eslint-plugin/src/util/types.ts | 8 ++++ .../no-unnecessary-type-assertion.test.ts | 40 +++++++++++++++++++ 3 files changed, 67 insertions(+) diff --git a/packages/eslint-plugin/src/rules/no-unnecessary-type-assertion.ts b/packages/eslint-plugin/src/rules/no-unnecessary-type-assertion.ts index 634d8b890ce1..5ae12f5a33d6 100644 --- a/packages/eslint-plugin/src/rules/no-unnecessary-type-assertion.ts +++ b/packages/eslint-plugin/src/rules/no-unnecessary-type-assertion.ts @@ -135,7 +135,26 @@ export default util.createRule({ return { TSNonNullExpression(node): void { + if ( + node.parent?.type === AST_NODE_TYPES.AssignmentExpression && + node.parent?.operator === '=' && + node.parent.left === node + ) { + context.report({ + node, + messageId: 'contextuallyUnnecessary', + fix(fixer) { + return fixer.removeRange([ + node.expression.range[1], + node.range[1], + ]); + }, + }); + return; + } + const originalNode = parserServices.esTreeNodeToTSNodeMap.get(node); + const type = util.getConstrainedTypeAtLocation( checker, originalNode.expression, diff --git a/packages/eslint-plugin/src/util/types.ts b/packages/eslint-plugin/src/util/types.ts index d29349f812fc..920ce66de02f 100644 --- a/packages/eslint-plugin/src/util/types.ts +++ b/packages/eslint-plugin/src/util/types.ts @@ -11,6 +11,7 @@ import { isVariableDeclaration, unionTypeParts, isPropertyAssignment, + isBinaryExpression, } from 'tsutils'; import * as ts from 'typescript'; @@ -498,6 +499,13 @@ export function getContextualType( return checker.getContextualType(parent); } else if (isPropertyAssignment(parent) && isIdentifier(node)) { return checker.getContextualType(node); + } else if ( + isBinaryExpression(parent) && + parent.operatorToken.kind === ts.SyntaxKind.EqualsToken && + parent.right === node + ) { + // is RHS of assignment + return checker.getTypeAtLocation(parent.left); } else if ( ![ts.SyntaxKind.TemplateSpan, ts.SyntaxKind.JsxExpression].includes( parent.kind, diff --git a/packages/eslint-plugin/tests/rules/no-unnecessary-type-assertion.test.ts b/packages/eslint-plugin/tests/rules/no-unnecessary-type-assertion.test.ts index f5671dd5d6b9..65d0874dd3af 100644 --- a/packages/eslint-plugin/tests/rules/no-unnecessary-type-assertion.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unnecessary-type-assertion.test.ts @@ -186,6 +186,22 @@ const c = [...a, ...b]; { code: "const a = { foo: 'foo' };", }, + { + code: ` +let a: number | undefined; +let b: number | undefined; +let c: number; +a = b; +c = b!; +a! -= 1; + `, + }, + { + code: ` +let a: { b?: string } | undefined; +a!.b = ''; + `, + }, ], invalid: [ @@ -451,5 +467,29 @@ function Test(props: { id?: string | number }) { ], filename: 'react.tsx', }, + { + code: ` +let x: number | undefined; +let y: number | undefined; +y = x!; +y! = 0; + `, + output: ` +let x: number | undefined; +let y: number | undefined; +y = x; +y = 0; + `, + errors: [ + { + messageId: 'contextuallyUnnecessary', + line: 4, + }, + { + messageId: 'contextuallyUnnecessary', + line: 5, + }, + ], + }, ], }); From dd25790a435edef78f6e972ab197b0bd0cfac0f4 Mon Sep 17 00:00:00 2001 From: James Henry Date: Mon, 8 Mar 2021 18:02:52 +0000 Subject: [PATCH 14/14] chore: publish v4.17.0 --- CHANGELOG.md | 16 ++++++++++++++++ lerna.json | 2 +- packages/eslint-plugin-internal/CHANGELOG.md | 8 ++++++++ packages/eslint-plugin-internal/package.json | 4 ++-- packages/eslint-plugin-tslint/CHANGELOG.md | 8 ++++++++ packages/eslint-plugin-tslint/package.json | 6 +++--- packages/eslint-plugin/CHANGELOG.md | 16 ++++++++++++++++ packages/eslint-plugin/package.json | 6 +++--- packages/experimental-utils/CHANGELOG.md | 8 ++++++++ packages/experimental-utils/package.json | 8 ++++---- packages/parser/CHANGELOG.md | 8 ++++++++ packages/parser/package.json | 10 +++++----- packages/scope-manager/CHANGELOG.md | 8 ++++++++ packages/scope-manager/package.json | 8 ++++---- packages/shared-fixtures/CHANGELOG.md | 8 ++++++++ packages/shared-fixtures/package.json | 2 +- packages/types/CHANGELOG.md | 8 ++++++++ packages/types/package.json | 2 +- packages/typescript-estree/CHANGELOG.md | 8 ++++++++ packages/typescript-estree/package.json | 8 ++++---- packages/visitor-keys/CHANGELOG.md | 8 ++++++++ packages/visitor-keys/package.json | 4 ++-- 22 files changed, 134 insertions(+), 30 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b47e3099906..3d173877642d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.17.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.16.1...v4.17.0) (2021-03-08) + + +### Bug Fixes + +* **eslint-plugin:** [no-unnecessary-type-assertion] handle assignment ([#3133](https://github.com/typescript-eslint/typescript-eslint/issues/3133)) ([cb22561](https://github.com/typescript-eslint/typescript-eslint/commit/cb2256168c67e0383083673a5afe77076de49da5)) + + +### Features + +* **eslint-plugin:** [strict-bool-expr] add fixes and suggestions ([#2847](https://github.com/typescript-eslint/typescript-eslint/issues/2847)) ([3f9e9a1](https://github.com/typescript-eslint/typescript-eslint/commit/3f9e9a1e9fc3e507bd01d1913ef642cd129de402)) + + + + + ## [4.16.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.16.0...v4.16.1) (2021-03-01) diff --git a/lerna.json b/lerna.json index df984d35e16c..f760626ee5dc 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "4.16.1", + "version": "4.17.0", "npmClient": "yarn", "useWorkspaces": true, "stream": true diff --git a/packages/eslint-plugin-internal/CHANGELOG.md b/packages/eslint-plugin-internal/CHANGELOG.md index fbfe59d26529..5f6039b50899 100644 --- a/packages/eslint-plugin-internal/CHANGELOG.md +++ b/packages/eslint-plugin-internal/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.17.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.16.1...v4.17.0) (2021-03-08) + +**Note:** Version bump only for package @typescript-eslint/eslint-plugin-internal + + + + + ## [4.16.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.16.0...v4.16.1) (2021-03-01) **Note:** Version bump only for package @typescript-eslint/eslint-plugin-internal diff --git a/packages/eslint-plugin-internal/package.json b/packages/eslint-plugin-internal/package.json index 8d6cc10ab338..0c8f39247c1a 100644 --- a/packages/eslint-plugin-internal/package.json +++ b/packages/eslint-plugin-internal/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/eslint-plugin-internal", - "version": "4.16.1", + "version": "4.17.0", "private": true, "main": "dist/index.js", "scripts": { @@ -14,7 +14,7 @@ }, "dependencies": { "@types/prettier": "*", - "@typescript-eslint/experimental-utils": "4.16.1", + "@typescript-eslint/experimental-utils": "4.17.0", "prettier": "*" } } diff --git a/packages/eslint-plugin-tslint/CHANGELOG.md b/packages/eslint-plugin-tslint/CHANGELOG.md index 423df7673046..1180462bd2b6 100644 --- a/packages/eslint-plugin-tslint/CHANGELOG.md +++ b/packages/eslint-plugin-tslint/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.17.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.16.1...v4.17.0) (2021-03-08) + +**Note:** Version bump only for package @typescript-eslint/eslint-plugin-tslint + + + + + ## [4.16.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.16.0...v4.16.1) (2021-03-01) **Note:** Version bump only for package @typescript-eslint/eslint-plugin-tslint diff --git a/packages/eslint-plugin-tslint/package.json b/packages/eslint-plugin-tslint/package.json index 1deff124a26e..6874c940ed4e 100644 --- a/packages/eslint-plugin-tslint/package.json +++ b/packages/eslint-plugin-tslint/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/eslint-plugin-tslint", - "version": "4.16.1", + "version": "4.17.0", "main": "dist/index.js", "typings": "src/index.ts", "description": "TSLint wrapper plugin for ESLint", @@ -38,7 +38,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/experimental-utils": "4.16.1", + "@typescript-eslint/experimental-utils": "4.17.0", "lodash": "^4.17.15" }, "peerDependencies": { @@ -48,6 +48,6 @@ }, "devDependencies": { "@types/lodash": "*", - "@typescript-eslint/parser": "4.16.1" + "@typescript-eslint/parser": "4.17.0" } } diff --git a/packages/eslint-plugin/CHANGELOG.md b/packages/eslint-plugin/CHANGELOG.md index 4b4fda7ee153..717d2a5f215c 100644 --- a/packages/eslint-plugin/CHANGELOG.md +++ b/packages/eslint-plugin/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.17.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.16.1...v4.17.0) (2021-03-08) + + +### Bug Fixes + +* **eslint-plugin:** [no-unnecessary-type-assertion] handle assignment ([#3133](https://github.com/typescript-eslint/typescript-eslint/issues/3133)) ([cb22561](https://github.com/typescript-eslint/typescript-eslint/commit/cb2256168c67e0383083673a5afe77076de49da5)) + + +### Features + +* **eslint-plugin:** [strict-bool-expr] add fixes and suggestions ([#2847](https://github.com/typescript-eslint/typescript-eslint/issues/2847)) ([3f9e9a1](https://github.com/typescript-eslint/typescript-eslint/commit/3f9e9a1e9fc3e507bd01d1913ef642cd129de402)) + + + + + ## [4.16.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.16.0...v4.16.1) (2021-03-01) **Note:** Version bump only for package @typescript-eslint/eslint-plugin diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index 8391c2b25500..87cfd4ab8001 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/eslint-plugin", - "version": "4.16.1", + "version": "4.17.0", "description": "TypeScript plugin for ESLint", "keywords": [ "eslint", @@ -42,8 +42,8 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/experimental-utils": "4.16.1", - "@typescript-eslint/scope-manager": "4.16.1", + "@typescript-eslint/experimental-utils": "4.17.0", + "@typescript-eslint/scope-manager": "4.17.0", "debug": "^4.1.1", "functional-red-black-tree": "^1.0.1", "lodash": "^4.17.15", diff --git a/packages/experimental-utils/CHANGELOG.md b/packages/experimental-utils/CHANGELOG.md index 2776535130f6..cee45cb853b2 100644 --- a/packages/experimental-utils/CHANGELOG.md +++ b/packages/experimental-utils/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.17.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.16.1...v4.17.0) (2021-03-08) + +**Note:** Version bump only for package @typescript-eslint/experimental-utils + + + + + ## [4.16.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.16.0...v4.16.1) (2021-03-01) **Note:** Version bump only for package @typescript-eslint/experimental-utils diff --git a/packages/experimental-utils/package.json b/packages/experimental-utils/package.json index cb9baec6ed67..214b518e8eb6 100644 --- a/packages/experimental-utils/package.json +++ b/packages/experimental-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/experimental-utils", - "version": "4.16.1", + "version": "4.17.0", "description": "(Experimental) Utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -40,9 +40,9 @@ }, "dependencies": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.16.1", - "@typescript-eslint/types": "4.16.1", - "@typescript-eslint/typescript-estree": "4.16.1", + "@typescript-eslint/scope-manager": "4.17.0", + "@typescript-eslint/types": "4.17.0", + "@typescript-eslint/typescript-estree": "4.17.0", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" }, diff --git a/packages/parser/CHANGELOG.md b/packages/parser/CHANGELOG.md index fc98f1371930..c28cec93ad18 100644 --- a/packages/parser/CHANGELOG.md +++ b/packages/parser/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.17.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.16.1...v4.17.0) (2021-03-08) + +**Note:** Version bump only for package @typescript-eslint/parser + + + + + ## [4.16.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.16.0...v4.16.1) (2021-03-01) **Note:** Version bump only for package @typescript-eslint/parser diff --git a/packages/parser/package.json b/packages/parser/package.json index 4f306dd88b10..c1d8e83cae9c 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/parser", - "version": "4.16.1", + "version": "4.17.0", "description": "An ESLint custom parser which leverages TypeScript ESTree", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -44,14 +44,14 @@ "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" }, "dependencies": { - "@typescript-eslint/scope-manager": "4.16.1", - "@typescript-eslint/types": "4.16.1", - "@typescript-eslint/typescript-estree": "4.16.1", + "@typescript-eslint/scope-manager": "4.17.0", + "@typescript-eslint/types": "4.17.0", + "@typescript-eslint/typescript-estree": "4.17.0", "debug": "^4.1.1" }, "devDependencies": { "@types/glob": "*", - "@typescript-eslint/experimental-utils": "4.16.1", + "@typescript-eslint/experimental-utils": "4.17.0", "glob": "*", "typescript": "*" }, diff --git a/packages/scope-manager/CHANGELOG.md b/packages/scope-manager/CHANGELOG.md index f3cfeed1d185..dceda0dbd9de 100644 --- a/packages/scope-manager/CHANGELOG.md +++ b/packages/scope-manager/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.17.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.16.1...v4.17.0) (2021-03-08) + +**Note:** Version bump only for package @typescript-eslint/scope-manager + + + + + ## [4.16.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.16.0...v4.16.1) (2021-03-01) **Note:** Version bump only for package @typescript-eslint/scope-manager diff --git a/packages/scope-manager/package.json b/packages/scope-manager/package.json index c38f88ed26cb..f3347a3f541b 100644 --- a/packages/scope-manager/package.json +++ b/packages/scope-manager/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/scope-manager", - "version": "4.16.1", + "version": "4.17.0", "description": "TypeScript scope analyser for ESLint", "keywords": [ "eslint", @@ -39,12 +39,12 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "4.16.1", - "@typescript-eslint/visitor-keys": "4.16.1" + "@typescript-eslint/types": "4.17.0", + "@typescript-eslint/visitor-keys": "4.17.0" }, "devDependencies": { "@types/glob": "*", - "@typescript-eslint/typescript-estree": "4.16.1", + "@typescript-eslint/typescript-estree": "4.17.0", "glob": "*", "jest-specific-snapshot": "*", "make-dir": "*", diff --git a/packages/shared-fixtures/CHANGELOG.md b/packages/shared-fixtures/CHANGELOG.md index 04637206ddeb..499029da5326 100644 --- a/packages/shared-fixtures/CHANGELOG.md +++ b/packages/shared-fixtures/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.17.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.16.1...v4.17.0) (2021-03-08) + +**Note:** Version bump only for package @typescript-eslint/shared-fixtures + + + + + ## [4.16.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.16.0...v4.16.1) (2021-03-01) **Note:** Version bump only for package @typescript-eslint/shared-fixtures diff --git a/packages/shared-fixtures/package.json b/packages/shared-fixtures/package.json index f5558a30eb3f..3a4897315d2d 100644 --- a/packages/shared-fixtures/package.json +++ b/packages/shared-fixtures/package.json @@ -1,5 +1,5 @@ { "name": "@typescript-eslint/shared-fixtures", - "version": "4.16.1", + "version": "4.17.0", "private": true } diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index 627e088a3f67..2206d4d67a50 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.17.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.16.1...v4.17.0) (2021-03-08) + +**Note:** Version bump only for package @typescript-eslint/types + + + + + ## [4.16.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.16.0...v4.16.1) (2021-03-01) **Note:** Version bump only for package @typescript-eslint/types diff --git a/packages/types/package.json b/packages/types/package.json index 0d04bd8296f9..c6fcd11037e9 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/types", - "version": "4.16.1", + "version": "4.17.0", "description": "Types for the TypeScript-ESTree AST spec", "keywords": [ "eslint", diff --git a/packages/typescript-estree/CHANGELOG.md b/packages/typescript-estree/CHANGELOG.md index 5cee167088c2..3df66ed1e9ba 100644 --- a/packages/typescript-estree/CHANGELOG.md +++ b/packages/typescript-estree/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.17.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.16.1...v4.17.0) (2021-03-08) + +**Note:** Version bump only for package @typescript-eslint/typescript-estree + + + + + ## [4.16.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.16.0...v4.16.1) (2021-03-01) diff --git a/packages/typescript-estree/package.json b/packages/typescript-estree/package.json index 784d2b788a9a..fa0db38da5d3 100644 --- a/packages/typescript-estree/package.json +++ b/packages/typescript-estree/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/typescript-estree", - "version": "4.16.1", + "version": "4.17.0", "description": "A parser that converts TypeScript source code into an ESTree compatible form", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -41,8 +41,8 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "4.16.1", - "@typescript-eslint/visitor-keys": "4.16.1", + "@typescript-eslint/types": "4.17.0", + "@typescript-eslint/visitor-keys": "4.17.0", "debug": "^4.1.1", "globby": "^11.0.1", "is-glob": "^4.0.1", @@ -59,7 +59,7 @@ "@types/is-glob": "*", "@types/semver": "*", "@types/tmp": "*", - "@typescript-eslint/shared-fixtures": "4.16.1", + "@typescript-eslint/shared-fixtures": "4.17.0", "glob": "*", "jest-specific-snapshot": "*", "make-dir": "*", diff --git a/packages/visitor-keys/CHANGELOG.md b/packages/visitor-keys/CHANGELOG.md index e0ecce16f417..c3f97732be62 100644 --- a/packages/visitor-keys/CHANGELOG.md +++ b/packages/visitor-keys/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.17.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.16.1...v4.17.0) (2021-03-08) + +**Note:** Version bump only for package @typescript-eslint/visitor-keys + + + + + ## [4.16.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.16.0...v4.16.1) (2021-03-01) **Note:** Version bump only for package @typescript-eslint/visitor-keys diff --git a/packages/visitor-keys/package.json b/packages/visitor-keys/package.json index 4287d36b0c8f..78f382dcbd72 100644 --- a/packages/visitor-keys/package.json +++ b/packages/visitor-keys/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/visitor-keys", - "version": "4.16.1", + "version": "4.17.0", "description": "Visitor keys used to help traverse the TypeScript-ESTree AST", "keywords": [ "eslint", @@ -38,7 +38,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "4.16.1", + "@typescript-eslint/types": "4.17.0", "eslint-visitor-keys": "^2.0.0" }, "devDependencies": { pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy