From a45107559af6670fe942e04a8a9f44fccf264d2d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Oct 2022 04:20:42 -0700 Subject: [PATCH 001/193] chore: Bump @swc/jest from 0.2.22 to 0.2.23 (#5723) Bumps [@swc/jest](https://github.com/swc-project/jest) from 0.2.22 to 0.2.23. - [Release notes](https://github.com/swc-project/jest/releases) - [Commits](https://github.com/swc-project/jest/commits) --- updated-dependencies: - dependency-name: "@swc/jest" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 10a60b825f3..2dfcff43b4e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3786,11 +3786,12 @@ "@swc/core-win32-x64-msvc" "1.3.3" "@swc/jest@^0.2.21": - version "0.2.22" - resolved "https://registry.yarnpkg.com/@swc/jest/-/jest-0.2.22.tgz#70d02ac648c21a442016d7a0aa485577335a4c9a" - integrity sha512-PIUIk9IdB1oAVfF9zNIfYoMBoEhahrrSvyryFANas7swC1cF0L5HR0f9X4qfet46oyCHCBtNcSpN0XJEOFIKlw== + version "0.2.23" + resolved "https://registry.yarnpkg.com/@swc/jest/-/jest-0.2.23.tgz#0b7499d5927faaa090c5b7a4a0e35122968fef30" + integrity sha512-ZLj17XjHbPtNsgqjm83qizENw05emLkKGu3WuPUttcy9hkngl0/kcc7fDbcSBpADS0GUtsO+iKPjZFWVAtJSlA== dependencies: "@jest/create-cache-key-function" "^27.4.2" + jsonc-parser "^3.2.0" "@szmarczak/http-timer@^1.1.2": version "1.1.2" @@ -9603,6 +9604,11 @@ jsonc-parser@3.0.0, jsonc-parser@~3.0.0: resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA== +jsonc-parser@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" + integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" From 0a9e44e9b4f5ca7586b30124f14f603cbf43e25d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Oct 2022 04:20:59 -0700 Subject: [PATCH 002/193] chore: Bump jest-diff from 29.0.3 to 29.1.2 (#5724) Bumps [jest-diff](https://github.com/facebook/jest/tree/HEAD/packages/jest-diff) from 29.0.3 to 29.1.2. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v29.1.2/packages/jest-diff) --- updated-dependencies: - dependency-name: jest-diff dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 477 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 367 insertions(+), 110 deletions(-) diff --git a/yarn.lock b/yarn.lock index 2dfcff43b4e..fe4071cba3f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2037,6 +2037,18 @@ jest-util "^29.0.3" slash "^3.0.0" +"@jest/console@^29.1.2": + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.1.2.tgz#0ae975a70004696f8320490fcaa1a4152f7b62e4" + integrity sha512-ujEBCcYs82BTmRxqfHMQggSlkUZP63AE5YEaTPj7eFyJOzukkTorstOUC7L6nE3w5SYadGVAnTsQ/ZjTGL0qYQ== + dependencies: + "@jest/types" "^29.1.2" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^29.1.2" + jest-util "^29.1.2" + slash "^3.0.0" + "@jest/core@^29.0.3": version "29.0.3" resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.0.3.tgz#ba22a9cbd0c7ba36e04292e2093c547bf53ec1fd" @@ -2072,11 +2084,11 @@ strip-ansi "^6.0.0" "@jest/create-cache-key-function@^27.4.2", "@jest/create-cache-key-function@^29": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-29.0.3.tgz#b7285549f9d9886d22d99a68bec89c188ee635ff" - integrity sha512-DeWJE6YWL7Ll4sLeu0jmHUOX1UjGGxYUIt45GoNPuqEVl2RnQqMDpDswkrtdA0mJT92VIz2NtnWzYNafeaVYOA== + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-29.1.2.tgz#ba72143479abccc5ce7705e00fcbe89e4d6e1873" + integrity sha512-s7yfOwnDZhqTzLWOwWjv/Lbg9CkJ7bItz5OVrMa0d+g2bP+rFwDs7FpsKuYpym5tpdbDaXHnF3cbl/e01ZeUcw== dependencies: - "@jest/types" "^29.0.3" + "@jest/types" "^29.1.2" "@jest/environment@^29.0.3": version "29.0.3" @@ -2088,6 +2100,16 @@ "@types/node" "*" jest-mock "^29.0.3" +"@jest/environment@^29.1.2": + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.1.2.tgz#bb51a43fce9f960ba9a48f0b5b556f30618ebc0a" + integrity sha512-rG7xZ2UeOfvOVzoLIJ0ZmvPl4tBEQ2n73CZJSlzUjPw4or1oSWC0s0Rk0ZX+pIBJ04aVr6hLWFn1DFtrnf8MhQ== + dependencies: + "@jest/fake-timers" "^29.1.2" + "@jest/types" "^29.1.2" + "@types/node" "*" + jest-mock "^29.1.2" + "@jest/expect-utils@^29.0.3": version "29.0.3" resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.0.3.tgz#f5bb86f5565bf2dacfca31ccbd887684936045b2" @@ -2095,6 +2117,13 @@ dependencies: jest-get-type "^29.0.0" +"@jest/expect-utils@^29.1.2": + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.1.2.tgz#66dbb514d38f7d21456bc774419c9ae5cca3f88d" + integrity sha512-4a48bhKfGj/KAH39u0ppzNTABXQ8QPccWAFUFobWBaEMSMp+sB31Z2fK/l47c4a/Mu1po2ffmfAIPxXbVTXdtg== + dependencies: + jest-get-type "^29.0.0" + "@jest/expect@^29.0.3": version "29.0.3" resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.0.3.tgz#9dc7c46354eeb7a348d73881fba6402f5fdb2c30" @@ -2103,6 +2132,14 @@ expect "^29.0.3" jest-snapshot "^29.0.3" +"@jest/expect@^29.1.2": + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.1.2.tgz#334a86395f621f1ab63ad95b06a588b9114d7b7a" + integrity sha512-FXw/UmaZsyfRyvZw3M6POgSNqwmuOXJuzdNiMWW9LCYo0GRoRDhg+R5iq5higmRTHQY7hx32+j7WHwinRmoILQ== + dependencies: + expect "^29.1.2" + jest-snapshot "^29.1.2" + "@jest/fake-timers@^29.0.3": version "29.0.3" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.0.3.tgz#ad5432639b715d45a86a75c47fd75019bc36b22c" @@ -2115,6 +2152,18 @@ jest-mock "^29.0.3" jest-util "^29.0.3" +"@jest/fake-timers@^29.1.2": + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.1.2.tgz#f157cdf23b4da48ce46cb00fea28ed1b57fc271a" + integrity sha512-GppaEqS+QQYegedxVMpCe2xCXxxeYwQ7RsNx55zc8f+1q1qevkZGKequfTASI7ejmg9WwI+SJCrHe9X11bLL9Q== + dependencies: + "@jest/types" "^29.1.2" + "@sinonjs/fake-timers" "^9.1.2" + "@types/node" "*" + jest-message-util "^29.1.2" + jest-mock "^29.1.2" + jest-util "^29.1.2" + "@jest/globals@^29.0.3": version "29.0.3" resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.0.3.tgz#681950c430fdc13ff9aa89b2d8d572ac0e4a1bf5" @@ -2125,16 +2174,26 @@ "@jest/types" "^29.0.3" jest-mock "^29.0.3" +"@jest/globals@^29.1.2": + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.1.2.tgz#826ede84bc280ae7f789cb72d325c48cd048b9d3" + integrity sha512-uMgfERpJYoQmykAd0ffyMq8wignN4SvLUG6orJQRe9WAlTRc9cdpCaE/29qurXixYJVZWUqIBXhSk8v5xN1V9g== + dependencies: + "@jest/environment" "^29.1.2" + "@jest/expect" "^29.1.2" + "@jest/types" "^29.1.2" + jest-mock "^29.1.2" + "@jest/reporters@27.5.1", "@jest/reporters@^29", "@jest/reporters@^29.0.3": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.0.3.tgz#735f110e08b44b38729d8dbbb74063bdf5aba8a5" - integrity sha512-3+QU3d4aiyOWfmk1obDerie4XNCaD5Xo1IlKNde2yGEi02WQD+ZQD0i5Hgqm1e73sMV7kw6pMlCnprtEwEVwxw== + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.1.2.tgz#5520898ed0a4ecf69d8b671e1dc8465d0acdfa6e" + integrity sha512-X4fiwwyxy9mnfpxL0g9DD0KcTmEIqP0jUdnc2cfa9riHy+I6Gwwp5vOZiwyg0vZxfSDxrOlK9S4+340W4d+DAA== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.0.3" - "@jest/test-result" "^29.0.3" - "@jest/transform" "^29.0.3" - "@jest/types" "^29.0.3" + "@jest/console" "^29.1.2" + "@jest/test-result" "^29.1.2" + "@jest/transform" "^29.1.2" + "@jest/types" "^29.1.2" "@jridgewell/trace-mapping" "^0.3.15" "@types/node" "*" chalk "^4.0.0" @@ -2147,9 +2206,9 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-message-util "^29.0.3" - jest-util "^29.0.3" - jest-worker "^29.0.3" + jest-message-util "^29.1.2" + jest-util "^29.1.2" + jest-worker "^29.1.2" slash "^3.0.0" string-length "^4.0.1" strip-ansi "^6.0.0" @@ -2172,24 +2231,24 @@ callsites "^3.0.0" graceful-fs "^4.2.9" -"@jest/test-result@27.5.1", "@jest/test-result@^29", "@jest/test-result@^29.0.3": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.0.3.tgz#b03d8ef4c58be84cd5d5d3b24d4b4c8cabbf2746" - integrity sha512-vViVnQjCgTmbhDKEonKJPtcFe9G/CJO4/Np4XwYJah+lF2oI7KKeRp8t1dFvv44wN2NdbDb/qC6pi++Vpp0Dlg== +"@jest/test-result@27.5.1", "@jest/test-result@^29", "@jest/test-result@^29.0.3", "@jest/test-result@^29.1.2": + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.1.2.tgz#6a8d006eb2b31ce0287d1fc10d12b8ff8504f3c8" + integrity sha512-jjYYjjumCJjH9hHCoMhA8PCl1OxNeGgAoZ7yuGYILRJX9NjgzTN0pCT5qAoYR4jfOP8htIByvAlz9vfNSSBoVg== dependencies: - "@jest/console" "^29.0.3" - "@jest/types" "^29.0.3" + "@jest/console" "^29.1.2" + "@jest/types" "^29.1.2" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^29.0.3": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.0.3.tgz#0681061ad21fb8e293b49c4fdf7e631ca79240ba" - integrity sha512-Hf4+xYSWZdxTNnhDykr8JBs0yBN/nxOXyUQWfotBUqqy0LF9vzcFB0jm/EDNZCx587znLWTIgxcokW7WeZMobQ== +"@jest/test-sequencer@^29.1.2": + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.1.2.tgz#10bfd89c08bfdba382eb05cc79c1d23a01238a93" + integrity sha512-fU6dsUqqm8sA+cd85BmeF7Gu9DsXVWFdGn9taxM6xN1cKdcP/ivSgXh5QucFRFz1oZxKv3/9DYYbq0ULly3P/Q== dependencies: - "@jest/test-result" "^29.0.3" + "@jest/test-result" "^29.1.2" graceful-fs "^4.2.9" - jest-haste-map "^29.0.3" + jest-haste-map "^29.1.2" slash "^3.0.0" "@jest/transform@^29.0.3": @@ -2213,6 +2272,27 @@ slash "^3.0.0" write-file-atomic "^4.0.1" +"@jest/transform@^29.1.2": + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.1.2.tgz#20f814696e04f090421f6d505c14bbfe0157062a" + integrity sha512-2uaUuVHTitmkx1tHF+eBjb4p7UuzBG7SXIaA/hNIkaMP6K+gXYGxP38ZcrofzqN0HeZ7A90oqsOa97WU7WZkSw== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.1.2" + "@jridgewell/trace-mapping" "^0.3.15" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.1.2" + jest-regex-util "^29.0.0" + jest-util "^29.1.2" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.1" + "@jest/types@^29.0.3": version "29.0.3" resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.0.3.tgz#0be78fdddb1a35aeb2041074e55b860561c8ef63" @@ -2225,6 +2305,18 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" +"@jest/types@^29.1.2": + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.1.2.tgz#7442d32b16bcd7592d9614173078b8c334ec730a" + integrity sha512-DcXGtoTykQB5jiwCmVr8H4vdg2OJhQex3qPkG+ISyDO7xQXbt/4R6dowcRyPemRnkH7JoHvZuxPBdlq+9JxFCg== + dependencies: + "@jest/schemas" "^29.0.0" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" @@ -4846,12 +4938,12 @@ axobject-query@^2.2.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== -babel-jest@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.0.3.tgz#64e156a47a77588db6a669a88dedff27ed6e260f" - integrity sha512-ApPyHSOhS/sVzwUOQIWJmdvDhBsMG01HX9z7ogtkp1TToHGGUWFlnXJUIzCgKPSfiYLn3ibipCYzsKSURHEwLg== +babel-jest@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.1.2.tgz#540d3241925c55240fb0c742e3ffc5f33a501978" + integrity sha512-IuG+F3HTHryJb7gacC7SQ59A9kO56BctUsT67uJHp1mMCHUOMXpDwOHWGifWqdWVknN2WNkCVQELPjXx0aLJ9Q== dependencies: - "@jest/transform" "^29.0.3" + "@jest/transform" "^29.1.2" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" babel-preset-jest "^29.0.2" @@ -7297,6 +7389,17 @@ expect@^29.0.0, expect@^29.0.3: jest-message-util "^29.0.3" jest-util "^29.0.3" +expect@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.1.2.tgz#82f8f28d7d408c7c68da3a386a490ee683e1eced" + integrity sha512-AuAGn1uxva5YBbBlXb+2JPxJRuemZsmlGcapPXWNSBNsQtAULfjioREGBWuI0EOvYUKjDnrCy8PW5Zlr1md5mw== + dependencies: + "@jest/expect-utils" "^29.1.2" + jest-get-type "^29.0.0" + jest-matcher-utils "^29.1.2" + jest-message-util "^29.1.2" + jest-util "^29.1.2" + express@^4.17.3: version "4.18.1" resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" @@ -9095,28 +9198,28 @@ jest-changed-files@^29.0.0: execa "^5.0.0" p-limit "^3.1.0" -jest-circus@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.0.3.tgz#90faebc90295291cfc636b27dbd82e3bfb9e7a48" - integrity sha512-QeGzagC6Hw5pP+df1+aoF8+FBSgkPmraC1UdkeunWh0jmrp7wC0Hr6umdUAOELBQmxtKAOMNC3KAdjmCds92Zg== +jest-circus@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.1.2.tgz#4551068e432f169a53167fe1aef420cf51c8a735" + integrity sha512-ajQOdxY6mT9GtnfJRZBRYS7toNIJayiiyjDyoZcnvPRUPwJ58JX0ci0PKAKUo2C1RyzlHw0jabjLGKksO42JGA== dependencies: - "@jest/environment" "^29.0.3" - "@jest/expect" "^29.0.3" - "@jest/test-result" "^29.0.3" - "@jest/types" "^29.0.3" + "@jest/environment" "^29.1.2" + "@jest/expect" "^29.1.2" + "@jest/test-result" "^29.1.2" + "@jest/types" "^29.1.2" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" is-generator-fn "^2.0.0" - jest-each "^29.0.3" - jest-matcher-utils "^29.0.3" - jest-message-util "^29.0.3" - jest-runtime "^29.0.3" - jest-snapshot "^29.0.3" - jest-util "^29.0.3" + jest-each "^29.1.2" + jest-matcher-utils "^29.1.2" + jest-message-util "^29.1.2" + jest-runtime "^29.1.2" + jest-snapshot "^29.1.2" + jest-util "^29.1.2" p-limit "^3.1.0" - pretty-format "^29.0.3" + pretty-format "^29.1.2" slash "^3.0.0" stack-utils "^2.0.3" @@ -9139,42 +9242,42 @@ jest-cli@^29.0.3: yargs "^17.3.1" jest-config@27.5.1, jest-config@^29, jest-config@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.0.3.tgz#c2e52a8f5adbd18de79f99532d8332a19e232f13" - integrity sha512-U5qkc82HHVYe3fNu2CRXLN4g761Na26rWKf7CjM8LlZB3In1jadEkZdMwsE37rd9RSPV0NfYaCjHdk/gu3v+Ew== + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.1.2.tgz#7d004345ca4c09f5d8f802355f54494e90842f4d" + integrity sha512-EC3Zi86HJUOz+2YWQcJYQXlf0zuBhJoeyxLM6vb6qJsVmpP7KcCP1JnyF0iaqTaXdBP8Rlwsvs7hnKWQWWLwwA== dependencies: "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.0.3" - "@jest/types" "^29.0.3" - babel-jest "^29.0.3" + "@jest/test-sequencer" "^29.1.2" + "@jest/types" "^29.1.2" + babel-jest "^29.1.2" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.3" graceful-fs "^4.2.9" - jest-circus "^29.0.3" - jest-environment-node "^29.0.3" + jest-circus "^29.1.2" + jest-environment-node "^29.1.2" jest-get-type "^29.0.0" jest-regex-util "^29.0.0" - jest-resolve "^29.0.3" - jest-runner "^29.0.3" - jest-util "^29.0.3" - jest-validate "^29.0.3" + jest-resolve "^29.1.2" + jest-runner "^29.1.2" + jest-util "^29.1.2" + jest-validate "^29.1.2" micromatch "^4.0.4" parse-json "^5.2.0" - pretty-format "^29.0.3" + pretty-format "^29.1.2" slash "^3.0.0" strip-json-comments "^3.1.1" -jest-diff@*, jest-diff@^29, jest-diff@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.0.3.tgz#41cc02409ad1458ae1bf7684129a3da2856341ac" - integrity sha512-+X/AIF5G/vX9fWK+Db9bi9BQas7M9oBME7egU7psbn4jlszLFCu0dW63UgeE6cs/GANq4fLaT+8sGHQQ0eCUfg== +jest-diff@*, jest-diff@^29, jest-diff@^29.0.3, jest-diff@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.1.2.tgz#bb7aaf5353227d6f4f96c5e7e8713ce576a607dc" + integrity sha512-4GQts0aUopVvecIT4IwD/7xsBaMhKTYoM4/njE/aVw9wpw+pIUVp8Vab/KnSzSilr84GnLBkaP3JLDnQYCKqVQ== dependencies: chalk "^4.0.0" diff-sequences "^29.0.0" jest-get-type "^29.0.0" - pretty-format "^29.0.3" + pretty-format "^29.1.2" jest-docblock@^29.0.0: version "29.0.0" @@ -9183,16 +9286,16 @@ jest-docblock@^29.0.0: dependencies: detect-newline "^3.0.0" -jest-each@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.0.3.tgz#7ef3157580b15a609d7ef663dd4fc9b07f4e1299" - integrity sha512-wILhZfESURHHBNvPMJ0lZlYZrvOQJxAo3wNHi+ycr90V7M+uGR9Gh4+4a/BmaZF0XTyZsk4OiYEf3GJN7Ltqzg== +jest-each@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.1.2.tgz#d4c8532c07a846e79f194f7007ce7cb1987d1cd0" + integrity sha512-AmTQp9b2etNeEwMyr4jc0Ql/LIX/dhbgP21gHAizya2X6rUspHn2gysMXaj6iwWuOJ2sYRgP8c1P4cXswgvS1A== dependencies: - "@jest/types" "^29.0.3" + "@jest/types" "^29.1.2" chalk "^4.0.0" jest-get-type "^29.0.0" - jest-util "^29.0.3" - pretty-format "^29.0.3" + jest-util "^29.1.2" + pretty-format "^29.1.2" jest-environment-node@^29.0.3: version "29.0.3" @@ -9206,6 +9309,18 @@ jest-environment-node@^29.0.3: jest-mock "^29.0.3" jest-util "^29.0.3" +jest-environment-node@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.1.2.tgz#005e05cc6ea4b9b5ba55906ab1ce53c82f6907a7" + integrity sha512-C59yVbdpY8682u6k/lh8SUMDJPbOyCHOTgLVVi1USWFxtNV+J8fyIwzkg+RJIVI30EKhKiAGNxYaFr3z6eyNhQ== + dependencies: + "@jest/environment" "^29.1.2" + "@jest/fake-timers" "^29.1.2" + "@jest/types" "^29.1.2" + "@types/node" "*" + jest-mock "^29.1.2" + jest-util "^29.1.2" + jest-get-type@^29, jest-get-type@^29.0.0: version "29.0.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.0.0.tgz#843f6c50a1b778f7325df1129a0fd7aa713aef80" @@ -9230,6 +9345,25 @@ jest-haste-map@^29.0.3: optionalDependencies: fsevents "^2.3.2" +jest-haste-map@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.1.2.tgz#93f3634aa921b6b654e7c94137b24e02e7ca6ac9" + integrity sha512-xSjbY8/BF11Jh3hGSPfYTa/qBFrm3TPM7WU8pU93m2gqzORVLkHFWvuZmFsTEBPRKndfewXhMOuzJNHyJIZGsw== + dependencies: + "@jest/types" "^29.1.2" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.0.0" + jest-util "^29.1.2" + jest-worker "^29.1.2" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + jest-leak-detector@^29.0.3: version "29.0.3" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.0.3.tgz#e85cf3391106a7a250850b6766b508bfe9c7bc6f" @@ -9238,15 +9372,23 @@ jest-leak-detector@^29.0.3: jest-get-type "^29.0.0" pretty-format "^29.0.3" -jest-matcher-utils@^29, jest-matcher-utils@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.0.3.tgz#b8305fd3f9e27cdbc210b21fc7dbba92d4e54560" - integrity sha512-RsR1+cZ6p1hDV4GSCQTg+9qjeotQCgkaleIKLK7dm+U4V/H2bWedU3RAtLm8+mANzZ7eDV33dMar4pejd7047w== +jest-leak-detector@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.1.2.tgz#4c846db14c58219430ccbc4f01a1ec52ebee4fc2" + integrity sha512-TG5gAZJpgmZtjb6oWxBLf2N6CfQ73iwCe6cofu/Uqv9iiAm6g502CAnGtxQaTfpHECBdVEMRBhomSXeLnoKjiQ== + dependencies: + jest-get-type "^29.0.0" + pretty-format "^29.1.2" + +jest-matcher-utils@^29, jest-matcher-utils@^29.0.3, jest-matcher-utils@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.1.2.tgz#e68c4bcc0266e70aa1a5c13fb7b8cd4695e318a1" + integrity sha512-MV5XrD3qYSW2zZSHRRceFzqJ39B2z11Qv0KPyZYxnzDHFeYZGJlgGi0SW+IXSJfOewgJp/Km/7lpcFT+cgZypw== dependencies: chalk "^4.0.0" - jest-diff "^29.0.3" + jest-diff "^29.1.2" jest-get-type "^29.0.0" - pretty-format "^29.0.3" + pretty-format "^29.1.2" jest-message-util@^29.0.3: version "29.0.3" @@ -9263,6 +9405,21 @@ jest-message-util@^29.0.3: slash "^3.0.0" stack-utils "^2.0.3" +jest-message-util@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.1.2.tgz#c21a33c25f9dc1ebfcd0f921d89438847a09a501" + integrity sha512-9oJ2Os+Qh6IlxLpmvshVbGUiSkZVc2FK+uGOm6tghafnB2RyjKAxMZhtxThRMxfX1J1SOMhTn9oK3/MutRWQJQ== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.1.2" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.1.2" + slash "^3.0.0" + stack-utils "^2.0.3" + jest-mock@^29.0.3: version "29.0.3" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.0.3.tgz#4f0093f6a9cb2ffdb9c44a07a3912f0c098c8de9" @@ -9271,6 +9428,15 @@ jest-mock@^29.0.3: "@jest/types" "^29.0.3" "@types/node" "*" +jest-mock@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.1.2.tgz#de47807edbb9d4abf8423f1d8d308d670105678c" + integrity sha512-PFDAdjjWbjPUtQPkQufvniXIS3N9Tv7tbibePEjIIprzjgo0qQlyUiVMrT4vL8FaSJo1QXifQUOuPH3HQC/aMA== + dependencies: + "@jest/types" "^29.1.2" + "@types/node" "*" + jest-util "^29.1.2" + jest-pnp-resolver@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" @@ -9289,17 +9455,17 @@ jest-resolve-dependencies@^29.0.3: jest-regex-util "^29.0.0" jest-snapshot "^29.0.3" -jest-resolve@27.5.1, jest-resolve@^29, jest-resolve@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.0.3.tgz#329a3431e3b9eb6629a2cd483e9bed95b26827b9" - integrity sha512-toVkia85Y/BPAjJasTC9zIPY6MmVXQPtrCk8SmiheC4MwVFE/CMFlOtMN6jrwPMC6TtNh8+sTMllasFeu1wMPg== +jest-resolve@27.5.1, jest-resolve@^29, jest-resolve@^29.0.3, jest-resolve@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.1.2.tgz#9dd8c2fc83e59ee7d676b14bd45a5f89e877741d" + integrity sha512-7fcOr+k7UYSVRJYhSmJHIid3AnDBcLQX3VmT9OSbPWsWz1MfT7bcoerMhADKGvKCoMpOHUQaDHtQoNp/P9JMGg== dependencies: chalk "^4.0.0" graceful-fs "^4.2.9" - jest-haste-map "^29.0.3" + jest-haste-map "^29.1.2" jest-pnp-resolver "^1.2.2" - jest-util "^29.0.3" - jest-validate "^29.0.3" + jest-util "^29.1.2" + jest-validate "^29.1.2" resolve "^1.20.0" resolve.exports "^1.1.0" slash "^3.0.0" @@ -9331,6 +9497,33 @@ jest-runner@^29.0.3: p-limit "^3.1.0" source-map-support "0.5.13" +jest-runner@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.1.2.tgz#f18b2b86101341e047de8c2f51a5fdc4e97d053a" + integrity sha512-yy3LEWw8KuBCmg7sCGDIqKwJlULBuNIQa2eFSVgVASWdXbMYZ9H/X0tnXt70XFoGf92W2sOQDOIFAA6f2BG04Q== + dependencies: + "@jest/console" "^29.1.2" + "@jest/environment" "^29.1.2" + "@jest/test-result" "^29.1.2" + "@jest/transform" "^29.1.2" + "@jest/types" "^29.1.2" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.10.2" + graceful-fs "^4.2.9" + jest-docblock "^29.0.0" + jest-environment-node "^29.1.2" + jest-haste-map "^29.1.2" + jest-leak-detector "^29.1.2" + jest-message-util "^29.1.2" + jest-resolve "^29.1.2" + jest-runtime "^29.1.2" + jest-util "^29.1.2" + jest-watcher "^29.1.2" + jest-worker "^29.1.2" + p-limit "^3.1.0" + source-map-support "0.5.13" + jest-runtime@^29.0.3: version "29.0.3" resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.0.3.tgz#5a823ec5902257519556a4e5a71a868e8fd788aa" @@ -9359,10 +9552,38 @@ jest-runtime@^29.0.3: slash "^3.0.0" strip-bom "^4.0.0" -jest-snapshot@*, jest-snapshot@^27.0.2, jest-snapshot@^29, jest-snapshot@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.0.3.tgz#0a024706986a915a6eefae74d7343069d2fc8eef" - integrity sha512-52q6JChm04U3deq+mkQ7R/7uy7YyfVIrebMi6ZkBoDJ85yEjm/sJwdr1P0LOIEHmpyLlXrxy3QP0Zf5J2kj0ew== +jest-runtime@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.1.2.tgz#dbcd57103d61115479108d5864bdcd661d9c6783" + integrity sha512-jr8VJLIf+cYc+8hbrpt412n5jX3tiXmpPSYTGnwcvNemY+EOuLNiYnHJ3Kp25rkaAcTWOEI4ZdOIQcwYcXIAZw== + dependencies: + "@jest/environment" "^29.1.2" + "@jest/fake-timers" "^29.1.2" + "@jest/globals" "^29.1.2" + "@jest/source-map" "^29.0.0" + "@jest/test-result" "^29.1.2" + "@jest/transform" "^29.1.2" + "@jest/types" "^29.1.2" + "@types/node" "*" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.1.2" + jest-message-util "^29.1.2" + jest-mock "^29.1.2" + jest-regex-util "^29.0.0" + jest-resolve "^29.1.2" + jest-snapshot "^29.1.2" + jest-util "^29.1.2" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@*, jest-snapshot@^27.0.2, jest-snapshot@^29, jest-snapshot@^29.0.3, jest-snapshot@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.1.2.tgz#7dd277e88c45f2d2ff5888de1612e63c7ceb575b" + integrity sha512-rYFomGpVMdBlfwTYxkUp3sjD6usptvZcONFYNqVlaz4EpHPnDvlWjvmOQ9OCSNKqYZqLM2aS3wq01tWujLg7gg== dependencies: "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" @@ -9370,23 +9591,23 @@ jest-snapshot@*, jest-snapshot@^27.0.2, jest-snapshot@^29, jest-snapshot@^29.0.3 "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.0.3" - "@jest/transform" "^29.0.3" - "@jest/types" "^29.0.3" + "@jest/expect-utils" "^29.1.2" + "@jest/transform" "^29.1.2" + "@jest/types" "^29.1.2" "@types/babel__traverse" "^7.0.6" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^29.0.3" + expect "^29.1.2" graceful-fs "^4.2.9" - jest-diff "^29.0.3" + jest-diff "^29.1.2" jest-get-type "^29.0.0" - jest-haste-map "^29.0.3" - jest-matcher-utils "^29.0.3" - jest-message-util "^29.0.3" - jest-util "^29.0.3" + jest-haste-map "^29.1.2" + jest-matcher-utils "^29.1.2" + jest-message-util "^29.1.2" + jest-util "^29.1.2" natural-compare "^1.4.0" - pretty-format "^29.0.3" + pretty-format "^29.1.2" semver "^7.3.5" jest-specific-snapshot@*, jest-specific-snapshot@^5.0.0: @@ -9396,12 +9617,12 @@ jest-specific-snapshot@*, jest-specific-snapshot@^5.0.0: dependencies: jest-snapshot "^27.0.2" -jest-util@27.5.1, jest-util@^29, jest-util@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.0.3.tgz#06d1d77f9a1bea380f121897d78695902959fbc0" - integrity sha512-Q0xaG3YRG8QiTC4R6fHjHQPaPpz9pJBEi0AeOE4mQh/FuWOijFjGXMMOfQEaU9i3z76cNR7FobZZUQnL6IyfdQ== +jest-util@27.5.1, jest-util@^29, jest-util@^29.0.3, jest-util@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.1.2.tgz#ac5798e93cb6a6703084e194cfa0898d66126df1" + integrity sha512-vPCk9F353i0Ymx3WQq3+a4lZ07NXu9Ca8wya6o4Fe4/aO1e1awMMprZ3woPFpKwghEOW+UXgd15vVotuNN9ONQ== dependencies: - "@jest/types" "^29.0.3" + "@jest/types" "^29.1.2" "@types/node" "*" chalk "^4.0.0" ci-info "^3.2.0" @@ -9420,6 +9641,18 @@ jest-validate@^29.0.3: leven "^3.1.0" pretty-format "^29.0.3" +jest-validate@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.1.2.tgz#83a728b8f6354da2e52346878c8bc7383516ca51" + integrity sha512-k71pOslNlV8fVyI+mEySy2pq9KdXdgZtm7NHrBX8LghJayc3wWZH0Yr0mtYNGaCU4F1OLPXRkwZR0dBm/ClshA== + dependencies: + "@jest/types" "^29.1.2" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.0.0" + leven "^3.1.0" + pretty-format "^29.1.2" + jest-watcher@^29.0.3: version "29.0.3" resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.0.3.tgz#8e220d1cc4f8029875e82015d084cab20f33d57f" @@ -9434,6 +9667,20 @@ jest-watcher@^29.0.3: jest-util "^29.0.3" string-length "^4.0.1" +jest-watcher@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.1.2.tgz#de21439b7d889e2fcf62cc2a4779ef1a3f1f3c62" + integrity sha512-6JUIUKVdAvcxC6bM8/dMgqY2N4lbT+jZVsxh0hCJRbwkIEnbr/aPjMQ28fNDI5lB51Klh00MWZZeVf27KBUj5w== + dependencies: + "@jest/test-result" "^29.1.2" + "@jest/types" "^29.1.2" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.10.2" + jest-util "^29.1.2" + string-length "^4.0.1" + jest-worker@^26.2.1: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" @@ -9461,6 +9708,16 @@ jest-worker@^29.0.3: merge-stream "^2.0.0" supports-color "^8.0.0" +jest-worker@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.1.2.tgz#a68302af61bce82b42a9a57285ca7499d29b2afc" + integrity sha512-AdTZJxKjTSPHbXT/AIOjQVmoFx0LHFcVabWu0sxI7PAy7rFf8c0upyvgBKgguVXdM4vY74JdwkyD4hSmpTW8jA== + dependencies: + "@types/node" "*" + jest-util "^29.1.2" + merge-stream "^2.0.0" + supports-color "^8.0.0" + jest@^29.0.3: version "29.0.3" resolved "https://registry.yarnpkg.com/jest/-/jest-29.0.3.tgz#5227a0596d30791b2649eea347e4aa97f734944d" @@ -11832,10 +12089,10 @@ pretty-error@^4.0.0: lodash "^4.17.20" renderkid "^3.0.0" -pretty-format@*, pretty-format@^29, pretty-format@^29.0.0, pretty-format@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.0.3.tgz#23d5f8cabc9cbf209a77d49409d093d61166a811" - integrity sha512-cHudsvQr1K5vNVLbvYF/nv3Qy/F/BcEKxGuIeMiVMRHxPOO1RxXooP8g/ZrwAp7Dx+KdMZoOc7NxLHhMrP2f9Q== +pretty-format@*, pretty-format@^29, pretty-format@^29.0.0, pretty-format@^29.0.3, pretty-format@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.1.2.tgz#b1f6b75be7d699be1a051f5da36e8ae9e76a8e6a" + integrity sha512-CGJ6VVGXVRP2o2Dorl4mAwwvDWT25luIsYhkyVQW32E4nL+TgW939J7LlKT/npq5Cpq6j3s+sy+13yk7xYpBmg== dependencies: "@jest/schemas" "^29.0.0" ansi-styles "^5.0.0" @@ -13920,9 +14177,9 @@ typedarray@^0.0.6: integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= typescript@*, "typescript@>=3.3.1 <4.9.0", "typescript@^3 || ^4", typescript@^4.5.3, typescript@next, typescript@~4.7.4, typescript@~4.8.3: - version "4.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.3.tgz#d59344522c4bc464a65a730ac695007fdb66dd88" - integrity sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig== + version "4.8.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" + integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== ua-parser-js@^0.7.30: version "0.7.31" From 2eb70350b3d564a7889437c8795f47b487ee3c5d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Oct 2022 04:21:25 -0700 Subject: [PATCH 003/193] chore: Bump @types/lodash from 4.14.185 to 4.14.186 (#5726) Bumps [@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash) from 4.14.185 to 4.14.186. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash) --- updated-dependencies: - dependency-name: "@types/lodash" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] 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 fe4071cba3f..368ed3eb390 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4149,9 +4149,9 @@ integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= "@types/lodash@*", "@types/lodash@^4.14.182": - version "4.14.185" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.185.tgz#c9843f5a40703a8f5edfd53358a58ae729816908" - integrity sha512-evMDG1bC4rgQg4ku9tKpuMh5iBNEwNa3tf9zRHdP1qlv+1WUg44xat4IxCE14gIpZRGUUWAx2VhItCZc25NfMA== + version "4.14.186" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.186.tgz#862e5514dd7bd66ada6c70ee5fce844b06c8ee97" + integrity sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw== "@types/marked@*", "@types/marked@^4.0.3": version "4.0.3" From ca8b743ea981f1af78d1e1ff6f1ba8b37451d87b Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Tue, 4 Oct 2022 07:31:45 -0400 Subject: [PATCH 004/193] chore(website): fix border-shadow color in dark mode (#5703) --- packages/website/src/css/custom.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/website/src/css/custom.css b/packages/website/src/css/custom.css index 73d46606cb5..9c039bdc6f5 100644 --- a/packages/website/src/css/custom.css +++ b/packages/website/src/css/custom.css @@ -62,6 +62,8 @@ html[data-theme='dark']:root { --docsearch-muted-color: #aaa; --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); + + --gray-border-shadow: var(--ifm-color-secondary-dark); } .header-github-link:hover { From 2d1e0347543215b7dfda82c82e4c13289ba0947e Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Tue, 4 Oct 2022 07:32:21 -0400 Subject: [PATCH 005/193] chore(eslint-plugin): comma-spacing meta.type should be layout, not suggestion (#5705) --- packages/eslint-plugin/src/rules/comma-spacing.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/eslint-plugin/src/rules/comma-spacing.ts b/packages/eslint-plugin/src/rules/comma-spacing.ts index 5538fffe4a5..fda50d1b2e4 100644 --- a/packages/eslint-plugin/src/rules/comma-spacing.ts +++ b/packages/eslint-plugin/src/rules/comma-spacing.ts @@ -19,7 +19,7 @@ type MessageIds = 'unexpected' | 'missing'; export default createRule({ name: 'comma-spacing', meta: { - type: 'suggestion', + type: 'layout', docs: { description: 'Enforce consistent spacing before and after commas', recommended: false, From f8862b5b59203c5415f47059ccca1a27a8e45999 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Tue, 4 Oct 2022 07:33:17 -0400 Subject: [PATCH 006/193] chore(website): add typecheck task (#5714) --- packages/website/package.json | 3 ++- packages/website/src/components/ast/utils.ts | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/website/package.json b/packages/website/package.json index d1b28be8e5b..07a8083f717 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -11,7 +11,8 @@ "start": "docusaurus start", "swizzle": "docusaurus swizzle", "test": "cypress run", - "test:open": "cypress open" + "test:open": "cypress open", + "typecheck": "tsc" }, "dependencies": { "@babel/runtime": "^7.18.3", diff --git a/packages/website/src/components/ast/utils.ts b/packages/website/src/components/ast/utils.ts index 6c01ed7323e..de55a5c0720 100644 --- a/packages/website/src/components/ast/utils.ts +++ b/packages/website/src/components/ast/utils.ts @@ -20,7 +20,6 @@ export function isWithinRange( export function objType(obj: unknown): string { const type = Object.prototype.toString.call(obj).slice(8, -1); - // @ts-expect-error: this is correct check if (type === 'Object' && obj && typeof obj[Symbol.iterator] === 'function') { return 'Iterable'; } From 14d364fe2d4e4c4e24a910850361a6646cf096c7 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Tue, 4 Oct 2022 07:42:10 -0400 Subject: [PATCH 007/193] chore(website): split extension rules in sidebar too (#5708) --- packages/website/sidebars/sidebar.rules.js | 26 ++++++++++++++-------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/packages/website/sidebars/sidebar.rules.js b/packages/website/sidebars/sidebar.rules.js index b5075872411..e698d7cda05 100644 --- a/packages/website/sidebars/sidebar.rules.js +++ b/packages/website/sidebars/sidebar.rules.js @@ -13,14 +13,19 @@ const rules = Object.entries(plugin.rules).map(([name, rule]) => { const deprecatedRules = new Set(rules.filter(rule => rule.meta.deprecated)); const formattingRules = new Set( + rules.filter(rule => !rule.meta.deprecated && rule.meta.type === 'layout'), +); + +const extensionRules = new Set( rules.filter( - rule => !rule.meta.deprecated && rule.meta.fixable === 'whitespace', + rule => rule.meta.docs?.extendsBaseRule && !formattingRules.has(rule), ), ); -const emphasizedRules = rules.filter( +const typescriptRules = rules.filter( rule => !rule.meta.deprecated && + !extensionRules.has(rule) && !deprecatedRules.has(rule) && !formattingRules.has(rule), ); @@ -63,14 +68,17 @@ module.exports = { someSidebar: [ 'README', { - ...createCategory('Rules', emphasizedRules, [ - createCategory('Formatting Rules', Array.from(formattingRules)), - createCategory('Deprecated Rules', [ - ...Array.from(deprecatedRules), - ...paths, - ]), - ]), + ...createCategory('TypeScript Rules', Array.from(typescriptRules)), + collapsed: false, + }, + { + ...createCategory('Extension Rules', Array.from(extensionRules)), collapsed: false, }, + createCategory('Formatting Rules', Array.from(formattingRules)), + createCategory('Deprecated Rules', [ + ...Array.from(deprecatedRules), + ...paths, + ]), ], }; From 9205edb931ef2921fc91d3f9318d842bfc6ac2f5 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Tue, 4 Oct 2022 07:45:17 -0400 Subject: [PATCH 008/193] chore(website): set up as PWA (#5722) --- packages/website/docusaurusConfig.ts | 62 +- packages/website/package.json | 1 + packages/website/static/img/logo.png | Bin 3382 -> 4595 bytes packages/website/static/img/logo_maskable.png | Bin 0 -> 7709 bytes packages/website/static/manifest.json | 24 + yarn.lock | 661 +++++++++++++++++- 6 files changed, 734 insertions(+), 14 deletions(-) create mode 100644 packages/website/static/img/logo_maskable.png create mode 100644 packages/website/static/manifest.json diff --git a/packages/website/docusaurusConfig.ts b/packages/website/docusaurusConfig.ts index 1a9a41e548e..0ef589b005a 100644 --- a/packages/website/docusaurusConfig.ts +++ b/packages/website/docusaurusConfig.ts @@ -1,5 +1,6 @@ import type { MDXPlugin } from '@docusaurus/mdx-loader'; import type { Options as PluginContentDocsOptions } from '@docusaurus/plugin-content-docs'; +import type { Options as PluginPwaOptions } from '@docusaurus/plugin-pwa'; import type { Options as PresetClassicOptions } from '@docusaurus/preset-classic'; import npm2yarnPlugin from '@docusaurus/remark-plugin-npm2yarn'; import type { UserThemeConfig as ThemeCommonConfig } from '@docusaurus/theme-common'; @@ -65,14 +66,12 @@ const themeConfig: ThemeCommonConfig & AlgoliaThemeConfig = { image: 'img/logo-twitter-card.png', navbar: { title: 'TypeScript ESLint', - // hideOnScroll: true, logo: { alt: '', height: '32px', src: 'img/logo.svg', width: '32px', }, - // style: 'primary', items: [ { to: 'docs/', @@ -140,7 +139,6 @@ const themeConfig: ThemeCommonConfig & AlgoliaThemeConfig = { ], }, ], - // style: 'primary', copyright: `Copyright © ${new Date().getFullYear()} TypeScript ESLint, Inc. Built with Docusaurus.`, }, prism: { @@ -173,6 +171,63 @@ const themeConfig: ThemeCommonConfig & AlgoliaThemeConfig = { }, }; +const pluginPwaOptions: PluginPwaOptions = { + debug: true, + offlineModeActivationStrategies: [ + 'appInstalled', + 'queryString', + 'standalone', + ], + pwaHead: [ + { + href: '/img/logo.svg', + rel: 'icon', + tagName: 'link', + }, + { + href: '/manifest.json', + rel: 'manifest', + tagName: 'link', + }, + { + content: '#443FD4', + name: 'theme-color', + tagName: 'meta', + }, + { + content: 'yes', + name: 'apple-mobile-web-app-capable', + tagName: 'meta', + }, + { + content: '#443FD4', + name: 'apple-mobile-web-app-status-bar-style', + tagName: 'meta', + }, + { + href: '/img/logo.png', + rel: 'apple-touch-icon', + tagName: 'link', + }, + { + color: '#443FD4', + href: '/img/logo.png', + rel: 'mask-icon', + tagName: 'link', + }, + { + content: '/img/logo.png', + name: 'msapplication-TileImage', + tagName: 'meta', + }, + { + content: '#443FD4', + name: 'msapplication-TileColor', + tagName: 'meta', + }, + ], +}; + const config: Config = { title: 'TypeScript ESLint', tagline: 'Tooling which enables ESLint to support TypeScript', @@ -191,6 +246,7 @@ const config: Config = { plugins: [ require.resolve('./webpack.plugin'), ['@docusaurus/plugin-content-docs', pluginContentDocsOptions], + ['@docusaurus/plugin-pwa', pluginPwaOptions], ], themeConfig, // Misleading API name, but these are just tags diff --git a/packages/website/package.json b/packages/website/package.json index 07a8083f717..71c08a255f8 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -17,6 +17,7 @@ "dependencies": { "@babel/runtime": "^7.18.3", "@docusaurus/core": "~2.0.1", + "@docusaurus/plugin-pwa": "~2.0.1", "@docusaurus/preset-classic": "~2.0.1", "@docusaurus/remark-plugin-npm2yarn": "~2.0.1", "@docusaurus/theme-common": "~2.0.1", diff --git a/packages/website/static/img/logo.png b/packages/website/static/img/logo.png index 25cfdacea6eb5a17915d7ee0fc268ab4508494dc..f6022cf5129e6e242e6962194e12af0a1f1f1beb 100644 GIT binary patch literal 4595 zcmeHLc|4T+zejXri?qmgrV*vgVvKEsEDS&K0ZEi zi<74Iz`c3v5*7e{!6@Ap;I@Ny(v`u-Cn~*l@$;pn%kc3DE|MHEOpNs@6rM_kVhL0n z5y~Oc05l)pF+&awi}ximK{%ohiJ}jlsj3BoNCbVbi>5W)nr1>gLpm8mCprY79q~cF zcwGY6&;WFdg8~T1L?#x*A^TAnD2_h(D=!KdZ!N>Xpsx_7uRhplOCShiZ3{A?(up8# zC<20q!{H!pU8ts(77>Tn#39u{2si=(gKNUzx)8Vy3ZaS8)C7J1fB}JYf;YFc_Q7hO#xFRJspLT~}8Z21mdU2nc|HFajw|EC)hiDE(kCB{J}I5{*fs zQb1dbSR9qb)CU8~ezSs1`$@P$qODmPw^MQmKAFVrBb7We`FGiUb|D#^OnoEhAL_a)fA# zWfJwlTX6#-27zlh!gYb5p^#b-I1&Yie}h_62_)~pzd+UD5IDjSfk3GPP~g~Kpg`Ub zuuSa#3MSxD-c&jn3z$qIV||D)8pQ_;`sqlN3Du8E2LuD!X?)ef+8Sj+VKA{2Jki2b z9}HLxC6NdyBwj}Yr=yL7Ak_)F5F}EE0MXUZ!a;QKS~!A+Hyn=8QU7t?l!|9<#rDT} z!vFES4V?s(7uN6J=GiK`t)xJmBr$++1%9sy2crM?ksk^4H4ji&{8oPJgYjE|B@)2j zmr4J&2fop=&kzC9{~_GpU<|4^lZ~YljeG!a{R;^N1Js9Y)#5ixVE@&~uX}%~+aGYC z8Eg%IHX>m1vy~AkK>wlxjY?Vf28xeQEXTss$dQvi)gN|xH%qZ;Zm?&1zL97Y+Bhu` z-H{O!5aqr%A1TV7pg9?`HJ9X^cExK?s343vpWkF@+!70kJWaXG_QUOxOs+wAI1 z=4UUvh{&t&K3yoTDsI>aA7fe8t*<;2n+@eTmFa23FORf;dd999mSo$gZUZ6B^R@Y+ z4n+tZl-!$e9CKU%%fI9QCx7b$T1wEi)!THIu!u7X1(%SprK*R(a{cG3C4vEm6gkLTw6QrL-vxR(;F1IpT%>hcgq*rRfbR#^|bK$aQnG zihHMa1}bTv9v(5hA8e+AwKx|6J!+ZL_^bArE*D?T_2rO@QhP=!7w%?R$1Y@J{#0ua z=~m4d5Ok$6*ukv30rT$i@g2G{Q^O?_BMGUDM?#(@YFF;>76~S*x3`}PKw~g@mg`Qr z>jt*B{Cmr*jOvK3LvmJoZgCpX&O3a**zI^@e=hlITt7P@sS%VItSKl^Vh%d5w>YZV)S|=fhweaH!cxr1GBwNUjFBLpd=<(w5$SibhnolyuYyve>7kQXTK8L9 z?=N$;tE&~9K>u~j-R|jzcCQ(7bMf+Zn>*6aRV2e<4R6hLa z6~@T&(-MRgFLAWKme+jK%+vGw+VC3h+HAk}RE6GI)$LFvHPZN!JWO;t_*M#cl3bRV zPQJde?yfSx3yWr|B!|r03#z=C{d$jtvPyDBV?B%N<~+H%%seELmYj7Lq;TVMaa2;+ zX6&#{*;%~LXq0RecH*pF&mFCrvJtvTwU=S|T7>(c?aMyG*!sZGA7xH$g<{)9HyMr> z!;8%lG?ZOT-S!1Un#2fi8;raFP{pjHyJL4?#g&g-8{Ss(h!Ua^p&XYv$uKTPQfuOi z-Hd^74+rZuCHM3AFS&G|jqH~Z5w?W(<|xgf}h1xS3ji} zSK&r90~E0qxBI*{mgTVM$asaxGVcuNA?@H*v84S5I>#~gL9nbR%?11?fMN?)JvdXH z_r_wtxS!p+zahzfZj4N95MQ3j>C}N)i1&qnaQ>HS4IE2I!ICMD2L|-&I`hde)fOJ|bKW~XVe7d_{d!WPa)o!KL7Wp*jHx2!g_qBMEs z{A6ukUwTTlO#0GThi6~woJvzDNG&i>yH*$P9#^cb{23PXXze!SW@(aOrp|tB3)Jj06dW zmYdD=a^;x)(Z}l(FQW?(rHe*txxv%Y4M`7YtRQVX+tli%q&JT@oSmE>{5Dc42H9N5 z6ZRF>;f1!Xn~MSEvgZ&i!{Z^#?eL3=WU1~BuhOLt3KYvU*RtWbHt>g>oyOYxPHh-xG z#OSfhlo%U3TV8m)E-k!*+mzWqk~S;ZBv&NWo!~+#Rt(DZug8zb_4K^rvP7z8Q%iL+ z6U{M=5!{y{6WM|FN+X3SE>6xOTDf@!j!&khPef?;rK?tyjJJp$z3$@dEW%)hvDL1> z$&l)vU3`(W{6Kk65xL@3XFZ!&v!i@aPBio}?xTTSM+wd2i)v`Cyvc*s_mbWF0wufQ zJ_z^zKY7vmRPpt?@X*Uyb*omQ*f`;639WfjY-5f|gr>bb>UDEq**`kq-E0-`9jSw3 ztSdG*hh~wQ5t>?3%l$ccj^Jc$l(3b@Rms`jtUce4Scr-j zOrBA^mM;7L*Binj_JliY;kZ3ZEU>tYDW-(hl%cru`TUhsCVBorewQYfn?arNO$aDl zIgZ&SD(Yf@dg1e1`e>A4*os}&%Tk4R!I0VWY#23hlyV%CWOojwU(=yIZ4ei2{_C%0 zmLvb@V0DGVXFyHyPWKAI{_7=6Swr^4k92mpY~U1YMUN3DvZx2iTb{ zH{Os+;jFK_djx47WRw~pEN94{P7Dt z^^J+2(Ibe$`<5er`ZLDY4+U2|_vKcNxhE<%3|3c%uD^a~)KFh_a>eHA#)q!Z+8WQ& zFlxx4xmxD28(h_t?Cqxw6YH)0?T)@J2dO0zeB65(UScmI1-Bn@z8!t+bFl4TlZr{| z!|~GYvhJFuxqSVMA#V;kcHwemv9M$r zp z@=blBSc_XVHCAQhRO@BU!a}#_kEWR?FiH7EGnQ8O-fIbGyh`J8bH-2{DA3#UZ&mAs zMEd)n@4k|w$K7wOBye|>DN0`E@(P-$$-NuVY9+r3%TdC{c!nLGJ}qjuK3iTnATZ@XUK z;|1Fd;7Ji6Vv`1x{ESVzgq`y``^2@{P1UC}}+chOSX zCJf&PZi}26rIY7e)m&m@do61!=@SQIjojtM8jI6prRQ$17=nIE{n;r4c3D4$8#wK^wlAxEiB@s@S(-_oehv=klecV9<4cwq z9{G+Ev$qDkC$+A+76?^``y~MH`E`M6pzz}Jf(-(@ghfw+{)NdVzqoR8IOaq5pFRMXlTs|ZTf7NcmWRX1wZYOPYLLhRAR2x-MC zMYvll#2zt&iuud$dH1|~{($G4>$}ePI@gQqe8#yFOpOg$S@>D#=;&CD9_X3V&ffnn zW_sE#s;<^YM|b_qNbhgUm-*zG&_IhIV$W_VBtxdr<9S~5UC7D34T>-$kb$XDAWHOk zMLqY;duH76-n{G_UrMe+BrkX0u>IIyE%3(5@REDx{D`d~c!6FO{-HjQ>%%a}quAy_ zo|<{Qzc4}U4{^I)Wo_jkHNeX!qNk&;9sMUHQssH?u!wnuC4Fbb$A5%4yi@u(b8J`B zUjx(mV4_Q{v9290?5~VL*K3MSJqO&2lq3HPDpebdtC_`?nL4GC3k{^hUE9{rN$Kei zpI|F;SLf<%khDNPoFc^}_oUqQS26gb#{rm@5moTp8(aMW=4pxC2n_3vzR9J~P;vwK zLgM^4j+E^imC7Q|udU!bRZZj)*XKfHmzTZ)_Zhuvkg(z7c~FO_iv^K6FkgC?MrTp~ zE`kXX6PqWR=^yy(mo_i>(m9Ok{LNy=A<{R)m`m9C0Xvf{gTvuk>bfg>KUe3=srn^9u>9fO}F7 zqAkZ^{qO1~QV$pXVoHt*9-eIpOLye_s4Q|k!N{N@c_;id6}-d9bB=NFCMC1jrAYdA zYNY}!WBp=#o~+WJtIJXA1k?5Mk`uSPZ+%;H8|jNp^Z5CFGzIT6BHxAHXbeze(qNAT z)k<2p=-#g|7L)%-kaQbLaKQ@3f=Z)ea93ss_gBrPUy#2cTd&k>&E2=w?f;R;8OH3x z+mAYcRyR!lBQfL>WWtXEBY2tI+gX?Xbv&0BQ&yEqB-M<&dCH!DZ$ng8OpM|KEK8UN zoP&vbk@3lC!*t2`4GSuuf$-e*P|~hm4$1QSm&kn8r)RR7N9WN8%KpWubL? zC7(hjX*}=p$@=W17x~n^#PaWrYx}l8Wpb<>8VB}pYa?vAFFhQQK8`o3G z;%?P-bXL~j6R;0yeAaLlZW2O%us~jsO*1w%uV-|_tKuOHN6IP ze4MM>4YQfrYYOn*Y!`)oTJPIn^oj+w-H8j@v?un=;nRvaS`YW%s~HYXd05dtKI5CA z0mv`2WiBf(S4~1rGocKj4$Khl{tgT#&kaMztxVQaRq*|bE#SwT&HRk>`kqI z5kZs&gZ<`93nMi%6_!OnBX+`I4#_(n6Z`mQ@i9lQHym~EU%uHfCVjzne9`)j^f;y9 zp7s15u^2y{)ih1aoJKdE!#sa&^ti*@{1kAU1)~|+YFO>aw0i$GxRBQJHV$XM5+0VUBT4@4zq6OY~xc z9W!JsLe=x>(NuplYYy0Lxdj=f|0%uZ$9SzyYGUoH&Jnf`pEccHdcp;DLOp^KS^qi! z|1zdwvdbq#@b|AYt?E~lyqwTpNV&zMUblmfEU`;2H-KJ0grJ43_1S})yoI^i_s_71 z_eHb1*4k?X=K(ljs9kQ`dDkEJo&&zptr&3!w+C}KZdpbh`yWzPT6~qv$v_M9`*>~K z4&F0%i6V8qxqbUz6GVygAky~JNY^I5C)xd_fe?&(HLvOHyZ^vgk5sk{5?QtA_1LVy zp^LnwAG_phob|L|cb^JMl9HB2t6{LR1%2y7%mX@SDDq^R%}oc#$cm<{&11ynEu1*u zGjosA>&p??EK61v_(anMr*l^7SvEEpw&a@7D6d z$9C6c1VyX1oVN?Z@RjHw zB_!F)AdV+^F;fp&uZThP8A5dgifmNcGt;Gpz;=VwwmE3l%f!oRJ7k~qBJd;@kBENOFow7AN_*Fsc1UR@Y*H))ADVeR1} zezMd=&AhH<;NsvrT5QaH%alnX`9w^x=-(TvOt`lEv+F!-QRnEe8l)MRH2bi$z$$HPu z#4j1lFFb<;aIRp}OivRgOns!OZRoOzGtG{FdOP2mrQcEzwb*tFfAwS!-R<+|*yb5? zlDN`%O3cYd18`}s*pJpRw`?gzNc~(lLxP^OM9YV_zwQ85k_)59)}2ts)uw*IX_T{& zM?+;I;B#(oh0h0Ul=a>jF3Ad!d|!%K!vuBZ(<8Bu^K%7IMruy1P;`hkHR*j<1UqaO zg>#y!EnHkzh+B3OU)acEPVxl`%2UvbJb!I(VQ?=;9>#)Rw~a4C!fK&==p`+{&or8L zeRU341|vD)c7TQk;Ubde@(r59h!KKDnxDyQHSB$prA*0*7VWT^a zPvD1-qz96P!6Ho#owTzQxL zW-8}RN@!)L;(L1}p|43DZBOjZ32SYiG4(-__OB?UKJYx-;TqUhBUiJ;pm3cNEX~}0 zLjSixU}i`3u55z=Mg!Wya?NOW#lYJ930nh&vD)~8IbZQik&f=-;xCyRQ+E`GLYs%^ NjP#B5s&$>B{{!(ue1rf1 diff --git a/packages/website/static/img/logo_maskable.png b/packages/website/static/img/logo_maskable.png new file mode 100644 index 0000000000000000000000000000000000000000..8c32267e15cfb00ff87daea65996945428d81d26 GIT binary patch literal 7709 zcmeHMXH%0~v<4IfX?hS)inOCBM397{^diy&(gOq#$V->rn~f$QAW}j-AVq4x5Rk57 zp(G$Bgkk^@0trZzP(!;pbN|5oct4yE@4S1~>^-w*&Dzg;o@b?)L-o1N37%tOV&XD1 zxNE`0#0>fOV>`o$!0nct7(eD<3w<4?#$jPH6O#zR@UFI1gwwBL_E#d-$gd};-4Lnn zDpm2a>=&80p1d7;_U7)z%ehUw%vm=d_1{jup86zFD>GIk44f=+|LI$i`qS+2y;8&8xD?os7DrUl*xvE?d}B1^&y&f93GsYxsW-2Jday zKDm}2el2{A;U9#Qw|!t1JrT zT-)rnbzKymAY|$0hKhH@u0f^EWWsBNyF4GXk%qnSsdDwZ ziQfRXRphw=T!uD4hM07+ngOLUAMC%O`O?RcPR&&c2^%Dct6P3knAwm%=#ZY)G z;}wZ!yteI2bPvWpQc4g`KHSNeU)edqw}Df&Bg%I?pBGwy>6f2af{=@0{ao`zk5 zy~36~-sp@wdeqokbsu$D11C92J1m~gge}&`O!FfBgzB=UeP~Lni`1K@MnIxhq+ZXk zS|>C~^!_j7xkKNr*I%6AQGdXSN>w|gXQi^CXuOZ*#F0PL2?8wU{BzzM} z*s+mAZcct-y(*5*b39r}jrBwn+h{E}~Ltu~Mu#Na#Y8|Jm7Lh6nwy z=-!12?2i1!^aA_Wqoozue&5*;Tu1_egjp-+_^ZOJ=3 z!&k~~#)Dd)f_;LfFSX{!>ErA*HTCdk9Ij0a86J>jo^xSLt`IVavldsi!=Xz6oUoD@dhObqhK=vwN zea$TjX4R&3_(01fhau!;3a*sUD7Df`M)`-miFct1ZIZh7BgbSrxkts5ti2XLJrGn> z!PJNWPQ`Z!@HW)g=CZn>`Uebu0Kf7x2I#5Ls(YotrB(c&OE*OVT-qBAXd>ni$cb&Q z?__ZsYRBpGW-vte-QC78lNdg}{f=W&^NiQZmb*wsb!DZQW@oQqhWZR8B`BKKgXPPC z!Nay*=yfbgZ40Wl{#_PV7>w*eIS^3FB>!(|qVcN@0YiAZP3r{gOOITPetrU5Z@~Lo zaHVdIhD*NP5TuP%>+LDF2NQ23)c1Zz$lwIq^9SnU4|O}++|A1ivkERWwd<%Yw|tP& zF2sA}fyk4;+Uh5SP~mUtL4Sg;&Qv>2^B|XvsxX1p*0u=1RdwP01NsjHIc4V6({`h{ z!M@PkYDF#RXx5IysdA)~$%< zv{LhOA%8z}FRz}o1uPwrp*dOZJmO^;?qS91m<~IL6^Hm-@0&jl7E;qEU70-5=)R}y zls97}QdsgKdJHKS8yM8y6aUBaC{{ZOAQCFV`9o^ox&QQ7pIX151?<=*_FQ#Wig=Fg zOP}ub9<7f)TgnZN@DVDtDiE(ga-#ztTQ)jzPuBf3xgiSbYJ$H0~GQ)%u5p5tvUWxi(E_6j&{fpC&z_%VXB`W!5Ap_P8Ar zwQzh5qp(}kTe=)k|6#jK+?{l4qDhI|f-Sc|Sob_^cPpZ-{fb)+UmkQK#(p*G-X=gp z!@pjNN^E(b1vB9Nsoz$V3p1HheIXSW`wpssndFJF|7}xEQk$z)cBW<`Gk{4^2<=P0 zDv4vGLP!rVlpLBn<(LaQ?3vz(enn1nSpTj(Yg08J+h!bm#b?xqrZO?hYi-73!O@3e zK_-ZET&6r-14DM-CFZR7knr2|^$kRiCA_7{A-L3Y+ooq#$<|w4p1OUtaUw>)7tbq( zc6oO;$cBIb{wcVGOC{zV-wvL~I`;NBXJ~vc->0dxxay&lPb<3Wc_VKIyXV5@9+%t{ zaOdw;>HI-z7Nm{~6tw1iazZbDvGmzG3|_;y2ex%|X4zlkxPnBy412#a$cnuD39x?7 zK&@J`?F;s_J&q9+9<|aqx|pC&SxqzI)QlZr1=Bmd zBbJx93qnV{8A%_izvZKpSbAJ>8oA%6_^N^Q9LpIa*&?!*s<8IB_>{B5eAi#w6WI*~ zs@0}G_L&9Fn%wRrf$8(Dg+5?NAMR*}aRCVBlz@Gga7jeH9s}hq9fT~G~6A?)DBdi#D>oQ=<(S8m6 z?pxY*Y)JZ06?L^?M=-Ym9jvuW?4CKOhns~@93$&RH!NHd&{8gm`PQPuEt{lS9b8&U!(R$D8S|&Ut(G%|w%lF%*(WXg7&P8e_E3x6P zq@~a4T;-xw&{lX9$YiP6uIduUva2V&y1)QrXht#!1_YLUc9mC5lbMV!X?waeg$60? zjxOqLuh`Cp(zs+MCTHXlJnk0pDP~~bN|=VJAlJaDmI@qlxjD<^SL16TpYG$qbrXqX zrIRpoHAJWJ&bjE{KE1{`G9mf=JI%Pm@w&x7GaZ1{(mAzPQ-+ts-LJ z-)xeThF|23kzyFklDZ-!C|0XF65DnInArR>oB=W7*@#(6>g*yJoy&m`f&84 zEPUtbviC!Zz9;)3e8F|v2SsOTzV2oMtFD{Fw z7u>#ovU?XehH&F9Gmx$3maR81>o#H`5*3lt6QR|<$suuBMz z#g&Qdt%2;~u?pO@(_62`eXLqQ`(In$`rH1sPy66KF@Np z3)x%H8}Ldg0LAXkg31w#@n*ooX{9tABcmRl9m|kXMR_Cjgq~8Ng0QpnD7PpQS+Rpm z=libgmX8cmNBEuU_x&lgdRU;+jQf~uz#DdBw0L*@RoJgfcaE2FT=b2$yog}pl!o~G z92mE?uIvyX03Fqorkw{6=@4 zHmBn9a}XruBbMh*x&yk#kceFwc`@6X(jgSD&^d(^j}w%svSX(X(4U(kUY!LqG%WdF z3JN{Z)-nz*eWAjM^xKyt4T6$dav7Mqd8^sRhO}nvd}G(9^O9=oQYlgivJ=0b3NYkG z@V&<2MX>5IgQjRS$o_i%bI^B`#^Duo7zjL zgqS(3cB_2;qK+=AXBI#JcOPi*DKpfHNT@G{`%Z63M}{;No2w0Y--P3`zd{kUu=r=hC2kP_!Ay-sMGe#lKVHUQ9nD$wO%XG^m; zqwG@nDx&`QBf^M}#u$S=j&vfwL(mqMu<2wDFvM1cUJ|CWJV#xy z-UGivdwaU_L6<|hYwCy(q+UN=c1t4>{Q0BlNrdL?>{*3A(6_y7910KjC6@+4GMHEP z)$lBso?cI5M_8Ih_u6EsRn@(f?AJC8l24CY4!AhaR)Oehaz5zC$nW4X1oZ^GC}K zqy37Rz(Zw&0j5A9w=$|LDsAVx%n|0}M>}pmAA0D|P*HMDUb}5;_n{d2mJP}*mH`Zb zRsfW+CG*v@x_BL$@cRZIyYlR~2>x|O%W8?L4LWXGY$6l(5s`DG+5v(%)X#=1VrnfEB4sJgU}zJU$;=>`rd9Le0lqlhN8Fo zQgb6EAdzlDMND9!qAW=C(i7|=4=dJ3pG3r2LQ&gJ^5A(CHnE{owRWF26FQ5N!OzTO z^uII^1RJy1v{DOXz^OcUaBBuYF`60^e)bn;Gu(*l2G}^=!RAU1gJelDdOC@Hy^hh~8P1Eh=k=Y9YF5QVg_nxDgM6af zo*TSATeBXMgY^&nl~Rd|>6TmNOC- z@x5ESZK~UJA0cp%Vzz}QuUbFnt{T6**U}pukz4KG9rAn+_rwL;EK{(K*0dxo@QBW9 z`2hoL%m>b%&P@Fu71SLSSqoJL4+=Ponkr9#;8yZHP#R& zmh(;844d&E10lwEYk{G}7jFD>>inZeTrB Date: Tue, 4 Oct 2022 08:52:45 -0400 Subject: [PATCH 009/193] chore(website): move rule attributes to top of docs pages (#5702) --- .../website/plugins/generated-rule-docs.ts | 61 ++++--- .../theme/MDXComponents/Feature.module.css | 22 +++ .../src/theme/MDXComponents/Feature.tsx | 17 ++ .../MDXComponents/RuleAttributes.module.css | 10 +- .../theme/MDXComponents/RuleAttributes.tsx | 158 +++++++++++------- 5 files changed, 172 insertions(+), 96 deletions(-) create mode 100644 packages/website/src/theme/MDXComponents/Feature.module.css create mode 100644 packages/website/src/theme/MDXComponents/Feature.tsx diff --git a/packages/website/plugins/generated-rule-docs.ts b/packages/website/plugins/generated-rule-docs.ts index e21a408dbf4..a05519ab7da 100644 --- a/packages/website/plugins/generated-rule-docs.ts +++ b/packages/website/plugins/generated-rule-docs.ts @@ -52,20 +52,26 @@ export const generatedRuleDocs: Plugin = () => { ); // 2. Add a description of the rule at the top of the file - root.children.unshift({ - children: [ - { - children: meta.docs.description - .split(/`(.+?)`/) - .map((value, index, array) => ({ - type: index % 2 === 0 ? 'text' : 'inlineCode', - value: index === array.length - 1 ? `${value}.` : value, - })), - type: 'paragraph', - }, - ], - type: 'blockquote', - } as mdast.Blockquote); + root.children.unshift( + { + children: [ + { + children: meta.docs.description + .split(/`(.+?)`/) + .map((value, index, array) => ({ + type: index % 2 === 0 ? 'text' : 'inlineCode', + value: index === array.length - 1 ? `${value}.` : value, + })), + type: 'paragraph', + }, + ], + type: 'blockquote', + } as mdast.Blockquote, + { + type: 'jsx', + value: ``, + } as unist.Node, + ); // 3. Add a notice about formatting rules being 🤢 if (meta.type === 'layout') { @@ -82,19 +88,7 @@ export const generatedRuleDocs: Plugin = () => { root.children.unshift(warningNode); } - // 4. Add a rule attributes list before the first h2. - const attributesH2Index = root.children.findIndex( - child => nodeIsHeading(child) && child.depth === 2, - ); - - // The actual content will be injected on client side. - const attributesNode = { - type: 'jsx', - value: ``, - }; - root.children.splice(attributesH2Index, 0, attributesNode); - - // 5. Make sure the appropriate headers exist to place content under + // 4. Make sure the appropriate headers exist to place content under const [howToUseH2Index, optionsH2Index] = ((): [number, number] => { let howToUseH2Index = root.children.findIndex( createH2TextFilter('How to Use'), @@ -162,7 +156,7 @@ export const generatedRuleDocs: Plugin = () => { return [howToUseH2Index, optionsH2Index]; })(); - // 6. Add a description of how to use / options for the rule + // 5. Add a description of how to use / options for the rule const optionLevel = meta.docs.recommended === 'error' ? 'error' : 'warn'; if (meta.docs.extendsBaseRule) { @@ -210,7 +204,12 @@ export const generatedRuleDocs: Plugin = () => { };`, } as mdast.Code); } else { - root.children.splice(optionsH2Index, 0, { + // For non-extended rules, the code snippet is placed before the first h2 + // (i.e. at the end of the initial explanation) + const firstH2Index = root.children.findIndex( + child => nodeIsHeading(child) && child.depth === 2, + ); + root.children.splice(firstH2Index, 0, { lang: 'js', type: 'code', meta: 'title=".eslintrc.cjs"', @@ -297,7 +296,7 @@ export const generatedRuleDocs: Plugin = () => { } } - // 7. Add a notice about coming from ESLint core for extension rules + // 6. Add a notice about coming from ESLint core for extension rules if (meta.docs.extendsBaseRule) { root.children.push({ children: [ @@ -329,7 +328,7 @@ export const generatedRuleDocs: Plugin = () => { } as mdast.Paragraph); } - // 8. Also add a link to view the rule's source and test code + // 7. Also add a link to view the rule's source and test code root.children.push( { children: [ diff --git a/packages/website/src/theme/MDXComponents/Feature.module.css b/packages/website/src/theme/MDXComponents/Feature.module.css new file mode 100644 index 00000000000..aeef8f51e0a --- /dev/null +++ b/packages/website/src/theme/MDXComponents/Feature.module.css @@ -0,0 +1,22 @@ +.feature { + background-color: var(--token-background); + border-radius: var(--ifm-code-border-radius); + box-shadow: var(--ifm-global-shadow-lw); + color: var(--token-color) !important; + display: flex; + flex-basis: 30%; + flex-grow: 1; + flex-shrink: 3; + font-size: 0.8rem; + margin: 0 0 1rem; + min-width: 15rem; + padding: 0.75rem 1rem; +} + +.emoji { + margin-right: 0.5rem; +} + +.children { + margin: 0; +} diff --git a/packages/website/src/theme/MDXComponents/Feature.tsx b/packages/website/src/theme/MDXComponents/Feature.tsx new file mode 100644 index 00000000000..64aac69a68e --- /dev/null +++ b/packages/website/src/theme/MDXComponents/Feature.tsx @@ -0,0 +1,17 @@ +import React from 'react'; + +import styles from './Feature.module.css'; + +export interface FeatureProps { + children: React.ReactNode; + emoji: string; +} + +export function Feature({ children, emoji }: FeatureProps): JSX.Element { + return ( +
+
{emoji}
+

{children}

+
+ ); +} diff --git a/packages/website/src/theme/MDXComponents/RuleAttributes.module.css b/packages/website/src/theme/MDXComponents/RuleAttributes.module.css index 97c07287bab..bd8bc627c3b 100644 --- a/packages/website/src/theme/MDXComponents/RuleAttributes.module.css +++ b/packages/website/src/theme/MDXComponents/RuleAttributes.module.css @@ -1,7 +1,9 @@ -.taskList { - list-style: none; +.features { + display: flex; + gap: 0 1rem; + flex-wrap: wrap; } -:not(.taskList > li) > .taskList { - padding-left: 0; +.features + h2 { + margin-top: 1rem; } diff --git a/packages/website/src/theme/MDXComponents/RuleAttributes.tsx b/packages/website/src/theme/MDXComponents/RuleAttributes.tsx index 4248270628d..c7632e25a9f 100644 --- a/packages/website/src/theme/MDXComponents/RuleAttributes.tsx +++ b/packages/website/src/theme/MDXComponents/RuleAttributes.tsx @@ -1,73 +1,109 @@ +import type { RuleMetaDataDocs } from '@site/../utils/dist/ts-eslint/Rule'; import { useRulesMeta } from '@site/src/hooks/useRulesMeta'; -import type { TSESLint } from '@typescript-eslint/utils'; import React from 'react'; +import type { FeatureProps } from './Feature'; +import { Feature } from './Feature'; import styles from './RuleAttributes.module.css'; -export function RuleAttributes({ name }: { name: string }): JSX.Element | null { +const getRecommendation = (docs: RuleMetaDataDocs): [string, string] => { + return docs.recommended === 'strict' + ? ['🔒', 'strict'] + : docs.requiresTypeChecking + ? ['🧠', 'recommended-requiring-type-checking'] + : ['✅', 'recommended']; +}; + +export function RuleAttributes({ name }: { name: string }): React.ReactNode { const rules = useRulesMeta(); const rule = rules.find(rule => rule.name === name); - if (!rule) { + if (!rule?.docs) { return null; } + + const features: FeatureProps[] = []; + + if (rule.docs.recommended) { + const [emoji, recommendation] = getRecommendation(rule.docs); + features.push({ + children: ( + <> + Extending{' '} + + + "plugin:@typescript-eslint/{recommendation}" + + {' '} + in an{' '} + + ESLint configuration + {' '} + enables this rule. + + ), + emoji, + }); + } + + if (rule.fixable) { + features.push({ + children: ( + <> + Some problems reported by this rule are automatically fixable by the{' '} + + --fix ESLint command line option + + . + + ), + emoji: '🛠', + }); + } + + if (rule.hasSuggestions) { + features.push({ + children: ( + <> + Some problems reported by this rule are manually fixable by editor{' '} + + suggestions + + . + + ), + emoji: '💡', + }); + } + + if (rule.docs.requiresTypeChecking) { + features.push({ + children: ( + <> + This rule requires{' '} + + type information + {' '} + to run. + + ), + emoji: '💭', + }); + } + return ( - <> -

Attributes

-
    -
  • - - Included in configs -
      -
    • - - ✅ Recommended -
    • -
    • - - 🔒 Strict -
    • -
    -
  • -
  • - - Fixable -
      -
    • - - 🔧 Automated Fixer -
    • -
    • - - 💡 Suggestion Fixer -
    • -
    -
  • -
  • - - 💭 Requires type information -
  • -
- +
+ {features.map(feature => ( + + ))} +
); } From 7954c07855131507cad6bdc9c58340cbaa4d3d8e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Oct 2022 06:16:03 -0700 Subject: [PATCH 010/193] chore: Bump @microsoft/api-extractor from 7.31.2 to 7.32.0 (#5725) Bumps [@microsoft/api-extractor](https://github.com/microsoft/rushstack/tree/HEAD/apps/api-extractor) from 7.31.2 to 7.32.0. - [Release notes](https://github.com/microsoft/rushstack/releases) - [Changelog](https://github.com/microsoft/rushstack/blob/main/apps/api-extractor/CHANGELOG.md) - [Commits](https://github.com/microsoft/rushstack/commits/@microsoft/api-extractor_v7.32.0/apps/api-extractor) --- updated-dependencies: - dependency-name: "@microsoft/api-extractor" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 52 ++++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/yarn.lock b/yarn.lock index 2115916394e..2c0329ef287 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3379,32 +3379,32 @@ resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.6.22.tgz#219dfd89ae5b97a8801f015323ffa4b62f45718b" integrity sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA== -"@microsoft/api-extractor-model@7.24.2": - version "7.24.2" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.24.2.tgz#759b09f2360fe761ff40bcf7e5a57b9b86284235" - integrity sha512-uUvjqTCY7hYERWGks+joTioN1QYHIucCDy7I/JqLxFxLbFXE5dpc1X7L+FG4PN/s8QYL24DKt0fqJkgcrFKLTw== +"@microsoft/api-extractor-model@7.24.3": + version "7.24.3" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.24.3.tgz#406b0447a47eb185e0da4df865bdb0b939d57325" + integrity sha512-JElpLULqYDXQb0YIKKQhOJaNWBXsYeYu5J51Z4O6RGbOq7Tby9ViVfpDuXVXa87AMOSR5WKuaxG/5SnQVVNxiw== dependencies: "@microsoft/tsdoc" "0.14.1" "@microsoft/tsdoc-config" "~0.16.1" - "@rushstack/node-core-library" "3.52.0" + "@rushstack/node-core-library" "3.53.0" "@microsoft/api-extractor@^7.23.2": - version "7.31.2" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.31.2.tgz#8312fe2519deaed8f81d60efe9e54b99fc5a19a0" - integrity sha512-ZODCU9ckTS9brXiZpUW2iDrnAg7jLxeLBM1AkPpSZFcbG/8HGLvfKOKrd71VIJHjc52x2lB8xj7ZWksnP7AOBA== + version "7.32.0" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.32.0.tgz#b3c82a20873aeab21be59ce7113ef377c78baab1" + integrity sha512-BfvPpeVzWLFTdairVItzWQGsZr82fR4RH+8Q4I7t0f9xq66v4Qz9K+u25jbL5R42X01b/vvJMuRhX5KhU8J1Ug== dependencies: - "@microsoft/api-extractor-model" "7.24.2" + "@microsoft/api-extractor-model" "7.24.3" "@microsoft/tsdoc" "0.14.1" "@microsoft/tsdoc-config" "~0.16.1" - "@rushstack/node-core-library" "3.52.0" - "@rushstack/rig-package" "0.3.15" - "@rushstack/ts-command-line" "4.12.3" + "@rushstack/node-core-library" "3.53.0" + "@rushstack/rig-package" "0.3.16" + "@rushstack/ts-command-line" "4.12.4" colors "~1.2.1" lodash "~4.17.15" resolve "~1.17.0" semver "~7.3.0" source-map "~0.6.1" - typescript "~4.7.4" + typescript "~4.8.4" "@microsoft/tsdoc-config@~0.16.1": version "0.16.1" @@ -3928,10 +3928,10 @@ estree-walker "^2.0.1" picomatch "^2.2.2" -"@rushstack/node-core-library@3.52.0": - version "3.52.0" - resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.52.0.tgz#ee45e52b4b5fc038ce59bf59b1534311884e63fb" - integrity sha512-Z+MAP//G3rEGZd3JxJcBGcPYJlh8pvPoLMTLa5Sy6FTE6hRPzN+5J8DT7BbTmlqZaL6SZpXF30heRUbnYOvujw== +"@rushstack/node-core-library@3.53.0": + version "3.53.0" + resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.53.0.tgz#b4b812bc2e207e4fd3939991f8675335dab50978" + integrity sha512-FXk3eDtTHKnaUq+fLyNY867ioRhMa6CJDJO5hZ3wuGlxm184nckAFiU+hx027AodjpnqjX6pYF0zZGq7k7P/vg== dependencies: "@types/node" "12.20.24" colors "~1.2.1" @@ -3942,18 +3942,18 @@ semver "~7.3.0" z-schema "~5.0.2" -"@rushstack/rig-package@0.3.15": - version "0.3.15" - resolved "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.3.15.tgz#8a870880cbeb8de82b951e628f6a37d428b4c5ce" - integrity sha512-jxVfvO5OnkRlYRhcVDZWvwiI2l4pv37HDJRtyg5HbD8Z/I8Xj32RICgrxS5xMeGGytobrg5S6OfPOHskg7Nw+A== +"@rushstack/rig-package@0.3.16": + version "0.3.16" + resolved "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.3.16.tgz#522279411059e05aeec0930d4ff86b707c720cfc" + integrity sha512-FoSQng2RtapEUe+CBPKxbpZUhUht5s2+mMiztRH95qqp81dsUpfEWojtV6XrUVyWIRk2/cY1CDZUKJWxMrT26Q== dependencies: resolve "~1.17.0" strip-json-comments "~3.1.1" -"@rushstack/ts-command-line@4.12.3": - version "4.12.3" - resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.12.3.tgz#3c5e4b381dcd780aab6efe42c7faa2018248cbb1" - integrity sha512-Pdij22RotMXzI+HWHyYCvw0RMZhiP5a6Za/96XamZ1+mxmpSm4ujf8TROKxGAHySmR5A8iNVSlzhNMnUlFQE6g== +"@rushstack/ts-command-line@4.12.4": + version "4.12.4" + resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.12.4.tgz#e4bedd4890bca415f90fec8f33c51404c4039410" + integrity sha512-ckZHEfPiJCmBdWd/syve5zu2TNsPIqbFie3jWzM/izZa6ZOkDwex/K1ww+kJ12hFBnN44lMD7voJvKXajUCEDA== dependencies: "@types/argparse" "1.0.38" argparse "~1.0.9" @@ -14638,7 +14638,7 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@*, "typescript@>=3.3.1 <4.9.0", "typescript@^3 || ^4", typescript@^4.5.3, typescript@next, typescript@~4.7.4, typescript@~4.8.3: +typescript@*, "typescript@>=3.3.1 <4.9.0", "typescript@^3 || ^4", typescript@^4.5.3, typescript@next, typescript@~4.8.3, typescript@~4.8.4: version "4.8.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== From e464164f21984551ffdadb6fa3aed73822bd4186 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Oct 2022 06:16:16 -0700 Subject: [PATCH 011/193] chore: Bump @swc/core from 1.3.3 to 1.3.4 (#5736) Bumps [@swc/core](https://github.com/swc-project/swc) from 1.3.3 to 1.3.4. - [Release notes](https://github.com/swc-project/swc/releases) - [Changelog](https://github.com/swc-project/swc/blob/main/CHANGELOG.md) - [Commits](https://github.com/swc-project/swc/compare/v1.3.3...v1.3.4) --- updated-dependencies: - dependency-name: "@swc/core" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 74 +++++++++++++++++++++++++++---------------------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/yarn.lock b/yarn.lock index 2c0329ef287..f1befc07b4f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4151,54 +4151,54 @@ dependencies: source-map-support "^0.5.21" -"@swc/core-android-arm-eabi@1.3.3", "@swc/core-android-arm-eabi@npm:dummypkg-a@1.0.0", "@swc/core-android-arm64@1.3.3", "@swc/core-android-arm64@npm:dummypkg-a@1.0.0", "@swc/core-freebsd-x64@1.3.3", "@swc/core-freebsd-x64@npm:dummypkg-a@1.0.0", "@swc/core-linux-arm-gnueabihf@1.3.3", "@swc/core-linux-arm-gnueabihf@npm:dummypkg-a@1.0.0", "@swc/core-linux-arm64-gnu@1.3.3", "@swc/core-linux-arm64-gnu@npm:dummypkg-a@1.0.0", "@swc/core-linux-arm64-musl@1.3.3", "@swc/core-linux-arm64-musl@npm:dummypkg-a@1.0.0", "@swc/core-win32-arm64-msvc@1.3.3", "@swc/core-win32-arm64-msvc@npm:dummypkg-a@1.0.0", "@swc/core-win32-ia32-msvc@1.3.3", "@swc/core-win32-ia32-msvc@npm:dummypkg-a@1.0.0": +"@swc/core-android-arm-eabi@1.3.4", "@swc/core-android-arm-eabi@npm:dummypkg-a@1.0.0", "@swc/core-android-arm64@1.3.4", "@swc/core-android-arm64@npm:dummypkg-a@1.0.0", "@swc/core-freebsd-x64@1.3.4", "@swc/core-freebsd-x64@npm:dummypkg-a@1.0.0", "@swc/core-linux-arm-gnueabihf@1.3.4", "@swc/core-linux-arm-gnueabihf@npm:dummypkg-a@1.0.0", "@swc/core-linux-arm64-gnu@1.3.4", "@swc/core-linux-arm64-gnu@npm:dummypkg-a@1.0.0", "@swc/core-linux-arm64-musl@1.3.4", "@swc/core-linux-arm64-musl@npm:dummypkg-a@1.0.0", "@swc/core-win32-arm64-msvc@1.3.4", "@swc/core-win32-arm64-msvc@npm:dummypkg-a@1.0.0", "@swc/core-win32-ia32-msvc@1.3.4", "@swc/core-win32-ia32-msvc@npm:dummypkg-a@1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/dummypkg-a/-/dummypkg-a-1.0.0.tgz#02868251461af84d70603446ef5908b72c5c8435" integrity sha512-V9qLfUzVlmSW/ayzlchss1XjAqWXqHmJtzGwnfg/jsnloIUyLKR5a0Djfdgj/Jv3yoNAljIUaelTVjptxtTyGA== -"@swc/core-darwin-arm64@1.3.3": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.3.tgz#e93d047dd018135a83787225d24efc8a001987a3" - integrity sha512-/T8vyikY7t/be6bHd1D9J/bmXYMDMkBo9NA3auDT/hmouzawhJ6E7OqRE4HLuLTflnRw8WmEWgpeRIzMHvNjBQ== +"@swc/core-darwin-arm64@1.3.4": + version "1.3.4" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.4.tgz#99974b7657348717ce685450ef4566af5fca5f6b" + integrity sha512-JNBFQKtaUdsq0Sv6N29++Q6xrvZDn1bQ7pbMvr8t7kBNXaYCDmupbwPGT725MrGVs72N4qKee5Z0OIvmnLCQfw== -"@swc/core-darwin-x64@1.3.3": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.3.tgz#634f87f8d809e57e3b1070b9217d9938b99b53fc" - integrity sha512-hw4o1If986In5m3y3/OimgiBKJh49kbTG9MRWo8msqTic2aBlrtfHjSecMn1g+oP7pdaUUCTkovmT7OpvvQ/Tw== +"@swc/core-darwin-x64@1.3.4": + version "1.3.4" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.4.tgz#4742a7f83de9f6ba50801e9f6500b538856853ea" + integrity sha512-A6KMZsUJ3j5TVxAizbv+UEjCNvMgWBm9jw4R3biaw8kbgu3XUWHdkiheXO+c2kjjjgwr1jhkHcLgRjffwpLYFA== -"@swc/core-linux-x64-gnu@1.3.3": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.3.tgz#6bc264fb03a509046be445c5bfb896b97310d13d" - integrity sha512-sqyvNJkPHKHlK/XLIoMNLiux8YxsCJpAk3UreS0NO+sRNRru2AMyrRwX6wxmnJybhEek9SPKF0pXi+GfcaFKYA== +"@swc/core-linux-x64-gnu@1.3.4": + version "1.3.4" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.4.tgz#1cc63f9a86074cac7454796ccbe3836ac7f6451b" + integrity sha512-rRqDtxktiVaxO8NQeEZSX0kNSFkI5Ft+4fZcFTbWhDO0vknC0+ZYbWpverfQ8yAwo7aA9jKWupwc3I7iZ1EQQQ== -"@swc/core-linux-x64-musl@1.3.3": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.3.tgz#568bc5efba162767f097efddefb298041e28b1ea" - integrity sha512-5fjwHdMv+DOgEp7sdNVmvS4Hr2rDaewa0BpDW8RefcjHoJnDpFVButLDMkwv/Yd+v4YN+99kyX/lOI+/OTD99w== +"@swc/core-linux-x64-musl@1.3.4": + version "1.3.4" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.4.tgz#f65abb7e149ad3f20ca98c933331aa98c190cd9f" + integrity sha512-stVnU7KXQxSbh67UiIVxZsgjkRSXApPTEU3CYnwsdH7G+ynfO1WocSatzjIKpJfhcY2Nss8/33yDaOKZXVhbIA== -"@swc/core-win32-x64-msvc@1.3.3": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.3.tgz#b156c4fa79a78a3d8d5341c9061e2699a2683ac8" - integrity sha512-CIuxz9wiHkgG7m3kjgptgO3iHOmrybvLf0rUNGbVTTHwTcrpjznAnS/MnMPiaIQPlxz70KSXAR2QJjw7fGtfbA== +"@swc/core-win32-x64-msvc@1.3.4": + version "1.3.4" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.4.tgz#7bf6cd6f5c3197d7d807b273d12dd666e23b238e" + integrity sha512-9/bSvgjV31u1G2slRFPgK85ohJdo8KtWJ0f4CPp2LdVtIJHbFGd0pWjnMfiPJeodSxSGGWrgUNQtajqIIsrbqA== "@swc/core@^1.2.119", "@swc/core@^1.2.173", "@swc/core@^1.3.1": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.3.tgz#d24e964f87fd6d4a94baef2a456fdcca5ebaf48f" - integrity sha512-OGx3Qpw+czNSaea1ojP2X2wxrGtYicQxH1QnzX4F3rXGEcSUFIllmrae6iJHW91zS4SNcOocnQoRz1IYnrILYw== + version "1.3.4" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.4.tgz#961183ede3a836b3aea7d755f07c4ae673c5a763" + integrity sha512-W1AvQImfF2T+7dzWdg/GqFpcMJ24lyXGQ/kPKHL/FGPZbf0Q1ExD7wp3eQ2PQMgHTLe28qWonxicm2DPfprx3g== optionalDependencies: - "@swc/core-android-arm-eabi" "1.3.3" - "@swc/core-android-arm64" "1.3.3" - "@swc/core-darwin-arm64" "1.3.3" - "@swc/core-darwin-x64" "1.3.3" - "@swc/core-freebsd-x64" "1.3.3" - "@swc/core-linux-arm-gnueabihf" "1.3.3" - "@swc/core-linux-arm64-gnu" "1.3.3" - "@swc/core-linux-arm64-musl" "1.3.3" - "@swc/core-linux-x64-gnu" "1.3.3" - "@swc/core-linux-x64-musl" "1.3.3" - "@swc/core-win32-arm64-msvc" "1.3.3" - "@swc/core-win32-ia32-msvc" "1.3.3" - "@swc/core-win32-x64-msvc" "1.3.3" + "@swc/core-android-arm-eabi" "1.3.4" + "@swc/core-android-arm64" "1.3.4" + "@swc/core-darwin-arm64" "1.3.4" + "@swc/core-darwin-x64" "1.3.4" + "@swc/core-freebsd-x64" "1.3.4" + "@swc/core-linux-arm-gnueabihf" "1.3.4" + "@swc/core-linux-arm64-gnu" "1.3.4" + "@swc/core-linux-arm64-musl" "1.3.4" + "@swc/core-linux-x64-gnu" "1.3.4" + "@swc/core-linux-x64-musl" "1.3.4" + "@swc/core-win32-arm64-msvc" "1.3.4" + "@swc/core-win32-ia32-msvc" "1.3.4" + "@swc/core-win32-x64-msvc" "1.3.4" "@swc/jest@^0.2.21": version "0.2.23" From 00538d7e4f40628c02b7a8dc5c2104af61ba21e9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Oct 2022 06:16:26 -0700 Subject: [PATCH 012/193] chore: Bump react from 18.1.0 to 18.2.0 (#5737) Bumps [react](https://github.com/facebook/react/tree/HEAD/packages/react) from 18.1.0 to 18.2.0. - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v18.2.0/packages/react) --- updated-dependencies: - dependency-name: react dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index f1befc07b4f..4c35e7ee0c4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4589,9 +4589,9 @@ "@types/react" "*" "@types/react@*", "@types/react@^18.0.9": - version "18.0.12" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.12.tgz#cdaa209d0a542b3fcf69cf31a03976ec4cdd8840" - integrity sha512-duF1OTASSBQtcigUvhuiTB1Ya3OvSy+xORCiEf20H0P0lzx+/KeVsA99U5UjLXSbyo1DRJDlLKqTeM1ngosqtg== + version "18.0.21" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.21.tgz#b8209e9626bb00a34c76f55482697edd2b43cc67" + integrity sha512-7QUCOxvFgnD5Jk8ZKlUAhVcRj7GuJRjnjjiY/IUBWKgOlnvDvTMLD4RTF7NPyVmbRhNrbomZiOepg7M/2Kj1mA== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -12909,9 +12909,9 @@ react-textarea-autosize@^8.3.2: use-latest "^1.0.0" react@^18.1.0: - version "18.1.0" - resolved "https://registry.yarnpkg.com/react/-/react-18.1.0.tgz#6f8620382decb17fdc5cc223a115e2adbf104890" - integrity sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ== + version "18.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== dependencies: loose-envify "^1.1.0" From 0cbdbb92bea2cee15b180c5551588cb4e33c4c02 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Oct 2022 06:16:34 -0700 Subject: [PATCH 013/193] chore: Bump jest from 29.0.3 to 29.1.2 (#5738) Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 29.0.3 to 29.1.2. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v29.1.2/packages/jest) --- updated-dependencies: - dependency-name: jest dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 359 ++++++++---------------------------------------------- 1 file changed, 52 insertions(+), 307 deletions(-) diff --git a/yarn.lock b/yarn.lock index 4c35e7ee0c4..4a834b56e79 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2310,18 +2310,6 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^29.0.3": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.0.3.tgz#a222ab87e399317a89db88a58eaec289519e807a" - integrity sha512-cGg0r+klVHSYnfE977S9wmpuQ9L+iYuYgL+5bPXiUlUynLLYunRxswEmhBzvrSKGof5AKiHuTTmUKAqRcDY9dg== - dependencies: - "@jest/types" "^29.0.3" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^29.0.3" - jest-util "^29.0.3" - slash "^3.0.0" - "@jest/console@^29.1.2": version "29.1.2" resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.1.2.tgz#0ae975a70004696f8320490fcaa1a4152f7b62e4" @@ -2334,16 +2322,16 @@ jest-util "^29.1.2" slash "^3.0.0" -"@jest/core@^29.0.3": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.0.3.tgz#ba22a9cbd0c7ba36e04292e2093c547bf53ec1fd" - integrity sha512-1d0hLbOrM1qQE3eP3DtakeMbKTcXiXP3afWxqz103xPyddS2NhnNghS7MaXx1dcDt4/6p4nlhmeILo2ofgi8cQ== +"@jest/core@^29.1.2": + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.1.2.tgz#e5ce7a71e7da45156a96fb5eeed11d18b67bd112" + integrity sha512-sCO2Va1gikvQU2ynDN8V4+6wB7iVrD2CvT0zaRst4rglf56yLly0NQ9nuRRAWFeimRf+tCdFsb1Vk1N9LrrMPA== dependencies: - "@jest/console" "^29.0.3" - "@jest/reporters" "^29.0.3" - "@jest/test-result" "^29.0.3" - "@jest/transform" "^29.0.3" - "@jest/types" "^29.0.3" + "@jest/console" "^29.1.2" + "@jest/reporters" "^29.1.2" + "@jest/test-result" "^29.1.2" + "@jest/transform" "^29.1.2" + "@jest/types" "^29.1.2" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" @@ -2351,20 +2339,20 @@ exit "^0.1.2" graceful-fs "^4.2.9" jest-changed-files "^29.0.0" - jest-config "^29.0.3" - jest-haste-map "^29.0.3" - jest-message-util "^29.0.3" + jest-config "^29.1.2" + jest-haste-map "^29.1.2" + jest-message-util "^29.1.2" jest-regex-util "^29.0.0" - jest-resolve "^29.0.3" - jest-resolve-dependencies "^29.0.3" - jest-runner "^29.0.3" - jest-runtime "^29.0.3" - jest-snapshot "^29.0.3" - jest-util "^29.0.3" - jest-validate "^29.0.3" - jest-watcher "^29.0.3" + jest-resolve "^29.1.2" + jest-resolve-dependencies "^29.1.2" + jest-runner "^29.1.2" + jest-runtime "^29.1.2" + jest-snapshot "^29.1.2" + jest-util "^29.1.2" + jest-validate "^29.1.2" + jest-watcher "^29.1.2" micromatch "^4.0.4" - pretty-format "^29.0.3" + pretty-format "^29.1.2" slash "^3.0.0" strip-ansi "^6.0.0" @@ -2375,16 +2363,6 @@ dependencies: "@jest/types" "^29.1.2" -"@jest/environment@^29.0.3": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.0.3.tgz#7745ec30a954e828e8cc6df6a13280d3b51d8f35" - integrity sha512-iKl272NKxYNQNqXMQandAIwjhQaGw5uJfGXduu8dS9llHi8jV2ChWrtOAVPnMbaaoDhnI3wgUGNDvZgHeEJQCA== - dependencies: - "@jest/fake-timers" "^29.0.3" - "@jest/types" "^29.0.3" - "@types/node" "*" - jest-mock "^29.0.3" - "@jest/environment@^29.1.2": version "29.1.2" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.1.2.tgz#bb51a43fce9f960ba9a48f0b5b556f30618ebc0a" @@ -2395,13 +2373,6 @@ "@types/node" "*" jest-mock "^29.1.2" -"@jest/expect-utils@^29.0.3": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.0.3.tgz#f5bb86f5565bf2dacfca31ccbd887684936045b2" - integrity sha512-i1xUkau7K/63MpdwiRqaxgZOjxYs4f0WMTGJnYwUKubsNRZSeQbLorS7+I4uXVF9KQ5r61BUPAUMZ7Lf66l64Q== - dependencies: - jest-get-type "^29.0.0" - "@jest/expect-utils@^29.1.2": version "29.1.2" resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.1.2.tgz#66dbb514d38f7d21456bc774419c9ae5cca3f88d" @@ -2409,14 +2380,6 @@ dependencies: jest-get-type "^29.0.0" -"@jest/expect@^29.0.3": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.0.3.tgz#9dc7c46354eeb7a348d73881fba6402f5fdb2c30" - integrity sha512-6W7K+fsI23FQ01H/BWccPyDZFrnU9QlzDcKOjrNVU5L8yUORFAJJIpmyxWPW70+X624KUNqzZwPThPMX28aXEQ== - dependencies: - expect "^29.0.3" - jest-snapshot "^29.0.3" - "@jest/expect@^29.1.2": version "29.1.2" resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.1.2.tgz#334a86395f621f1ab63ad95b06a588b9114d7b7a" @@ -2425,18 +2388,6 @@ expect "^29.1.2" jest-snapshot "^29.1.2" -"@jest/fake-timers@^29.0.3": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.0.3.tgz#ad5432639b715d45a86a75c47fd75019bc36b22c" - integrity sha512-tmbUIo03x0TdtcZCESQ0oQSakPCpo7+s6+9mU19dd71MptkP4zCwoeZqna23//pgbhtT1Wq02VmA9Z9cNtvtCQ== - dependencies: - "@jest/types" "^29.0.3" - "@sinonjs/fake-timers" "^9.1.2" - "@types/node" "*" - jest-message-util "^29.0.3" - jest-mock "^29.0.3" - jest-util "^29.0.3" - "@jest/fake-timers@^29.1.2": version "29.1.2" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.1.2.tgz#f157cdf23b4da48ce46cb00fea28ed1b57fc271a" @@ -2449,16 +2400,6 @@ jest-mock "^29.1.2" jest-util "^29.1.2" -"@jest/globals@^29.0.3": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.0.3.tgz#681950c430fdc13ff9aa89b2d8d572ac0e4a1bf5" - integrity sha512-YqGHT65rFY2siPIHHFjuCGUsbzRjdqkwbat+Of6DmYRg5shIXXrLdZoVE/+TJ9O1dsKsFmYhU58JvIbZRU1Z9w== - dependencies: - "@jest/environment" "^29.0.3" - "@jest/expect" "^29.0.3" - "@jest/types" "^29.0.3" - jest-mock "^29.0.3" - "@jest/globals@^29.1.2": version "29.1.2" resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.1.2.tgz#826ede84bc280ae7f789cb72d325c48cd048b9d3" @@ -2469,7 +2410,7 @@ "@jest/types" "^29.1.2" jest-mock "^29.1.2" -"@jest/reporters@27.5.1", "@jest/reporters@^29", "@jest/reporters@^29.0.3": +"@jest/reporters@27.5.1", "@jest/reporters@^29", "@jest/reporters@^29.1.2": version "29.1.2" resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.1.2.tgz#5520898ed0a4ecf69d8b671e1dc8465d0acdfa6e" integrity sha512-X4fiwwyxy9mnfpxL0g9DD0KcTmEIqP0jUdnc2cfa9riHy+I6Gwwp5vOZiwyg0vZxfSDxrOlK9S4+340W4d+DAA== @@ -2516,7 +2457,7 @@ callsites "^3.0.0" graceful-fs "^4.2.9" -"@jest/test-result@27.5.1", "@jest/test-result@^29", "@jest/test-result@^29.0.3", "@jest/test-result@^29.1.2": +"@jest/test-result@27.5.1", "@jest/test-result@^29", "@jest/test-result@^29.1.2": version "29.1.2" resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.1.2.tgz#6a8d006eb2b31ce0287d1fc10d12b8ff8504f3c8" integrity sha512-jjYYjjumCJjH9hHCoMhA8PCl1OxNeGgAoZ7yuGYILRJX9NjgzTN0pCT5qAoYR4jfOP8htIByvAlz9vfNSSBoVg== @@ -2536,27 +2477,6 @@ jest-haste-map "^29.1.2" slash "^3.0.0" -"@jest/transform@^29.0.3": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.0.3.tgz#9eb1fed2072a0354f190569807d1250572fb0970" - integrity sha512-C5ihFTRYaGDbi/xbRQRdbo5ddGtI4VSpmL6AIcZxdhwLbXMa7PcXxxqyI91vGOFHnn5aVM3WYnYKCHEqmLVGzg== - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^29.0.3" - "@jridgewell/trace-mapping" "^0.3.15" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.1.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.0.3" - jest-regex-util "^29.0.0" - jest-util "^29.0.3" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.1" - "@jest/transform@^29.1.2": version "29.1.2" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.1.2.tgz#20f814696e04f090421f6d505c14bbfe0157062a" @@ -2578,18 +2498,6 @@ slash "^3.0.0" write-file-atomic "^4.0.1" -"@jest/types@^29.0.3": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.0.3.tgz#0be78fdddb1a35aeb2041074e55b860561c8ef63" - integrity sha512-coBJmOQvurXjN1Hh5PzF7cmsod0zLIOXpP8KD161mqNlroMhLcwpODiEzi7ZsRl5Z/AIuxpeNm8DCl43F4kz8A== - dependencies: - "@jest/schemas" "^29.0.0" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - "@jest/types@^29.1.2": version "29.1.2" resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.1.2.tgz#7442d32b16bcd7592d9614173078b8c334ec730a" @@ -4454,9 +4362,9 @@ "@types/jest" "*" "@types/jest@*", "@types/jest@^29.0.2": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.0.3.tgz#b61a5ed100850686b8d3c5e28e3a1926b2001b59" - integrity sha512-F6ukyCTwbfsEX5F2YmVYmM5TcTHy1q9P5rWlRbrk56KyMh3v9xRGUO3aa8+SkvMi0SHXtASJv1283enXimC0Og== + version "29.1.1" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.1.1.tgz#cf21a0835a1ba9a30ea1966019f1261c6a114c92" + integrity sha512-U9Ey07dGWl6fUFaIaUQUKWG5NoKi/zizeVQCGV8s4nSU0jPgqphVZvS64+8BtWYvrc3ZGw6wo943NSYPxkrp/g== dependencies: expect "^29.0.0" pretty-format "^29.0.0" @@ -7779,18 +7687,7 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= -expect@^29.0.0, expect@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.0.3.tgz#6be65ddb945202f143c4e07c083f4f39f3bd326f" - integrity sha512-t8l5DTws3212VbmPL+tBFXhjRHLmctHB0oQbL8eUc6S7NzZtYUhycrFO9mkxA0ZUC6FAWdNi7JchJSkODtcu1Q== - dependencies: - "@jest/expect-utils" "^29.0.3" - jest-get-type "^29.0.0" - jest-matcher-utils "^29.0.3" - jest-message-util "^29.0.3" - jest-util "^29.0.3" - -expect@^29.1.2: +expect@^29.0.0, expect@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/expect/-/expect-29.1.2.tgz#82f8f28d7d408c7c68da3a386a490ee683e1eced" integrity sha512-AuAGn1uxva5YBbBlXb+2JPxJRuemZsmlGcapPXWNSBNsQtAULfjioREGBWuI0EOvYUKjDnrCy8PW5Zlr1md5mw== @@ -9629,25 +9526,25 @@ jest-circus@^29.1.2: slash "^3.0.0" stack-utils "^2.0.3" -jest-cli@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.0.3.tgz#fd8f0ef363a7a3d9c53ef62e0651f18eeffa77b9" - integrity sha512-aUy9Gd/Kut1z80eBzG10jAn6BgS3BoBbXyv+uXEqBJ8wnnuZ5RpNfARoskSrTIy1GY4a8f32YGuCMwibtkl9CQ== +jest-cli@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.1.2.tgz#423b9c5d3ea20a50b1354b8bf3f2a20e72110e89" + integrity sha512-vsvBfQ7oS2o4MJdAH+4u9z76Vw5Q8WBQF5MchDbkylNknZdrPTX1Ix7YRJyTlOWqRaS7ue/cEAn+E4V1MWyMzw== dependencies: - "@jest/core" "^29.0.3" - "@jest/test-result" "^29.0.3" - "@jest/types" "^29.0.3" + "@jest/core" "^29.1.2" + "@jest/test-result" "^29.1.2" + "@jest/types" "^29.1.2" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^29.0.3" - jest-util "^29.0.3" - jest-validate "^29.0.3" + jest-config "^29.1.2" + jest-util "^29.1.2" + jest-validate "^29.1.2" prompts "^2.0.1" yargs "^17.3.1" -jest-config@27.5.1, jest-config@^29, jest-config@^29.0.3: +jest-config@27.5.1, jest-config@^29, jest-config@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.1.2.tgz#7d004345ca4c09f5d8f802355f54494e90842f4d" integrity sha512-EC3Zi86HJUOz+2YWQcJYQXlf0zuBhJoeyxLM6vb6qJsVmpP7KcCP1JnyF0iaqTaXdBP8Rlwsvs7hnKWQWWLwwA== @@ -9703,18 +9600,6 @@ jest-each@^29.1.2: jest-util "^29.1.2" pretty-format "^29.1.2" -jest-environment-node@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.0.3.tgz#293804b1e0fa5f0e354dacbe510655caa478a3b2" - integrity sha512-cdZqRCnmIlTXC+9vtvmfiY/40Cj6s2T0czXuq1whvQdmpzAnj4sbqVYuZ4zFHk766xTTJ+Ij3uUqkk8KCfXoyg== - dependencies: - "@jest/environment" "^29.0.3" - "@jest/fake-timers" "^29.0.3" - "@jest/types" "^29.0.3" - "@types/node" "*" - jest-mock "^29.0.3" - jest-util "^29.0.3" - jest-environment-node@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.1.2.tgz#005e05cc6ea4b9b5ba55906ab1ce53c82f6907a7" @@ -9732,25 +9617,6 @@ jest-get-type@^29, jest-get-type@^29.0.0: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.0.0.tgz#843f6c50a1b778f7325df1129a0fd7aa713aef80" integrity sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw== -jest-haste-map@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.0.3.tgz#d7f3f7180f558d760eacc5184aac5a67f20ef939" - integrity sha512-uMqR99+GuBHo0RjRhOE4iA6LmsxEwRdgiIAQgMU/wdT2XebsLDz5obIwLZm/Psj+GwSEQhw9AfAVKGYbh2G55A== - dependencies: - "@jest/types" "^29.0.3" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^29.0.0" - jest-util "^29.0.3" - jest-worker "^29.0.3" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" - jest-haste-map@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.1.2.tgz#93f3634aa921b6b654e7c94137b24e02e7ca6ac9" @@ -9770,14 +9636,6 @@ jest-haste-map@^29.1.2: optionalDependencies: fsevents "^2.3.2" -jest-leak-detector@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.0.3.tgz#e85cf3391106a7a250850b6766b508bfe9c7bc6f" - integrity sha512-YfW/G63dAuiuQ3QmQlh8hnqLDe25WFY3eQhuc/Ev1AGmkw5zREblTh7TCSKLoheyggu6G9gxO2hY8p9o6xbaRQ== - dependencies: - jest-get-type "^29.0.0" - pretty-format "^29.0.3" - jest-leak-detector@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.1.2.tgz#4c846db14c58219430ccbc4f01a1ec52ebee4fc2" @@ -9786,7 +9644,7 @@ jest-leak-detector@^29.1.2: jest-get-type "^29.0.0" pretty-format "^29.1.2" -jest-matcher-utils@^29, jest-matcher-utils@^29.0.3, jest-matcher-utils@^29.1.2: +jest-matcher-utils@^29, jest-matcher-utils@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.1.2.tgz#e68c4bcc0266e70aa1a5c13fb7b8cd4695e318a1" integrity sha512-MV5XrD3qYSW2zZSHRRceFzqJ39B2z11Qv0KPyZYxnzDHFeYZGJlgGi0SW+IXSJfOewgJp/Km/7lpcFT+cgZypw== @@ -9796,21 +9654,6 @@ jest-matcher-utils@^29, jest-matcher-utils@^29.0.3, jest-matcher-utils@^29.1.2: jest-get-type "^29.0.0" pretty-format "^29.1.2" -jest-message-util@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.0.3.tgz#f0254e1ffad21890c78355726202cc91d0a40ea8" - integrity sha512-7T8JiUTtDfppojosORAflABfLsLKMLkBHSWkjNQrjIltGoDzNGn7wEPOSfjqYAGTYME65esQzMJxGDjuLBKdOg== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.0.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^29.0.3" - slash "^3.0.0" - stack-utils "^2.0.3" - jest-message-util@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.1.2.tgz#c21a33c25f9dc1ebfcd0f921d89438847a09a501" @@ -9826,14 +9669,6 @@ jest-message-util@^29.1.2: slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.0.3.tgz#4f0093f6a9cb2ffdb9c44a07a3912f0c098c8de9" - integrity sha512-ort9pYowltbcrCVR43wdlqfAiFJXBx8l4uJDsD8U72LgBcetvEp+Qxj1W9ZYgMRoeAo+ov5cnAGF2B6+Oth+ww== - dependencies: - "@jest/types" "^29.0.3" - "@types/node" "*" - jest-mock@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.1.2.tgz#de47807edbb9d4abf8423f1d8d308d670105678c" @@ -9853,15 +9688,15 @@ jest-regex-util@^29.0.0: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.0.0.tgz#b442987f688289df8eb6c16fa8df488b4cd007de" integrity sha512-BV7VW7Sy0fInHWN93MMPtlClweYv2qrSCwfeFWmpribGZtQPWNvRSq9XOVgOEjU1iBGRKXUZil0o2AH7Iy9Lug== -jest-resolve-dependencies@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.0.3.tgz#f23a54295efc6374b86b198cf8efed5606d6b762" - integrity sha512-KzuBnXqNvbuCdoJpv8EanbIGObk7vUBNt/PwQPPx2aMhlv/jaXpUJsqWYRpP/0a50faMBY7WFFP8S3/CCzwfDw== +jest-resolve-dependencies@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.1.2.tgz#a6919e58a0c7465582cb8ec2d745b4e64ae8647f" + integrity sha512-44yYi+yHqNmH3OoWZvPgmeeiwKxhKV/0CfrzaKLSkZG9gT973PX8i+m8j6pDrTYhhHoiKfF3YUFg/6AeuHw4HQ== dependencies: jest-regex-util "^29.0.0" - jest-snapshot "^29.0.3" + jest-snapshot "^29.1.2" -jest-resolve@27.5.1, jest-resolve@^29, jest-resolve@^29.0.3, jest-resolve@^29.1.2: +jest-resolve@27.5.1, jest-resolve@^29, jest-resolve@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.1.2.tgz#9dd8c2fc83e59ee7d676b14bd45a5f89e877741d" integrity sha512-7fcOr+k7UYSVRJYhSmJHIid3AnDBcLQX3VmT9OSbPWsWz1MfT7bcoerMhADKGvKCoMpOHUQaDHtQoNp/P9JMGg== @@ -9876,33 +9711,6 @@ jest-resolve@27.5.1, jest-resolve@^29, jest-resolve@^29.0.3, jest-resolve@^29.1. resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.0.3.tgz#2e47fe1e8777aea9b8970f37e8f83630b508fb87" - integrity sha512-Usu6VlTOZlCZoNuh3b2Tv/yzDpKqtiNAetG9t3kJuHfUyVMNW7ipCCJOUojzKkjPoaN7Bl1f7Buu6PE0sGpQxw== - dependencies: - "@jest/console" "^29.0.3" - "@jest/environment" "^29.0.3" - "@jest/test-result" "^29.0.3" - "@jest/transform" "^29.0.3" - "@jest/types" "^29.0.3" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.10.2" - graceful-fs "^4.2.9" - jest-docblock "^29.0.0" - jest-environment-node "^29.0.3" - jest-haste-map "^29.0.3" - jest-leak-detector "^29.0.3" - jest-message-util "^29.0.3" - jest-resolve "^29.0.3" - jest-runtime "^29.0.3" - jest-util "^29.0.3" - jest-watcher "^29.0.3" - jest-worker "^29.0.3" - p-limit "^3.1.0" - source-map-support "0.5.13" - jest-runner@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.1.2.tgz#f18b2b86101341e047de8c2f51a5fdc4e97d053a" @@ -9930,34 +9738,6 @@ jest-runner@^29.1.2: p-limit "^3.1.0" source-map-support "0.5.13" -jest-runtime@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.0.3.tgz#5a823ec5902257519556a4e5a71a868e8fd788aa" - integrity sha512-12gZXRQ7ozEeEHKTY45a+YLqzNDR/x4c//X6AqwKwKJPpWM8FY4vwn4VQJOcLRS3Nd1fWwgP7LU4SoynhuUMHQ== - dependencies: - "@jest/environment" "^29.0.3" - "@jest/fake-timers" "^29.0.3" - "@jest/globals" "^29.0.3" - "@jest/source-map" "^29.0.0" - "@jest/test-result" "^29.0.3" - "@jest/transform" "^29.0.3" - "@jest/types" "^29.0.3" - "@types/node" "*" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^29.0.3" - jest-message-util "^29.0.3" - jest-mock "^29.0.3" - jest-regex-util "^29.0.0" - jest-resolve "^29.0.3" - jest-snapshot "^29.0.3" - jest-util "^29.0.3" - slash "^3.0.0" - strip-bom "^4.0.0" - jest-runtime@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.1.2.tgz#dbcd57103d61115479108d5864bdcd661d9c6783" @@ -10023,7 +9803,7 @@ jest-specific-snapshot@*, jest-specific-snapshot@^5.0.0: dependencies: jest-snapshot "^27.0.2" -jest-util@27.5.1, jest-util@^29, jest-util@^29.0.3, jest-util@^29.1.2: +jest-util@27.5.1, jest-util@^29, jest-util@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.1.2.tgz#ac5798e93cb6a6703084e194cfa0898d66126df1" integrity sha512-vPCk9F353i0Ymx3WQq3+a4lZ07NXu9Ca8wya6o4Fe4/aO1e1awMMprZ3woPFpKwghEOW+UXgd15vVotuNN9ONQ== @@ -10035,18 +9815,6 @@ jest-util@27.5.1, jest-util@^29, jest-util@^29.0.3, jest-util@^29.1.2: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.0.3.tgz#f9521581d7344685428afa0a4d110e9c519aeeb6" - integrity sha512-OebiqqT6lK8cbMPtrSoS3aZP4juID762lZvpf1u+smZnwTEBCBInan0GAIIhv36MxGaJvmq5uJm7dl5gVt+Zrw== - dependencies: - "@jest/types" "^29.0.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^29.0.0" - leven "^3.1.0" - pretty-format "^29.0.3" - jest-validate@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.1.2.tgz#83a728b8f6354da2e52346878c8bc7383516ca51" @@ -10059,20 +9827,6 @@ jest-validate@^29.1.2: leven "^3.1.0" pretty-format "^29.1.2" -jest-watcher@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.0.3.tgz#8e220d1cc4f8029875e82015d084cab20f33d57f" - integrity sha512-tQX9lU91A+9tyUQKUMp0Ns8xAcdhC9fo73eqA3LFxP2bSgiF49TNcc+vf3qgGYYK9qRjFpXW9+4RgF/mbxyOOw== - dependencies: - "@jest/test-result" "^29.0.3" - "@jest/types" "^29.0.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.10.2" - jest-util "^29.0.3" - string-length "^4.0.1" - jest-watcher@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.1.2.tgz#de21439b7d889e2fcf62cc2a4779ef1a3f1f3c62" @@ -10105,15 +9859,6 @@ jest-worker@^27.4.5, jest-worker@^27.5.1: merge-stream "^2.0.0" supports-color "^8.0.0" -jest-worker@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.0.3.tgz#c2ba0aa7e41eec9eb0be8e8a322ae6518df72647" - integrity sha512-Tl/YWUugQOjoTYwjKdfJWkSOfhufJHO5LhXTSZC3TRoQKO+fuXnZAdoXXBlpLXKGODBL3OvdUasfDD4PcMe6ng== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - jest-worker@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.1.2.tgz#a68302af61bce82b42a9a57285ca7499d29b2afc" @@ -10125,14 +9870,14 @@ jest-worker@^29.1.2: supports-color "^8.0.0" jest@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.0.3.tgz#5227a0596d30791b2649eea347e4aa97f734944d" - integrity sha512-ElgUtJBLgXM1E8L6K1RW1T96R897YY/3lRYqq9uVcPWtP2AAl/nQ16IYDh/FzQOOQ12VEuLdcPU83mbhG2C3PQ== + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.1.2.tgz#f821a1695ffd6cd0efc3b59d2dfcc70a98582499" + integrity sha512-5wEIPpCezgORnqf+rCaYD1SK+mNN7NsstWzIsuvsnrhR/hSxXWd82oI7DkrbJ+XTD28/eG8SmxdGvukrGGK6Tw== dependencies: - "@jest/core" "^29.0.3" - "@jest/types" "^29.0.3" + "@jest/core" "^29.1.2" + "@jest/types" "^29.1.2" import-local "^3.0.2" - jest-cli "^29.0.3" + jest-cli "^29.1.2" jju@~1.4.0: version "1.4.0" From 0f52059acfc87739a01290143a39a6e0778c050e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Oct 2022 06:16:46 -0700 Subject: [PATCH 014/193] chore: Bump @babel/types from 7.19.0 to 7.19.3 (#5735) Bumps [@babel/types](https://github.com/babel/babel/tree/HEAD/packages/babel-types) from 7.19.0 to 7.19.3. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.3/packages/babel-types) --- updated-dependencies: - dependency-name: "@babel/types" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/yarn.lock b/yarn.lock index 4a834b56e79..7e151d0a093 100644 --- a/yarn.lock +++ b/yarn.lock @@ -479,12 +479,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== -"@babel/helper-validator-identifier@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" - integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== - -"@babel/helper-validator-identifier@^7.19.1": +"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== @@ -1455,16 +1450,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.7", "@babel/types@^7.15.6", "@babel/types@^7.18.10", "@babel/types@^7.18.2", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.0.tgz#75f21d73d73dc0351f3368d28db73465f4814600" - integrity sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA== - dependencies: - "@babel/helper-string-parser" "^7.18.10" - "@babel/helper-validator-identifier" "^7.18.6" - to-fast-properties "^2.0.0" - -"@babel/types@^7.19.3": +"@babel/types@^7.0.0", "@babel/types@^7.12.7", "@babel/types@^7.15.6", "@babel/types@^7.18.10", "@babel/types@^7.18.2", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.3", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.19.3" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.3.tgz#fc420e6bbe54880bce6779ffaf315f5e43ec9624" integrity sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw== From f373fac1dd0150273d98cee5bed606bbd3f55e4b Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Tue, 4 Oct 2022 10:55:55 -0400 Subject: [PATCH 015/193] chore(eslint-plugin): enhance many rule descriptions (#5696) * chore(eslint-plugin): enhance many rule descriptions * wip * Progress * progress * Fix lint:markdown * Undo extension rule description nitpicking * Remove rule attributes and other change * Remove border-color * codebasez * Split out comma-spacing * Remove sidebar.rules.js * Update packages/eslint-plugin/docs/rules/await-thenable.md Co-authored-by: Zzzen * Blurgh, comment * Update packages/eslint-plugin/docs/rules/no-non-null-assertion.md Co-authored-by: Zzzen --- packages/eslint-plugin/docs/rules/TEMPLATE.md | 2 +- .../rules/adjacent-overload-signatures.md | 10 +- .../eslint-plugin/docs/rules/array-type.md | 10 +- .../docs/rules/await-thenable.md | 9 +- .../docs/rules/ban-ts-comment.md | 7 +- .../docs/rules/ban-tslint-comment.md | 4 +- .../eslint-plugin/docs/rules/ban-types.md | 4 +- .../eslint-plugin/docs/rules/brace-style.md | 2 +- .../rules/class-literal-property-style.md | 8 +- .../eslint-plugin/docs/rules/comma-dangle.md | 2 +- .../eslint-plugin/docs/rules/comma-spacing.md | 2 +- .../rules/consistent-generic-constructors.md | 6 +- .../rules/consistent-indexed-object-style.md | 4 +- .../docs/rules/consistent-type-assertions.md | 17 ++- .../docs/rules/consistent-type-definitions.md | 5 +- .../docs/rules/consistent-type-exports.md | 20 +-- .../docs/rules/consistent-type-imports.md | 7 +- .../docs/rules/default-param-last.md | 2 +- .../eslint-plugin/docs/rules/dot-notation.md | 2 +- .../rules/explicit-function-return-type.md | 13 +- .../rules/explicit-member-accessibility.md | 16 +- .../rules/explicit-module-boundary-types.md | 6 +- .../docs/rules/func-call-spacing.md | 2 +- packages/eslint-plugin/docs/rules/indent.md | 2 +- .../docs/rules/init-declarations.md | 2 +- .../docs/rules/keyword-spacing.md | 2 +- .../docs/rules/lines-between-class-members.md | 2 +- .../docs/rules/member-delimiter-style.md | 67 +------- .../docs/rules/member-ordering.md | 7 +- .../docs/rules/method-signature-style.md | 12 +- .../docs/rules/naming-convention.md | 4 +- .../docs/rules/no-array-constructor.md | 2 +- .../docs/rules/no-base-to-string.md | 23 +-- .../rules/no-confusing-non-null-assertion.md | 6 +- .../rules/no-confusing-void-expression.md | 9 +- .../docs/rules/no-dupe-class-members.md | 2 +- .../docs/rules/no-duplicate-enum-values.md | 7 +- .../docs/rules/no-dynamic-delete.md | 8 +- .../docs/rules/no-empty-function.md | 2 +- .../docs/rules/no-empty-interface.md | 8 +- .../docs/rules/no-explicit-any.md | 21 ++- .../docs/rules/no-extra-non-null-assertion.md | 7 +- .../docs/rules/no-extra-parens.md | 2 +- .../eslint-plugin/docs/rules/no-extra-semi.md | 2 +- .../docs/rules/no-extraneous-class.md | 10 +- .../docs/rules/no-floating-promises.md | 6 +- .../docs/rules/no-for-in-array.md | 44 +++--- .../docs/rules/no-implicit-any-catch.md | 4 +- .../docs/rules/no-implied-eval.md | 4 +- .../docs/rules/no-inferrable-types.md | 55 ++----- .../docs/rules/no-invalid-this.md | 2 +- .../docs/rules/no-invalid-void-type.md | 19 +-- .../eslint-plugin/docs/rules/no-loop-func.md | 2 +- .../docs/rules/no-loss-of-precision.md | 2 +- .../docs/rules/no-magic-numbers.md | 2 +- .../rules/no-meaningless-void-operator.md | 29 +--- .../docs/rules/no-misused-new.md | 19 ++- .../docs/rules/no-misused-promises.md | 144 +++++++----------- .../eslint-plugin/docs/rules/no-namespace.md | 13 +- ...no-non-null-asserted-nullish-coalescing.md | 16 +- .../no-non-null-asserted-optional-chain.md | 31 +--- .../docs/rules/no-non-null-assertion.md | 27 ++-- .../docs/rules/no-parameter-properties.md | 2 +- .../eslint-plugin/docs/rules/no-redeclare.md | 2 +- .../rules/no-redundant-type-constituents.md | 7 +- .../docs/rules/no-require-imports.md | 27 ++-- .../docs/rules/no-restricted-imports.md | 2 +- .../eslint-plugin/docs/rules/no-shadow.md | 2 +- .../eslint-plugin/docs/rules/no-this-alias.md | 24 ++- .../docs/rules/no-throw-literal.md | 4 +- .../eslint-plugin/docs/rules/no-type-alias.md | 2 +- .../no-unnecessary-boolean-literal-compare.md | 29 ++-- .../docs/rules/no-unnecessary-condition.md | 7 +- .../docs/rules/no-unnecessary-qualifier.md | 58 ++----- .../rules/no-unnecessary-type-arguments.md | 30 +++- .../rules/no-unnecessary-type-assertion.md | 10 +- .../rules/no-unnecessary-type-constraint.md | 26 +--- .../docs/rules/no-unsafe-argument.md | 17 ++- .../docs/rules/no-unsafe-assignment.md | 15 +- .../docs/rules/no-unsafe-call.md | 11 +- .../docs/rules/no-unsafe-member-access.md | 9 +- .../docs/rules/no-unsafe-return.md | 15 +- .../docs/rules/no-unused-expressions.md | 2 +- .../docs/rules/no-unused-vars.md | 2 +- .../docs/rules/no-use-before-define.md | 2 +- .../docs/rules/no-useless-constructor.md | 2 +- .../docs/rules/no-useless-empty-export.md | 8 +- .../docs/rules/no-var-requires.md | 10 +- .../non-nullable-type-assertion-style.md | 10 +- .../docs/rules/object-curly-spacing.md | 2 +- .../rules/padding-line-between-statements.md | 2 +- .../docs/rules/parameter-properties.md | 9 +- .../docs/rules/prefer-as-const.md | 10 +- .../docs/rules/prefer-enum-initializers.md | 28 +--- .../eslint-plugin/docs/rules/prefer-for-of.md | 31 ++-- .../docs/rules/prefer-function-type.md | 44 +++--- .../docs/rules/prefer-includes.md | 58 ++++--- .../docs/rules/prefer-literal-enum-member.md | 25 ++- .../docs/rules/prefer-namespace-keyword.md | 31 +++- .../docs/rules/prefer-nullish-coalescing.md | 58 +------ .../docs/rules/prefer-optional-chain.md | 58 ++----- .../rules/prefer-readonly-parameter-types.md | 4 +- .../docs/rules/prefer-readonly.md | 8 +- .../rules/prefer-reduce-type-parameter.md | 14 +- .../docs/rules/prefer-regexp-exec.md | 17 +-- .../docs/rules/prefer-return-this-type.md | 35 ++--- .../rules/prefer-string-starts-ends-with.md | 16 +- .../docs/rules/prefer-ts-expect-error.md | 16 +- .../docs/rules/promise-function-async.md | 2 +- packages/eslint-plugin/docs/rules/quotes.md | 2 +- .../docs/rules/require-array-sort-compare.md | 19 +-- .../eslint-plugin/docs/rules/require-await.md | 2 +- .../docs/rules/restrict-plus-operands.md | 22 ++- .../rules/restrict-template-expressions.md | 11 +- .../eslint-plugin/docs/rules/return-await.md | 2 +- packages/eslint-plugin/docs/rules/semi.md | 2 +- .../sort-type-union-intersection-members.md | 19 +-- .../docs/rules/space-before-blocks.md | 2 +- .../docs/rules/space-before-function-paren.md | 2 +- .../docs/rules/strict-boolean-expressions.md | 2 - .../docs/rules/switch-exhaustiveness-check.md | 39 ++--- .../docs/rules/triple-slash-reference.md | 6 +- .../docs/rules/type-annotation-spacing.md | 2 +- packages/eslint-plugin/docs/rules/typedef.md | 12 +- .../docs/rules/unbound-method.md | 11 +- .../docs/rules/unified-signatures.md | 8 +- .../src/rules/adjacent-overload-signatures.ts | 2 +- .../eslint-plugin/src/rules/array-type.ts | 3 +- .../eslint-plugin/src/rules/ban-ts-comment.ts | 2 +- .../src/rules/member-delimiter-style.ts | 4 +- .../src/rules/no-extra-non-null-assertion.ts | 2 +- .../eslint-plugin/src/rules/no-namespace.ts | 4 +- .../src/rules/restrict-plus-operands.ts | 2 +- 133 files changed, 727 insertions(+), 1044 deletions(-) diff --git a/packages/eslint-plugin/docs/rules/TEMPLATE.md b/packages/eslint-plugin/docs/rules/TEMPLATE.md index 20ca5d8bdbe..ddc6def34a5 100644 --- a/packages/eslint-plugin/docs/rules/TEMPLATE.md +++ b/packages/eslint-plugin/docs/rules/TEMPLATE.md @@ -2,7 +2,7 @@ > > See **https://typescript-eslint.io/rules/your-rule-name** for documentation. -## Rule Details +## Examples To fill out: tell us more about this rule. diff --git a/packages/eslint-plugin/docs/rules/adjacent-overload-signatures.md b/packages/eslint-plugin/docs/rules/adjacent-overload-signatures.md index 422824d7f3e..b221b449724 100644 --- a/packages/eslint-plugin/docs/rules/adjacent-overload-signatures.md +++ b/packages/eslint-plugin/docs/rules/adjacent-overload-signatures.md @@ -1,16 +1,16 @@ --- -description: 'Require that member overloads be consecutive.' +description: 'Require that function overload signatures be consecutive.' --- > 🛑 This file is source code, not the primary documentation location! 🛑 > > See **https://typescript-eslint.io/rules/adjacent-overload-signatures** for documentation. -Grouping overloaded members together can improve readability of the code. +Function overload signatures represent multiple ways a function can be called, potentially with different return types. +It's typical for an interface or type alias describing a function to place all overload signatures next to each other. +If Signatures placed elsewhere in the type are easier to be missed by future developers reading the code. -## Rule Details - -This rule aims to standardize the way overloaded members are organized. +## Examples diff --git a/packages/eslint-plugin/docs/rules/array-type.md b/packages/eslint-plugin/docs/rules/array-type.md index 08b9ddfb386..66905370cf0 100644 --- a/packages/eslint-plugin/docs/rules/array-type.md +++ b/packages/eslint-plugin/docs/rules/array-type.md @@ -1,16 +1,14 @@ --- -description: 'Require using either `T[]` or `Array` for arrays.' +description: 'Require consistently using either `T[]` or `Array` for arrays.' --- > 🛑 This file is source code, not the primary documentation location! 🛑 > > See **https://typescript-eslint.io/rules/array-type** for documentation. -Using the same style for array definitions across your codebase makes it easier for your developers to read and understand the types. - -## Rule Details - -This rule aims to standardize usage of array types within your codebase. +TypeScript provides two equivalent ways to define an array type: `T[]` and `Array`. +The two styles are functionally equivalent. +Using the same style consistently across your codebase makes it easier for developers to read and understand array types. ## Options diff --git a/packages/eslint-plugin/docs/rules/await-thenable.md b/packages/eslint-plugin/docs/rules/await-thenable.md index dda20909971..8179a90af19 100644 --- a/packages/eslint-plugin/docs/rules/await-thenable.md +++ b/packages/eslint-plugin/docs/rules/await-thenable.md @@ -6,12 +6,13 @@ description: 'Disallow awaiting a value that is not a Thenable.' > > See **https://typescript-eslint.io/rules/await-thenable** for documentation. -This rule disallows awaiting a value that is not a "Thenable" (an object which has `then` method, such as a Promise). -While it is valid JavaScript to await a non-`Promise`-like value (it will resolve immediately), this pattern is often a programmer error, such as forgetting to add parenthesis to call a function that returns a Promise. +A "Thenable" value is an object with has a `then` method, such as a Promise. +The `await` keyword is generally used to retrieve the result of calling a Thenable's `then` method. -## Rule Details +If the `await` keyword is used on a value that is not a Thenable, the value is directly resolved immediately. +While doing so is valid JavaScript, it is often a programmer error, such as forgetting to add parenthesis to call a function that returns a Promise. -Examples of code for this rule: +## Examples diff --git a/packages/eslint-plugin/docs/rules/ban-ts-comment.md b/packages/eslint-plugin/docs/rules/ban-ts-comment.md index efadc961e10..b0fa17f6aa0 100644 --- a/packages/eslint-plugin/docs/rules/ban-ts-comment.md +++ b/packages/eslint-plugin/docs/rules/ban-ts-comment.md @@ -1,5 +1,5 @@ --- -description: 'Disallow `@ts-` comments or require descriptions after directive.' +description: 'Disallow `@ts-` comments or require descriptions after directives.' --- > 🛑 This file is source code, not the primary documentation location! 🛑 @@ -7,7 +7,8 @@ description: 'Disallow `@ts-` comments or require descriptions after > See **https://typescript-eslint.io/rules/ban-ts-comment** for documentation. TypeScript provides several directive comments that can be used to alter how it processes files. -Using these to suppress TypeScript Compiler Errors reduces the effectiveness of TypeScript overall. +Using these to suppress TypeScript compiler errors reduces the effectiveness of TypeScript overall. +Instead, it's generally better to correct the types of code, to make directives unnecessary. The directive comments supported by TypeScript are: @@ -18,8 +19,6 @@ The directive comments supported by TypeScript are: // @ts-check ``` -## Rule Details - This rule lets you set which directive comments you want to allow in your codebase. ## Options diff --git a/packages/eslint-plugin/docs/rules/ban-tslint-comment.md b/packages/eslint-plugin/docs/rules/ban-tslint-comment.md index fc9fe81af6b..96a5e9b91db 100644 --- a/packages/eslint-plugin/docs/rules/ban-tslint-comment.md +++ b/packages/eslint-plugin/docs/rules/ban-tslint-comment.md @@ -8,9 +8,9 @@ description: 'Disallow `// tslint:` comments.' Useful when migrating from TSLint to ESLint. Once TSLint has been removed, this rule helps locate TSLint annotations (e.g. `// tslint:disable`). -## Rule Details +> See the [TSLint rule flags docs](https://palantir.github.io/tslint/usage/rule-flags) for reference. -All TSLint [rule flags](https://palantir.github.io/tslint/usage/rule-flags/) +## Examples diff --git a/packages/eslint-plugin/docs/rules/ban-types.md b/packages/eslint-plugin/docs/rules/ban-types.md index 2d0b345cda8..016b2a7217e 100644 --- a/packages/eslint-plugin/docs/rules/ban-types.md +++ b/packages/eslint-plugin/docs/rules/ban-types.md @@ -9,11 +9,11 @@ description: 'Disallow certain types.' Some built-in types have aliases, while some types are considered dangerous or harmful. It's often a good idea to ban certain types to help with consistency and safety. -## Rule Details - This rule bans specific types and can suggest alternatives. Note that it does not ban the corresponding runtime objects from being used. +## Examples + Examples of code with the default options: diff --git a/packages/eslint-plugin/docs/rules/brace-style.md b/packages/eslint-plugin/docs/rules/brace-style.md index 18f93c48a5e..4e032c80580 100644 --- a/packages/eslint-plugin/docs/rules/brace-style.md +++ b/packages/eslint-plugin/docs/rules/brace-style.md @@ -6,7 +6,7 @@ description: 'Enforce consistent brace style for blocks.' > > See **https://typescript-eslint.io/rules/brace-style** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/brace-style`](https://eslint.org/docs/rules/brace-style) rule. It adds support for `enum`, `interface`, `namespace` and `module` declarations. diff --git a/packages/eslint-plugin/docs/rules/class-literal-property-style.md b/packages/eslint-plugin/docs/rules/class-literal-property-style.md index 7d1acfcd4bb..6ce4b454e5b 100644 --- a/packages/eslint-plugin/docs/rules/class-literal-property-style.md +++ b/packages/eslint-plugin/docs/rules/class-literal-property-style.md @@ -6,14 +6,14 @@ description: 'Enforce that literals on classes are exposed in a consistent style > > See **https://typescript-eslint.io/rules/class-literal-property-style** for documentation. -When writing TypeScript applications, it's typically safe to store literal values on classes using fields with the `readonly` modifier to prevent them from being reassigned. -When writing TypeScript libraries that could be used by JavaScript users however, it's typically safer to expose these literals using `getter`s, since the `readonly` modifier is enforced at compile type. - -## Options +Some TypeScript applications store literal values on classes using fields with the `readonly` modifier to prevent them from being reassigned. +When writing TypeScript libraries that could be used by JavaScript users, however, it's typically safer to expose these literals using `getter`s, since the `readonly` modifier is enforced at compile type. This rule aims to ensure that literals exposed by classes are done so consistently, in one of the two style described above. By default this rule prefers the `fields` style as it means JS doesn't have to setup & teardown a function closure. +## Options + :::note This rule only checks for constant _literal_ values (string, template string, number, bigint, boolean, regexp, null). It does not check objects or arrays, because a readonly field behaves differently to a getter in those cases. It also does not check functions, as it is a common pattern to use readonly fields with arrow function values as auto-bound methods. diff --git a/packages/eslint-plugin/docs/rules/comma-dangle.md b/packages/eslint-plugin/docs/rules/comma-dangle.md index 49f816448fb..1f11f9cf3ac 100644 --- a/packages/eslint-plugin/docs/rules/comma-dangle.md +++ b/packages/eslint-plugin/docs/rules/comma-dangle.md @@ -6,7 +6,7 @@ description: 'Require or disallow trailing commas.' > > See **https://typescript-eslint.io/rules/comma-dangle** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/comma-dangle`](https://eslint.org/docs/rules/comma-dangle) rule. It adds support for TypeScript syntax. diff --git a/packages/eslint-plugin/docs/rules/comma-spacing.md b/packages/eslint-plugin/docs/rules/comma-spacing.md index af4959e146d..9d5424811a8 100644 --- a/packages/eslint-plugin/docs/rules/comma-spacing.md +++ b/packages/eslint-plugin/docs/rules/comma-spacing.md @@ -6,7 +6,7 @@ description: 'Enforce consistent spacing before and after commas.' > > See **https://typescript-eslint.io/rules/comma-spacing** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/comma-spacing`](https://eslint.org/docs/rules/comma-spacing) rule. It adds support for trailing comma in a types parameters list. diff --git a/packages/eslint-plugin/docs/rules/consistent-generic-constructors.md b/packages/eslint-plugin/docs/rules/consistent-generic-constructors.md index 893c4ce819e..6c259a70888 100644 --- a/packages/eslint-plugin/docs/rules/consistent-generic-constructors.md +++ b/packages/eslint-plugin/docs/rules/consistent-generic-constructors.md @@ -17,10 +17,10 @@ const map = new Map(); ``` This rule ensures that type arguments appear consistently on one side of the declaration. +Keeping to one side consistently improve code readability. -## Rule Details - -The rule never reports when there are type parameters on both sides, or neither sides of the declaration. It also doesn't report if the names of the type annotation and the constructor don't match. +> The rule never reports when there are type parameters on both sides, or neither sides of the declaration. +> It also doesn't report if the names of the type annotation and the constructor don't match. ## Options diff --git a/packages/eslint-plugin/docs/rules/consistent-indexed-object-style.md b/packages/eslint-plugin/docs/rules/consistent-indexed-object-style.md index 918c27fef61..529d0719655 100644 --- a/packages/eslint-plugin/docs/rules/consistent-indexed-object-style.md +++ b/packages/eslint-plugin/docs/rules/consistent-indexed-object-style.md @@ -20,9 +20,7 @@ type Foo = { type Foo = Record; ``` -## Rule Details - -This rule enforces a consistent way to define records. +Keeping to one declaration form consistently improve code readability. ## Options diff --git a/packages/eslint-plugin/docs/rules/consistent-type-assertions.md b/packages/eslint-plugin/docs/rules/consistent-type-assertions.md index f6d439613cb..4c7f87ee955 100644 --- a/packages/eslint-plugin/docs/rules/consistent-type-assertions.md +++ b/packages/eslint-plugin/docs/rules/consistent-type-assertions.md @@ -6,15 +6,22 @@ description: 'Enforce consistent usage of type assertions.' > > See **https://typescript-eslint.io/rules/consistent-type-assertions** for documentation. -## Rule Details +TypeScript provides two syntaxes for "type assertions": -This rule aims to standardize the use of type assertion style across the codebase. +- Angle brackets: `value` +- As: `value as Type` -Type assertions are also commonly referred as "type casting" in TypeScript (even though it is technically slightly different to what is understood by type casting in other languages), so you can think of type assertions and type casting referring to the same thing. It is essentially you saying to the TypeScript compiler, "in this case, I know better than you!". +This rule aims to standardize the use of type assertion style across the codebase. +Keeping to one syntax consistently helps with code readability. -In addition to ensuring that type assertions are written in a consistent way, this rule also helps make your codebase more type-safe. +:::note +Type assertions are also commonly referred as "type casting" in TypeScript. +However, that term is technically slightly different to what is understood by type casting in other languages. +Type assertions are a way to say to the TypeScript compiler, _"I know better than you, it's actually this different type!"_. +::: -[`const` assertions](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html#const-assertions) are always allowed by this rule. Examples of them include `let x = "hello" as const;` and `let x = "hello";`. +[`const` assertions](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html#const-assertions) are always allowed by this rule. +Examples of them include `let x = "hello" as const;` and `let x = "hello";`. ## Options diff --git a/packages/eslint-plugin/docs/rules/consistent-type-definitions.md b/packages/eslint-plugin/docs/rules/consistent-type-definitions.md index 5d400a28a1c..9d72abe36ae 100644 --- a/packages/eslint-plugin/docs/rules/consistent-type-definitions.md +++ b/packages/eslint-plugin/docs/rules/consistent-type-definitions.md @@ -6,7 +6,7 @@ description: 'Enforce type definitions to consistently use either `interface` or > > See **https://typescript-eslint.io/rules/consistent-type-definitions** for documentation. -There are two ways to define a type. +TypeScript provides two common ways to define an object type: `interface` and `type`. ```ts // type alias @@ -22,6 +22,9 @@ interface T2 { } ``` +The two are generally very similar, and can often be used interchangeably. +Using the same type declaration style consistently helps with code readability. + ## Options - `"interface"` _(default)_: enforce using `interface`s for object type definitions. diff --git a/packages/eslint-plugin/docs/rules/consistent-type-exports.md b/packages/eslint-plugin/docs/rules/consistent-type-exports.md index 97a11e65a28..ec15e9fdecb 100644 --- a/packages/eslint-plugin/docs/rules/consistent-type-exports.md +++ b/packages/eslint-plugin/docs/rules/consistent-type-exports.md @@ -6,14 +6,10 @@ description: 'Enforce consistent usage of type exports.' > > See **https://typescript-eslint.io/rules/consistent-type-exports** for documentation. -Type-only exports allow you to specify that 1 or more named exports are exported as type-only. This allows -transpilers to drop exports without knowing the types of the dependencies. +TypeScript allows specifying a `type` keyword on exports to indicate that the export exists only in the type system, not at runtime. +This allows transpilers to drop exports without knowing the types of the dependencies. -## Rule Details - -This rule aims to standardize the use of type exports style. - -Given a class `Button`, and an interface `ButtonProps`, examples of code: +## Examples @@ -25,9 +21,7 @@ interface ButtonProps { } class Button implements ButtonProps { - onClick() { - console.log('button!'); - } + onClick = () => console.log('button!'); } export { Button, ButtonProps }; @@ -39,11 +33,11 @@ export { Button, ButtonProps }; interface ButtonProps { onClick: () => void; } + class Button implements ButtonProps { - onClick() { - console.log('button!'); - } + onClick = () => console.log('button!'); } + export { Button }; export type { ButtonProps }; ``` diff --git a/packages/eslint-plugin/docs/rules/consistent-type-imports.md b/packages/eslint-plugin/docs/rules/consistent-type-imports.md index 9293fca42c6..6e6912d34cf 100644 --- a/packages/eslint-plugin/docs/rules/consistent-type-imports.md +++ b/packages/eslint-plugin/docs/rules/consistent-type-imports.md @@ -6,11 +6,8 @@ description: 'Enforce consistent usage of type imports.' > > See **https://typescript-eslint.io/rules/consistent-type-imports** for documentation. -Type-only imports allow you to specify that an import can only be used in a type location, allowing certain optimizations within compilers. - -## Rule Details - -This rule aims to standardize the use of type imports style. +TypeScript allows specifying a `type` keyword on imports to indicate that the export exists only in the type system, not at runtime. +This allows transpilers to drop imports without knowing the types of the dependencies. ## Options diff --git a/packages/eslint-plugin/docs/rules/default-param-last.md b/packages/eslint-plugin/docs/rules/default-param-last.md index 9a0624fca22..e5902b200c0 100644 --- a/packages/eslint-plugin/docs/rules/default-param-last.md +++ b/packages/eslint-plugin/docs/rules/default-param-last.md @@ -6,7 +6,7 @@ description: 'Enforce default parameters to be last.' > > See **https://typescript-eslint.io/rules/default-param-last** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/default-param-last`](https://eslint.org/docs/rules/default-param-last) rule. It adds support for optional parameters. diff --git a/packages/eslint-plugin/docs/rules/dot-notation.md b/packages/eslint-plugin/docs/rules/dot-notation.md index 741de5ee5e7..e48e2c9a9b4 100644 --- a/packages/eslint-plugin/docs/rules/dot-notation.md +++ b/packages/eslint-plugin/docs/rules/dot-notation.md @@ -6,7 +6,7 @@ description: 'Enforce dot notation whenever possible.' > > See **https://typescript-eslint.io/rules/dot-notation** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/dot-notation`](https://eslint.org/docs/rules/dot-notation) rule. It adds: diff --git a/packages/eslint-plugin/docs/rules/explicit-function-return-type.md b/packages/eslint-plugin/docs/rules/explicit-function-return-type.md index 5697be355b5..3a67a7e2372 100644 --- a/packages/eslint-plugin/docs/rules/explicit-function-return-type.md +++ b/packages/eslint-plugin/docs/rules/explicit-function-return-type.md @@ -6,14 +6,15 @@ description: 'Require explicit return types on functions and class methods.' > > See **https://typescript-eslint.io/rules/explicit-function-return-type** for documentation. -Explicit types for function return values makes it clear to any calling code what type is returned. -This ensures that the return value is assigned to a variable of the correct type; or in the case -where there is no return value, that the calling code doesn't try to use the undefined value when it -shouldn't. +Functions in TypeScript often don't need to be given an explicit return type annotation. +Leaving off the return type is less code to read or write and allows the compiler to infer it from the contents of the function. -## Rule Details +However, explicit return types do make it visually more clear what type is returned by a function. +They can also speed up TypeScript type checking performance in large codebases with many large functions. -This rule aims to ensure that the values returned from functions are of the expected type. +This rule enforces that functions do have an explicit return type annotation. + +## Examples diff --git a/packages/eslint-plugin/docs/rules/explicit-member-accessibility.md b/packages/eslint-plugin/docs/rules/explicit-member-accessibility.md index 6cb6068a887..87d7d23b038 100644 --- a/packages/eslint-plugin/docs/rules/explicit-member-accessibility.md +++ b/packages/eslint-plugin/docs/rules/explicit-member-accessibility.md @@ -6,12 +6,16 @@ description: 'Require explicit accessibility modifiers on class properties and m > > See **https://typescript-eslint.io/rules/explicit-member-accessibility** for documentation. -Leaving off accessibility modifier and making everything public can make -your interface hard to use by others. -If you make all internal pieces private or protected, your interface will -be easier to use. +TypeScript allows placing explicit `public`, `protected`, and `private` accessibility modifiers in front of class members. +The modifiers exist solely in the type system and just server to describe who is allowed to access those members. -## Rule Details +Leaving off accessibility modifiers makes for less code to read and write. +Members are `public` by default. + +However, adding in explicit accessibility modifiers can be helpful in codebases with many classes for enforcing proper privacy of members. +Some developers also find it preferable for code readability to keep member publicity explicit. + +## Examples This rule aims to make code more readable and explicit about who can use which properties. @@ -324,4 +328,4 @@ If you think defaulting to public is a good default, then you should consider us ## Further Reading -- TypeScript [Accessibility Modifiers](https://www.typescriptlang.org/docs/handbook/classes.html#public-private-and-protected-modifiers) +- TypeScript [Accessibility Modifiers Handbook Docs](https://www.typescriptlang.org/docs/handbook/2/classes.html#member-visibility) diff --git a/packages/eslint-plugin/docs/rules/explicit-module-boundary-types.md b/packages/eslint-plugin/docs/rules/explicit-module-boundary-types.md index 48626a34b08..2995d3b2c7e 100644 --- a/packages/eslint-plugin/docs/rules/explicit-module-boundary-types.md +++ b/packages/eslint-plugin/docs/rules/explicit-module-boundary-types.md @@ -7,10 +7,10 @@ description: "Require explicit return and argument types on exported functions' > See **https://typescript-eslint.io/rules/explicit-module-boundary-types** for documentation. Explicit types for function return values and arguments makes it clear to any calling code what is the module boundary's input and output. +Adding explicit type annotations for those types can help improve code readability. +It can also improve TypeScript type checking performance on larger codebases. -## Rule Details - -This rule aims to ensure that the values returned from a module are of the expected type. +## Examples diff --git a/packages/eslint-plugin/docs/rules/func-call-spacing.md b/packages/eslint-plugin/docs/rules/func-call-spacing.md index 74de5955e9b..c30bbface28 100644 --- a/packages/eslint-plugin/docs/rules/func-call-spacing.md +++ b/packages/eslint-plugin/docs/rules/func-call-spacing.md @@ -6,7 +6,7 @@ description: 'Require or disallow spacing between function identifiers and their > > See **https://typescript-eslint.io/rules/func-call-spacing** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/func-call-spacing`](https://eslint.org/docs/rules/func-call-spacing) rule. It adds support for generic type parameters on function calls. diff --git a/packages/eslint-plugin/docs/rules/indent.md b/packages/eslint-plugin/docs/rules/indent.md index 6c16f6f0c21..3d291c8b81c 100644 --- a/packages/eslint-plugin/docs/rules/indent.md +++ b/packages/eslint-plugin/docs/rules/indent.md @@ -14,7 +14,7 @@ Please read [Issue #1824: Problems with the indent rule](https://github.com/type ::: -## Rule Details +## Examples This rule extends the base [`eslint/indent`](https://eslint.org/docs/rules/indent) rule. It adds support for TypeScript nodes. diff --git a/packages/eslint-plugin/docs/rules/init-declarations.md b/packages/eslint-plugin/docs/rules/init-declarations.md index 97fc51bc5c3..da086da8392 100644 --- a/packages/eslint-plugin/docs/rules/init-declarations.md +++ b/packages/eslint-plugin/docs/rules/init-declarations.md @@ -6,7 +6,7 @@ description: 'Require or disallow initialization in variable declarations.' > > See **https://typescript-eslint.io/rules/init-declarations** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/init-declarations`](https://eslint.org/docs/rules/init-declarations) rule. It adds support for TypeScript's `declare` variables. diff --git a/packages/eslint-plugin/docs/rules/keyword-spacing.md b/packages/eslint-plugin/docs/rules/keyword-spacing.md index 17f731cfc94..5fe8888ff99 100644 --- a/packages/eslint-plugin/docs/rules/keyword-spacing.md +++ b/packages/eslint-plugin/docs/rules/keyword-spacing.md @@ -6,7 +6,7 @@ description: 'Enforce consistent spacing before and after keywords.' > > See **https://typescript-eslint.io/rules/keyword-spacing** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/keyword-spacing`](https://eslint.org/docs/rules/keyword-spacing) rule. This version adds support for generic type parameters on function calls. diff --git a/packages/eslint-plugin/docs/rules/lines-between-class-members.md b/packages/eslint-plugin/docs/rules/lines-between-class-members.md index f8d40de4089..13636d07a2c 100644 --- a/packages/eslint-plugin/docs/rules/lines-between-class-members.md +++ b/packages/eslint-plugin/docs/rules/lines-between-class-members.md @@ -8,7 +8,7 @@ description: 'Require or disallow an empty line between class members.' This rule improves readability by enforcing lines between class members. It will not check empty lines before the first member and after the last member. This rule will require or disallow an empty line between class members. -## Rule Details +## Examples This rule extends the base [`eslint/lines-between-class-members`](https://eslint.org/docs/rules/lines-between-class-members) rule. It adds support for ignoring overload methods in a class. diff --git a/packages/eslint-plugin/docs/rules/member-delimiter-style.md b/packages/eslint-plugin/docs/rules/member-delimiter-style.md index 1437e97ba60..d2e1f59ec4f 100644 --- a/packages/eslint-plugin/docs/rules/member-delimiter-style.md +++ b/packages/eslint-plugin/docs/rules/member-delimiter-style.md @@ -6,82 +6,29 @@ description: 'Require a specific member delimiter style for interfaces and type > > See **https://typescript-eslint.io/rules/member-delimiter-style** for documentation. -Enforces a consistent member delimiter style in interfaces and type literals. There are three member delimiter styles primarily used in TypeScript: - -- Semicolon style (default, preferred in TypeScript). +TypeScript allows three delimiters between members in interfaces and type aliases: ```ts interface Foo { + // Semicolons (default, preferred in TypeScript): name: string; - greet(): void; -} - -type Bar = { - name: string; - greet(): void; -} -``` - -- Comma style (JSON style). - -```ts -interface Foo { - name: string, - greet(): void, -} - -type Bar = { + // Commas (JSON-like): name: string, - greet(): void, -} -``` -- Line break (none) style. - - -```ts -interface Foo { + // Line breaks (none): name: string - greet(): void -} - -type Bar = { - name: string - greet(): void } ``` -The rule also enforces the presence (or absence) of the delimiter in the last member of the interface and/or type literal. -Finally, this rule can enforce separate delimiter syntax for single line declarations. +For code readability, it's generally best to use the same style consistently in your codebase. -## Rule Details - -This rule aims to standardize the way interface and type literal members are delimited. +This rule enforces keeping to one configurable code style. +It can also standardize the presence (or absence) of a delimiter in the last member of a construct, as well as a separate delimiter syntax for single line declarations. ## Options -```ts -interface BaseConfig { - multiline?: { - delimiter?: 'none' | 'semi' | 'comma'; - requireLast?: boolean; - }; - singleline?: { - delimiter?: 'semi' | 'comma'; - requireLast?: boolean; - }; -} -type Config = BaseConfig & { - overrides?: { - interface?: BaseConfig; - typeLiteral?: BaseConfig; - }; - multilineDetection?: 'brackets' | 'last-member'; -}; -``` - Default config: ```json diff --git a/packages/eslint-plugin/docs/rules/member-ordering.md b/packages/eslint-plugin/docs/rules/member-ordering.md index 2765aeb5dd6..9a6ca8d5dbc 100644 --- a/packages/eslint-plugin/docs/rules/member-ordering.md +++ b/packages/eslint-plugin/docs/rules/member-ordering.md @@ -6,11 +6,8 @@ description: 'Require a consistent member declaration order.' > > See **https://typescript-eslint.io/rules/member-ordering** for documentation. -A consistent ordering of fields, methods and constructors can make interfaces, type literals, classes and class expressions easier to read, navigate, and edit. - -## Rule Details - -This rule aims to standardize the way class declarations, class expressions, interfaces and type literals are structured and ordered. +This rule aims to standardize the way classes, interfaces, and type literals are structured and ordered. +A consistent ordering of fields, methods and constructors can make code easier to read, navigate, and edit. ## Options diff --git a/packages/eslint-plugin/docs/rules/method-signature-style.md b/packages/eslint-plugin/docs/rules/method-signature-style.md index 4d6bea7ebdf..4997ea09281 100644 --- a/packages/eslint-plugin/docs/rules/method-signature-style.md +++ b/packages/eslint-plugin/docs/rules/method-signature-style.md @@ -6,20 +6,20 @@ description: 'Enforce using a particular method signature syntax.' > > See **https://typescript-eslint.io/rules/method-signature-style** for documentation. -There are two ways to define an object/interface function property. +TypeScript provides two ways to define an object/interface function property: ```ts -// method shorthand syntax -interface T1 { +interface Example { + // method shorthand syntax func(arg: string): number; -} -// regular property with function type -interface T2 { + // regular property with function type func: (arg: string) => number; } ``` +The two are very similar; most of the time it doesn't matter which one you use. + A good practice is to use the TypeScript's `strict` option (which implies `strictFunctionTypes`) which enables correct typechecking for function properties only (method signatures get old behavior). TypeScript FAQ: diff --git a/packages/eslint-plugin/docs/rules/naming-convention.md b/packages/eslint-plugin/docs/rules/naming-convention.md index ef6d82e8302..50bd1751518 100644 --- a/packages/eslint-plugin/docs/rules/naming-convention.md +++ b/packages/eslint-plugin/docs/rules/naming-convention.md @@ -9,9 +9,7 @@ description: 'Enforce naming conventions for everything across a codebase.' Enforcing naming conventions helps keep the codebase consistent, and reduces overhead when thinking about how to name a variable. Additionally, a well-designed style guide can help communicate intent, such as by enforcing all private properties begin with an `_`, and all global-level constants are written in `UPPER_CASE`. -There are many different rules that have existed over time, but they have had the problem of not having enough granularity, meaning it was hard to have a well defined style guide, and most of the time you needed 3 or more rules at once to enforce different conventions, hoping they didn't conflict. - -## Rule Details +## Examples This rule allows you to enforce conventions for any identifier, using granular selectors to create a fine-grained style guide. diff --git a/packages/eslint-plugin/docs/rules/no-array-constructor.md b/packages/eslint-plugin/docs/rules/no-array-constructor.md index 54b69eb91ba..c6b147752f2 100644 --- a/packages/eslint-plugin/docs/rules/no-array-constructor.md +++ b/packages/eslint-plugin/docs/rules/no-array-constructor.md @@ -6,7 +6,7 @@ description: 'Disallow generic `Array` constructors.' > > See **https://typescript-eslint.io/rules/no-array-constructor** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/no-array-constructor`](https://eslint.org/docs/rules/no-array-constructor) rule. It adds support for the generically typed `Array` constructor (`new Array()`). diff --git a/packages/eslint-plugin/docs/rules/no-base-to-string.md b/packages/eslint-plugin/docs/rules/no-base-to-string.md index 857c82091f6..7409f5e134e 100644 --- a/packages/eslint-plugin/docs/rules/no-base-to-string.md +++ b/packages/eslint-plugin/docs/rules/no-base-to-string.md @@ -6,20 +6,14 @@ description: 'Require `.toString()` to only be called on objects which provide u > > See **https://typescript-eslint.io/rules/no-base-to-string** for documentation. -Requires `.toString()` to only be called on objects which provide useful information when stringified. - JavaScript will call `toString()` on an object when it is converted to a string, such as when `+` adding to a string or in `${}` template literals. +The default Object `.toString()` returns `"[object Object]"`, which is often not what was intended. +This rule reports on stringified values that aren't primitives and don't define a more useful `.toString()` method. -The default Object `.toString()` returns `"[object Object]"`, so this rule requires stringified objects define a more useful `.toString()` method. - -Note that `Function` provides its own `.toString()` that returns the function's code. -Functions are not flagged by this rule. - -This rule has some overlap with [`restrict-plus-operands`](./restrict-plus-operands.md) and [`restrict-template-expressions`](./restrict-template-expressions.md). - -## Rule Details +> Note that `Function` provides its own `.toString()` that returns the function's code. +> Functions are not flagged by this rule. -This rule prevents accidentally defaulting to the base Object `.toString()` method. +## Examples @@ -84,4 +78,11 @@ let text = `${value}`; If you don't mind `"[object Object]"` in your strings, then you will not need this rule. +## Related To + +- [`restrict-plus-operands`](./restrict-plus-operands.md) +- [`restrict-template-expressions`](./restrict-template-expressions.md) + +## Further Reading + - [`Object.prototype.toString()` MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString) diff --git a/packages/eslint-plugin/docs/rules/no-confusing-non-null-assertion.md b/packages/eslint-plugin/docs/rules/no-confusing-non-null-assertion.md index 1b67f558af5..34d474cf853 100644 --- a/packages/eslint-plugin/docs/rules/no-confusing-non-null-assertion.md +++ b/packages/eslint-plugin/docs/rules/no-confusing-non-null-assertion.md @@ -6,8 +6,6 @@ description: 'Disallow non-null assertion in locations that may be confusing.' > > See **https://typescript-eslint.io/rules/no-confusing-non-null-assertion** for documentation. -## Rule Details - Using a non-null assertion (`!`) next to an assign or equals check (`=` or `==` or `===`) creates code that is confusing as it looks similar to a not equals check (`!=` `!==`). ```typescript @@ -16,6 +14,10 @@ a !== b; // not equals test(`!==`) a! === b; // a non-null assertions(`!`) and an triple equals test(`===`) ``` +This rule flags confusing `!` assertions and suggests either removing them or wrapping the asserted expression in `()` parenthesis. + +## Examples + ### ❌ Incorrect diff --git a/packages/eslint-plugin/docs/rules/no-confusing-void-expression.md b/packages/eslint-plugin/docs/rules/no-confusing-void-expression.md index 4c4f6b1fa21..dbc0aaee9e8 100644 --- a/packages/eslint-plugin/docs/rules/no-confusing-void-expression.md +++ b/packages/eslint-plugin/docs/rules/no-confusing-void-expression.md @@ -6,12 +6,11 @@ description: 'Require expressions of type void to appear in statement position.' > > See **https://typescript-eslint.io/rules/no-confusing-void-expression** for documentation. -Returning the results of an expression whose type is void can be misleading. -Attempting to do so is likely a symptom of expecting a different return type from a function. -Even if used correctly, it can be misleading for other developers, -who don't know what a particular function does and if its result matters. +`void` in TypeScript refers to a function return that is meant to be ignored. +Attempting to use a `void`-typed value, such as storing the result of a called function in a variable, is often a sign of a programmer error. +`void` can also be misleading for other developers even if used correctly. -This rule provides automatic fixes for most common cases. +This rule prevents `void` type expressions from being used in misleading locations such as being assigned to a variable, provided as a function argument, or returned from a function. ## Examples diff --git a/packages/eslint-plugin/docs/rules/no-dupe-class-members.md b/packages/eslint-plugin/docs/rules/no-dupe-class-members.md index 2bfc1864f7e..432ac55f014 100644 --- a/packages/eslint-plugin/docs/rules/no-dupe-class-members.md +++ b/packages/eslint-plugin/docs/rules/no-dupe-class-members.md @@ -6,7 +6,7 @@ description: 'Disallow duplicate class members.' > > See **https://typescript-eslint.io/rules/no-dupe-class-members** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/no-dupe-class-members`](https://eslint.org/docs/rules/no-dupe-class-members) rule. It adds support for TypeScript's method overload definitions. diff --git a/packages/eslint-plugin/docs/rules/no-duplicate-enum-values.md b/packages/eslint-plugin/docs/rules/no-duplicate-enum-values.md index e65884f821f..22b951a4a16 100644 --- a/packages/eslint-plugin/docs/rules/no-duplicate-enum-values.md +++ b/packages/eslint-plugin/docs/rules/no-duplicate-enum-values.md @@ -8,9 +8,12 @@ description: 'Disallow duplicate enum member values.' Although TypeScript supports duplicate enum member values, people usually expect members to have unique values within the same enum. Duplicate values can lead to bugs that are hard to track down. -## Rule Details +## Examples -This rule disallows defining an enum with multiple members initialized to the same value. Now it only enforces on enum members initialized with String or Number literals. Members without initializer or initialized with an expression are not checked by this rule. +This rule disallows defining an enum with multiple members initialized to the same value. + +> This rule only enforces on enum members initialized with string or number literals. +> Members without an initializer or initialized with an expression are not checked by this rule. diff --git a/packages/eslint-plugin/docs/rules/no-dynamic-delete.md b/packages/eslint-plugin/docs/rules/no-dynamic-delete.md index 78b1a1453bd..e6afb335bc8 100644 --- a/packages/eslint-plugin/docs/rules/no-dynamic-delete.md +++ b/packages/eslint-plugin/docs/rules/no-dynamic-delete.md @@ -7,12 +7,12 @@ description: 'Disallow using the `delete` operator on computed key expressions.' > See **https://typescript-eslint.io/rules/no-dynamic-delete** for documentation. Deleting dynamically computed keys can be dangerous and in some cases not well optimized. - -## Rule Details - Using the `delete` operator on keys that aren't runtime constants could be a sign that you're using the wrong data structures. Using `Object`s with added and removed keys can cause occasional edge case bugs, such as if a key is named `"hasOwnProperty"`. -Consider using a `Map` or `Set` if you’re storing collections of objects. + +> Consider using a `Map` or `Set` if you’re storing collections of objects. + +## Examples diff --git a/packages/eslint-plugin/docs/rules/no-empty-function.md b/packages/eslint-plugin/docs/rules/no-empty-function.md index b889968c071..529a8a2df7a 100644 --- a/packages/eslint-plugin/docs/rules/no-empty-function.md +++ b/packages/eslint-plugin/docs/rules/no-empty-function.md @@ -6,7 +6,7 @@ description: 'Disallow empty functions.' > > See **https://typescript-eslint.io/rules/no-empty-function** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/no-empty-function`](https://eslint.org/docs/rules/no-empty-function) rule. It adds support for handling TypeScript specific code that would otherwise trigger the rule. diff --git a/packages/eslint-plugin/docs/rules/no-empty-interface.md b/packages/eslint-plugin/docs/rules/no-empty-interface.md index 17bebea168f..194a6e6a654 100644 --- a/packages/eslint-plugin/docs/rules/no-empty-interface.md +++ b/packages/eslint-plugin/docs/rules/no-empty-interface.md @@ -6,13 +6,13 @@ description: 'Disallow the declaration of empty interfaces.' > > See **https://typescript-eslint.io/rules/no-empty-interface** for documentation. -An empty interface is equivalent to its supertype. If the interface does not implement a supertype, then -the interface is equivalent to an empty object (`{}`). In both cases it can be omitted. - -## Rule Details +An empty interface in TypeScript does very little: any non-nullable value is assignable to `{}`. +Using an empty interface is often a sign of programmer error, such as misunderstanding the concept of `{}` or forgetting to fill in fields. This rule aims to ensure that only meaningful interfaces are declared in the code. +## Examples + ### ❌ Incorrect diff --git a/packages/eslint-plugin/docs/rules/no-explicit-any.md b/packages/eslint-plugin/docs/rules/no-explicit-any.md index b32acb43902..efec5011373 100644 --- a/packages/eslint-plugin/docs/rules/no-explicit-any.md +++ b/packages/eslint-plugin/docs/rules/no-explicit-any.md @@ -6,16 +6,13 @@ description: 'Disallow the `any` type.' > > See **https://typescript-eslint.io/rules/no-explicit-any** for documentation. -Using the `any` type defeats the purpose of using TypeScript. -When `any` is used, all compiler type checks around that value are ignored. +The `any` type in TypeScript is a dangerous "escape hatch" from the type system. +Using `any` disables many type checking rules and is generally best used only as a last resort or when prototyping code. +This rule reports on explicit uses of the `any` keyword as a type annotation. -## Rule Details +> TypeScript's `--noImplicitAny` compiler option prevents an implied `any`, but doesn't prevent `any` from being explicitly used the way this rule does. -This rule doesn't allow `any` types to be defined. -It aims to keep TypeScript maximally useful. -TypeScript has a compiler flag for `--noImplicitAny` that will prevent -an `any` type from being implied by the compiler, but doesn't prevent -`any` from being explicitly used. +## Examples @@ -164,6 +161,14 @@ interface Garply { If an unknown type or a library without typings is used and you want to be able to specify `any`. +## Related To + +- [`no-unsafe-argument`](./no-unsafe-argument.md) +- [`no-unsafe-assignment`](./no-unsafe-assignment.md) +- [`no-unsafe-call`](./no-unsafe-call.md) +- [`no-unsafe-member-access`](./no-unsafe-member-access.md) +- [`no-unsafe-return`](./no-unsafe-return.md) + ## Further Reading - TypeScript [any type](https://www.typescriptlang.org/docs/handbook/basic-types.html#any) diff --git a/packages/eslint-plugin/docs/rules/no-extra-non-null-assertion.md b/packages/eslint-plugin/docs/rules/no-extra-non-null-assertion.md index 28b47a74531..db2c584827c 100644 --- a/packages/eslint-plugin/docs/rules/no-extra-non-null-assertion.md +++ b/packages/eslint-plugin/docs/rules/no-extra-non-null-assertion.md @@ -1,14 +1,15 @@ --- -description: 'Disallow extra non-null assertion.' +description: 'Disallow extra non-null assertions.' --- > 🛑 This file is source code, not the primary documentation location! 🛑 > > See **https://typescript-eslint.io/rules/no-extra-non-null-assertion** for documentation. -## Rule Details +The `!` non-null assertion operator in TypeScript is used to assert that a value's type does not include `null` or `undefined`. +Using the operator any more than once on a single value does nothing. -Examples of code for this rule: +## Examples diff --git a/packages/eslint-plugin/docs/rules/no-extra-parens.md b/packages/eslint-plugin/docs/rules/no-extra-parens.md index 4bd89ac91b9..0c5cc21941e 100644 --- a/packages/eslint-plugin/docs/rules/no-extra-parens.md +++ b/packages/eslint-plugin/docs/rules/no-extra-parens.md @@ -6,7 +6,7 @@ description: 'Disallow unnecessary parentheses.' > > See **https://typescript-eslint.io/rules/no-extra-parens** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/no-extra-parens`](https://eslint.org/docs/rules/no-extra-parens) rule. It adds support for TypeScript type assertions. diff --git a/packages/eslint-plugin/docs/rules/no-extra-semi.md b/packages/eslint-plugin/docs/rules/no-extra-semi.md index a8f3cdca1b2..086bd87f450 100644 --- a/packages/eslint-plugin/docs/rules/no-extra-semi.md +++ b/packages/eslint-plugin/docs/rules/no-extra-semi.md @@ -6,7 +6,7 @@ description: 'Disallow unnecessary semicolons.' > > See **https://typescript-eslint.io/rules/no-extra-semi** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/no-extra-semi`](https://eslint.org/docs/rules/no-extra-semi) rule. It adds support for class properties. diff --git a/packages/eslint-plugin/docs/rules/no-extraneous-class.md b/packages/eslint-plugin/docs/rules/no-extraneous-class.md index 2efb49e9556..4cf0a2c67ad 100644 --- a/packages/eslint-plugin/docs/rules/no-extraneous-class.md +++ b/packages/eslint-plugin/docs/rules/no-extraneous-class.md @@ -6,23 +6,21 @@ description: 'Disallow classes used as namespaces.' > > See **https://typescript-eslint.io/rules/no-extraneous-class** for documentation. -This rule warns when a class has no non-static members, such as for a class used exclusively as a static namespace. - -## Rule Details +This rule reports when a class has no non-static members, such as for a class used exclusively as a static namespace. Users who come from a [OOP](https://en.wikipedia.org/wiki/Object-oriented_programming) paradigm may wrap their utility functions in an extra class, instead of putting them at the top level of an ECMAScript module. Doing so is generally unnecessary in JavaScript and TypeScript projects. - Wrapper classes add extra cognitive complexity to code without adding any structural improvements - Whatever would be put on them, such as utility functions, are already organized by virtue of being in a module. - - As an alternative, you can always `import * as ...` the module to get all of them in a single object. + - As an alternative, you can `import * as ...` the module to get all of them in a single object. - IDEs can't provide as good suggestions for static class or namespace imported properties when you start typing property names - It's more difficult to statically analyze code for unused variables, etc. when they're all on the class (see: [Finding dead code (and dead types) in TypeScript](https://effectivetypescript.com/2020/10/20/tsprune)). -This rule also flags classes that have only a constructor and no fields. +This rule also reports classes that have only a constructor and no fields. Those classes can generally be replaced with a standalone function. -Examples of code for this rule: +## Examples diff --git a/packages/eslint-plugin/docs/rules/no-floating-promises.md b/packages/eslint-plugin/docs/rules/no-floating-promises.md index 09e86b85308..289e42f903c 100644 --- a/packages/eslint-plugin/docs/rules/no-floating-promises.md +++ b/packages/eslint-plugin/docs/rules/no-floating-promises.md @@ -7,9 +7,9 @@ description: 'Require Promise-like statements to be handled appropriately.' > See **https://typescript-eslint.io/rules/no-floating-promises** for documentation. A "floating" Promise is one that is created without any code set up to handle any errors it might throw. - Floating Promises can cause several issues, such as improperly sequenced operations, ignored Promise rejections, and more. +This rule reports when a Promise is created and not properly handled. Valid ways of handling a Promise-valued statement include: - `await`ing it @@ -22,9 +22,7 @@ Valid ways of handling a Promise-valued statement include: See [`no-misused-promises`](./no-misused-promises.md) for detecting code that provides Promises to _logical_ locations such as if statements. ::: -## Rule Details - -Examples of code for this rule: +## Examples diff --git a/packages/eslint-plugin/docs/rules/no-for-in-array.md b/packages/eslint-plugin/docs/rules/no-for-in-array.md index f046ff8ddd6..759f427b9ac 100644 --- a/packages/eslint-plugin/docs/rules/no-for-in-array.md +++ b/packages/eslint-plugin/docs/rules/no-for-in-array.md @@ -6,40 +6,48 @@ description: 'Disallow iterating over an array with a for-in loop.' > > See **https://typescript-eslint.io/rules/no-for-in-array** for documentation. -This rule prohibits iterating over an array with a for-in loop. - -## Rule Details - -A for-in loop (`for (var k in o)`) iterates over the properties of an Object. +A for-in loop (`for (var i in o)`) iterates over the properties of an Object. While it is legal to use for-in loops with array types, it is not common. for-in will iterate over the indices of the array as strings, omitting any "holes" in the array. -More common is to use for-of, which iterates over the values of an array. -If you want to iterate over the indices, alternatives include: -```js -array.forEach((value, index) => { ... }); -for (const [index, value] of array.entries()) { ... } -for (let i = 0; i < array.length; i++) { ... } -``` - -Examples of code for this rule: +## Examples ### ❌ Incorrect ```js -for (const x in [3, 4, 5]) { - console.log(x); +declare const array: string[]; + +for (const i in array) { + console.log(array[i]); +} + +for (const i in array) { + console.log(i, array[i]); } ``` ### ✅ Correct ```js -for (const x in { a: 3, b: 4, c: 5 }) { - console.log(x); +declare const array: string[]; + +for (const value of array) { + console.log(value); +} + +for (let i = 0; i < array.length; i += 1) { + console.log(i, array[i]); +} + +array.forEach((value, i) => { + console.log(i, value); +}) + +for (const [i, value] of array.entries()) { + console.log(i, value); } ``` diff --git a/packages/eslint-plugin/docs/rules/no-implicit-any-catch.md b/packages/eslint-plugin/docs/rules/no-implicit-any-catch.md index 943e2c75b21..ea75c981890 100644 --- a/packages/eslint-plugin/docs/rules/no-implicit-any-catch.md +++ b/packages/eslint-plugin/docs/rules/no-implicit-any-catch.md @@ -19,12 +19,10 @@ The `noImplicitAny` flag in TypeScript does not cover this for backwards compati ## DEPRECATED -## Rule Details +## Examples This rule requires an explicit type to be declared on a catch clause variable. -Examples of code for this rule: - ### ❌ Incorrect diff --git a/packages/eslint-plugin/docs/rules/no-implied-eval.md b/packages/eslint-plugin/docs/rules/no-implied-eval.md index 9f3ad17180f..918b6a12e75 100644 --- a/packages/eslint-plugin/docs/rules/no-implied-eval.md +++ b/packages/eslint-plugin/docs/rules/no-implied-eval.md @@ -25,12 +25,10 @@ passed in to be interpreted. The same can be done with `setInterval()`, `setImme The best practice is to avoid using `new Function()` or `execScript()` and always use a function for the first argument of `setTimeout()`, `setInterval()` and `setImmediate()`. -## Rule Details +## Examples This rule aims to eliminate implied `eval()` through the use of `new Function()`, `setTimeout()`, `setInterval()`, `setImmediate()` or `execScript()`. -Examples of code for this rule: - ### ❌ Incorrect diff --git a/packages/eslint-plugin/docs/rules/no-inferrable-types.md b/packages/eslint-plugin/docs/rules/no-inferrable-types.md index a29427a33cf..0427bf8acad 100644 --- a/packages/eslint-plugin/docs/rules/no-inferrable-types.md +++ b/packages/eslint-plugin/docs/rules/no-inferrable-types.md @@ -6,14 +6,11 @@ description: 'Disallow explicit type declarations for variables or parameters in > > See **https://typescript-eslint.io/rules/no-inferrable-types** for documentation. -Explicit types where they can be easily inferred may add unnecessary verbosity. +TypeScript is able to infer the types of parameters, properties, and variables from their default or initial values. +There is no need to use an explicit `:` type annotation on one of those constructs initialized to a boolean, number, or string. +Doing so adds unnecessary verbosity to code -making it harder to read- and in some cases can prevent TypeScript from inferring a more specific literal type (e.g. `10`) instead of the more general primitive type (e.g. `number`) -## Rule Details - -This rule disallows explicit type declarations on parameters, variables -and properties where the type can be easily inferred from its value. - -Examples of code with the default options: +## Examples @@ -21,30 +18,17 @@ Examples of code with the default options: ```ts const a: bigint = 10n; -const a: bigint = -10n; const a: bigint = BigInt(10); -const a: bigint = -BigInt(10); -const a: boolean = false; -const a: boolean = true; -const a: boolean = Boolean(null); const a: boolean = !0; +const a: boolean = Boolean(null); +const a: boolean = true; +const a: null = null; const a: number = 10; -const a: number = +10; -const a: number = -10; -const a: number = Number('1'); -const a: number = +Number('1'); -const a: number = -Number('1'); const a: number = Infinity; -const a: number = +Infinity; -const a: number = -Infinity; const a: number = NaN; -const a: number = +NaN; -const a: number = -NaN; -const a: null = null; +const a: number = Number('1'); const a: RegExp = /a/; -const a: RegExp = RegExp('a'); const a: RegExp = new RegExp('a'); -const a: string = 'str'; const a: string = `str`; const a: string = String(1); const a: symbol = Symbol('a'); @@ -62,30 +46,17 @@ function fn(a: number = 5, b: boolean = true) {} ```ts const a = 10n; -const a = -10n; const a = BigInt(10); -const a = -BigInt(10); -const a = false; -const a = true; -const a = Boolean(null); const a = !0; +const a = Boolean(null); +const a = true; +const a = null; const a = 10; -const a = +10; -const a = -10; -const a = Number('1'); -const a = +Number('1'); -const a = -Number('1'); const a = Infinity; -const a = +Infinity; -const a = -Infinity; const a = NaN; -const a = +NaN; -const a = -NaN; -const a = null; +const a = Number('1'); const a = /a/; -const a = RegExp('a'); const a = new RegExp('a'); -const a = 'str'; const a = `str`; const a = String(1); const a = Symbol('a'); @@ -97,8 +68,6 @@ class Foo { } function fn(a = 5, b = true) {} - -function fn(a: number, b: boolean, c: string) {} ``` diff --git a/packages/eslint-plugin/docs/rules/no-invalid-this.md b/packages/eslint-plugin/docs/rules/no-invalid-this.md index 53e0f68fa9f..4d6abe81f70 100644 --- a/packages/eslint-plugin/docs/rules/no-invalid-this.md +++ b/packages/eslint-plugin/docs/rules/no-invalid-this.md @@ -6,7 +6,7 @@ description: 'Disallow `this` keywords outside of classes or class-like objects. > > See **https://typescript-eslint.io/rules/no-invalid-this** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/no-invalid-this`](https://eslint.org/docs/rules/no-invalid-this) rule. It adds support for TypeScript's `this` parameters. diff --git a/packages/eslint-plugin/docs/rules/no-invalid-void-type.md b/packages/eslint-plugin/docs/rules/no-invalid-void-type.md index a3691936371..d2b60d59e68 100644 --- a/packages/eslint-plugin/docs/rules/no-invalid-void-type.md +++ b/packages/eslint-plugin/docs/rules/no-invalid-void-type.md @@ -6,21 +6,14 @@ description: 'Disallow `void` type outside of generic or return types.' > > See **https://typescript-eslint.io/rules/no-invalid-void-type** for documentation. -Disallows usage of `void` type outside of return types or generic type arguments. -If `void` is used as return type, it shouldn’t be a part of intersection/union type with most other types. +`void` in TypeScript refers to a function return that is meant to be ignored. +Attempting to use a `void` type outside of a return type or generic type argument is often a sign of programmer error. +`void` can also be misleading for other developers even if used correctly. -## Rationale +> The `void` type means cannot be mixed with any other types, other than `never`, which accepts all types. +> If you think you need this then you probably want the `undefined` type instead. -The `void` type means “nothing” or that a function does not return any value, -in contrast with implicit `undefined` type which means that a function returns a value `undefined`. -So “nothing” cannot be mixed with any other types, other than `never`, which accepts all types. -If you need this - use the `undefined` type instead. - -## Rule Details - -This rule aims to ensure that the `void` type is only used in valid places. - -Examples of code for this rule: +## Examples diff --git a/packages/eslint-plugin/docs/rules/no-loop-func.md b/packages/eslint-plugin/docs/rules/no-loop-func.md index 753eb115cfb..e2ba64a8ecd 100644 --- a/packages/eslint-plugin/docs/rules/no-loop-func.md +++ b/packages/eslint-plugin/docs/rules/no-loop-func.md @@ -6,7 +6,7 @@ description: 'Disallow function declarations that contain unsafe references insi > > See **https://typescript-eslint.io/rules/no-loop-func** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/no-loop-func`](https://eslint.org/docs/rules/no-loop-func) rule. It adds support for TypeScript types. diff --git a/packages/eslint-plugin/docs/rules/no-loss-of-precision.md b/packages/eslint-plugin/docs/rules/no-loss-of-precision.md index 62e263219e8..f8db7ef6021 100644 --- a/packages/eslint-plugin/docs/rules/no-loss-of-precision.md +++ b/packages/eslint-plugin/docs/rules/no-loss-of-precision.md @@ -6,7 +6,7 @@ description: 'Disallow literal numbers that lose precision.' > > See **https://typescript-eslint.io/rules/no-loss-of-precision** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/no-loss-of-precision`](https://eslint.org/docs/rules/no-loss-of-precision) rule. It adds support for [numeric separators](https://github.com/tc39/proposal-numeric-separator). diff --git a/packages/eslint-plugin/docs/rules/no-magic-numbers.md b/packages/eslint-plugin/docs/rules/no-magic-numbers.md index 7af0e561536..258af4dd4cf 100644 --- a/packages/eslint-plugin/docs/rules/no-magic-numbers.md +++ b/packages/eslint-plugin/docs/rules/no-magic-numbers.md @@ -6,7 +6,7 @@ description: 'Disallow magic numbers.' > > See **https://typescript-eslint.io/rules/no-magic-numbers** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/no-magic-numbers`](https://eslint.org/docs/rules/no-magic-numbers) rule. It adds support for: diff --git a/packages/eslint-plugin/docs/rules/no-meaningless-void-operator.md b/packages/eslint-plugin/docs/rules/no-meaningless-void-operator.md index d99347a7514..f904c473d66 100644 --- a/packages/eslint-plugin/docs/rules/no-meaningless-void-operator.md +++ b/packages/eslint-plugin/docs/rules/no-meaningless-void-operator.md @@ -6,15 +6,15 @@ description: 'Disallow the `void` operator except when used to discard a value.' > > See **https://typescript-eslint.io/rules/no-meaningless-void-operator** for documentation. -Disallows the `void` operator when its argument is already of type `void` or `undefined`. +`void` in TypeScript refers to a function return that is meant to be ignored. +The `void` operator is a useful tool to convey the programmer's intent to discard a value. +For example, it is recommended as one way of suppressing [`@typescript-eslint/no-floating-promises`](./no-floating-promises.md) instead of adding `.catch()` to a promise. -## Rule Details +This rule helps an authors catch API changes where previously a value was being discarded at a call site, but the callee changed so it no longer returns a value. +When combined with [no-unused-expressions](https://eslint.org/docs/rules/no-unused-expressions), it also helps _readers_ of the code by ensuring consistency: a statement that looks like `void foo();` is **always** discarding a return value, and a statement that looks like `foo();` is **never** discarding a return value. +This rule reports on any `void` operator whose argument is already of type `void` or `undefined`. -The `void` operator is a useful tool to convey the programmer's intent to discard a value. For example, it is recommended as one way of suppressing [`@typescript-eslint/no-floating-promises`](./no-floating-promises.md) instead of adding `.catch()` to a promise. - -This rule helps an author catch API changes where previously a value was being discarded at a call site, but the callee changed so it no longer returns a value. When combined with [no-unused-expressions](https://eslint.org/docs/rules/no-unused-expressions), it also helps _readers_ of the code by ensuring consistency: a statement that looks like `void foo();` is **always** discarding a return value, and a statement that looks like `foo();` is **never** discarding a return value. - -Examples of code for this rule: +## Examples @@ -44,17 +44,4 @@ void bar(); // discarding a number ## Options -This rule accepts a single object option with the following default configuration: - -```json -{ - "@typescript-eslint/no-meaningless-void-operator": [ - "error", - { - "checkNever": false - } - ] -} -``` - -- `checkNever: true` will suggest removing `void` when the argument has type `never`. +`checkNever: true` will suggest removing `void` when the argument has type `never`. diff --git a/packages/eslint-plugin/docs/rules/no-misused-new.md b/packages/eslint-plugin/docs/rules/no-misused-new.md index 08459fba796..a311c40be7a 100644 --- a/packages/eslint-plugin/docs/rules/no-misused-new.md +++ b/packages/eslint-plugin/docs/rules/no-misused-new.md @@ -6,18 +6,20 @@ description: 'Enforce valid definition of `new` and `constructor`.' > > See **https://typescript-eslint.io/rules/no-misused-new** for documentation. -Warns on apparent attempts to define constructors for interfaces or `new` for classes. +JavaScript classes may define a `constructor` method that runs when a class instance is newly created. +TypeScript allows interfaces that describe a static class object to define a `new()` method (though this is rarely used in real world code). +Developers new to JavaScript classes and/or TypeScript interfaces may sometimes confuse when to use `constructor` or `new`. -## Rule Details +This rule reports when a class defines a method named `new` or an interface defines a method named `constructor`. -Examples of code for this rule: +## Examples ### ❌ Incorrect ```ts -class C { +declare class C { new(): C; } @@ -30,10 +32,15 @@ interface I { ### ✅ Correct ```ts -class C { - constructor() {} +declare class C { + constructor(); } + interface I { new (): C; } ``` + +## When Not To Use It + +If you intentionally want a class with a `new` method, and you're confident nobody working in your code will mistake it with a constructor. diff --git a/packages/eslint-plugin/docs/rules/no-misused-promises.md b/packages/eslint-plugin/docs/rules/no-misused-promises.md index 6e75b5db103..72d4e5c670b 100644 --- a/packages/eslint-plugin/docs/rules/no-misused-promises.md +++ b/packages/eslint-plugin/docs/rules/no-misused-promises.md @@ -15,40 +15,8 @@ functions are handled/awaited. See [`no-floating-promises`](./no-floating-promises.md) for detecting unhandled Promise _statements_. ::: -## Rule Details - -This rule accepts a single option which is an object with `checksConditionals`, -`checksVoidReturn`, and `checksSpreads` properties indicating which types of -misuse to flag. All are enabled by default. - ## Options -```ts -type Options = [ - { - checksConditionals?: boolean; - checksVoidReturn?: boolean | ChecksVoidReturnOptions; - checksSpreads?: boolean; - }, -]; - -interface ChecksVoidReturnOptions { - arguments?: boolean; - attributes?: boolean; - properties?: boolean; - returns?: boolean; - variables?: boolean; -} - -const defaultOptions: Options = [ - { - checksConditionals: true, - checksVoidReturn: true, - checksSpreads: true, - }, -]; -``` - ### `"checksConditionals"` If you don't want to check conditionals, you can configure the rule with `"checksConditionals": false`: @@ -66,6 +34,45 @@ If you don't want to check conditionals, you can configure the rule with `"check Doing so prevents the rule from looking at code like `if (somePromise)`. +Examples of code for this rule with `checksConditionals: true`: + + + +#### ❌ Incorrect + +```ts +const promise = Promise.resolve('value'); + +if (promise) { + // Do something +} + +const val = promise ? 123 : 456; + +while (promise) { + // Do something +} +``` + +#### ✅ Correct + +```ts +const promise = Promise.resolve('value'); + +// Always `await` the Promise in a conditional +if (await promise) { + // Do something +} + +const val = (await promise) ? 123 : 456; + +while (await promise) { + // Do something +} +``` + + + ### `"checksVoidReturn"` Likewise, if you don't want functions that return promises where a void return is @@ -107,64 +114,6 @@ For example, if you don't mind that passing a `() => Promise` to a `() => } ``` -### `"checksSpreads"` - -If you don't want to check object spreads, you can add this configuration: - -```json -{ - "@typescript-eslint/no-misused-promises": [ - "error", - { - "checksSpreads": false - } - ] -} -``` - -### `checksConditionals: true` - -Examples of code for this rule with `checksConditionals: true`: - - - -#### ❌ Incorrect - -```ts -const promise = Promise.resolve('value'); - -if (promise) { - // Do something -} - -const val = promise ? 123 : 456; - -while (promise) { - // Do something -} -``` - -#### ✅ Correct - -```ts -const promise = Promise.resolve('value'); - -// Always `await` the Promise in a conditional -if (await promise) { - // Do something -} - -const val = (await promise) ? 123 : 456; - -while (await promise) { - // Do something -} -``` - - - -### `checksVoidReturn: true` - Examples of code for this rule with `checksVoidReturn: true`: @@ -233,7 +182,20 @@ eventEmitter.on('some-event', () => { -### `checksSpreads: true` +### `"checksSpreads"` + +If you don't want to check object spreads, you can add this configuration: + +```json +{ + "@typescript-eslint/no-misused-promises": [ + "error", + { + "checksSpreads": false + } + ] +} +``` Examples of code for this rule with `checksSpreads: true`: diff --git a/packages/eslint-plugin/docs/rules/no-namespace.md b/packages/eslint-plugin/docs/rules/no-namespace.md index 6e4bda690be..e5f2d431d57 100644 --- a/packages/eslint-plugin/docs/rules/no-namespace.md +++ b/packages/eslint-plugin/docs/rules/no-namespace.md @@ -1,19 +1,18 @@ --- -description: 'Disallow custom TypeScript modules and namespaces.' +description: 'Disallow TypeScript namespaces.' --- > 🛑 This file is source code, not the primary documentation location! 🛑 > > See **https://typescript-eslint.io/rules/no-namespace** for documentation. -Custom TypeScript modules (`module foo {}`) and namespaces (`namespace foo {}`) are considered outdated -ways to organize TypeScript code. ES2015 module syntax is now preferred (`import`/`export`). +TypeScript historically allowed a form of code organization called "custom modules" (`module Example {}`), later renamed to "namespaces" (`namespace Example`). +Namespaces are an outdated way to organize TypeScript code. +ES2015 module syntax is now preferred (`import`/`export`). -This rule still allows the use of TypeScript module declarations to describe external APIs (`declare module 'foo' {}`). +> This rule does not report on the use of TypeScript module declarations to describe external APIs (`declare module 'foo' {}`). -## Rule Details - -This rule aims to standardize the way modules are declared. +## Examples Examples of code with the default options: diff --git a/packages/eslint-plugin/docs/rules/no-non-null-asserted-nullish-coalescing.md b/packages/eslint-plugin/docs/rules/no-non-null-asserted-nullish-coalescing.md index 19fd65779f8..09bf9be3be8 100644 --- a/packages/eslint-plugin/docs/rules/no-non-null-asserted-nullish-coalescing.md +++ b/packages/eslint-plugin/docs/rules/no-non-null-asserted-nullish-coalescing.md @@ -6,20 +6,16 @@ description: 'Disallow non-null assertions in the left operand of a nullish coal > > See **https://typescript-eslint.io/rules/no-non-null-asserted-nullish-coalescing** for documentation. -## Rule Details +The `??` nullish coalescing runtime operator allows providing a default value when dealing with `null` or `undefined`. +Using a `!` non-null assertion type operator in the left operand of a nullish coalescing operator is redundant, and likely a sign of programmer error or confusion over the two operators. -The nullish coalescing operator is designed to provide a default value when dealing with `null` or `undefined`. -Using non-null assertions in the left operand of the nullish coalescing operator is redundant. - -Examples of code for this rule: +## Examples ### ❌ Incorrect ```ts -/* eslint @typescript-eslint/no-non-null-asserted-nullish-coalescing: "error" */ - foo! ?? bar; foo.bazz! ?? bar; foo!.bazz! ?? bar; @@ -36,8 +32,6 @@ x! ?? ''; ### ✅ Correct ```ts -/* eslint @typescript-eslint/no-non-null-asserted-nullish-coalescing: "error" */ - foo ?? bar; foo ?? bar!; foo!.bazz ?? bar; @@ -49,10 +43,6 @@ let x: string; x! ?? ''; ``` -## When Not To Use It - -If you are not using TypeScript 3.7 (or greater), then you will not need to use this rule, as the nullish coalescing operator is not supported. - ## Further Reading - [TypeScript 3.7 Release Notes](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html) diff --git a/packages/eslint-plugin/docs/rules/no-non-null-asserted-optional-chain.md b/packages/eslint-plugin/docs/rules/no-non-null-asserted-optional-chain.md index 89f9a3c87b7..4a6c1607a94 100644 --- a/packages/eslint-plugin/docs/rules/no-non-null-asserted-optional-chain.md +++ b/packages/eslint-plugin/docs/rules/no-non-null-asserted-optional-chain.md @@ -6,52 +6,29 @@ description: 'Disallow non-null assertions after an optional chain expression.' > > See **https://typescript-eslint.io/rules/no-non-null-asserted-optional-chain** for documentation. -## Rule Details +`?.` optional chain expressions provide `undefined` if an object is `null` or `undefined`. +Using a `!` non-null assertion to assert the result of an `?.` optional chain expression is non-nullable is likely wrong. -Optional chain expressions are designed to return `undefined` if the optional property is nullish. -Using non-null assertions after an optional chain expression is wrong, and introduces a serious type safety hole into your code. +> Most of the time, either the object was not nullable and did not need the `?.` for its property lookup, or the `!` is incorrect and introducing a type safety hole. -Examples of code for this rule: +## Examples ### ❌ Incorrect ```ts -/* eslint @typescript-eslint/no-non-null-asserted-optional-chain: "error" */ - foo?.bar!; foo?.bar()!; - -// Prior to TS3.9, foo?.bar!.baz meant (foo?.bar).baz - i.e. the non-null assertion is applied to the entire chain so far. -// For TS3.9 and greater, the non-null assertion is only applied to the property itself, so it's safe. -// The following is incorrect code if you're using less than TS3.9 -foo?.bar!.baz; -foo?.bar!(); -foo?.bar!().baz; ``` ### ✅ Correct ```ts -/* eslint @typescript-eslint/no-non-null-asserted-optional-chain: "error" */ - foo?.bar; -(foo?.bar).baz; -foo?.bar(); foo?.bar(); -foo?.bar().baz; - -// The following is correct code if you're using TS3.9 or greater -foo?.bar!.baz; -foo?.bar!(); -foo?.bar!().baz; ``` -## When Not To Use It - -If you are not using TypeScript 3.7 (or greater), then you will not need to use this rule, as the operator is not supported. - ## Further Reading - [TypeScript 3.7 Release Notes](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html) diff --git a/packages/eslint-plugin/docs/rules/no-non-null-assertion.md b/packages/eslint-plugin/docs/rules/no-non-null-assertion.md index 6e60483bc54..d8ac3bd3104 100644 --- a/packages/eslint-plugin/docs/rules/no-non-null-assertion.md +++ b/packages/eslint-plugin/docs/rules/no-non-null-assertion.md @@ -6,36 +6,37 @@ description: 'Disallow non-null assertions using the `!` postfix operator.' > > See **https://typescript-eslint.io/rules/no-non-null-assertion** for documentation. -## Rule Details +TypeScript's `!` non-null assertion operator asserts to the type system that an expression is non-nullable, as in not `null` or `undefined`. +Using assertions to tell the type system new information is often a sign that code is not fully type-safe. +It's generally better to structure program logic so that TypeScript understands when values may be nullable. -Using non-null assertions cancels the benefits of the strict null-checking mode. - -Examples of code for this rule: +## Examples ### ❌ Incorrect ```ts -interface Foo { - bar?: string; +interface Example { + property?: string; } -const foo: Foo = getFoo(); -const includesBaz: boolean = foo.bar!.includes('baz'); +declare const example: Example; +const includesBaz = foo.property!.includes('baz'); ``` ### ✅ Correct ```ts -interface Foo { - bar?: string; +interface Example { + property?: string; } -const foo: Foo = getFoo(); -const includesBaz: boolean = foo.bar?.includes('baz') ?? false; +declare const example: Example; +const includesBaz = foo.property?.includes('baz') ?? false; ``` ## When Not To Use It -If you don't care about strict null-checking, then you will not need this rule. +If your project does not use the `strictNullChecks` compiler option, this rule is likely useless to you. +If your code is often wildly incorrect with respect to strict null-checking, your code may not yet be ready for this rule. diff --git a/packages/eslint-plugin/docs/rules/no-parameter-properties.md b/packages/eslint-plugin/docs/rules/no-parameter-properties.md index 2468cc5838a..16a91864d59 100644 --- a/packages/eslint-plugin/docs/rules/no-parameter-properties.md +++ b/packages/eslint-plugin/docs/rules/no-parameter-properties.md @@ -14,7 +14,7 @@ This rule has been deprecated in favour of the equivalent, better named [`parame Parameter properties can be confusing to those new to TypeScript as they are less explicit than other ways of declaring and initializing class members. -## Rule Details +## Examples This rule disallows the use of parameter properties in constructors, forcing the user to explicitly declare all properties in the class. diff --git a/packages/eslint-plugin/docs/rules/no-redeclare.md b/packages/eslint-plugin/docs/rules/no-redeclare.md index b51ba369ce5..faef214667c 100644 --- a/packages/eslint-plugin/docs/rules/no-redeclare.md +++ b/packages/eslint-plugin/docs/rules/no-redeclare.md @@ -6,7 +6,7 @@ description: 'Disallow variable redeclaration.' > > See **https://typescript-eslint.io/rules/no-redeclare** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/no-redeclare`](https://eslint.org/docs/rules/no-redeclare) rule. It adds support for TypeScript function overloads, and declaration merging. diff --git a/packages/eslint-plugin/docs/rules/no-redundant-type-constituents.md b/packages/eslint-plugin/docs/rules/no-redundant-type-constituents.md index 3cf63d4df49..69cd6c83af0 100644 --- a/packages/eslint-plugin/docs/rules/no-redundant-type-constituents.md +++ b/packages/eslint-plugin/docs/rules/no-redundant-type-constituents.md @@ -6,8 +6,6 @@ description: 'Disallow members of unions and intersections that do nothing or ov > > See **https://typescript-eslint.io/rules/no-redundant-type-constituents** for documentation. -## Rule Details - Some types can override some other types ("constituents") in a union or intersection and/or be overridden by some other types. TypeScript's set theory of types includes cases where a constituent type might be useless in the parent union or intersection. @@ -24,7 +22,7 @@ Within `&` intersections: - literal types "override" any primitive types in an intersection - literal types such as `""` "override" any of their primitive types such as `string` -Examples of code for this rule: +## Examples @@ -66,14 +64,11 @@ type IntersectionNever = string; type IntersectionBooleanLiteral = false; type IntersectionNumberLiteral = 1; type IntersectionStringLiteral = 'foo'; - -type ReturnUnionNever = () => string | never; ``` ## Limitations This rule plays it safe and only works with bottom types, top types, and comparing literal types to primitive types. -It also does not provide an auto-fixer just yet. ## Further Reading diff --git a/packages/eslint-plugin/docs/rules/no-require-imports.md b/packages/eslint-plugin/docs/rules/no-require-imports.md index b38486837e1..6e75a3d41cd 100644 --- a/packages/eslint-plugin/docs/rules/no-require-imports.md +++ b/packages/eslint-plugin/docs/rules/no-require-imports.md @@ -8,33 +8,30 @@ description: 'Disallow invocation of `require()`.' Prefer the newer ES6-style imports over `require()`. -## Rule Details - -Examples of code for this rule: +## Examples ### ❌ Incorrect ```ts -var lib = require('lib'); -let lib2 = require('lib2'); -var lib5 = require('lib5'), - lib6 = require('lib6'); -import lib8 = require('lib8'); +const lib1 = require('lib1'); +const { lib2 } = require('lib2'); +import lib3 = require('lib3'); ``` ### ✅ Correct ```ts -import { l } from 'lib'; -var lib3 = load('not_an_import'); -var lib4 = lib2.subImport; -var lib7 = 700; -import lib9 = lib2.anotherSubImport; -import lib10 from 'lib10'; +import * as lib1 from 'lib1'; +import { lib2 } from 'lib2'; +import * as lib3 from 'lib3'; ``` ## When Not To Use It -If you don't care about TypeScript module syntax, then you will not need this rule. +If you don't care about using newer module syntax, then you will not need this rule. + +## Related To + +- [`no-var-requires`](./no-var-requires.md) diff --git a/packages/eslint-plugin/docs/rules/no-restricted-imports.md b/packages/eslint-plugin/docs/rules/no-restricted-imports.md index 202143581f2..900a9cdd030 100644 --- a/packages/eslint-plugin/docs/rules/no-restricted-imports.md +++ b/packages/eslint-plugin/docs/rules/no-restricted-imports.md @@ -6,7 +6,7 @@ description: 'Disallow specified modules when loaded by `import`.' > > See **https://typescript-eslint.io/rules/no-restricted-imports** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/no-restricted-imports`](https://eslint.org/docs/rules/no-restricted-imports) rule. diff --git a/packages/eslint-plugin/docs/rules/no-shadow.md b/packages/eslint-plugin/docs/rules/no-shadow.md index c990ff97230..3adb286e317 100644 --- a/packages/eslint-plugin/docs/rules/no-shadow.md +++ b/packages/eslint-plugin/docs/rules/no-shadow.md @@ -6,7 +6,7 @@ description: 'Disallow variable declarations from shadowing variables declared i > > See **https://typescript-eslint.io/rules/no-shadow** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/no-shadow`](https://eslint.org/docs/rules/no-shadow) rule. It adds support for TypeScript's `this` parameters and global augmentation, and adds options for TypeScript features. diff --git a/packages/eslint-plugin/docs/rules/no-this-alias.md b/packages/eslint-plugin/docs/rules/no-this-alias.md index 8ba520d7af6..640d5a6a2b5 100644 --- a/packages/eslint-plugin/docs/rules/no-this-alias.md +++ b/packages/eslint-plugin/docs/rules/no-this-alias.md @@ -6,24 +6,24 @@ description: 'Disallow aliasing `this`.' > > See **https://typescript-eslint.io/rules/no-this-alias** for documentation. -This rule prohibits assigning variables to `this`. - -## Rule Details - Assigning a variable to `this` instead of properly using arrow lambdas may be a symptom of pre-ES6 practices or not managing scope well. -Instead of storing a reference to `this` and using it inside a `function () {`: +## Examples + + + +### ❌ Incorrect ```js const self = this; -> + setTimeout(function () { - self.doWork(); + self.doWork(); }); ``` -Use `() =>` arrow lambdas, as they preserve `this` scope for you: +### ✅ Correct ```js setTimeout(() => { @@ -31,13 +31,7 @@ setTimeout(() => { }); ``` -Examples of **incorrect** code for this rule: - -(see the rationale above) - -Examples of **correct** code for this rule: - -(see the rationale above) +## Options ## When Not To Use It diff --git a/packages/eslint-plugin/docs/rules/no-throw-literal.md b/packages/eslint-plugin/docs/rules/no-throw-literal.md index 9fb71fcbe49..f4d189067b9 100644 --- a/packages/eslint-plugin/docs/rules/no-throw-literal.md +++ b/packages/eslint-plugin/docs/rules/no-throw-literal.md @@ -11,12 +11,10 @@ The fundamental benefit of `Error` objects is that they automatically keep track This rule restricts what can be thrown as an exception. When it was first created, it only prevented literals from being thrown (hence the name), but it has now been expanded to only allow expressions which have a possibility of being an `Error` object. With the `allowThrowingAny` and `allowThrowingUnknown`, it can be configured to only allow throwing values which are guaranteed to be an instance of `Error`. -## Rule Details +## Examples This rule is aimed at maintaining consistency when throwing exception by disallowing to throw literals and other expressions which cannot possibly be an `Error` object. -Examples of code for this rule: - ### ❌ Incorrect diff --git a/packages/eslint-plugin/docs/rules/no-type-alias.md b/packages/eslint-plugin/docs/rules/no-type-alias.md index 4117d613345..a9774ebdde1 100644 --- a/packages/eslint-plugin/docs/rules/no-type-alias.md +++ b/packages/eslint-plugin/docs/rules/no-type-alias.md @@ -78,7 +78,7 @@ On the other hand, using a type alias as an interface can limit your ability to: Finally, mapping types is an advanced technique and leaving it open can quickly become a pain point in your application. -## Rule Details +## Examples This rule disallows the use of type aliases in favor of interfaces and simplified types (primitives, tuples, unions, intersections, etc). diff --git a/packages/eslint-plugin/docs/rules/no-unnecessary-boolean-literal-compare.md b/packages/eslint-plugin/docs/rules/no-unnecessary-boolean-literal-compare.md index 8e148460a42..69c9a33441b 100644 --- a/packages/eslint-plugin/docs/rules/no-unnecessary-boolean-literal-compare.md +++ b/packages/eslint-plugin/docs/rules/no-unnecessary-boolean-literal-compare.md @@ -6,25 +6,20 @@ description: 'Disallow unnecessary equality comparisons against boolean literals > > See **https://typescript-eslint.io/rules/no-unnecessary-boolean-literal-compare** for documentation. -Comparing boolean values to boolean literals is unnecessary, those comparisons result in the same booleans. Using the boolean values directly, or via a unary negation (`!value`), is more concise and clearer. - -## Rule Details +Comparing boolean values to boolean literals is unnecessary: those comparisons result in the same booleans. +Using the boolean values directly, or via a unary negation (`!value`), is more concise and clearer. This rule ensures that you do not include unnecessary comparisons with boolean literals. A comparison is considered unnecessary if it checks a boolean literal against any variable with just the `boolean` type. -A comparison is **_not_** considered unnecessary if the type is a union of booleans (`string | boolean`, `someObject | boolean`). - -**Warning**: Do not use this rule when `strictNullChecks` is disabled. -ESLint is not able to distinguish between `false` and `undefined` or `null` values. -This can cause unintended code changes when using autofix. +A comparison is **_not_** considered unnecessary if the type is a union of booleans (`string | boolean`, `SomeObject | boolean`, etc.). -**Note**: Throughout this page, only strict equality (`===` and `!==`) are -used in the examples. However, the implementation of the rule does not -distinguish between strict and loose equality. Any example below that uses -`===` would be treated the same way if `==` was used, and any example below -that uses `!==` would be treated the same way if `!=` was used. +## Examples -Examples of code for this rule: +:::note +Throughout this page, only strict equality (`===` and `!==`) are used in the examples. +However, the implementation of the rule does not distinguish between strict and loose equality. +Any example below that uses `===` would be treated the same way if `==` was used, and `!==` would be treated the same way if `!=` was used. +::: @@ -130,3 +125,9 @@ if (!(someNullCondition ?? true)) { | `nullableBooleanVar !== true` | `!nullableBooleanVar` | Only checked/fixed if the `allowComparingNullableBooleansToTrue` option is `false` | | `nullableBooleanVar === false` | `nullableBooleanVar ?? true` | Only checked/fixed if the `allowComparingNullableBooleansToFalse` option is `false` | | `nullableBooleanVar !== false` | `!(nullableBooleanVar ?? true)` | Only checked/fixed if the `allowComparingNullableBooleansToFalse` option is `false` | + +## Not To Use It + +Do not use this rule when `strictNullChecks` is disabled. +ESLint is not able to distinguish between `false` and `undefined` or `null` values. +This can cause unintended code changes when using autofix. diff --git a/packages/eslint-plugin/docs/rules/no-unnecessary-condition.md b/packages/eslint-plugin/docs/rules/no-unnecessary-condition.md index ac50dc295f3..8e052f2379f 100644 --- a/packages/eslint-plugin/docs/rules/no-unnecessary-condition.md +++ b/packages/eslint-plugin/docs/rules/no-unnecessary-condition.md @@ -6,7 +6,8 @@ description: 'Disallow conditionals where the type is always truthy or always fa > > See **https://typescript-eslint.io/rules/no-unnecessary-condition** for documentation. -Any expression being used as a condition must be able to evaluate as truthy or falsy in order to be considered "necessary". Conversely, any expression that always evaluates to truthy or always evaluates to falsy, as determined by the type of the expression, is considered unnecessary and will be flagged by this rule. +Any expression being used as a condition must be able to evaluate as truthy or falsy in order to be considered "necessary". +Conversely, any expression that always evaluates to truthy or always evaluates to falsy, as determined by the type of the expression, is considered unnecessary and will be flagged by this rule. The following expressions are checked: @@ -14,9 +15,7 @@ The following expressions are checked: - Conditions for `if`, `for`, `while`, and `do-while` statements - Base values of optional chain expressions -## Rule Details - -Examples of code for this rule: +## Examples diff --git a/packages/eslint-plugin/docs/rules/no-unnecessary-qualifier.md b/packages/eslint-plugin/docs/rules/no-unnecessary-qualifier.md index 58a2b80bf5d..6ca2afe17f5 100644 --- a/packages/eslint-plugin/docs/rules/no-unnecessary-qualifier.md +++ b/packages/eslint-plugin/docs/rules/no-unnecessary-qualifier.md @@ -6,31 +6,16 @@ description: 'Disallow unnecessary namespace qualifiers.' > > See **https://typescript-eslint.io/rules/no-unnecessary-qualifier** for documentation. -## Rule Details +Members of TypeScript enums and namespaces are generally retrieved as qualified property lookups: e.g. `Enum.member`. +However, when accessed within their parent enum or namespace, the qualifier is unnecessary: e.g. just `member` instead of `Enum.member`. +This rule reports when an enum or namespace qualifier is unnecessary. -This rule aims to let users know when a namespace or enum qualifier is unnecessary, -whether used for a type or for a value. - -Examples of code for this rule: +## Examples ### ❌ Incorrect -```ts -namespace A { - export type B = number; - const x: A.B = 3; -} -``` - -```ts -namespace A { - export const x = 3; - export const y = A.x; -} -``` - ```ts enum A { B, @@ -40,46 +25,27 @@ enum A { ```ts namespace A { - export namespace B { - export type T = number; - const x: A.B.T = 3; - } + export type B = number; + const x: A.B = 3; } ``` ### ✅ Correct -```ts -namespace X { - export type T = number; -} - -namespace Y { - export const x: X.T = 3; -} -``` - ```ts enum A { - X, - Y, -} - -enum B { - Z = A.X, + B, + C = B, } ``` ```ts -namespace X { - export type T = number; - namespace Y { - type T = string; - const x: X.T = 0; - } +namespace A { + export type B = number; + const x: B = 3; } ``` ## When Not To Use It -If you don't care about having unneeded namespace or enum qualifiers, then you don't need to use this rule. +If you don't care about having unneeded enum or namespace qualifiers, then you don't need to use this rule. diff --git a/packages/eslint-plugin/docs/rules/no-unnecessary-type-arguments.md b/packages/eslint-plugin/docs/rules/no-unnecessary-type-arguments.md index 976cf23e372..43526aec571 100644 --- a/packages/eslint-plugin/docs/rules/no-unnecessary-type-arguments.md +++ b/packages/eslint-plugin/docs/rules/no-unnecessary-type-arguments.md @@ -6,20 +6,17 @@ description: 'Disallow type arguments that are equal to the default.' > > See **https://typescript-eslint.io/rules/no-unnecessary-type-arguments** for documentation. -Warns if an explicitly specified type argument is the default for that type parameter. - -## Rule Details - Type parameters in TypeScript may specify a default value. For example: ```ts -function f() {} +function f(...) {...} ``` -It is redundant to provide an explicit type parameter equal to that default. +It is redundant to provide an explicit type parameter equal to that default: e.g. calling `f(...)`. +This rule reports when an explicitly specified type argument is the default for that type parameter. -Examples of code for this rule: +## Examples @@ -28,15 +25,21 @@ Examples of code for this rule: ```ts function f() {} f(); +``` +```ts function g() {} g(); +``` +```ts class C {} -function h(c: C) {} new C(); + class D extends C {} +``` +```ts interface I {} class Impl implements I {} ``` @@ -45,15 +48,26 @@ class Impl implements I {} ```ts function f() {} +f(); f(); +``` +```ts function g() {} +g(); g(); +``` +```ts class C {} +new C(); new C(); + +class D extends C {} class D extends C {} +``` +```ts interface I {} class Impl implements I {} ``` diff --git a/packages/eslint-plugin/docs/rules/no-unnecessary-type-assertion.md b/packages/eslint-plugin/docs/rules/no-unnecessary-type-assertion.md index 30e81b4c9b6..72698d8980a 100644 --- a/packages/eslint-plugin/docs/rules/no-unnecessary-type-assertion.md +++ b/packages/eslint-plugin/docs/rules/no-unnecessary-type-assertion.md @@ -6,13 +6,11 @@ description: 'Disallow type assertions that do not change the type of an express > > See **https://typescript-eslint.io/rules/no-unnecessary-type-assertion** for documentation. -This rule prohibits using a type assertion that does not change the type of an expression. +TypeScript can be told an expression is a different type than expected using `as` type assertions. +Leaving `as` assertions in the codebase increases visual clutter and harms code readability, so it's generally best practice to remove them if they don't change the type of an expression. +This rule reports when a type assertion does not change the type of an expression. -## Rule Details - -This rule aims to prevent unnecessary type assertions. - -Examples of code for this rule: +## Examples diff --git a/packages/eslint-plugin/docs/rules/no-unnecessary-type-constraint.md b/packages/eslint-plugin/docs/rules/no-unnecessary-type-constraint.md index c5b078810fa..b8672d945d5 100644 --- a/packages/eslint-plugin/docs/rules/no-unnecessary-type-constraint.md +++ b/packages/eslint-plugin/docs/rules/no-unnecessary-type-constraint.md @@ -6,17 +6,11 @@ description: 'Disallow unnecessary constraints on generic types.' > > See **https://typescript-eslint.io/rules/no-unnecessary-type-constraint** for documentation. -## Rule Details +Generic type parameters (``) in TypeScript may be "constrained" with an [`extends` keyword](https://www.typescriptlang.org/docs/handbook/generics.html#generic-constraints). +When no `extends` is provided, type parameters default a constraint to `any`. +It is therefore redundant to `extend` from `any`. -Type parameters (``) may be "constrained" with an `extends` keyword ([docs](https://www.typescriptlang.org/docs/handbook/generics.html#generic-constraints)). -When not provided, type parameters happen to default to: - -- As of TypeScript 3.9: `unknown` ([docs](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-9.html#type-parameters-that-extend-any-no-longer-act-as-any)) -- Before that, as of 3.5: `any` ([docs](https://devblogs.microsoft.com/typescript/announcing-typescript-3-5/#breaking-changes)) - -It is therefore redundant to `extend` from these types in later versions of TypeScript. - -Examples of code for this rule: +## Examples @@ -24,24 +18,16 @@ Examples of code for this rule: ```ts interface FooAny {} -interface FooUnknown {} type BarAny = {}; -type BarUnknown = {}; class BazAny { - quxUnknown() {} -} - -class BazUnknown { - quxUnknown() {} + quxAny() {} } const QuuxAny = () => {}; -const QuuxUnknown = () => {}; function QuuzAny() {} -function QuuzUnknown() {} ``` ### ✅ Correct @@ -52,7 +38,7 @@ interface Foo {} type Bar = {}; class Baz { - qux { } + qux { } } const Quux = () => {}; diff --git a/packages/eslint-plugin/docs/rules/no-unsafe-argument.md b/packages/eslint-plugin/docs/rules/no-unsafe-argument.md index 63068ce497c..6390409827a 100644 --- a/packages/eslint-plugin/docs/rules/no-unsafe-argument.md +++ b/packages/eslint-plugin/docs/rules/no-unsafe-argument.md @@ -6,16 +6,19 @@ description: 'Disallow calling a function with a value with type `any`.' > > See **https://typescript-eslint.io/rules/no-unsafe-argument** for documentation. +The `any` type in TypeScript is a dangerous "escape hatch" from the type system. +Using `any` disables many type checking rules and is generally best used only as a last resort or when prototyping code. + Despite your best intentions, the `any` type can sometimes leak into your codebase. -Call a function with `any` typed argument are not checked at all by TypeScript, so it creates a potential safety hole, and source of bugs in your codebase. +Calling a function with an `any` typed argument creates a potential safety hole and source of bugs. -## Rule Details +This rule disallows calling a function with `any` in its arguments. +That includes spreading arrays or tuples with `any` typed elements as function arguments. -This rule disallows calling a function with `any` in its arguments, and it will disallow spreading `any[]`. -This rule also disallows spreading a tuple type with one of its elements typed as `any`. -This rule also compares the argument's type to the variable's type to ensure you don't pass an unsafe `any` in a generic position to a receiver that's expecting a specific type. For example, it will error if you assign `Set` to an argument declared as `Set`. +This rule also compares generic type argument types to ensure you don't pass an unsafe `any` in a generic position to a receiver that's expecting a specific type. +For example, it will error if you pass `Set` as an argument to a parameter declared as `Set`. -Examples of code for this rule: +## Examples @@ -68,7 +71,7 @@ foo(new Set(), new Map()); There are cases where the rule allows passing an argument of `any` to `unknown`. -Example of `any` to `unknown` assignment that are allowed. +Example of `any` to `unknown` assignment that are allowed: ```ts declare function foo(arg1: unknown, arg2: Set, arg3: unknown[]): void; diff --git a/packages/eslint-plugin/docs/rules/no-unsafe-assignment.md b/packages/eslint-plugin/docs/rules/no-unsafe-assignment.md index 9e797f4319f..98228f81683 100644 --- a/packages/eslint-plugin/docs/rules/no-unsafe-assignment.md +++ b/packages/eslint-plugin/docs/rules/no-unsafe-assignment.md @@ -6,15 +6,18 @@ description: 'Disallow assigning a value with type `any` to variables and proper > > See **https://typescript-eslint.io/rules/no-unsafe-assignment** for documentation. -Despite your best intentions, the `any` type can sometimes leak into your codebase. -Assigning an `any` typed value to a variable can be hard to pick up on, particularly if it leaks in from an external library. Operations on the variable will not be checked at all by TypeScript, so it creates a potential safety hole, and source of bugs in your codebase. +The `any` type in TypeScript is a dangerous "escape hatch" from the type system. +Using `any` disables many type checking rules and is generally best used only as a last resort or when prototyping code. -## Rule Details +Despite your best intentions, the `any` type can sometimes leak into your codebase. +Assigning an `any` typed value to a variable can be hard to pick up on, particularly if it leaks in from an external library. This rule disallows assigning `any` to a variable, and assigning `any[]` to an array destructuring. -This rule also compares the assigned type to the variable's type to ensure you don't assign an unsafe `any` in a generic position to a receiver that's expecting a specific type. For example, it will error if you assign `Set` to a variable declared as `Set`. -Examples of code for this rule: +This rule also compares generic type argument types to ensure you don't pass an unsafe `any` in a generic position to a receiver that's expecting a specific type. +For example, it will error if you assign `Set` to a variable declared as `Set`. + +## Examples @@ -70,7 +73,7 @@ const x: Set>> = new Set>>(); There are cases where the rule allows assignment of `any` to `unknown`. -Example of `any` to `unknown` assignment that are allowed. +Example of `any` to `unknown` assignment that are allowed: ```ts const x: unknown = y as any; diff --git a/packages/eslint-plugin/docs/rules/no-unsafe-call.md b/packages/eslint-plugin/docs/rules/no-unsafe-call.md index 9191dca9ae8..8fddb2774b6 100644 --- a/packages/eslint-plugin/docs/rules/no-unsafe-call.md +++ b/packages/eslint-plugin/docs/rules/no-unsafe-call.md @@ -6,14 +6,15 @@ description: 'Disallow calling a value with type `any`.' > > See **https://typescript-eslint.io/rules/no-unsafe-call** for documentation. -Despite your best intentions, the `any` type can sometimes leak into your codebase. -The arguments to, and return value of calling an `any` typed variable are not checked at all by TypeScript, so it creates a potential safety hole, and source of bugs in your codebase. +The `any` type in TypeScript is a dangerous "escape hatch" from the type system. +Using `any` disables many type checking rules and is generally best used only as a last resort or when prototyping code. -## Rule Details +Despite your best intentions, the `any` type can sometimes leak into your codebase. +Calling an `any`-typed value as a function creates a potential type safety hole and source of bugs in your codebase. -This rule disallows calling any variable that is typed as `any`. +This rule disallows calling any value that is typed as `any`. -Examples of code for this rule: +## Examples diff --git a/packages/eslint-plugin/docs/rules/no-unsafe-member-access.md b/packages/eslint-plugin/docs/rules/no-unsafe-member-access.md index 393a4bb46cd..dfefaccd8b4 100644 --- a/packages/eslint-plugin/docs/rules/no-unsafe-member-access.md +++ b/packages/eslint-plugin/docs/rules/no-unsafe-member-access.md @@ -6,14 +6,15 @@ description: 'Disallow member access on a value with type `any`.' > > See **https://typescript-eslint.io/rules/no-unsafe-member-access** for documentation. -Despite your best intentions, the `any` type can sometimes leak into your codebase. -Member access on `any` typed variables is not checked at all by TypeScript, so it creates a potential safety hole, and source of bugs in your codebase. +The `any` type in TypeScript is a dangerous "escape hatch" from the type system. +Using `any` disables many type checking rules and is generally best used only as a last resort or when prototyping code. -## Rule Details +Despite your best intentions, the `any` type can sometimes leak into your codebase. +Accessing a member of an `any`-typed value creates a potential type safety hole and source of bugs in your codebase. This rule disallows member access on any variable that is typed as `any`. -Examples of code for this rule: +## Examples diff --git a/packages/eslint-plugin/docs/rules/no-unsafe-return.md b/packages/eslint-plugin/docs/rules/no-unsafe-return.md index 9c553722959..796580f23dd 100644 --- a/packages/eslint-plugin/docs/rules/no-unsafe-return.md +++ b/packages/eslint-plugin/docs/rules/no-unsafe-return.md @@ -6,15 +6,18 @@ description: 'Disallow returning a value with type `any` from a function.' > > See **https://typescript-eslint.io/rules/no-unsafe-return** for documentation. -Despite your best intentions, the `any` type can sometimes leak into your codebase. -Returned `any` typed values are not checked at all by TypeScript, so it creates a potential safety hole, and source of bugs in your codebase. +The `any` type in TypeScript is a dangerous "escape hatch" from the type system. +Using `any` disables many type checking rules and is generally best used only as a last resort or when prototyping code. -## Rule Details +Despite your best intentions, the `any` type can sometimes leak into your codebase. +Returning an an `any`-typed value from a function creates a potential type safety hole and source of bugs in your codebase. This rule disallows returning `any` or `any[]` from a function. -This rule also compares the return type to the function's declared/inferred return type to ensure you don't return an unsafe `any` in a generic position to a receiver that's expecting a specific type. For example, it will error if you return `Set` from a function declared as returning `Set`. -Examples of code for this rule: +This rule also compares generic type argument types to ensure you don't return an unsafe `any` in a generic position to a function that's expecting a specific type. +For example, it will error if you return `Set` from a function declared as returning `Set`. + +## Examples @@ -83,7 +86,7 @@ const assignability2: TAssign = () => new Set(['foo']); There are cases where the rule allows to return `any` to `unknown`. -Examples of `any` to `unknown` return that are allowed. +Examples of `any` to `unknown` return that are allowed: ```ts function foo1(): unknown { diff --git a/packages/eslint-plugin/docs/rules/no-unused-expressions.md b/packages/eslint-plugin/docs/rules/no-unused-expressions.md index db3120db3e2..4e439431d45 100644 --- a/packages/eslint-plugin/docs/rules/no-unused-expressions.md +++ b/packages/eslint-plugin/docs/rules/no-unused-expressions.md @@ -6,7 +6,7 @@ description: 'Disallow unused expressions.' > > See **https://typescript-eslint.io/rules/no-unused-expressions** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/no-unused-expressions`](https://eslint.org/docs/rules/no-unused-expressions) rule. It adds support for optional call expressions `x?.()`, and directive in module declarations. diff --git a/packages/eslint-plugin/docs/rules/no-unused-vars.md b/packages/eslint-plugin/docs/rules/no-unused-vars.md index ffd1ceb0f6a..8fd90f74ae5 100644 --- a/packages/eslint-plugin/docs/rules/no-unused-vars.md +++ b/packages/eslint-plugin/docs/rules/no-unused-vars.md @@ -6,7 +6,7 @@ description: 'Disallow unused variables.' > > See **https://typescript-eslint.io/rules/no-unused-vars** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/no-unused-vars`](https://eslint.org/docs/rules/no-unused-vars) rule. It adds support for TypeScript features, such as types. diff --git a/packages/eslint-plugin/docs/rules/no-use-before-define.md b/packages/eslint-plugin/docs/rules/no-use-before-define.md index e17a8b873e3..0350658347a 100644 --- a/packages/eslint-plugin/docs/rules/no-use-before-define.md +++ b/packages/eslint-plugin/docs/rules/no-use-before-define.md @@ -6,7 +6,7 @@ description: 'Disallow the use of variables before they are defined.' > > See **https://typescript-eslint.io/rules/no-use-before-define** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/no-use-before-define`](https://eslint.org/docs/rules/no-use-before-define) rule. It adds support for `type`, `interface` and `enum` declarations. diff --git a/packages/eslint-plugin/docs/rules/no-useless-constructor.md b/packages/eslint-plugin/docs/rules/no-useless-constructor.md index e1a8297fefe..0f570ab9e59 100644 --- a/packages/eslint-plugin/docs/rules/no-useless-constructor.md +++ b/packages/eslint-plugin/docs/rules/no-useless-constructor.md @@ -6,7 +6,7 @@ description: 'Disallow unnecessary constructors.' > > See **https://typescript-eslint.io/rules/no-useless-constructor** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/no-useless-constructor`](https://eslint.org/docs/rules/no-useless-constructor) rule. It adds support for: diff --git a/packages/eslint-plugin/docs/rules/no-useless-empty-export.md b/packages/eslint-plugin/docs/rules/no-useless-empty-export.md index bf0f2b94ff2..9358e954b3f 100644 --- a/packages/eslint-plugin/docs/rules/no-useless-empty-export.md +++ b/packages/eslint-plugin/docs/rules/no-useless-empty-export.md @@ -6,17 +6,17 @@ description: "Disallow empty exports that don't change anything in a module file > > See **https://typescript-eslint.io/rules/no-useless-empty-export** for documentation. -## Rule Details - An empty `export {}` statement is sometimes useful in TypeScript code to turn a file that would otherwise be a script file into a module file. -Per the TypeScript Handbook [Modules](https://www.typescriptlang.org/docs/handbook/modules.html) page: +Per the [TypeScript Handbook Modules page](https://www.typescriptlang.org/docs/handbook/modules.html): > In TypeScript, just as in ECMAScript 2015, any file containing a top-level import or export is considered a module. > Conversely, a file without any top-level import or export declarations is treated as a script whose contents are available in the global scope (and therefore to modules as well). However, an `export {}` statement does nothing if there are any other top-level import or export statements in a file. -Examples of code for this rule: +This rule reports an `export {}` that doesn't do anything in a file already using ES modules. + +## Examples diff --git a/packages/eslint-plugin/docs/rules/no-var-requires.md b/packages/eslint-plugin/docs/rules/no-var-requires.md index f7c0f8b8fb5..7230e4e8aeb 100644 --- a/packages/eslint-plugin/docs/rules/no-var-requires.md +++ b/packages/eslint-plugin/docs/rules/no-var-requires.md @@ -8,9 +8,7 @@ description: 'Disallow `require` statements except in import statements.' In other words, the use of forms such as `var foo = require("foo")` are banned. Instead use ES6 style imports or `import foo = require("foo")` imports. -## Rule Details - -Examples of code for this rule: +## Examples @@ -32,4 +30,8 @@ import foo from 'foo'; ## When Not To Use It -If you don't care about TypeScript module syntax, then you will not need this rule. +If you don't care about using newer module syntax, then you will not need this rule. + +## Related To + +- [`no-require-imports`](./no-require-imports.md) diff --git a/packages/eslint-plugin/docs/rules/non-nullable-type-assertion-style.md b/packages/eslint-plugin/docs/rules/non-nullable-type-assertion-style.md index c6aaa091324..8f068f062e6 100644 --- a/packages/eslint-plugin/docs/rules/non-nullable-type-assertion-style.md +++ b/packages/eslint-plugin/docs/rules/non-nullable-type-assertion-style.md @@ -6,11 +6,15 @@ description: 'Enforce non-null assertions over explicit type casts.' > > See **https://typescript-eslint.io/rules/non-nullable-type-assertion-style** for documentation. -This rule detects when an `as` cast is doing the same job as a `!` would, and suggests fixing the code to be an `!`. +There are two common ways to assert to TypeScript that a value is its type without `null` or `undefined`: -## Rule Details +- `!`: Non-null assertion +- `as`: Traditional type assertion with a coincidentally equivalent type -Examples of code for this rule: +`!` non-null assertions are generally preferred for requiring less code and being harder to fall out of sync as types change. +This rule reports when an `as` cast is doing the same job as a `!` would, and suggests fixing the code to be an `!`. + +## Examples diff --git a/packages/eslint-plugin/docs/rules/object-curly-spacing.md b/packages/eslint-plugin/docs/rules/object-curly-spacing.md index 9dcf431db32..1b333cae45e 100644 --- a/packages/eslint-plugin/docs/rules/object-curly-spacing.md +++ b/packages/eslint-plugin/docs/rules/object-curly-spacing.md @@ -6,7 +6,7 @@ description: 'Enforce consistent spacing inside braces.' > > See **https://typescript-eslint.io/rules/object-curly-spacing** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/object-curly-spacing`](https://eslint.org/docs/rules/object-curly-spacing) rule. It adds support for TypeScript's object types. diff --git a/packages/eslint-plugin/docs/rules/padding-line-between-statements.md b/packages/eslint-plugin/docs/rules/padding-line-between-statements.md index d3687c11a22..5387cacac36 100644 --- a/packages/eslint-plugin/docs/rules/padding-line-between-statements.md +++ b/packages/eslint-plugin/docs/rules/padding-line-between-statements.md @@ -6,7 +6,7 @@ description: 'Require or disallow padding lines between statements.' > > See **https://typescript-eslint.io/rules/padding-line-between-statements** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/padding-line-between-statements`](https://eslint.org/docs/rules/padding-line-between-statements) rule. It adds support for TypeScript constructs such as `interface` and `type`. diff --git a/packages/eslint-plugin/docs/rules/parameter-properties.md b/packages/eslint-plugin/docs/rules/parameter-properties.md index e41e1bbd5df..e0e30ddbd3a 100644 --- a/packages/eslint-plugin/docs/rules/parameter-properties.md +++ b/packages/eslint-plugin/docs/rules/parameter-properties.md @@ -6,13 +6,10 @@ description: 'Require or disallow parameter properties in class constructors.' > > See **https://typescript-eslint.io/rules/parameter-properties** for documentation. -Parameter properties can be confusing to those new to TypeScript as they are less explicit than other ways -of declaring and initializing class members. +TypeScript includes a "parameter properties" shorthand for declaring a class constructor parameter and class property in one location. +Parameter properties can be confusing to those new to TypeScript as they are less explicit than other ways of declaring and initializing class members. -## Rule Details - -This rule disallows the use of parameter properties in constructors, forcing the user to explicitly -declare all properties in the class. +This rule can be configured to always disallow the use of parameter properties or enforce their usage when possible. ## Options diff --git a/packages/eslint-plugin/docs/rules/prefer-as-const.md b/packages/eslint-plugin/docs/rules/prefer-as-const.md index ce930aa3390..628c573044c 100644 --- a/packages/eslint-plugin/docs/rules/prefer-as-const.md +++ b/packages/eslint-plugin/docs/rules/prefer-as-const.md @@ -6,11 +6,15 @@ description: 'Enforce the use of `as const` over literal type.' > > See **https://typescript-eslint.io/rules/prefer-as-const** for documentation. -This rule recommends usage of `const` assertion when type primitive value is equal to type. +There are two common ways to tell TypeScript that a literal value should be interpreted as its literal type (e.g. `2`) rather than general primitive type (e.g. `number`); -## Rule Details +- `as const`: telling TypeScript to infer the literal type automatically +- `as` with the literal type: explicitly telling the literal type to TypeScript -Examples of code for this rule: +`as const` is generally preferred, as it doesn't require re-typing the literal value. +This rule reports when an `as` with an explicit literal type can be replaced with an `as const`. + +## Examples diff --git a/packages/eslint-plugin/docs/rules/prefer-enum-initializers.md b/packages/eslint-plugin/docs/rules/prefer-enum-initializers.md index 08e19754b2b..1c4204b665c 100644 --- a/packages/eslint-plugin/docs/rules/prefer-enum-initializers.md +++ b/packages/eslint-plugin/docs/rules/prefer-enum-initializers.md @@ -6,32 +6,14 @@ description: 'Require each enum member value to be explicitly initialized.' > > See **https://typescript-eslint.io/rules/prefer-enum-initializers** for documentation. -This rule recommends having each `enum`s member value explicitly initialized. +TypeScript `enum`s are a practical way to organize semantically related constant values. +Members of `enum`s that don't have explicit values are by default given sequentially increasing numbers. -`enum`s are a practical way to organize semantically related constant values. However, by implicitly defining values, `enum`s can lead to unexpected bugs if it's modified without paying attention to the order of its items. +In projects where the value of `enum` members are important, allowing implicit values for enums can cause bugs if `enum`s are modified over time. -## Rule Details +This rule recommends having each `enum` member value explicitly initialized. -`enum`s infers sequential numbers automatically when initializers are omitted: - -```ts -enum Status { - Open, // infer 0 - Closed, // infer 1 -} -``` - -If a new member is added to the top of `Status`, both `Open` and `Closed` would have its values altered: - -```ts -enum Status { - Pending, // infer 0 - Open, // infer 1 - Closed, // infer 2 -} -``` - -Examples of code for this rule: +## Examples diff --git a/packages/eslint-plugin/docs/rules/prefer-for-of.md b/packages/eslint-plugin/docs/rules/prefer-for-of.md index 815059bcc9a..83b7846acb0 100644 --- a/packages/eslint-plugin/docs/rules/prefer-for-of.md +++ b/packages/eslint-plugin/docs/rules/prefer-for-of.md @@ -6,39 +6,38 @@ description: 'Enforce the use of `for-of` loop over the standard `for` loop wher > > See **https://typescript-eslint.io/rules/prefer-for-of** for documentation. -This rule recommends a for-of loop when the loop index is only used to read from an array that is being iterated. - -## Rule Details +Many developers default to writing `for (let i = 0; i < ...` loops to iterate over arrays. +However, in many of those arrays, the loop iterator variable (e.g. `i`) is only used to access the respective element of the array. +In those cases, a `for-of` loop is easier to read and write. -For cases where the index is only used to read from the array being iterated, a for-of loop is easier to read and write. +This rule recommends a for-of loop when the loop index is only used to read from an array that is being iterated. -Examples of code for this rule: +## Examples ### ❌ Incorrect ```js -for (let i = 0; i < arr.length; i++) { - console.log(arr[i]); +declare const array: string[]; + +for (let i = 0; i < array.length; i++) { + console.log(array[i]); } ``` ### ✅ Correct ```js -for (const x of arr) { - console.log(x); -} +declare const array: string[]; -for (let i = 0; i < arr.length; i++) { - // i is used to write to arr, so for-of could not be used. - arr[i] = 0; +for (const x of array) { + console.log(x); } -for (let i = 0; i < arr.length; i++) { - // i is used independent of arr, so for-of could not be used. - console.log(i, arr[i]); +for (let i = 0; i < array.length; i++) { + // i is used, so for-of could not be used. + console.log(i, array[i]); } ``` diff --git a/packages/eslint-plugin/docs/rules/prefer-function-type.md b/packages/eslint-plugin/docs/rules/prefer-function-type.md index 1ba1cf22a2c..5ec8490a487 100644 --- a/packages/eslint-plugin/docs/rules/prefer-function-type.md +++ b/packages/eslint-plugin/docs/rules/prefer-function-type.md @@ -6,36 +6,35 @@ description: 'Enforce using function types instead of interfaces with call signa > > See **https://typescript-eslint.io/rules/prefer-function-type** for documentation. -## Rule Details +TypeScript allows for two common ways to declare a type for a function: + +- Function type: `() => string` +- Object type with a signature: `{ (): string }` + +The function type form is generally preferred when possible for being more succinct. This rule suggests using a function type instead of an interface or object type literal with a single call signature. -Examples of code for this rule: +## Examples ### ❌ Incorrect ```ts -interface Foo { +interface Example { (): string; } ``` ```ts -function foo(bar: { (): number }): number { - return bar(); -} -``` - -```ts -interface Foo extends Function { - (): void; +function foo(example: { (): number }): number { + return example(); } ``` ```ts -interface MixinMethod { +interface ReturnsSelf { // returns the function itself, not the `this` argument. (arg: string): this; } @@ -44,12 +43,20 @@ interface MixinMethod { ### ✅ Correct ```ts -interface Foo { - (): void; - bar: number; +type Example = () => string; +``` + +```ts +function foo(example: () => number): number { + return bar(); } ``` +```ts +// returns the function itself, not the `this` argument. +type ReturnsSelf = (arg: string) => ReturnsSelf; +``` + ```ts function foo(bar: { (): string; baz: number }): string { return bar(); @@ -65,13 +72,6 @@ interface Bar extends Foo { } ``` -```ts -// returns the `this` argument of function, retaining it's type. -type MixinMethod = (this: TSelf, arg: string) => TSelf; -// a function that returns itself is much clearer in this form. -type ReturnsSelf = (arg: string) => ReturnsSelf; -``` - ```ts // multiple call signatures (overloads) is allowed: interface Overloaded { diff --git a/packages/eslint-plugin/docs/rules/prefer-includes.md b/packages/eslint-plugin/docs/rules/prefer-includes.md index c06a82d8d64..8c1a709c2de 100644 --- a/packages/eslint-plugin/docs/rules/prefer-includes.md +++ b/packages/eslint-plugin/docs/rules/prefer-includes.md @@ -6,34 +6,28 @@ description: 'Enforce `includes` method over `indexOf` method.' > > See **https://typescript-eslint.io/rules/prefer-includes** for documentation. -Until ES5, we were using `String#indexOf` method to check whether a string contains an arbitrary substring or not. -Until ES2015, we were using `Array#indexOf` method to check whether an array contains an arbitrary value or not. - -ES2015 has added `String#includes` and ES2016 has added `Array#includes`. -It makes code more understandable if we use those `includes` methods for the purpose. - -## Rule Details - -This rule is aimed at suggesting `includes` method if `indexOf` method was used to check whether an object contains an arbitrary value or not. - -If the receiver object of the `indexOf` method call has `includes` method and the two methods have the same parameters, this rule does suggestion. -There are such types: `String`, `Array`, `ReadonlyArray`, and typed arrays. +Prior to ES2015, `Array#indexOf` and `String#indexOf` comparisons against `-1` were the standard ways to check whether a value exists in an array or string, respectively. +Alternatives that are easier to read and write now exist: ES2015 added `String#includes` and ES2016 added `Array#includes`. +This rule reports when an `.indexOf` call can be replaced with an `.includes`. Additionally, this rule reports the tests of simple regular expressions in favor of `String#includes`. -Examples of code for this rule: +> This rule will report on any receiver object of an `indexOf` method call that has an `includes` method where the two methods have the same parameters. +> Matching types include: `String`, `Array`, `ReadonlyArray`, and typed arrays. + +## Examples ### ❌ Incorrect ```ts -let str: string; -let array: any[]; -let readonlyArray: ReadonlyArray; -let typedArray: UInt8Array; -let maybe: string; -let userDefined: { +const str: string; +const array: any[]; +const readonlyArray: ReadonlyArray; +const typedArray: UInt8Array; +const maybe: string; +const userDefined: { indexOf(x: any): number; includes(x: any): boolean; }; @@ -45,32 +39,36 @@ typedArray.indexOf(value) > -1; maybe?.indexOf('') !== -1; userDefined.indexOf(value) >= 0; -// simple RegExp test -/foo/.test(str); +/example/.test(str); ``` ### ✅ Correct ```ts -let array: any[]; -let readonlyArray: ReadonlyArray; -let typedArray: UInt8Array; -let userDefined: { +const str: string; +const array: any[]; +const readonlyArray: ReadonlyArray; +const typedArray: UInt8Array; +const maybe: string; +const userDefined: { indexOf(x: any): number; includes(x: any): boolean; }; -let mismatchExample: { - indexOf(x: any, fromIndex?: number): number; - includes(x: any): boolean; -}; str.includes(value); array.includes(value); readonlyArray.includes(value); typedArray.includes(value); +maybe?.includes(''); userDefined.includes(value); -// the two methods have different parameters. +str.includes('example'); + +// The two methods have different parameters. +declare const mismatchExample: { + indexOf(x: unknown, fromIndex?: number): number; + includes(x: unknown): boolean; +}; mismatchExample.indexOf(value) >= 0; ``` diff --git a/packages/eslint-plugin/docs/rules/prefer-literal-enum-member.md b/packages/eslint-plugin/docs/rules/prefer-literal-enum-member.md index 1bb4d23cc08..2c0bd40a33d 100644 --- a/packages/eslint-plugin/docs/rules/prefer-literal-enum-member.md +++ b/packages/eslint-plugin/docs/rules/prefer-literal-enum-member.md @@ -6,7 +6,9 @@ description: 'Require all enum members to be literal values.' > > See **https://typescript-eslint.io/rules/prefer-literal-enum-member** for documentation. -TypeScript allows the value of an enum member to be many different kinds of valid JavaScript expressions. However, because enums create their own scope whereby each enum member becomes a variable in that scope, unexpected values could be used at runtime. Example: +TypeScript allows the value of an enum member to be many different kinds of valid JavaScript expressions. +However, because enums create their own scope whereby each enum member becomes a variable in that scope, developers are often surprised at the resultant values. +For example: ```ts const imOutside = 2; @@ -21,17 +23,12 @@ enum Foo { } ``` -The answer is that `Foo.c` will be `1` at runtime. The [playground](https://www.typescriptlang.org/play/#src=const%20imOutside%20%3D%202%3B%0D%0Aconst%20b%20%3D%202%3B%0D%0Aenum%20Foo%20%7B%0D%0A%20%20%20%20outer%20%3D%20imOutside%2C%0D%0A%20%20%20%20a%20%3D%201%2C%0D%0A%20%20%20%20b%20%3D%20a%2C%0D%0A%20%20%20%20c%20%3D%20b%2C%0D%0A%20%20%20%20%2F%2F%20does%20c%20%3D%3D%20Foo.b%20%3D%3D%20Foo.c%20%3D%3D%201%3F%0D%0A%20%20%20%20%2F%2F%20or%20does%20c%20%3D%3D%20b%20%3D%3D%202%3F%0D%0A%7D) illustrates this quite nicely. +> The answer is that `Foo.c` will be `1` at runtime [[TypeScript playground](https://www.typescriptlang.org/play/#src=const%20imOutside%20%3D%202%3B%0D%0Aconst%20b%20%3D%202%3B%0D%0Aenum%20Foo%20%7B%0D%0A%20%20%20%20outer%20%3D%20imOutside%2C%0D%0A%20%20%20%20a%20%3D%201%2C%0D%0A%20%20%20%20b%20%3D%20a%2C%0D%0A%20%20%20%20c%20%3D%20b%2C%0D%0A%20%20%20%20%2F%2F%20does%20c%20%3D%3D%20Foo.b%20%3D%3D%20Foo.c%20%3D%3D%201%3F%0D%0A%20%20%20%20%2F%2F%20or%20does%20c%20%3D%3D%20b%20%3D%3D%202%3F%0D%0A%7D)]. -## Rule Details +Therefore, it's often better to prevent unexpected results in code by requiring the use of literal values as enum members. +This rule reports when an enum member is given a value that is not a literal. -This rule is meant to prevent unexpected results in code by requiring the use of literal values as enum members to prevent unexpected runtime behavior. Template literals, arrays, objects, constructors, and all other expression types can end up using a variable from its scope or the parent scope, which can result in the same unexpected behavior at runtime. - -## Options - -- `allowBitwiseExpressions` set to `true` will allow you to use bitwise expressions in enum initializer (Default: `false`). - -Examples of code for this rule: +## Examples @@ -62,13 +59,15 @@ enum Valid { -### `allowBitwiseExpressions` +## Options + +- `allowBitwiseExpressions` set to `true` will allow you to use bitwise expressions in enum initializer (Default: `false`). Examples of code for the `{ "allowBitwiseExpressions": true }` option: -#### ❌ Incorrect +### ❌ Incorrect ```ts const x = 1; @@ -83,7 +82,7 @@ enum Foo { } ``` -#### ✅ Correct +### ✅ Correct ```ts enum Foo { diff --git a/packages/eslint-plugin/docs/rules/prefer-namespace-keyword.md b/packages/eslint-plugin/docs/rules/prefer-namespace-keyword.md index ccb97abbec8..f25b124c776 100644 --- a/packages/eslint-plugin/docs/rules/prefer-namespace-keyword.md +++ b/packages/eslint-plugin/docs/rules/prefer-namespace-keyword.md @@ -6,12 +6,35 @@ description: 'Require using `namespace` keyword over `module` keyword to declare > > See **https://typescript-eslint.io/rules/prefer-namespace-keyword** for documentation. -In an effort to prevent further confusion between custom TypeScript modules and the new ES2015 modules, starting -with TypeScript `v1.5` the keyword `namespace` is now the preferred way to declare custom TypeScript modules. +TypeScript historically allowed a form of code organization called "custom modules" (`module Example {}`), later renamed to "namespaces" (`namespace Example`). -## Rule Details +Namespaces are an outdated way to organize TypeScript code. +ES2015 module syntax is now preferred (`import`/`export`). -This rule aims to standardize the way modules are declared. +For projects still using custom modules / namespaces, it's preferred to refer to them as namespaces. +This rule reports when the `module` keyword is used instead of `namespace`. + +> This rule does not report on the use of TypeScript module declarations to describe external APIs (`declare module 'foo' {}`). + +## Examples + + + +### ❌ Incorrect + +```ts +module Example {} +``` + +### ✅ Correct + +```ts +namespace Example {} + +declare module 'foo' {} +``` + + ## When Not To Use It diff --git a/packages/eslint-plugin/docs/rules/prefer-nullish-coalescing.md b/packages/eslint-plugin/docs/rules/prefer-nullish-coalescing.md index 272240b4d48..5be277ecc73 100644 --- a/packages/eslint-plugin/docs/rules/prefer-nullish-coalescing.md +++ b/packages/eslint-plugin/docs/rules/prefer-nullish-coalescing.md @@ -6,65 +6,13 @@ description: 'Enforce using the nullish coalescing operator instead of logical c > > See **https://typescript-eslint.io/rules/prefer-nullish-coalescing** for documentation. -TypeScript 3.7 added support for the nullish coalescing operator. -This operator allows you to safely cascade a value when dealing with `null` or `undefined`. +The `??` nullish coalescing runtime operator allows providing a default value when dealing with `null` or `undefined`. +Because the nullish coalescing operator _only_ coalesces when the original value is `null` or `undefined`, it is much safer than relying upon logical OR operator chaining `||`, which coalesces on any _falsy_ value. -```ts -function myFunc(foo: string | null) { - return foo ?? 'a string'; -} - -// is equivalent to - -function myFunc(foo: string | null) { - return foo !== null && foo !== undefined ? foo : 'a string'; -} -``` - -Because the nullish coalescing operator _only_ coalesces when the original value is `null` or `undefined`, it is much safer than relying upon logical OR operator chaining `||`; which coalesces on any _falsy_ value: - -```ts -const emptyString = ''; - -const nullish1 = emptyString ?? 'unsafe'; -const logical1 = emptyString || 'unsafe'; - -// nullish1 === '' -// logical1 === 'unsafe' - -declare const nullString: string | null; - -const nullish2 = nullString ?? 'safe'; -const logical2 = nullString || 'safe'; - -// nullish2 === 'safe' -// logical2 === 'safe' -``` - -## Rule Details - -This rule aims enforce the usage of the safer operator. +This rule reports when an `||` operator can be safely replaced with a `??`. ## Options -```ts -type Options = [ - { - ignoreTernaryTests?: boolean; - ignoreConditionalTests?: boolean; - ignoreMixedLogicalExpressions?: boolean; - }, -]; - -const defaultOptions = [ - { - ignoreTernaryTests: true; - ignoreConditionalTests: true, - ignoreMixedLogicalExpressions: true, - }, -]; -``` - ### `ignoreTernaryTests` Setting this option to `true` (the default) will cause the rule to ignore any ternary expressions that could be simplified by using the nullish coalescing operator. diff --git a/packages/eslint-plugin/docs/rules/prefer-optional-chain.md b/packages/eslint-plugin/docs/rules/prefer-optional-chain.md index a0ff0a0ab22..cff46dfdf49 100644 --- a/packages/eslint-plugin/docs/rules/prefer-optional-chain.md +++ b/packages/eslint-plugin/docs/rules/prefer-optional-chain.md @@ -6,55 +6,13 @@ description: 'Enforce using concise optional chain expressions instead of chaine > > See **https://typescript-eslint.io/rules/prefer-optional-chain** for documentation. -TypeScript 3.7 added support for the optional chain operator. -This operator allows you to safely access properties and methods on objects when they are potentially `null` or `undefined`. - -```ts -type T = { - a?: { - b?: { - c: string; - method?: () => void; - }; - }; -}; - -function myFunc(foo: T | null) { - return foo?.a?.b?.c; -} -// is roughly equivalent to -function myFunc(foo: T | null) { - return foo && foo.a && foo.a.b && foo.a.b.c; -} -// or -function myFunc(foo: T | null) { - return (((foo || {}).a || {}).b || {}).c; -} - -function myFunc(foo: T | null) { - return foo?.['a']?.b?.c; -} -// is roughly equivalent to -function myFunc(foo: T | null) { - return foo && foo['a'] && foo['a'].b && foo['a'].b.c; -} - -function myFunc(foo: T | null) { - return foo?.a?.b?.method?.(); -} -// is roughly equivalent to -function myFunc(foo: T | null) { - return foo && foo.a && foo.a.b && foo.a.b.method && foo.a.b.method(); -} -``` - +`?.` optional chain expressions provide `undefined` if an object is `null` or `undefined`. Because the optional chain operator _only_ chains when the property value is `null` or `undefined`, it is much safer than relying upon logical AND operator chaining `&&`; which chains on any _truthy_ value. +It is also often less code to use `?.` optional chaining than `&&` truthiness checks. -## Rule Details - -This rule aims enforce the usage of the safer operator. +This rule reports on code where an `&&` operator can be safely replaced with `?.` optional chaining. -Examples of code for this rule: +## Examples @@ -87,11 +45,15 @@ foo?.a?.b?.method?.(); foo?.a?.b?.c?.d?.e; ``` -**Note:** there are a few edge cases where this rule will false positive. Use your best judgement when evaluating reported errors. + + +:::note +There are a few edge cases where this rule will false positive. Use your best judgement when evaluating reported errors. +::: ## When Not To Use It -If you are not using TypeScript 3.7 (or greater), then you will not be able to use this rule, as the operator is not supported. +If you don't mind using more explicit `&&`s, you don't need this rule. ## Further Reading diff --git a/packages/eslint-plugin/docs/rules/prefer-readonly-parameter-types.md b/packages/eslint-plugin/docs/rules/prefer-readonly-parameter-types.md index 8a281aa3868..b1e912abe37 100644 --- a/packages/eslint-plugin/docs/rules/prefer-readonly-parameter-types.md +++ b/packages/eslint-plugin/docs/rules/prefer-readonly-parameter-types.md @@ -10,8 +10,6 @@ Mutating function arguments can lead to confusing, hard to debug behavior. Whilst it's easy to implicitly remember to not modify function arguments, explicitly typing arguments as readonly provides clear contract to consumers. This contract makes it easier for a consumer to reason about if a function has side-effects. -## Rule Details - This rule allows you to enforce that function parameters resolve to readonly types. A type is considered readonly if: @@ -21,7 +19,7 @@ A type is considered readonly if: - it is a readonly tuple type whose elements are all considered readonly. - it is an object type whose properties are all marked as readonly, and whose values are all considered readonly. -Examples of code for this rule: +## Examples diff --git a/packages/eslint-plugin/docs/rules/prefer-readonly.md b/packages/eslint-plugin/docs/rules/prefer-readonly.md index c4384e266c3..774b55b39ff 100644 --- a/packages/eslint-plugin/docs/rules/prefer-readonly.md +++ b/packages/eslint-plugin/docs/rules/prefer-readonly.md @@ -6,14 +6,12 @@ description: "Require private members to be marked as `readonly` if they're neve > > See **https://typescript-eslint.io/rules/prefer-readonly** for documentation. -This rule enforces that private members are marked as `readonly` if they're never modified outside of the constructor. - -## Rule Details - Member variables with the privacy `private` are never permitted to be modified outside of their declaring class. If that class never modifies their value, they may safely be marked as `readonly`. -Examples of code for this rule: +This rule reports on private members are marked as `readonly` if they're never modified outside of the constructor. + +## Examples diff --git a/packages/eslint-plugin/docs/rules/prefer-reduce-type-parameter.md b/packages/eslint-plugin/docs/rules/prefer-reduce-type-parameter.md index d66c91ba943..520a25a653b 100644 --- a/packages/eslint-plugin/docs/rules/prefer-reduce-type-parameter.md +++ b/packages/eslint-plugin/docs/rules/prefer-reduce-type-parameter.md @@ -12,18 +12,16 @@ Since these values are empty, their types are not usable: - `[]` has type `never[]`, which can't have items pushed into it as nothing is type `never` - `{}` has type `{}`, which doesn't have an index signature and so can't have properties added to it -A common solution to this problem is to cast the initial value. While this will work, it's not the most optimal -solution as casting has subtle effects on the underlying types that can allow bugs to slip in. +A common solution to this problem is to use an `as` assertion on the initial value. +While this will work, it's not the most optimal solution as type assertions have subtle effects on the underlying types that can allow bugs to slip in. -A better (and lesser known) solution is to pass the type in as a generic parameter to `Array#reduce` explicitly. +A better solution is to pass the type in as a generic type argument to `Array#reduce` explicitly. This means that TypeScript doesn't have to try to infer the type, and avoids the common pitfalls that come with casting. -## Rule Details +This rule looks for calls to `Array#reduce`, and reports if an initial value is being passed & asserted. +It will suggest instead pass the asserted type to `Array#reduce` as a generic type argument. -This rule looks for calls to `Array#reduce`, and warns if an initial value is being passed & casted, -suggesting instead to pass the cast type to `Array#reduce` as its generic parameter. - -Examples of code for this rule: +## Examples diff --git a/packages/eslint-plugin/docs/rules/prefer-regexp-exec.md b/packages/eslint-plugin/docs/rules/prefer-regexp-exec.md index 38cae500fa0..0d9f127be38 100644 --- a/packages/eslint-plugin/docs/rules/prefer-regexp-exec.md +++ b/packages/eslint-plugin/docs/rules/prefer-regexp-exec.md @@ -6,19 +6,14 @@ description: 'Enforce `RegExp#exec` over `String#match` if no global flag is pro > > See **https://typescript-eslint.io/rules/prefer-regexp-exec** for documentation. -As `String#match` is defined to be the same as `RegExp#exec` when the regular expression does not include the `g` flag, prefer a consistent usage. +`String#match` is defined to work the same as `RegExp#exec` when the regular expression does not include the `g` flag. +Keeping to consistently using one of the two can help improve code readability. -## Rule Details +This rule reports when a `String#match` call can be replaced with an equivalent `RegExp#exec`. -This rule is aimed at enforcing a consistent way to apply regular expressions to strings. +> `RegExp#exec` may also be slightly faster than `String#match`; this is the reason to choose it as the preferred usage. -From [`String#match` on MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match): - -> If the regular expression does not include the g flag, returns the same result as `RegExp.exec()`. - -`RegExp#exec` may also be slightly faster than `String#match`; this is the reason to choose it as the preferred usage. - -Examples of code for this rule: +## Examples @@ -48,4 +43,4 @@ search.exec(text); ## When Not To Use It -If you prefer consistent use of `String#match` for both, with `g` flag and without it, you can turn this rule off. +If you prefer consistent use of `String#match` for both with `g` flag and without it, you can turn this rule off. diff --git a/packages/eslint-plugin/docs/rules/prefer-return-this-type.md b/packages/eslint-plugin/docs/rules/prefer-return-this-type.md index 836938ee892..b09c03ba52f 100644 --- a/packages/eslint-plugin/docs/rules/prefer-return-this-type.md +++ b/packages/eslint-plugin/docs/rules/prefer-return-this-type.md @@ -6,12 +6,17 @@ description: 'Enforce that `this` is used when only `this` type is returned.' > > See **https://typescript-eslint.io/rules/prefer-return-this-type** for documentation. -[Method chaining](https://en.wikipedia.org/wiki/Method_chaining) is a common pattern in OOP languages and TypeScript provides a special [polymorphic this type](https://www.typescriptlang.org/docs/handbook/2/classes.html#this-types). -If any type other than `this` is specified as the return type of these chaining methods, TypeScript will fail to cast it when invoking in subclass. +[Method chaining](https://en.wikipedia.org/wiki/Method_chaining) is a common pattern in OOP languages and TypeScript provides a special [polymorphic `this` type](https://www.typescriptlang.org/docs/handbook/2/classes.html#this-types) to facilitate it. +Class methods that explicitly declare a return type of the class name instead of `this` make it harder for extending classes to call that method: the returned object will be typed as the base class, not the derived class. + +This rule reports when a class method declares a return type of that class name instead of `this`. ```ts class Animal { eat(): Animal { + // ~~~~~~ + // Either removing this type annotation or replacing + // it with `this` would remove the type error below. console.log("I'm moving!"); return this; } @@ -25,33 +30,13 @@ class Cat extends Animal { } const cat = new Cat(); +cat.eat().meow(); +// ~~~~ // Error: Property 'meow' does not exist on type 'Animal'. // because `eat` returns `Animal` and not all animals meow. -cat.eat().meow(); - -// the error can be fixed by removing the return type of `eat` or use `this` as the return type. -class Animal { - eat(): this { - console.log("I'm moving!"); - return this; - } -} - -class Cat extends Animal { - meow(): this { - console.log('Meow~'); - return this; - } -} - -const cat = new Cat(); -// no errors. Because `eat` returns `Cat` now -cat.eat().meow(); ``` -## Rule Details - -Examples of code for this rule: +## Examples diff --git a/packages/eslint-plugin/docs/rules/prefer-string-starts-ends-with.md b/packages/eslint-plugin/docs/rules/prefer-string-starts-ends-with.md index 99ead1d7934..573ce53ed09 100644 --- a/packages/eslint-plugin/docs/rules/prefer-string-starts-ends-with.md +++ b/packages/eslint-plugin/docs/rules/prefer-string-starts-ends-with.md @@ -7,20 +7,19 @@ description: 'Enforce using `String#startsWith` and `String#endsWith` over other > See **https://typescript-eslint.io/rules/prefer-string-starts-ends-with** for documentation. There are multiple ways to verify if a string starts or ends with a specific string, such as `foo.indexOf('bar') === 0`. -Since ES2015 has added `String#startsWith` and `String#endsWith`, this rule reports other ways to be consistent. +As of ES2015, the most common way in JavaScript is to use `String#startsWith` and `String#endsWith`. +Keeping to those methods consistently helps with code readability. -## Rule Details +This rule reports when a string method can be replaced safely with `String#startsWith` or `String#endsWith`. -This rule is aimed at enforcing a consistent way to check whether a string starts or ends with a specific string. - -Examples of code for this rule: +## Examples ### ❌ Incorrect ```ts -let foo: string; +declare const foo: string; // starts with foo[0] === 'b'; @@ -44,7 +43,12 @@ foo.match(/bar$/) != null; ### ✅ Correct ```ts +declare const foo: string; + +// starts with foo.startsWith('bar'); + +// ends with foo.endsWith('bar'); ``` diff --git a/packages/eslint-plugin/docs/rules/prefer-ts-expect-error.md b/packages/eslint-plugin/docs/rules/prefer-ts-expect-error.md index 85308e4786f..8cc2abb2305 100644 --- a/packages/eslint-plugin/docs/rules/prefer-ts-expect-error.md +++ b/packages/eslint-plugin/docs/rules/prefer-ts-expect-error.md @@ -6,21 +6,15 @@ description: 'Enforce using `@ts-expect-error` over `@ts-ignore`.' > > See **https://typescript-eslint.io/rules/prefer-ts-expect-error** for documentation. -TypeScript allows you to suppress all errors on a line by placing a single-line comment or a comment block line starting with `@ts-ignore` immediately before the erroring line. -While powerful, there is no way to know if a `@ts-ignore` is actually suppressing an error without manually investigating what happens when the `@ts-ignore` is removed. +TypeScript allows you to suppress all errors on a line by placing a comment starting with `@ts-ignore` or `@ts-expect-error` immediately before the erroring line. +The two directives work the same, except `@ts-expect-error` causes a type error if placed before a line that's not erroring in the first place. This means its easy for `@ts-ignore`s to be forgotten about, and remain in code even after the error they were suppressing is fixed. This is dangerous, as if a new error arises on that line it'll be suppressed by the forgotten about `@ts-ignore`, and so be missed. -To address this, TS3.9 ships with a new single-line comment directive: `// @ts-expect-error`. +## Examples -This directive operates in the same manner as `@ts-ignore`, but will error if the line it's meant to be suppressing doesn't actually contain an error, making it a lot safer. - -## Rule Details - -This rule looks for usages of `@ts-ignore`, and flags them to be replaced with `@ts-expect-error`. - -Examples of code for this rule: +This rule reports any usage of `@ts-ignore`, including a fixer to replace with `@ts-expect-error`. @@ -68,7 +62,7 @@ const isOptionEnabled = (key: string): boolean => { ## When Not To Use It -If you are **NOT** using TypeScript 3.9 (or greater), then you will not be able to use this rule, as the directive is not supported +If you are compiling against multiple versions of TypeScript and using `@ts-ignore` to ignore version-specific type errors, this rule might get in your way. ## Further Reading diff --git a/packages/eslint-plugin/docs/rules/promise-function-async.md b/packages/eslint-plugin/docs/rules/promise-function-async.md index 3c6b1922cd5..e697217dc5d 100644 --- a/packages/eslint-plugin/docs/rules/promise-function-async.md +++ b/packages/eslint-plugin/docs/rules/promise-function-async.md @@ -15,7 +15,7 @@ In contrast, non-`async` `Promise` - returning functions are technically capable Code that handles the results of those functions will often need to handle both cases, which can get complex. This rule's practice removes a requirement for creating code to handle both cases. -## Rule Details +## Examples Examples of code for this rule diff --git a/packages/eslint-plugin/docs/rules/quotes.md b/packages/eslint-plugin/docs/rules/quotes.md index 64a5704454c..b67c5dc8966 100644 --- a/packages/eslint-plugin/docs/rules/quotes.md +++ b/packages/eslint-plugin/docs/rules/quotes.md @@ -6,7 +6,7 @@ description: 'Enforce the consistent use of either backticks, double, or single > > See **https://typescript-eslint.io/rules/quotes** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/quotes`](https://eslint.org/docs/rules/quotes) rule. It adds support for TypeScript features which allow quoted names, but not backtick quoted names. diff --git a/packages/eslint-plugin/docs/rules/require-array-sort-compare.md b/packages/eslint-plugin/docs/rules/require-array-sort-compare.md index e2e43c81143..66b39a004cd 100644 --- a/packages/eslint-plugin/docs/rules/require-array-sort-compare.md +++ b/packages/eslint-plugin/docs/rules/require-array-sort-compare.md @@ -6,30 +6,21 @@ description: 'Require `Array#sort` calls to always provide a `compareFunction`.' > > See **https://typescript-eslint.io/rules/require-array-sort-compare** for documentation. -This rule prevents invoking the `Array#sort()` method without providing a `compare` argument. -When called without a compare function, `Array#sort()` converts all non-undefined array elements into strings and then compares said strings based off their UTF-16 code units. +When called without a compare function, `Array#sort()` converts all non-undefined array elements into strings and then compares said strings based off their UTF-16 code units [[ECMA specification](https://www.ecma-international.org/ecma-262/9.0/#sec-sortcompare)]. The result is that elements are sorted alphabetically, regardless of their type. -When sorting numbers, this results in the classic "10 before 2" order: +For example, when sorting numbers, this results in a "10 before 2" order: ```ts [1, 2, 3, 10, 20, 30].sort(); //→ [1, 10, 2, 20, 3, 30] ``` -This also means that `Array#sort` does not always sort consistently, as elements may have custom `#toString` implementations that are not deterministic; this trap is noted in the language specification thusly: +This rule reports on any call to the `Array#sort()` method that doesn't provide a `compare` argument. -:::note -Method calls performed by the `ToString` abstract operations in steps 5 and 7 have the potential to cause `SortCompare` to not behave as a consistent comparison function. - -https://www.ecma-international.org/ecma-262/9.0/#sec-sortcompare -::: - -## Rule Details +## Examples This rule aims to ensure all calls of the native `Array#sort` method provide a `compareFunction`, while ignoring calls to user-defined `sort` methods. -Examples of code for this rule: - ### ❌ Incorrect @@ -84,4 +75,4 @@ const three = '3'; ## When Not To Use It -If you understand the language specification enough, you can turn this rule off safely. +If you understand the language specification enough, and/or only ever sort arrays in a string-like manner, you can turn this rule off safely. diff --git a/packages/eslint-plugin/docs/rules/require-await.md b/packages/eslint-plugin/docs/rules/require-await.md index a578f0c4b42..f4ccd6fc21a 100644 --- a/packages/eslint-plugin/docs/rules/require-await.md +++ b/packages/eslint-plugin/docs/rules/require-await.md @@ -6,7 +6,7 @@ description: 'Disallow async functions which have no `await` expression.' > > See **https://typescript-eslint.io/rules/require-await** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/require-await`](https://eslint.org/docs/rules/require-await) rule. It uses type information to add support for `async` functions that return a `Promise`. diff --git a/packages/eslint-plugin/docs/rules/restrict-plus-operands.md b/packages/eslint-plugin/docs/rules/restrict-plus-operands.md index cf08200be7f..fc823f6da9f 100644 --- a/packages/eslint-plugin/docs/rules/restrict-plus-operands.md +++ b/packages/eslint-plugin/docs/rules/restrict-plus-operands.md @@ -1,14 +1,17 @@ --- -description: 'Require both operands of addition to have type `number` or `string`.' +description: 'Require both operands of addition to be the same type and be `bigint`, `number`, or `string`.' --- > 🛑 This file is source code, not the primary documentation location! 🛑 > > See **https://typescript-eslint.io/rules/restrict-plus-operands** for documentation. -## Rule Details +TypeScript allows `+` adding together two values of any type(s). +However, adding values that are not the same type and/or are not the same primitive type is often a sign of programmer error. -Examples of code for this rule: +This rule reports when a `+` operation combines two values of different types, or a type that is not `bigint`, `number`, or `string`. + +## Examples @@ -81,4 +84,15 @@ var fn = (a: any, b: bigint) => a + b; var fn = (a: any, b: number) => a + b; ``` -## How to Use +## When Not To Use It + +If you don't mind `"[object Object]"` in your strings, then you will not need this rule. + +## Related To + +- [`no-base-to-string`](./no-base-to-string.md) +- [`restrict-template-expressions`](./restrict-template-expressions.md) + +## Further Reading + +- [`Object.prototype.toString()` MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString) diff --git a/packages/eslint-plugin/docs/rules/restrict-template-expressions.md b/packages/eslint-plugin/docs/rules/restrict-template-expressions.md index d22b66dac1d..e2d18d8e267 100644 --- a/packages/eslint-plugin/docs/rules/restrict-template-expressions.md +++ b/packages/eslint-plugin/docs/rules/restrict-template-expressions.md @@ -6,9 +6,11 @@ description: 'Enforce template literal expressions to be of `string` type.' > > See **https://typescript-eslint.io/rules/restrict-template-expressions** for documentation. -## Rule Details +JavaScript will call `toString()` on an object when it is converted to a string, such as when `+` adding to a string or in `${}` template literals. +The default Object `.toString()` returns `"[object Object]"`, which is often not what was intended. +This rule reports on values used in a template literal string that aren't primitives and don't define a more useful `.toString()` method. -Examples of code for this rule: +## Examples @@ -87,3 +89,8 @@ const msg1 = `arg = ${arg}`; const arg = /foo/; const msg1 = `arg = ${arg}`; ``` + +## Related To + +- [`no-base-to-string`](./no-base-to-string.md) +- [`restrict-plus-operands`](./restrict-plus-operands.md) diff --git a/packages/eslint-plugin/docs/rules/return-await.md b/packages/eslint-plugin/docs/rules/return-await.md index 13d04d014eb..205c0eb0e8d 100644 --- a/packages/eslint-plugin/docs/rules/return-await.md +++ b/packages/eslint-plugin/docs/rules/return-await.md @@ -8,7 +8,7 @@ description: 'Enforce consistent returning of awaited values.' Returning an awaited promise can make sense for better stack trace information as well as for consistent error handling (returned promises will not be caught in an async function try/catch). -## Rule Details +## Examples This rule builds on top of the [`eslint/no-return-await`](https://eslint.org/docs/rules/no-return-await) rule. It expands upon the base rule to add support for optionally requiring `return await` in certain cases. diff --git a/packages/eslint-plugin/docs/rules/semi.md b/packages/eslint-plugin/docs/rules/semi.md index ee33eca9223..16622a1d856 100644 --- a/packages/eslint-plugin/docs/rules/semi.md +++ b/packages/eslint-plugin/docs/rules/semi.md @@ -8,7 +8,7 @@ description: 'Require or disallow semicolons instead of ASI.' This rule enforces consistent use of semicolons after statements. -## Rule Details +## Examples This rule extends the base [`eslint/semi`](https://eslint.org/docs/rules/semi) rule. It adds support for TypeScript features that require semicolons. diff --git a/packages/eslint-plugin/docs/rules/sort-type-union-intersection-members.md b/packages/eslint-plugin/docs/rules/sort-type-union-intersection-members.md index 68b5fce8aca..2a47547219b 100644 --- a/packages/eslint-plugin/docs/rules/sort-type-union-intersection-members.md +++ b/packages/eslint-plugin/docs/rules/sort-type-union-intersection-members.md @@ -12,24 +12,11 @@ Sorting union (`|`) and intersection (`&`) types can help: - find repeated types - reduce diff churn -## Rule Details +This rule reports on any types that aren't sorted alphabetically. -Sorting within each group is done using the following code: +> Types are sorted case-insensitively and treating numbers like a human would, falling back to character code sorting in case of ties. -```ts -const collator = new Intl.Collator('en', { - sensitivity: 'base', - numeric: true, -}); - -function compare(a, b) { - return collator.compare(a, b) || (a < b ? -1 : a > b ? 1 : 0); -} -``` - -In other words, the types are sorted alphabetically, case-insensitively and treating numbers like a human would, falling back to character code sorting in case of ties. - -Examples of code for this rule: +## Examples diff --git a/packages/eslint-plugin/docs/rules/space-before-blocks.md b/packages/eslint-plugin/docs/rules/space-before-blocks.md index daba57a2ec2..716de2294f6 100644 --- a/packages/eslint-plugin/docs/rules/space-before-blocks.md +++ b/packages/eslint-plugin/docs/rules/space-before-blocks.md @@ -6,7 +6,7 @@ description: 'Enforce consistent spacing before blocks.' > > See **https://typescript-eslint.io/rules/space-before-blocks** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/space-before-blocks`](https://eslint.org/docs/rules/space-before-blocks) rule. It adds support for interfaces and enums. diff --git a/packages/eslint-plugin/docs/rules/space-before-function-paren.md b/packages/eslint-plugin/docs/rules/space-before-function-paren.md index 5760b5128d1..f2c1b5e846c 100644 --- a/packages/eslint-plugin/docs/rules/space-before-function-paren.md +++ b/packages/eslint-plugin/docs/rules/space-before-function-paren.md @@ -6,7 +6,7 @@ description: 'Enforce consistent spacing before function parenthesis.' > > See **https://typescript-eslint.io/rules/space-before-function-paren** for documentation. -## Rule Details +## Examples This rule extends the base [`eslint/space-before-function-paren`](https://eslint.org/docs/rules/space-before-function-paren) rule. It adds support for generic type parameters on function calls. diff --git a/packages/eslint-plugin/docs/rules/strict-boolean-expressions.md b/packages/eslint-plugin/docs/rules/strict-boolean-expressions.md index f25aa3efc1d..b7e8c13a9be 100644 --- a/packages/eslint-plugin/docs/rules/strict-boolean-expressions.md +++ b/packages/eslint-plugin/docs/rules/strict-boolean-expressions.md @@ -21,8 +21,6 @@ The following nodes are considered boolean expressions and their type is checked ## Examples -Examples of code for this rule: - ### ❌ Incorrect diff --git a/packages/eslint-plugin/docs/rules/switch-exhaustiveness-check.md b/packages/eslint-plugin/docs/rules/switch-exhaustiveness-check.md index 4cc7e152e7a..9320624924b 100644 --- a/packages/eslint-plugin/docs/rules/switch-exhaustiveness-check.md +++ b/packages/eslint-plugin/docs/rules/switch-exhaustiveness-check.md @@ -6,11 +6,12 @@ description: 'Require switch-case statements to be exhaustive with union type.' > > See **https://typescript-eslint.io/rules/switch-exhaustiveness-check** for documentation. -Union type may have a lot of parts. It's easy to forget to consider all cases in switch. This rule reminds which parts are missing. If domain of the problem requires to have only a partial switch, developer may _explicitly_ add a default clause. +When working with union types in TypeScript, it's common to want to write a `switch` statement intended to contain a `case` for each constituent (possible type in the union). +However, if the union type changes, it's easy to forget to modify the cases to account for any new types. -## Rule Details +This rule reports when a `switch` statement over a value typed as a union of literals is missing a case for any of those literal types and does not have a `default` clause. -Examples of code for this rule: +## Examples @@ -30,10 +31,9 @@ const day = 'Monday' as Day; let result = 0; switch (day) { - case 'Monday': { + case 'Monday': result = 1; break; - } } ``` @@ -53,34 +53,27 @@ const day = 'Monday' as Day; let result = 0; switch (day) { - case 'Monday': { + case 'Monday': result = 1; break; - } - case 'Tuesday': { + case 'Tuesday': result = 2; break; - } - case 'Wednesday': { + case 'Wednesday': result = 3; break; - } - case 'Thursday': { + case 'Thursday': result = 4; break; - } - case 'Friday': { + case 'Friday': result = 5; break; - } - case 'Saturday': { + case 'Saturday': result = 6; break; - } - case 'Sunday': { + case 'Sunday': result = 7; break; - } } ``` @@ -100,16 +93,14 @@ const day = 'Monday' as Day; let result = 0; switch (day) { - case 'Monday': { + case 'Monday': result = 1; break; - } - default: { + default: result = 42; - } } ``` ## When Not To Use It -If program doesn't have union types with many parts. Downside of this rule is the need for type information, so it's slower than regular rules. +If you don't frequently `switch` over union types with many parts, or intentionally wish to leave out some parts. diff --git a/packages/eslint-plugin/docs/rules/triple-slash-reference.md b/packages/eslint-plugin/docs/rules/triple-slash-reference.md index 75edec3261a..f48f7c98497 100644 --- a/packages/eslint-plugin/docs/rules/triple-slash-reference.md +++ b/packages/eslint-plugin/docs/rules/triple-slash-reference.md @@ -6,9 +6,11 @@ description: 'Disallow certain triple slash directives in favor of ES6-style imp > > See **https://typescript-eslint.io/rules/triple-slash-reference** for documentation. -## Rule Details +TypeScript's `///` triple-slash references are a way to indicate that types from another module are available in a file. +Use of triple-slash reference type directives is generally discouraged in favor of ECMAScript Module `import`s. +This rule reports on the use of `/// `, `/// `, or `/// ` directives. -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. +## Examples ## Options diff --git a/packages/eslint-plugin/docs/rules/type-annotation-spacing.md b/packages/eslint-plugin/docs/rules/type-annotation-spacing.md index d3a97920072..36cfab06592 100644 --- a/packages/eslint-plugin/docs/rules/type-annotation-spacing.md +++ b/packages/eslint-plugin/docs/rules/type-annotation-spacing.md @@ -35,7 +35,7 @@ type Foo = (string: name)=> string; type Foo = (string: name) =>string; ``` -## Rule Details +## Examples This rule aims to enforce specific spacing patterns around type annotations and function types in type literals. diff --git a/packages/eslint-plugin/docs/rules/typedef.md b/packages/eslint-plugin/docs/rules/typedef.md index 317f9687957..11e2b39c440 100644 --- a/packages/eslint-plugin/docs/rules/typedef.md +++ b/packages/eslint-plugin/docs/rules/typedef.md @@ -9,6 +9,9 @@ description: 'Require type annotations in certain places.' TypeScript cannot always infer types for all places in code. Some locations require type annotations for their types to be inferred. +This rule can enforce type annotations in locations regardless of whether they're required. +This is typically used to maintain consistency for element types that sometimes require them. + ```ts class ContainsText { // There must be a type annotation here to infer the type @@ -22,6 +25,8 @@ class ContainsText { } ``` +> To enforce type definitions existing on call signatures, use [`explicit-function-return-type`](./explicit-function-return-type.md), or [`explicit-module-boundary-types`](./explicit-module-boundary-types.md). + :::caution Requiring type annotations unnecessarily can be cumbersome to maintain and generally reduces code readability. @@ -31,13 +36,6 @@ TypeScript is often better at inferring types than easily written type annotatio ::: -## Rule Details - -This rule can enforce type annotations in locations regardless of whether they're required. -This is typically used to maintain consistency for element types that sometimes require them. - -> To enforce type definitions existing on call signatures, use `explicit-function-return-type`, or `explicit-module-boundary-types`. - ## Options For example, with the following configuration: diff --git a/packages/eslint-plugin/docs/rules/unbound-method.md b/packages/eslint-plugin/docs/rules/unbound-method.md index fe030ad5fac..99dc8ba7963 100644 --- a/packages/eslint-plugin/docs/rules/unbound-method.md +++ b/packages/eslint-plugin/docs/rules/unbound-method.md @@ -6,14 +6,17 @@ description: 'Enforce unbound methods are called with their expected scope.' > > See **https://typescript-eslint.io/rules/unbound-method** for documentation. -Class functions don't preserve the class scope when passed as standalone variables. +Class method functions don't preserve the class scope when passed as standalone variables ("unbound"). If your function does not access `this`, [you can annotate it with `this: void`](https://www.typescriptlang.org/docs/handbook/2/functions.html#declaring-this-in-a-function), or consider using an arrow function instead. +Otherwise, passing class methods around as values can remove type safety by failing to capture `this`. -If you're working with `jest`, you can use [`eslint-plugin-jest`'s version of this rule](https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/unbound-method.md) to lint your test files, which knows when it's ok to pass an unbound method to `expect` calls. +This rule reports when a class method is referenced in an unbound manner. -## Rule Details +:::note Tip +If you're working with `jest`, you can use [`eslint-plugin-jest`'s version of this rule](https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/unbound-method.md) to lint your test files, which knows when it's ok to pass an unbound method to `expect` calls. +::: -Examples of code for this rule with the default options: +## Examples diff --git a/packages/eslint-plugin/docs/rules/unified-signatures.md b/packages/eslint-plugin/docs/rules/unified-signatures.md index ad6bbb917aa..5736561d2ff 100644 --- a/packages/eslint-plugin/docs/rules/unified-signatures.md +++ b/packages/eslint-plugin/docs/rules/unified-signatures.md @@ -6,11 +6,13 @@ description: 'Disallow two overloads that could be unified into one with a union > > See **https://typescript-eslint.io/rules/unified-signatures** for documentation. -## Rule Details +Function overload signatures are a TypeScript way to define a function that can be called in multiple very different ways. +Overload signatures add syntax and theoretical bloat, so it's generally best to avoid using them when possible. +Switching to union types and/or optional or rest parameters can often avoid the need for overload signatures. -This rule aims to keep the source code as maintainable as possible by reducing the amount of overloads. +This rule reports when function overload signatures can be replaced by a single function signature. -Examples of code for this rule with the default options: +## Examples diff --git a/packages/eslint-plugin/src/rules/adjacent-overload-signatures.ts b/packages/eslint-plugin/src/rules/adjacent-overload-signatures.ts index 7bf3b6ee052..81877d08b39 100644 --- a/packages/eslint-plugin/src/rules/adjacent-overload-signatures.ts +++ b/packages/eslint-plugin/src/rules/adjacent-overload-signatures.ts @@ -19,7 +19,7 @@ export default util.createRule({ meta: { type: 'suggestion', docs: { - description: 'Require that member overloads be consecutive', + description: 'Require that function overload signatures be consecutive', recommended: 'error', }, schema: [], diff --git a/packages/eslint-plugin/src/rules/array-type.ts b/packages/eslint-plugin/src/rules/array-type.ts index d8d310f3623..92040d8106a 100644 --- a/packages/eslint-plugin/src/rules/array-type.ts +++ b/packages/eslint-plugin/src/rules/array-type.ts @@ -90,7 +90,8 @@ export default util.createRule({ meta: { type: 'suggestion', docs: { - description: 'Require using either `T[]` or `Array` for arrays', + description: + 'Require consistently using either `T[]` or `Array` for arrays', recommended: 'strict', }, fixable: 'code', diff --git a/packages/eslint-plugin/src/rules/ban-ts-comment.ts b/packages/eslint-plugin/src/rules/ban-ts-comment.ts index d9e3659ce0a..9c55b437da6 100644 --- a/packages/eslint-plugin/src/rules/ban-ts-comment.ts +++ b/packages/eslint-plugin/src/rules/ban-ts-comment.ts @@ -28,7 +28,7 @@ export default util.createRule<[Options], MessageIds>({ type: 'problem', docs: { description: - 'Disallow `@ts-` comments or require descriptions after directive', + 'Disallow `@ts-` comments or require descriptions after directives', recommended: 'error', }, messages: { diff --git a/packages/eslint-plugin/src/rules/member-delimiter-style.ts b/packages/eslint-plugin/src/rules/member-delimiter-style.ts index 4ae205967ce..53d2019e97d 100644 --- a/packages/eslint-plugin/src/rules/member-delimiter-style.ts +++ b/packages/eslint-plugin/src/rules/member-delimiter-style.ts @@ -135,13 +135,13 @@ const makeFixFunction = ({ export default util.createRule({ name: 'member-delimiter-style', meta: { - type: 'suggestion', + type: 'layout', docs: { description: 'Require a specific member delimiter style for interfaces and type literals', recommended: false, }, - fixable: 'code', + fixable: 'whitespace', messages: { unexpectedComma: 'Unexpected separator (,).', unexpectedSemi: 'Unexpected separator (;).', diff --git a/packages/eslint-plugin/src/rules/no-extra-non-null-assertion.ts b/packages/eslint-plugin/src/rules/no-extra-non-null-assertion.ts index 8d15029f716..a69cd262d6e 100644 --- a/packages/eslint-plugin/src/rules/no-extra-non-null-assertion.ts +++ b/packages/eslint-plugin/src/rules/no-extra-non-null-assertion.ts @@ -7,7 +7,7 @@ export default util.createRule({ meta: { type: 'problem', docs: { - description: 'Disallow extra non-null assertion', + description: 'Disallow extra non-null assertions', recommended: 'error', }, fixable: 'code', diff --git a/packages/eslint-plugin/src/rules/no-namespace.ts b/packages/eslint-plugin/src/rules/no-namespace.ts index ee986a4d82d..2a9a4a251be 100644 --- a/packages/eslint-plugin/src/rules/no-namespace.ts +++ b/packages/eslint-plugin/src/rules/no-namespace.ts @@ -16,12 +16,12 @@ export default util.createRule({ meta: { type: 'suggestion', docs: { - description: 'Disallow custom TypeScript modules and namespaces', + description: 'Disallow TypeScript namespaces', recommended: 'error', }, messages: { moduleSyntaxIsPreferred: - 'ES2015 module syntax is preferred over custom TypeScript modules and namespaces.', + 'ES2015 module syntax is preferred over namespaces.', }, schema: [ { diff --git a/packages/eslint-plugin/src/rules/restrict-plus-operands.ts b/packages/eslint-plugin/src/rules/restrict-plus-operands.ts index a4cc0374395..ad5d0a832b7 100644 --- a/packages/eslint-plugin/src/rules/restrict-plus-operands.ts +++ b/packages/eslint-plugin/src/rules/restrict-plus-operands.ts @@ -22,7 +22,7 @@ export default util.createRule({ type: 'problem', docs: { description: - 'Require both operands of addition to have type `number` or `string`', + 'Require both operands of addition to be the same type and be `bigint`, `number`, or `string`', recommended: 'error', requiresTypeChecking: true, }, From 71d6ed7d140c13303a13f594c969bde4504bf81b Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Tue, 4 Oct 2022 11:23:00 -0400 Subject: [PATCH 016/193] docs: streamline CONTRIBUTING.md and add DEVELOPMENT.md (#5715) * docs: streamline CONTRIBUTING.md and add DEVELOPMENT.md * lil typo * Apply suggestions from code review Co-authored-by: Brad Zacher * Mention builds Co-authored-by: Brad Zacher --- CONTRIBUTING.md | 131 +++++++++++++++++++++--------------------------- DEVELOPMENT.md | 69 +++++++++++++++++++++++++ 2 files changed, 127 insertions(+), 73 deletions(-) create mode 100644 DEVELOPMENT.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 30d344ca965..3c08116cdc9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,86 +1,71 @@ # Contributing -## Raising Issues - -Feel free to raise an issue if you have a question, an enhancement, or a bug report. +Thank you for your interest in contributing to TypeScript ESLint! 💜 -Use the issue search functionality to search all **_opened and closed_** [issues](https://github.com/typescript-eslint/typescript-eslint/issues) before raising a new issue. If you raise a duplicate issue, you're just creating noise for everyone watching this repo. +> Make sure you read our [Code of Conduct](./CODE_OF_CONDUCT.md) before contributing. -Before raising a bug, ensure you are using the latest version of our packages. We release every week, so there's a good chance your issue might have already been fixed. +## Raising Issues -Finally, when raising a new issue, please fill out the [issue template](https://github.com/typescript-eslint/typescript-eslint/issues/new/choose) - **_please don't skip sections_**. +So you've got a bug report, documentation request, or feature suggestion? +Great! -Please provide **_as much information as possible_**. This project is maintained by volunteers, so the more information you provide, the less likely we will have to waste everyone's time in asking you for more information. +Do: -If you have a particularly complex issue that can't be reproduced on [our playground](https://typescript-eslint.io/play) - consider creating a small, self-contained reproduction repo. This will help you in figuring out the exact problem, and will help us in reproducing and diagnosing the bug. +- Make sure you're using the [latest version of our packages](https://github.com/typescript-eslint/typescript-eslint/releases) +- Search [all opened and closed issues](https://github.com/typescript-eslint/typescript-eslint/issues?q=is%3Aissue+) to make sure your issue wouldn't be a duplicate +- Fill out the [appropriate issue template](https://github.com/typescript-eslint/typescript-eslint/issues/new/choose) completely +- Provide as much information as you can -**_Help us to help you_** +### Questions and Support Requests -## Questions and requests for support +We do not have the bandwidth to handle questions or support requests in the issue tracker. +You can instead: -Questions and requests for support should not be opened as issues and should be handled in the following ways: +- Ask a question on [StackOverflow](https://stackoverflow.com/questions/tagged/typescript-eslint 'StackOverflow questions tagged with typescript-eslint') using the `typescript-eslint` tag +- Publicly tweet [@tseslint on Twitter](https://twitter.com/tseslint) -- Ask a question on [StackOverflow](https://stackoverflow.com/questions/tagged/typescript-eslint) using the `typescript-eslint` tag. -- Publicly tweet [@tseslint on Twitter](https://twitter.com/tseslint). +> Note that requests to add documentation _are_ allowed, even encouraged! 📝 ## Commenting -Feel free to comment on any open issue if you have more information that you feel like you can provide. If you don't have more information, instead use the "reaction" feature on the root comment for the issue. We use reactions to help gauge which issues are important to the community, so these are the best way to show us an issue is important. +Please do comment on any open issue if you have more information that would be useful. -Please refrain from leaving useless comments on issues. Comments like "+1", or "when's this getting fixed", or "any progress on this" just serve as spam, and annoy every single person subscribed to the issue. Generally we will just delete those comments, so save everyone time and think twice. +Don't: -Please refrain from commenting on old, closed issues and PRs. Your issue is rarely related enough to a closed issue to warrant "necroing" a dead thread - raising a new issue means you can fill in the [template](<(https://github.com/typescript-eslint/typescript-eslint/issues/new/choose)>), and make it easier for us to help you. Often times if you comment on a closed issue, we will just ask you to open a new issue, so please save everyone's time, and **_help us to help you_**. +- Leave useless comments such as _"+1"_ or _"when's this getting fixed?"_ that only act as spam + - If you have nothing to add but enthusiasm and joy, add a reaction such as 👍 +- Bring up unrelated topics in existing issues: instead, file a new issue +- Comment on closed PRs: instead, [file a new issue](#raising-issues) +- Comment on commits directly, as those comments are not searchable: instead, file a new issue -Please refrain from commenting on `main` commits. Commit comments are not searchable, meaning that nobody else can discover your comments. Raise an issue and reference the commit instead so that everyone can see your comment, and you can fill out the template. +## Pull Requests ---- +> See [DEVELOPMENT.md](./DEVELOPMENT.md) for details on how to get started developing locally. -## Pull Requests +Do: -> With the exception of extremely minor documentation typos, **only send pull requests that resolve open issues**. - -Anyone is free to help us build and maintain this project. If you see an issue that needs working on because it's important to you, comment on the issue to help make sure that nobody else works on it at the same time, and then start working. - -Developing in this repo is easy: - -- First fork the repo, and then clone it locally. -- Create a new branch. -- In the root of the project, run `yarn install`. - - This will install the dependencies, link the packages and do a build. -- Make the required changes. - -### Validating Your Changes - -We have a sophisticated CI process setup which gets run on every PR. You must pass all of the checks for us to consider merging your PR. Here is a list of checks that are done automatically, that you can also perform locally before pushing. - -- Ensure your code is properly formatted. - - You can run `yarn format` in any package or in the root. - - Alternatively, you can run prettier on save. -- Ensure there are no typechecking errors. - - You can run `yarn typecheck` in any package or in the root. -- Ensure your changes are adequately tested. - - You can run `yarn test` in any package. - - [VS Code launch tasks](https://code.visualstudio.com/docs/editor/tasks) tasks are provided that allow [visual debugging](https://code.visualstudio.com/docs/editor/debugging) tests - - We aim for around `90%` branch coverage for every PR. - - Coverage reports should automatically be generated locally, and the `codecov` bot should also comment on your PR with the percentage, as well as links to the line-by-line coverage of each file touched by your PR. -- Ensure you have no lint errors. - - You can run `yarn lint` in any package or in the root. - - You can run `yarn lint-markdown` in the root. -- If you have made changes to any markdown documentation, ensure there are no spelling errors - - You can run `yarn check-spelling` in the root. - - Or if you are using vscode, you can use [`Code Spell Checker`](https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker) plugin. -- If you have made changes within the `eslint-plugin` package, ensure the configs and documentation are valid. - - You can run `yarn check-configs` and `yarn check-docs` in the root, or in the `eslint-plugin` folder. +- Only send pull requests that resolve [open issues marked as `accepting prs`](https://github.com/typescript-eslint/typescript-eslint/issues?q=is%3Aissue+is%3Aopen+label%3A%22accepting+prs%22) + - One exception: extremely minor documentation typos +- Fill out the pull request template in full +- Validate your changes per [Development > Validating Changes](./DEVELOPMENT.md#validating-changes) before un-[drafting your PR](https://github.blog/2019-02-14-introducing-draft-pull-requests) + +Don't: + +- Force push after opening a PR + - Reasoning: GitHub is not able to track changes across force pushes, which makes it take longer for us to perform incremental reviews +- Comment asking for updates + - Reasoning: Your PR hasn't been forgotten! The volunteer maintainers have limited time to work on the project, and they will get to it as soon as they are able. ### Raising a PR -Once your changes are ready, you can raise a PR. The title of your PR should match the following format: +Once your changes are ready, you can raise a PR! 🙌 +The title of your PR should match the following format: ```text (): ``` -You can find more samples of good past PR titles in [recent commits to `main`](https://github.com/typescript-eslint/typescript-eslint/commits/main)) +You can find more samples of good past PR titles in [recent commits to `main`](https://github.com/typescript-eslint/typescript-eslint/commits/main). ```text fix(scope-manager): correct handling for class static blocks @@ -90,36 +75,36 @@ fix(scope-manager): correct handling for class static blocks docs: Fix links to getting started in README.md ``` -### Type +Within the body of your PR, make sure you reference the issue that you have worked on, as well as pointing out anything of note you wish us to look at during our review. + +> We do not care about the number, or style of commits in your history, because we squash merge every PR into `main`. +> Feel free to commit in whatever style you feel comfortable with. + +#### type Must be one of the following: +- `docs` - if you only change documentation, and not shipped code - `feat` - for any new functionality additions - `fix` - for any bug fixes that don't add new functionality - `test` - if you only change tests, and not shipped code -- `docs` - if you only change documentation, and not shipped code - `chore` - anything else -### package +#### package -`` is the name of the package you have made changes within (`eslint-plugin`, `parser`, `typescript-estree`, etc). If you make significant changes across multiple packages, you can omit this (i.e. `feat: foo bar`). +The name of the package you have made changes within, (e.g. `eslint-plugin`, `parser`, `typescript-estree`). +If you make significant changes across multiple packages, you can omit this (e.g. +`feat: foo bar`). -### short description +#### short description -And `` is a succinct title for the PR. - -Within the body of your PR, make sure you reference the issue that you have worked on, as well as pointing out anything of note you wish us to look at during our review. - -Make sure you use the "Fixes #xxx" format to reference issues, so that GitHub automatically closes the issues when we merge the PR. Also note that if you are fixing multiple issues at once, you can only reference one issue per line, and must put one "Fixes #xxx" per issue number. - -In terms of your commit history - we do not care about the number, or style of commits in your history, because we squash merge every PR into `main`. Feel free to commit in whatever style you feel comfortable with. - -**_One thing we ask is to please avoid force pushing after you have raised a PR_**. GitHub is not able to track changes across force pushes, which makes it impossible to efficiently do incremental reviews. This slows us down, and means it will take longer for us to get your PR merged. +A succinct title for the PR. ### Addressing Feedback and Beyond -With your PR raised, and the CI showing green, your PR will [sit in the queue to be reviewed](https://github.com/typescript-eslint/typescript-eslint/pulls?q=is%3Apr+is%3Aopen+sort%3Acreated-asc+-label%3A%22breaking+change%22+-label%3A%22awaiting+response%22+-label%3A%221+approval%22+-label%3A%22DO+NOT+MERGE%22). We generally review PRs oldest to newest, unless we consider a newer PR higher priority (i.e. if it's a bug fix). - -Please note that as this project is maintained by volunteers, it may take a while for us to get around to your PR (sometimes a month or more). Be patient, we'll get to it. Please refrain from commenting asking for a review, or similar bump comments. **_These just create spam for maintainers, and does not push your PR higher in the queue_**. +With your PR raised and the CI passing, your PR will [wait in the queue to be reviewed](https://github.com/typescript-eslint/typescript-eslint/pulls?q=is%3Apr+is%3Aopen+sort%3Acreated-asc+-label%3A%22breaking+change%22+-label%3A%22awaiting+response%22+-label%3A%221+approval%22+-label%3A%22DO+NOT+MERGE%22+status%3Asuccess). +We generally review PRs oldest to newest, unless we consider a newer PR higher priority (e.g. if it's a bug fix). -Once we have reviewed your PR, we will provide any feedback that needs addressing. If you feel a requested change is wrong, don't be afraid to discuss with us in the comments. Once the feedback is addressed, and the PR is reviewed, we'll ensure the branch is up to date with `main`, and merge it for you. +Once we have reviewed your PR, we will provide any feedback that needs addressing. +If you feel a requested change is wrong, don't be afraid to discuss with us in the comments. +Once the feedback is addressed, and the PR is reviewed, we'll ensure the branch is up to date with `main`, and merge it for you. diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md new file mode 100644 index 00000000000..fd5c0493798 --- /dev/null +++ b/DEVELOPMENT.md @@ -0,0 +1,69 @@ +# Development + +Thank you for your interest in developing on TypeScript ESLint! ❤️‍🔥 + +> See [CONTRIBUTING.md](./CONTRIBUTING.md) for details on our general contribution flows. + +## Setup + +After [forking the repo from GitHub](https://help.github.com/articles/fork-a-repo): + +```shell +git clone https://github.com//typescript-eslint +cd typescript-eslint +yarn +``` + +Postinstall scripts will then fully build your repository locally with (`yarn build`). +At this point, you're ready to develop! 🚀 + +## Builds + +You can run `yarn build` in any package or in the root to build the package(s). + +Keep in mind that packages generally depend on each other's built outputs, and you'll need to `yarn build` dependents for their consumers to receive any new local changes. +For example, if you make a change within `scope-manager` and want to use it in `eslint-plugin`, you'll need to `yarn build` either from the root or within `packages/scope-manager`. + +## Validating Changes + +The following checks are all run on pull requests automatically. +You can also perform them locally. + +### Formatting + +We use [Prettier](https://prettier.io) to auto-format code. +A Git pre-commit hook should apply it to all committed changes. +ALternately, you can run `yarn format` in any package or in the root. + +### Linting + +All code changes must pass ESLint. +You can run `yarn lint` in any package or in the root. + +### Proofreading + +Changes must pass two linters for documentation and naming, the commands for which may be run from the root: + +- `yarn check-spelling`: [CSpell](https://cspell.org), for all code +- `yarn lint-markdown`: [Markdownlint](https://github.com/DavidAnson/markdownlint), for Markdown documentation + +### Tests + +All code changes should ideally be unit tested if possible. +You can run `yarn test` in any package to run its tests. + +> [VS Code launch tasks](https://code.visualstudio.com/docs/editor/tasks) tasks are provided that allow [visual debugging](https://code.visualstudio.com/docs/editor/debugging) tests + +#### Code Coverage + +We aim for 100% code coverage in all PRs when possible, except in the `website/` package. +Coverage reports are be generated locally whenever `yarn test` is run. + +The `codecov` bot should also comment on your PR with the percentage, as well as links to the line-by-line coverage of each file touched by your PR. + +### Type Checking + +All code should pass TypeScript type checking. +You can run `yarn typecheck` in any package or in the root to run `tsc`. + +> Run `yarn typecheck -w` to start `tsc` in watch mode. From ff5d4ded7aa665a85190b9ba86cbbe6a726722e1 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Tue, 4 Oct 2022 12:49:34 -0400 Subject: [PATCH 017/193] docs: create .github/SECURITY.md policy (#5712) * docs: create .github/SECURITY.md policy * prettier fix uwuwuwuw * Update .github/SECURITY.md --- .github/SECURITY.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .github/SECURITY.md diff --git a/.github/SECURITY.md b/.github/SECURITY.md new file mode 100644 index 00000000000..536720ad67e --- /dev/null +++ b/.github/SECURITY.md @@ -0,0 +1,12 @@ +# Security Policiy + +The TypeScript ESLint team and community take all security vulnerabilities seriously. +If you have a vulnerability or other security issues to disclose: + +- Thank you very much, please do! +- Please send them to us by emailing `typescripteslint@gmail.com` + +We appreciate your efforts and responsible disclosure and will make every effort to acknowledge your contributions. + +> We also adhere to the [Tidelift security process](https://support.tidelift.com/hc/en-us/articles/4406287910036-Security-process). +> See https://tidelift.com/security. From 729f549339b59ba16b3ee310ce0bce30bd05bde1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Oct 2022 03:32:19 -0700 Subject: [PATCH 018/193] chore: Bump @docusaurus/plugin-pwa from 2.0.1 to 2.1.0 (#5743) Bumps [@docusaurus/plugin-pwa](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-plugin-pwa) from 2.0.1 to 2.1.0. - [Release notes](https://github.com/facebook/docusaurus/releases) - [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/docusaurus/commits/v2.1.0/packages/docusaurus-plugin-pwa) --- updated-dependencies: - dependency-name: "@docusaurus/plugin-pwa" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- packages/website/package.json | 2 +- yarn.lock | 488 +++++++++++++++++++++------------- 2 files changed, 297 insertions(+), 193 deletions(-) diff --git a/packages/website/package.json b/packages/website/package.json index 71c08a255f8..6f573a0dbb1 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -17,7 +17,7 @@ "dependencies": { "@babel/runtime": "^7.18.3", "@docusaurus/core": "~2.0.1", - "@docusaurus/plugin-pwa": "~2.0.1", + "@docusaurus/plugin-pwa": "~2.1.0", "@docusaurus/preset-classic": "~2.0.1", "@docusaurus/remark-plugin-npm2yarn": "~2.0.1", "@docusaurus/theme-common": "~2.0.1", diff --git a/yarn.lock b/yarn.lock index 7e151d0a093..e9cf7cf86ad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -168,21 +168,21 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.3.tgz#707b939793f867f5a73b2666e6d9a3396eb03151" integrity sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw== -"@babel/core@*", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.15.5", "@babel/core@^7.18.6": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.1.tgz#c8fa615c5e88e272564ace3d42fbc8b17bfeb22b" - integrity sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw== +"@babel/core@*", "@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.15.5", "@babel/core@^7.18.6": + version "7.19.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.3.tgz#2519f62a51458f43b682d61583c3810e7dcee64c" + integrity sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.0" - "@babel/helper-compilation-targets" "^7.19.1" + "@babel/generator" "^7.19.3" + "@babel/helper-compilation-targets" "^7.19.3" "@babel/helper-module-transforms" "^7.19.0" "@babel/helpers" "^7.19.0" - "@babel/parser" "^7.19.1" + "@babel/parser" "^7.19.3" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.1" - "@babel/types" "^7.19.0" + "@babel/traverse" "^7.19.3" + "@babel/types" "^7.19.3" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -211,27 +211,6 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.11.1": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.3.tgz#2519f62a51458f43b682d61583c3810e7dcee64c" - integrity sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.3" - "@babel/helper-compilation-targets" "^7.19.3" - "@babel/helper-module-transforms" "^7.19.0" - "@babel/helpers" "^7.19.0" - "@babel/parser" "^7.19.3" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.3" - "@babel/types" "^7.19.3" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" - "@babel/eslint-parser@*", "@babel/eslint-parser@^7.18.2": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz#4f68f6b0825489e00a24b41b6a1ae35414ecd2f4" @@ -274,7 +253,7 @@ "@babel/helper-explode-assignable-expression" "^7.18.6" "@babel/types" "^7.18.9" -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.1": +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz#7f630911d83b408b76fe584831c98e5395d7a17c" integrity sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg== @@ -347,7 +326,7 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-environment-visitor@^7.18.6", "@babel/helper-environment-visitor@^7.18.9": +"@babel/helper-environment-visitor@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== @@ -396,7 +375,7 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.18.9", "@babel/helper-module-transforms@^7.19.0": +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.0": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz#309b230f04e22c58c6a2c0c0c7e50b216d350c30" integrity sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ== @@ -543,16 +522,6 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-proposal-optional-chaining" "^7.18.9" -"@babel/plugin-proposal-async-generator-functions@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz#aedac81e6fc12bb643374656dd5f2605bf743d17" - integrity sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w== - dependencies: - "@babel/helper-environment-visitor" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-remap-async-to-generator" "^7.18.6" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-proposal-async-generator-functions@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz#34f6f5174b688529342288cd264f80c9ea9fb4a7" @@ -861,20 +830,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-classes@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz#90818efc5b9746879b869d5ce83eb2aa48bbc3da" - integrity sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-replace-supers" "^7.18.9" - "@babel/helper-split-export-declaration" "^7.18.6" - globals "^11.1.0" - "@babel/plugin-transform-classes@^7.19.0": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz#0e61ec257fba409c41372175e7c1e606dc79bb20" @@ -904,13 +859,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-destructuring@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz#68906549c021cb231bee1db21d3b5b095f8ee292" - integrity sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" @@ -983,17 +931,6 @@ "@babel/helper-simple-access" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz#545df284a7ac6a05125e3e405e536c5853099a06" - integrity sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A== - dependencies: - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-validator-identifier" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" - "@babel/plugin-transform-modules-systemjs@^7.19.0": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz#5f20b471284430f02d9c5059d9b9a16d4b085a1f" @@ -1013,14 +950,6 @@ "@babel/helper-module-transforms" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-named-capturing-groups-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz#c89bfbc7cc6805d692f3a49bc5fc1b630007246d" - integrity sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz#ec7455bab6cd8fb05c525a94876f435a48128888" @@ -1132,14 +1061,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-spread@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz#6ea7a6297740f381c540ac56caf75b05b74fb664" - integrity sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-transform-spread@^7.19.0": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz#dd60b4620c2fec806d60cfaae364ec2188d593b6" @@ -1185,13 +1106,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-unicode-escapes@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz#0d01fb7fb2243ae1c033f65f6e3b4be78db75f27" - integrity sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-transform-unicode-regex@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" @@ -1200,7 +1114,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/preset-env@^7.11.0": +"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.15.6", "@babel/preset-env@^7.18.6": version "7.19.3" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.19.3.tgz#52cd19abaecb3f176a4ff9cc5e15b7bf06bec754" integrity sha512-ziye1OTc9dGFOAXSWKUqQblYHNlBOaDl8wzqf2iKXJAltYiR3hKHUKmkt+S9PppW7RQpq4fFCrwwpIDj/f5P4w== @@ -1281,87 +1195,6 @@ core-js-compat "^3.25.1" semver "^6.3.0" -"@babel/preset-env@^7.15.6", "@babel/preset-env@^7.18.6": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.9.tgz#9b3425140d724fbe590322017466580844c7eaff" - integrity sha512-75pt/q95cMIHWssYtyfjVlvI+QEZQThQbKvR9xH+F/Agtw/s4Wfc2V9Bwd/P39VtixB7oWxGdH4GteTTwYJWMg== - dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.18.6" - "@babel/plugin-proposal-class-properties" "^7.18.6" - "@babel/plugin-proposal-class-static-block" "^7.18.6" - "@babel/plugin-proposal-dynamic-import" "^7.18.6" - "@babel/plugin-proposal-export-namespace-from" "^7.18.9" - "@babel/plugin-proposal-json-strings" "^7.18.6" - "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" - "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.18.9" - "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-private-methods" "^7.18.6" - "@babel/plugin-proposal-private-property-in-object" "^7.18.6" - "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.18.6" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.18.6" - "@babel/plugin-transform-async-to-generator" "^7.18.6" - "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.18.9" - "@babel/plugin-transform-classes" "^7.18.9" - "@babel/plugin-transform-computed-properties" "^7.18.9" - "@babel/plugin-transform-destructuring" "^7.18.9" - "@babel/plugin-transform-dotall-regex" "^7.18.6" - "@babel/plugin-transform-duplicate-keys" "^7.18.9" - "@babel/plugin-transform-exponentiation-operator" "^7.18.6" - "@babel/plugin-transform-for-of" "^7.18.8" - "@babel/plugin-transform-function-name" "^7.18.9" - "@babel/plugin-transform-literals" "^7.18.9" - "@babel/plugin-transform-member-expression-literals" "^7.18.6" - "@babel/plugin-transform-modules-amd" "^7.18.6" - "@babel/plugin-transform-modules-commonjs" "^7.18.6" - "@babel/plugin-transform-modules-systemjs" "^7.18.9" - "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" - "@babel/plugin-transform-new-target" "^7.18.6" - "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.18.8" - "@babel/plugin-transform-property-literals" "^7.18.6" - "@babel/plugin-transform-regenerator" "^7.18.6" - "@babel/plugin-transform-reserved-words" "^7.18.6" - "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.18.9" - "@babel/plugin-transform-sticky-regex" "^7.18.6" - "@babel/plugin-transform-template-literals" "^7.18.9" - "@babel/plugin-transform-typeof-symbol" "^7.18.9" - "@babel/plugin-transform-unicode-escapes" "^7.18.6" - "@babel/plugin-transform-unicode-regex" "^7.18.6" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.18.9" - babel-plugin-polyfill-corejs2 "^0.3.1" - babel-plugin-polyfill-corejs3 "^0.5.2" - babel-plugin-polyfill-regenerator "^0.3.1" - core-js-compat "^3.22.1" - semver "^6.3.0" - "@babel/preset-modules@^0.1.5": version "0.1.5" resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" @@ -1418,7 +1251,7 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.12.9", "@babel/traverse@^7.18.8", "@babel/traverse@^7.18.9", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.7.2": +"@babel/traverse@^7.12.9", "@babel/traverse@^7.18.8", "@babel/traverse@^7.18.9", "@babel/traverse@^7.19.0", "@babel/traverse@^7.7.2": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.1.tgz#0fafe100a8c2a603b4718b1d9bf2568d1d193347" integrity sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA== @@ -1871,6 +1704,83 @@ webpack-merge "^5.8.0" webpackbar "^5.0.2" +"@docusaurus/core@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.1.0.tgz#4aedc306f4c4cd2e0491b641bf78941d4b480ab6" + integrity sha512-/ZJ6xmm+VB9Izbn0/s6h6289cbPy2k4iYFwWDhjiLsVqwa/Y0YBBcXvStfaHccudUC3OfP+26hMk7UCjc50J6Q== + dependencies: + "@babel/core" "^7.18.6" + "@babel/generator" "^7.18.7" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-runtime" "^7.18.6" + "@babel/preset-env" "^7.18.6" + "@babel/preset-react" "^7.18.6" + "@babel/preset-typescript" "^7.18.6" + "@babel/runtime" "^7.18.6" + "@babel/runtime-corejs3" "^7.18.6" + "@babel/traverse" "^7.18.8" + "@docusaurus/cssnano-preset" "2.1.0" + "@docusaurus/logger" "2.1.0" + "@docusaurus/mdx-loader" "2.1.0" + "@docusaurus/react-loadable" "5.5.2" + "@docusaurus/utils" "2.1.0" + "@docusaurus/utils-common" "2.1.0" + "@docusaurus/utils-validation" "2.1.0" + "@slorber/static-site-generator-webpack-plugin" "^4.0.7" + "@svgr/webpack" "^6.2.1" + autoprefixer "^10.4.7" + babel-loader "^8.2.5" + babel-plugin-dynamic-import-node "^2.3.3" + boxen "^6.2.1" + chalk "^4.1.2" + chokidar "^3.5.3" + clean-css "^5.3.0" + cli-table3 "^0.6.2" + combine-promises "^1.1.0" + commander "^5.1.0" + copy-webpack-plugin "^11.0.0" + core-js "^3.23.3" + css-loader "^6.7.1" + css-minimizer-webpack-plugin "^4.0.0" + cssnano "^5.1.12" + del "^6.1.1" + detect-port "^1.3.0" + escape-html "^1.0.3" + eta "^1.12.3" + file-loader "^6.2.0" + fs-extra "^10.1.0" + html-minifier-terser "^6.1.0" + html-tags "^3.2.0" + html-webpack-plugin "^5.5.0" + import-fresh "^3.3.0" + leven "^3.1.0" + lodash "^4.17.21" + mini-css-extract-plugin "^2.6.1" + postcss "^8.4.14" + postcss-loader "^7.0.0" + prompts "^2.4.2" + react-dev-utils "^12.0.1" + react-helmet-async "^1.3.0" + react-loadable "npm:@docusaurus/react-loadable@5.5.2" + react-loadable-ssr-addon-v5-slorber "^1.0.1" + react-router "^5.3.3" + react-router-config "^5.1.1" + react-router-dom "^5.3.3" + rtl-detect "^1.0.4" + semver "^7.3.7" + serve-handler "^6.1.3" + shelljs "^0.8.5" + terser-webpack-plugin "^5.3.3" + tslib "^2.4.0" + update-notifier "^5.1.0" + url-loader "^4.1.1" + wait-on "^6.0.1" + webpack "^5.73.0" + webpack-bundle-analyzer "^4.5.0" + webpack-dev-server "^4.9.3" + webpack-merge "^5.8.0" + webpackbar "^5.0.2" + "@docusaurus/cssnano-preset@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.1.tgz#4d0c49338cf3aa88c5bd7cffbf77654db8e1e3b2" @@ -1881,6 +1791,16 @@ postcss-sort-media-queries "^4.2.1" tslib "^2.4.0" +"@docusaurus/cssnano-preset@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.1.0.tgz#5b42107769b7cbc61655496090bc262d7788d6ab" + integrity sha512-pRLewcgGhOies6pzsUROfmPStDRdFw+FgV5sMtLr5+4Luv2rty5+b/eSIMMetqUsmg3A9r9bcxHk9bKAKvx3zQ== + dependencies: + cssnano-preset-advanced "^5.3.8" + postcss "^8.4.14" + postcss-sort-media-queries "^4.2.1" + tslib "^2.4.0" + "@docusaurus/logger@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.0.1.tgz#78a940a333d2f654fd9dea24db2c962034d4b1ff" @@ -1889,6 +1809,14 @@ chalk "^4.1.2" tslib "^2.4.0" +"@docusaurus/logger@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.1.0.tgz#86c97e948f578814d3e61fc2b2ad283043cbe87a" + integrity sha512-uuJx2T6hDBg82joFeyobywPjSOIfeq05GfyKGHThVoXuXsu1KAzMDYcjoDxarb9CoHCI/Dor8R2MoL6zII8x1Q== + dependencies: + chalk "^4.1.2" + tslib "^2.4.0" + "@docusaurus/mdx-loader@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.1.tgz#cc73690ca5d356687d9e75740560b4159cd5cdb5" @@ -1912,6 +1840,29 @@ url-loader "^4.1.1" webpack "^5.73.0" +"@docusaurus/mdx-loader@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.1.0.tgz#3fca9576cc73a22f8e7d9941985590b9e47a8526" + integrity sha512-i97hi7hbQjsD3/8OSFhLy7dbKGH8ryjEzOfyhQIn2CFBYOY3ko0vMVEf3IY9nD3Ld7amYzsZ8153RPkcnXA+Lg== + dependencies: + "@babel/parser" "^7.18.8" + "@babel/traverse" "^7.18.8" + "@docusaurus/logger" "2.1.0" + "@docusaurus/utils" "2.1.0" + "@mdx-js/mdx" "^1.6.22" + escape-html "^1.0.3" + file-loader "^6.2.0" + fs-extra "^10.1.0" + image-size "^1.0.1" + mdast-util-to-string "^2.0.0" + remark-emoji "^2.2.0" + stringify-object "^3.3.0" + tslib "^2.4.0" + unified "^9.2.2" + unist-util-visit "^2.0.3" + url-loader "^4.1.1" + webpack "^5.73.0" + "@docusaurus/module-type-aliases@2.0.1", "@docusaurus/module-type-aliases@~2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.1.tgz#44d7132297bedae0890695b0e7ebbe14a73e26d1" @@ -1926,6 +1877,20 @@ react-helmet-async "*" react-loadable "npm:@docusaurus/react-loadable@5.5.2" +"@docusaurus/module-type-aliases@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.1.0.tgz#322f8fd5b436af2154c0dddfa173435730e66261" + integrity sha512-Z8WZaK5cis3xEtyfOT817u9xgGUauT0PuuVo85ysnFRX8n7qLN1lTPCkC+aCmFm/UcV8h/W5T4NtIsst94UntQ== + dependencies: + "@docusaurus/react-loadable" "5.5.2" + "@docusaurus/types" "2.1.0" + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router-config" "*" + "@types/react-router-dom" "*" + react-helmet-async "*" + react-loadable "npm:@docusaurus/react-loadable@5.5.2" + "@docusaurus/plugin-content-blog@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.1.tgz#a37065e18ffd26e022ffb16a21ff28199140729e" @@ -1948,6 +1913,28 @@ utility-types "^3.10.0" webpack "^5.73.0" +"@docusaurus/plugin-content-blog@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.1.0.tgz#32b1a7cd4b0026f4a76fce4edc5cfdd0edb1ec42" + integrity sha512-xEp6jlu92HMNUmyRBEeJ4mCW1s77aAEQO4Keez94cUY/Ap7G/r0Awa6xSLff7HL0Fjg8KK1bEbDy7q9voIavdg== + dependencies: + "@docusaurus/core" "2.1.0" + "@docusaurus/logger" "2.1.0" + "@docusaurus/mdx-loader" "2.1.0" + "@docusaurus/types" "2.1.0" + "@docusaurus/utils" "2.1.0" + "@docusaurus/utils-common" "2.1.0" + "@docusaurus/utils-validation" "2.1.0" + cheerio "^1.0.0-rc.12" + feed "^4.2.2" + fs-extra "^10.1.0" + lodash "^4.17.21" + reading-time "^1.5.0" + tslib "^2.4.0" + unist-util-visit "^2.0.3" + utility-types "^3.10.0" + webpack "^5.73.0" + "@docusaurus/plugin-content-docs@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.1.tgz#4059591b4bff617e744e856ca680674b27c0b98a" @@ -1970,6 +1957,28 @@ utility-types "^3.10.0" webpack "^5.73.0" +"@docusaurus/plugin-content-docs@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.1.0.tgz#3fcdf258c13dde27268ce7108a102b74ca4c279b" + integrity sha512-Rup5pqXrXlKGIC4VgwvioIhGWF7E/NNSlxv+JAxRYpik8VKlWsk9ysrdHIlpX+KJUCO9irnY21kQh2814mlp/Q== + dependencies: + "@docusaurus/core" "2.1.0" + "@docusaurus/logger" "2.1.0" + "@docusaurus/mdx-loader" "2.1.0" + "@docusaurus/module-type-aliases" "2.1.0" + "@docusaurus/types" "2.1.0" + "@docusaurus/utils" "2.1.0" + "@docusaurus/utils-validation" "2.1.0" + "@types/react-router-config" "^5.0.6" + combine-promises "^1.1.0" + fs-extra "^10.1.0" + import-fresh "^3.3.0" + js-yaml "^4.1.0" + lodash "^4.17.21" + tslib "^2.4.0" + utility-types "^3.10.0" + webpack "^5.73.0" + "@docusaurus/plugin-content-pages@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.1.tgz#013f2e66f80d19b5c95a2d941d67c7cdb67b7191" @@ -1984,6 +1993,20 @@ tslib "^2.4.0" webpack "^5.73.0" +"@docusaurus/plugin-content-pages@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.1.0.tgz#714d24f71d49dbfed888f50c15e975c2154c3ce8" + integrity sha512-SwZdDZRlObHNKXTnFo7W2aF6U5ZqNVI55Nw2GCBryL7oKQSLeI0lsrMlMXdzn+fS7OuBTd3MJBO1T4Zpz0i/+g== + dependencies: + "@docusaurus/core" "2.1.0" + "@docusaurus/mdx-loader" "2.1.0" + "@docusaurus/types" "2.1.0" + "@docusaurus/utils" "2.1.0" + "@docusaurus/utils-validation" "2.1.0" + fs-extra "^10.1.0" + tslib "^2.4.0" + webpack "^5.73.0" + "@docusaurus/plugin-debug@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.1.tgz#2b2a473f8e01fd356e32236f753665b48209bcd4" @@ -2016,19 +2039,19 @@ "@docusaurus/utils-validation" "2.0.1" tslib "^2.4.0" -"@docusaurus/plugin-pwa@~2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-pwa/-/plugin-pwa-2.0.1.tgz#e49f2a846f0beca58cb09e7a114393c43cd438b8" - integrity sha512-zN+dCx2V1yIK8+U3cey/IA44ynfmZQm/tdVhXy6EsXbkaEW8ZZu0AIpARFxJ2lmR2sPkG1ohkXIoOOCMOld1Xw== +"@docusaurus/plugin-pwa@~2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-pwa/-/plugin-pwa-2.1.0.tgz#e6deb53a4c4b10de85c73886a75497a48bedd258" + integrity sha512-SOhEbv9sECaD/c9Ym2Bq6ruK56PAxV9Ftj6Hk2rKFdrASBv3ruri2iCT5YPKMpXqmzWd84GnE2pusMW2s1w2Sw== dependencies: "@babel/core" "^7.18.6" "@babel/preset-env" "^7.18.6" - "@docusaurus/core" "2.0.1" - "@docusaurus/theme-common" "2.0.1" - "@docusaurus/theme-translations" "2.0.1" - "@docusaurus/types" "2.0.1" - "@docusaurus/utils" "2.0.1" - "@docusaurus/utils-validation" "2.0.1" + "@docusaurus/core" "2.1.0" + "@docusaurus/theme-common" "2.1.0" + "@docusaurus/theme-translations" "2.1.0" + "@docusaurus/types" "2.1.0" + "@docusaurus/utils" "2.1.0" + "@docusaurus/utils-validation" "2.1.0" babel-loader "^8.2.5" clsx "^1.2.1" core-js "^3.23.3" @@ -2141,6 +2164,26 @@ tslib "^2.4.0" utility-types "^3.10.0" +"@docusaurus/theme-common@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.1.0.tgz#dff4d5d1e29efc06125dc06f7b259f689bb3f24d" + integrity sha512-vT1otpVPbKux90YpZUnvknsn5zvpLf+AW1W0EDcpE9up4cDrPqfsh0QoxGHFJnobE2/qftsBFC19BneN4BH8Ag== + dependencies: + "@docusaurus/mdx-loader" "2.1.0" + "@docusaurus/module-type-aliases" "2.1.0" + "@docusaurus/plugin-content-blog" "2.1.0" + "@docusaurus/plugin-content-docs" "2.1.0" + "@docusaurus/plugin-content-pages" "2.1.0" + "@docusaurus/utils" "2.1.0" + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router-config" "*" + clsx "^1.2.1" + parse-numeric-range "^1.3.0" + prism-react-renderer "^1.3.5" + tslib "^2.4.0" + utility-types "^3.10.0" + "@docusaurus/theme-search-algolia@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.1.tgz#0aab8407b2163f67eb4c48f1de33944e1695fa74" @@ -2171,6 +2214,14 @@ fs-extra "^10.1.0" tslib "^2.4.0" +"@docusaurus/theme-translations@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.1.0.tgz#ce9a2955afd49bff364cfdfd4492b226f6dd3b6e" + integrity sha512-07n2akf2nqWvtJeMy3A+7oSGMuu5F673AovXVwY0aGAux1afzGCiqIFlYW3EP0CujvDJAEFSQi/Tetfh+95JNg== + dependencies: + fs-extra "^10.1.0" + tslib "^2.4.0" + "@docusaurus/types@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.1.tgz#8696a70e85c4b9be80b38ac592d520f6fe72618b" @@ -2185,6 +2236,20 @@ webpack "^5.73.0" webpack-merge "^5.8.0" +"@docusaurus/types@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.1.0.tgz#01e13cd9adb268fffe87b49eb90302d5dc3edd6b" + integrity sha512-BS1ebpJZnGG6esKqsjtEC9U9qSaPylPwlO7cQ1GaIE7J/kMZI3FITnNn0otXXu7c7ZTqhb6+8dOrG6fZn6fqzQ== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + commander "^5.1.0" + joi "^17.6.0" + react-helmet-async "^1.3.0" + utility-types "^3.10.0" + webpack "^5.73.0" + webpack-merge "^5.8.0" + "@docusaurus/utils-common@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.1.tgz#b6f2b029547f739e1431ec84abd16974edf495e0" @@ -2192,6 +2257,13 @@ dependencies: tslib "^2.4.0" +"@docusaurus/utils-common@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.1.0.tgz#248434751096f8c6c644ed65eed2a5a070a227f8" + integrity sha512-F2vgmt4yRFgRQR2vyEFGTWeyAdmgKbtmu3sjHObF0tjjx/pN0Iw/c6eCopaH34E6tc9nO0nvp01pwW+/86d1fg== + dependencies: + tslib "^2.4.0" + "@docusaurus/utils-validation@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.1.tgz#69f7d4944288d71f00fdba6dde10f05008f04308" @@ -2203,6 +2275,17 @@ js-yaml "^4.1.0" tslib "^2.4.0" +"@docusaurus/utils-validation@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.1.0.tgz#c8cf1d8454d924d9a564fefa86436268f43308e3" + integrity sha512-AMJzWYKL3b7FLltKtDXNLO9Y649V2BXvrnRdnW2AA+PpBnYV78zKLSCz135cuWwRj1ajNtP4onbXdlnyvCijGQ== + dependencies: + "@docusaurus/logger" "2.1.0" + "@docusaurus/utils" "2.1.0" + joi "^17.6.0" + js-yaml "^4.1.0" + tslib "^2.4.0" + "@docusaurus/utils@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.1.tgz#37b4b42e29175e5d2d811fcbf9f93bffeca7c353" @@ -2224,6 +2307,27 @@ url-loader "^4.1.1" webpack "^5.73.0" +"@docusaurus/utils@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.1.0.tgz#b77b45b22e61eb6c2dcad8a7e96f6db0409b655f" + integrity sha512-fPvrfmAuC54n8MjZuG4IysaMdmvN5A/qr7iFLbSGSyDrsbP4fnui6KdZZIa/YOLIPLec8vjZ8RIITJqF18mx4A== + dependencies: + "@docusaurus/logger" "2.1.0" + "@svgr/webpack" "^6.2.1" + file-loader "^6.2.0" + fs-extra "^10.1.0" + github-slugger "^1.4.0" + globby "^11.1.0" + gray-matter "^4.0.3" + js-yaml "^4.1.0" + lodash "^4.17.21" + micromatch "^4.0.5" + resolve-pathname "^3.0.0" + shelljs "^0.8.5" + tslib "^2.4.0" + url-loader "^4.1.1" + webpack "^5.73.0" + "@eslint/eslintrc@^1.2.3": version "1.2.3" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.3.tgz#fcaa2bcef39e13d6e9e7f6271f4cc7cae1174886" @@ -6307,7 +6411,7 @@ copy-webpack-plugin@^11.0.0: schema-utils "^4.0.0" serialize-javascript "^6.0.0" -core-js-compat@^3.21.0, core-js-compat@^3.22.1: +core-js-compat@^3.21.0: version "3.22.5" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.22.5.tgz#7fffa1d20cb18405bd22756ca1353c6f1a0e8614" integrity sha512-rEF75n3QtInrYICvJjrAgV03HwKiYvtKHdPtaba1KucG+cNZ4NJnH9isqt979e67KZlhpbCOTwnsvnIr+CVeOg== From 110995744b6d1816bc20c18960094a345e75cc54 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Oct 2022 03:32:44 -0700 Subject: [PATCH 019/193] chore: Bump marked from 4.0.15 to 4.1.1 (#5742) Bumps [marked](https://github.com/markedjs/marked) from 4.0.15 to 4.1.1. - [Release notes](https://github.com/markedjs/marked/releases) - [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json) - [Commits](https://github.com/markedjs/marked/compare/v4.0.15...v4.1.1) --- updated-dependencies: - dependency-name: marked dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index e9cf7cf86ad..17f7ebc9e74 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4475,9 +4475,9 @@ integrity sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw== "@types/marked@*", "@types/marked@^4.0.3": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/marked/-/marked-4.0.3.tgz#2098f4a77adaba9ce881c9e0b6baf29116e5acc4" - integrity sha512-HnMWQkLJEf/PnxZIfbm0yGJRRZYYMhb++O9M36UCTA9z53uPvVoSlAwJr3XOpDEryb7Hwl1qAx/MV6YIW1RXxg== + version "4.0.7" + resolved "https://registry.yarnpkg.com/@types/marked/-/marked-4.0.7.tgz#400a76809fd08c2bbd9e25f3be06ea38c8e0a1d3" + integrity sha512-eEAhnz21CwvKVW+YvRvcTuFKNU9CV1qH+opcgVK3pIMI6YZzDm6gc8o2vHjldFk6MGKt5pueSB7IOpvpx5Qekw== "@types/mdast@^3.0.0": version "3.0.10" @@ -10666,9 +10666,9 @@ markdownlint@~0.25.1: markdown-it "12.3.2" marked@^4.0.15: - version "4.0.15" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.15.tgz#0216b7c9d5fcf6ac5042343c41d81a8b1b5e1b4a" - integrity sha512-esX5lPdTfG4p8LDkv+obbRCyOKzB+820ZZyMOXJZygZBHrH9b3xXR64X4kT3sPe9Nx8qQXbmcz6kFSMt4Nfk6Q== + version "4.1.1" + resolved "https://registry.yarnpkg.com/marked/-/marked-4.1.1.tgz#2f709a4462abf65a283f2453dc1c42ab177d302e" + integrity sha512-0cNMnTcUJPxbA6uWmCmjWz4NJRe/0Xfk2NhXCUHjew9qJzFN20krFnsUe7QynwqOwa5m1fZ4UDg0ycKFVC0ccw== mdast-squeeze-paragraphs@^4.0.0: version "4.0.0" From 93bf147286f1862445c33f99a1ff2a5684333938 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Oct 2022 03:32:55 -0700 Subject: [PATCH 020/193] chore: Bump lerna from 5.5.2 to 5.5.4 (#5741) Bumps [lerna](https://github.com/lerna/lerna/tree/HEAD/core/lerna) from 5.5.2 to 5.5.4. - [Release notes](https://github.com/lerna/lerna/releases) - [Changelog](https://github.com/lerna/lerna/blob/main/core/lerna/CHANGELOG.md) - [Commits](https://github.com/lerna/lerna/commits/v5.5.4/core/lerna) --- updated-dependencies: - dependency-name: lerna dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 826 +++++++++++++++++++++++++-------------------------- 2 files changed, 414 insertions(+), 414 deletions(-) diff --git a/package.json b/package.json index d69b79c7d8c..67f0ae8ccec 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "jest-diff": "^29.0.3", "jest-snapshot": "^29.0.3", "jest-specific-snapshot": "^5.0.0", - "lerna": "5.5.2", + "lerna": "5.5.4", "lint-staged": "^13.0.0", "make-dir": "^3.1.0", "markdownlint-cli": "^0.31.1", diff --git a/yarn.lock b/yarn.lock index 17f7ebc9e74..1d92b449d6a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2658,39 +2658,39 @@ resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== -"@lerna/add@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/add/-/add-5.5.2.tgz#d5970f408f7f8fa2eaa139e7d3c6a67bdd5fedb2" - integrity sha512-YCBpwDtNICvjTEG7klXITXFC8pZd8NrmkC8yseaTGm51VPNneZVPJZHWhOlWM4spn50ELVP1p2nnSl6COt50aw== - dependencies: - "@lerna/bootstrap" "5.5.2" - "@lerna/command" "5.5.2" - "@lerna/filter-options" "5.5.2" - "@lerna/npm-conf" "5.5.2" - "@lerna/validation-error" "5.5.2" +"@lerna/add@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/add/-/add-5.5.4.tgz#2c925ced1cb42779a440f046c37aa0151a560b87" + integrity sha512-eMEWdyH2ijjDuOCZ5qI7nZlWtVmOx/aABGyNmNEG1ChNDQSmxgEmmqxagQCtW7+T63e9AaHsjrxYahBWYBnuhw== + dependencies: + "@lerna/bootstrap" "5.5.4" + "@lerna/command" "5.5.4" + "@lerna/filter-options" "5.5.4" + "@lerna/npm-conf" "5.5.4" + "@lerna/validation-error" "5.5.4" dedent "^0.7.0" npm-package-arg "8.1.1" p-map "^4.0.0" pacote "^13.6.1" semver "^7.3.4" -"@lerna/bootstrap@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-5.5.2.tgz#d5bedcc001cd4af35043ca5c77342276c8095853" - integrity sha512-oJ9G1MC/TMukJAZAf+bPJ2veAiiUj6/BGe99nagQh7uiXhH1N0uItd/aMC6xBHggu0ZVOQEY7mvL0/z1lGsM4w== - dependencies: - "@lerna/command" "5.5.2" - "@lerna/filter-options" "5.5.2" - "@lerna/has-npm-version" "5.5.2" - "@lerna/npm-install" "5.5.2" - "@lerna/package-graph" "5.5.2" - "@lerna/pulse-till-done" "5.5.2" - "@lerna/rimraf-dir" "5.5.2" - "@lerna/run-lifecycle" "5.5.2" - "@lerna/run-topologically" "5.5.2" - "@lerna/symlink-binary" "5.5.2" - "@lerna/symlink-dependencies" "5.5.2" - "@lerna/validation-error" "5.5.2" +"@lerna/bootstrap@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-5.5.4.tgz#919fdccf9447ce1b6901fb30ca69860f6563c958" + integrity sha512-MGC6naM0DrFNYTZPEW477uqWCqXmI4MRBKjtGNMiJhczYcFdD6x30u688zoAuO5HUoyqL6Uw7Ea28GVEyDm93Q== + dependencies: + "@lerna/command" "5.5.4" + "@lerna/filter-options" "5.5.4" + "@lerna/has-npm-version" "5.5.4" + "@lerna/npm-install" "5.5.4" + "@lerna/package-graph" "5.5.4" + "@lerna/pulse-till-done" "5.5.4" + "@lerna/rimraf-dir" "5.5.4" + "@lerna/run-lifecycle" "5.5.4" + "@lerna/run-topologically" "5.5.4" + "@lerna/symlink-binary" "5.5.4" + "@lerna/symlink-dependencies" "5.5.4" + "@lerna/validation-error" "5.5.4" "@npmcli/arborist" "5.3.0" dedent "^0.7.0" get-port "^5.1.1" @@ -2702,100 +2702,100 @@ p-waterfall "^2.1.1" semver "^7.3.4" -"@lerna/changed@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-5.5.2.tgz#903600271c58650bc1873e2441aaf9028658e1b8" - integrity sha512-/kF5TKkiXb0921aorZAMsNFAtcaVcDAvO7GndvcZZiDssc4K7weXhR+wsHi9e4dCJ2nVakhVJw0PqRNknd7x/A== +"@lerna/changed@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-5.5.4.tgz#61742e6d92e7f0aaec6b787f6b0a6203ef444c99" + integrity sha512-/tns9PA5m9XCKJk13RRJotCOFR/bZ+7zfxz20zpIELT9GehZLTaEPsItxVnlqQ4dMHMe0fl6XG6dFqeBqLOW4g== dependencies: - "@lerna/collect-updates" "5.5.2" - "@lerna/command" "5.5.2" - "@lerna/listable" "5.5.2" - "@lerna/output" "5.5.2" + "@lerna/collect-updates" "5.5.4" + "@lerna/command" "5.5.4" + "@lerna/listable" "5.5.4" + "@lerna/output" "5.5.4" -"@lerna/check-working-tree@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-5.5.2.tgz#4f3de3efe2e8d0c6a62da4c66c17acf6776edaa6" - integrity sha512-FRkEe9Wcr8Lw3dR0AIOrWfODfEAcDKBF5Ol7bIA5wkPLMJbuPBgx4T1rABdRp94SVOnqkRwT9rrsFOESLcQJzQ== +"@lerna/check-working-tree@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-5.5.4.tgz#f19bddb23543010a848a3f44e66fc63929f6d4c9" + integrity sha512-uIHlEb/JSX9P230UNH69W21fWM4oKu8ulRdXuYCBckpbJkDz9nT1yS2y4wUHx+3GfXWqGKygTh8Z06vSdYg+2A== dependencies: - "@lerna/collect-uncommitted" "5.5.2" - "@lerna/describe-ref" "5.5.2" - "@lerna/validation-error" "5.5.2" + "@lerna/collect-uncommitted" "5.5.4" + "@lerna/describe-ref" "5.5.4" + "@lerna/validation-error" "5.5.4" -"@lerna/child-process@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-5.5.2.tgz#f95d8aeb01c0cb6e6520bc9de28ff27c8516f588" - integrity sha512-JvTrIEDwq7bd0Nw/4TGAFa4miP8UKARfxhYwHkqX5vM+slNx3BiImkyDhG46C3zR2k/OrOK02CYbBUi6eI2OAw== +"@lerna/child-process@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-5.5.4.tgz#97a7d2c994895e56ef8a0c49716a0a692867b5aa" + integrity sha512-1QlxFASrKlV3cG7XPFolOdrS4W784zv4DgipmTxaP++VlVAwbrHhqUdIEytDV6d0rlRksf6LPYzJhXdwlBkCEQ== dependencies: chalk "^4.1.0" execa "^5.0.0" strong-log-transformer "^2.1.0" -"@lerna/clean@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-5.5.2.tgz#5de2de1d66a66ee65dbea0b30513f784b4391bd2" - integrity sha512-C38x2B+yTg2zFWSV6/K6grX+7Dzgyw7YpRfhFr1Mat77mhku60lE3mqwU2qCLHlmKBmHV2rB85gYI8yysJ2rIg== - dependencies: - "@lerna/command" "5.5.2" - "@lerna/filter-options" "5.5.2" - "@lerna/prompt" "5.5.2" - "@lerna/pulse-till-done" "5.5.2" - "@lerna/rimraf-dir" "5.5.2" +"@lerna/clean@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-5.5.4.tgz#329ecf24c5c66056f0ba96fdff1d1bc2b9bed5fe" + integrity sha512-q1fXRm6ZXo3HrFfsgyY9C83haotPT/Xa5K8fQX6GADuNLk0Xo3+ycouHeidblRLmQtCa3WNPEmCthTuaWrSUoQ== + dependencies: + "@lerna/command" "5.5.4" + "@lerna/filter-options" "5.5.4" + "@lerna/prompt" "5.5.4" + "@lerna/pulse-till-done" "5.5.4" + "@lerna/rimraf-dir" "5.5.4" p-map "^4.0.0" p-map-series "^2.1.0" p-waterfall "^2.1.1" -"@lerna/cli@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-5.5.2.tgz#d4766d324908ebf9b5a9579ac5ee2f7deedcc9d4" - integrity sha512-u32ulEL5CBNYZOTG5dRrVJUT8DovDzjrLj/y/MKXpuD127PwWDe0TE//1NP8qagTLBtn5EiKqiuZlosAYTpiBA== +"@lerna/cli@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-5.5.4.tgz#f1c31d59d9be2aaafab6b856c7858a3da98d7b82" + integrity sha512-4uJEFEN0QNnQgghbpdY5wLmBPOeUeBeCKGh9s2pc1fkn0I1wKDhG0QByOfcf+jGuid2bA7DXzvJRXRgq0fWw0A== dependencies: - "@lerna/global-options" "5.5.2" + "@lerna/global-options" "5.5.4" dedent "^0.7.0" npmlog "^6.0.2" yargs "^16.2.0" -"@lerna/collect-uncommitted@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-5.5.2.tgz#4397813f4b7ab169e427026548921c93f8be685c" - integrity sha512-2SzH21lDz016Dhu3MjmID9iCMTHYiZ/iu0UKT4I6glmDa44kre18Bp8ihyNzBXNWryj6KjB/0wxgb6dOtccw9A== +"@lerna/collect-uncommitted@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-5.5.4.tgz#cdfb5f0c1651742f72147189e38822b815e45892" + integrity sha512-xLCsp8Qx5z/BWCxqUt8W8Se2XJcCQE6YUAti9TSWD5Ar+M5Etkgz2YJiUjZfZrsWZPBCqNfGfxx9Sjs7a/r+8A== dependencies: - "@lerna/child-process" "5.5.2" + "@lerna/child-process" "5.5.4" chalk "^4.1.0" npmlog "^6.0.2" -"@lerna/collect-updates@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-5.5.2.tgz#1278aa341b84fcc84ab4efb153464dcbc7706ee0" - integrity sha512-EeAazUjRenojQujM8W2zAxbw8/qEf5qd0pQYFKLCKkT8f332hoYzH8aJqnpAVY5vjFxxxxpjFjExfvMKqkwWVQ== +"@lerna/collect-updates@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-5.5.4.tgz#424fbcb4a717eb2ed7c6a2015857d85d7e2e131f" + integrity sha512-m34bVoMO5QOd5K5uyAtQtkTiXBIEJHydXMwNXs+YTIAgy82JXNHfZE9vV63Fd5ZWOGY6ORthuXuC2Jn0Vx9tQA== dependencies: - "@lerna/child-process" "5.5.2" - "@lerna/describe-ref" "5.5.2" + "@lerna/child-process" "5.5.4" + "@lerna/describe-ref" "5.5.4" minimatch "^3.0.4" npmlog "^6.0.2" slash "^3.0.0" -"@lerna/command@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/command/-/command-5.5.2.tgz#4dcc4c772e82b9069b1b52a4947354825d0debaf" - integrity sha512-hcqKcngUCX6p9i2ipyzFVnTDZILAoxS0xn5YtLXLU2F16o/RIeEuhBrWeExhRXGBo1Rt3goxyq6/bKKaPU5i2Q== - dependencies: - "@lerna/child-process" "5.5.2" - "@lerna/package-graph" "5.5.2" - "@lerna/project" "5.5.2" - "@lerna/validation-error" "5.5.2" - "@lerna/write-log-file" "5.5.2" +"@lerna/command@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/command/-/command-5.5.4.tgz#f06f6dad4b5eed05fb4b98165d054af21be79715" + integrity sha512-/7drNy2DjVjDjm2knsDfEQIFEdRgPE2/lQ3yfEjVbXqs319o6KWbQVeoNy5GjGnLvc3v3eObA0cSJXHzEV11Bg== + dependencies: + "@lerna/child-process" "5.5.4" + "@lerna/package-graph" "5.5.4" + "@lerna/project" "5.5.4" + "@lerna/validation-error" "5.5.4" + "@lerna/write-log-file" "5.5.4" clone-deep "^4.0.1" dedent "^0.7.0" execa "^5.0.0" is-ci "^2.0.0" npmlog "^6.0.2" -"@lerna/conventional-commits@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-5.5.2.tgz#810da2733f4350e01f8320991296f6e1ba8d25c1" - integrity sha512-lFq1RTx41QEPU7N1yyqQRhVH1zPpRqWbdSpepBnSgeUKw/aE0pbkgNi+C6BKuSB/9OzY78j1OPbZSYrk4OWEBQ== +"@lerna/conventional-commits@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-5.5.4.tgz#d4fbc9240ec95bc73395b87b2e778cb95ac57b36" + integrity sha512-zLcaveLXnIDYo3e9ChKsHSxiG7vOJeKdcoC5Fj8WH4DjAq/aqy15TE5SJr6aO8hOU/ph0EonPwyQBf4X2Lg5fg== dependencies: - "@lerna/validation-error" "5.5.2" + "@lerna/validation-error" "5.5.4" conventional-changelog-angular "^5.0.12" conventional-changelog-core "^4.2.4" conventional-recommended-bump "^6.1.0" @@ -2806,24 +2806,24 @@ pify "^5.0.0" semver "^7.3.4" -"@lerna/create-symlink@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-5.5.2.tgz#9593da204b2409bcd3555ad6f67b9d7cb5b7cdfc" - integrity sha512-/C0SP2C5+Lvol4Uul0/p0YJML/AOv1dO4y3NrRpYGnN750AuQMuhJQsBcHip80sFStKnNaUxXQb82itkL/mduw== +"@lerna/create-symlink@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-5.5.4.tgz#91314744a715ad0ef4d330d0b4cf30cadd052025" + integrity sha512-TOfkeEQGhE90mvtky0Vpfl+6hwBz0tSXV0+gjRBmla/sYU/9+QoSH36TauHrmu/O3C8/CWtoGruxiWq8jP6Gyw== dependencies: cmd-shim "^5.0.0" fs-extra "^9.1.0" npmlog "^6.0.2" -"@lerna/create@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/create/-/create-5.5.2.tgz#6091f550df9a389c9a8239e18f91b1acfdab1dcd" - integrity sha512-NawigXIAwPJjwDKTKo4aqmos8GIAYK8AQumwy027X418GzXf504L1acRm3c+3LmL1IrZTStWkqSNs56GrKRY9A== +"@lerna/create@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/create/-/create-5.5.4.tgz#defb6bc3ab263bf8acbbfc34407a4de23cd2594f" + integrity sha512-mmZKy5U4OKBr/r8Tm6C8gubYHubQaHdPJ+aYuA/l4uCfK0p/Jly84Fy7M3kclcqm8FKDPKDhlp0Y2jnc32jBbA== dependencies: - "@lerna/child-process" "5.5.2" - "@lerna/command" "5.5.2" - "@lerna/npm-conf" "5.5.2" - "@lerna/validation-error" "5.5.2" + "@lerna/child-process" "5.5.4" + "@lerna/command" "5.5.4" + "@lerna/npm-conf" "5.5.4" + "@lerna/validation-error" "5.5.4" dedent "^0.7.0" fs-extra "^9.1.0" globby "^11.0.2" @@ -2838,218 +2838,218 @@ validate-npm-package-name "^4.0.0" yargs-parser "20.2.4" -"@lerna/describe-ref@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-5.5.2.tgz#ba64e568bfbea8cca81b0a919550c33cf8359869" - integrity sha512-JY1Lk8sHX4mBk83t1wW8ak+QWzlExZluOMUixIWLhzHlOzRXnx/WJnvW3E2UgN/RFOBHsI8XA6RmzV/xd/D44Q== +"@lerna/describe-ref@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-5.5.4.tgz#8b5dc90b5570e6646ca813fe4006e06408acfb05" + integrity sha512-2LDEsuSbZTta7SuwKVo9ofeKvxqy4YFNOjEt7+JceZIfh4si3MjIPBX7l8AsCaUmwJnpOEYba0aau72AUAOtoA== dependencies: - "@lerna/child-process" "5.5.2" + "@lerna/child-process" "5.5.4" npmlog "^6.0.2" -"@lerna/diff@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-5.5.2.tgz#ff51712f1554cfea499954c406a79cea15744795" - integrity sha512-cBXCF/WXh59j6ydTObUB5vhij1cO1kmEVaW4su8rMqLy0eyAmYAckwnL4WIu3NUDlIm7ykaDp+itdAXPeUdDmw== +"@lerna/diff@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-5.5.4.tgz#21344bd0fb5d2578b7873b16959ceee6eee4e512" + integrity sha512-OTieqJA4zKAV0KeG0nXwPnCkwg3LH+ucXlelnj1w+gaP2ndHbJVwgUWXGpqCHk8tn935KKOULhP7BGmAwvTYlQ== dependencies: - "@lerna/child-process" "5.5.2" - "@lerna/command" "5.5.2" - "@lerna/validation-error" "5.5.2" + "@lerna/child-process" "5.5.4" + "@lerna/command" "5.5.4" + "@lerna/validation-error" "5.5.4" npmlog "^6.0.2" -"@lerna/exec@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-5.5.2.tgz#70f64ec8c801905f9af30f1a6b955aa1160e142e" - integrity sha512-hwEIxSp3Gor5pMZp7jMrQ7qcfzyJOI5Zegj9K72M5KKRYSXI1uFxexZzN2ZJCso/rHg9H4TCa9P2wjmoo8KPag== - dependencies: - "@lerna/child-process" "5.5.2" - "@lerna/command" "5.5.2" - "@lerna/filter-options" "5.5.2" - "@lerna/profiler" "5.5.2" - "@lerna/run-topologically" "5.5.2" - "@lerna/validation-error" "5.5.2" +"@lerna/exec@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-5.5.4.tgz#7ff09f9c786bf66ade7bf4823f60a4feab3b267c" + integrity sha512-o1SQ+6/U6L8hih6+wAgjyOhqo2CKzMcW6YWLs5erRY9E6VCEc2kX7SW3223ehsAhUIPfG7n+KYPmuZbWvTpbGQ== + dependencies: + "@lerna/child-process" "5.5.4" + "@lerna/command" "5.5.4" + "@lerna/filter-options" "5.5.4" + "@lerna/profiler" "5.5.4" + "@lerna/run-topologically" "5.5.4" + "@lerna/validation-error" "5.5.4" p-map "^4.0.0" -"@lerna/filter-options@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-5.5.2.tgz#bf495abd596a170d8625281fadff052112fb2571" - integrity sha512-h9KrfntDjR1PTC0Xeu07dYytSdZ4jcKz/ykaqhELgXVDbzOUY9RnQd32e4XJ8KRSERMe4VS7DxOnxV4LNI0xqA== +"@lerna/filter-options@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-5.5.4.tgz#c25ee6abb2eb2610d1da390911eafbfddecedf68" + integrity sha512-t1amUypgloaKN8d3VN7GiJQd4ommDplxSisAMS8hztb6ail3EbxasRQ03GXz4+6yQ98sam+D03soqSWAJcinrw== dependencies: - "@lerna/collect-updates" "5.5.2" - "@lerna/filter-packages" "5.5.2" + "@lerna/collect-updates" "5.5.4" + "@lerna/filter-packages" "5.5.4" dedent "^0.7.0" npmlog "^6.0.2" -"@lerna/filter-packages@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-5.5.2.tgz#043784114fb0a8924b08536b5f62f0e741fc9362" - integrity sha512-EaZA0ibWKnpBePFt5gVbiTYgXwOs01naVPcPnBQt5EhHVN878rUoNXNnhT/X/KXFiiy6v3CW53sczlqTNoFuSg== +"@lerna/filter-packages@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-5.5.4.tgz#7f07fe9afb4eacc43fec67c82c9e4acb33b393a7" + integrity sha512-mwpiF+L0np003AUp3ntKEFkNOXWBONwm9q8rW9TOR8OeqMXbxYWGLg2IR+Wc8EClmen79tahn076nUD85OLqew== dependencies: - "@lerna/validation-error" "5.5.2" + "@lerna/validation-error" "5.5.4" multimatch "^5.0.0" npmlog "^6.0.2" -"@lerna/get-npm-exec-opts@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-5.5.2.tgz#a17489e5c4c5c180bee3095d1418782bdf7db615" - integrity sha512-CSwUpQrEYe20KEJnpdLxeLdYMaIElTQM9SiiFKUwnm/825TObkdDQ/fAG9Vk3fkHljPcu7SiV1A/g2XkbmpJUA== +"@lerna/get-npm-exec-opts@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-5.5.4.tgz#8c1b19a364071350a305f9da50a6b851ced1fc6f" + integrity sha512-PLvSdt0woeOz3TZDHRshYVR9TSOUNunxZ4mE8f0tg9FPQ5R1uuwd2BF4HmEL7AlWFtFS+sOwuL9bI1btV1ELew== dependencies: npmlog "^6.0.2" -"@lerna/get-packed@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-5.5.2.tgz#f355773cbd295bc305ffc59050be9e6cdcc53825" - integrity sha512-C+2/oKqTdgskuK3SpoxzxJSffwQGRU/W8BA5rC/HmRN2xom8xlgZjP0Pcsv7ucW1BjE367hh+4E/BRZXPxuvVQ== +"@lerna/get-packed@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-5.5.4.tgz#2aa2772a6c90bdb1335b79d6c9058fca73a74505" + integrity sha512-BXQcQ5rfdIa8hkDd4UdETWs9mDiFvmBRpSNxpgaRiuL1w7AXEaMREQgKOFiv8fv/e+z/F0SXD048Fptj8d5pjA== dependencies: fs-extra "^9.1.0" ssri "^9.0.1" tar "^6.1.0" -"@lerna/github-client@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-5.5.2.tgz#003ad2712786338b347d9675294be7e40f7f2a84" - integrity sha512-aIed5+l+QoiQmlCvcRoGgJ9z0Wo/7BZU0cbcds7OyhB6e723xtBTk3nXOASFI9TdcRcrnVpOFOISUKU+48d7Ig== +"@lerna/github-client@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-5.5.4.tgz#9ff47636e57514fb8d44678ad64664c932868d79" + integrity sha512-m5vTRsHyfzh16T3fX3ipdjZyQwl4Gnwav4RmEaVUFp2uMqsr0TrML7LJ/eqOqjGvj/+JWa52rIQsUCQe9BJYag== dependencies: - "@lerna/child-process" "5.5.2" + "@lerna/child-process" "5.5.4" "@octokit/plugin-enterprise-rest" "^6.0.1" "@octokit/rest" "^19.0.3" git-url-parse "^13.1.0" npmlog "^6.0.2" -"@lerna/gitlab-client@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-5.5.2.tgz#1d14b5f71e3e8074ea1894941702f32f0cff5031" - integrity sha512-iSNk8ktwRXL5JgTYvKdEQASHLgo8Vq4RLX1hOFhOMszxKeT2kjCXLqefto3TlJ5xOGQb/kaGBm++jp+uZxhdog== +"@lerna/gitlab-client@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-5.5.4.tgz#e18a479e8f2f3ce0ecfa1e0d4f0a16d646809bba" + integrity sha512-vPSr6xFxtOigFY/fE8oYF+360WsV+g2ZkoJB34FA6UucjWBBPu2W13ydUYfqvJYODJYFzhTjB9b8zf0MJ0KMrQ== dependencies: node-fetch "^2.6.1" npmlog "^6.0.2" -"@lerna/global-options@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-5.5.2.tgz#4eafa90fb62036701ed04319adb33ab4901f1f5d" - integrity sha512-YaFCLMm7oThPpmRvrDX/VuoihrWCqBVm3zG+c8OM7sjs1MXDKycbdhtjzIwysWocEpf0NjUtdQS7v6gUhfNiFQ== +"@lerna/global-options@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-5.5.4.tgz#ed2daee879205255b4667921d6c91a4e2c04dda8" + integrity sha512-J2K4CsnYuKrW7bDR2gRABUFFrLaJ5z4GaaDpaKtQi6sHFKcVBfYz0B51Fe3NGFOvrct4YS9N7SgKDxPd5Nznig== -"@lerna/has-npm-version@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-5.5.2.tgz#4bb84f223aa6a6b608e057b6a3dc7bd96dbbe03f" - integrity sha512-8BHJCVPy5o0vERm0jjcwYSCNOK+EclbufR05kqorsYzCu0xWPOc3SDlo5mXuWsG61SlT3RdV9SJ3Rab15fOLAg== +"@lerna/has-npm-version@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-5.5.4.tgz#32655bdf0d7deeb7de78ebc4e978ecc02b18bf91" + integrity sha512-l+nDc/QYvfA5f0tFxzd9mZ/SP0nfxbqpZ9csGyqU8NV/40fHRRouO+fcLtxjcG/mruMjiAB/P216BBbRmGb2VA== dependencies: - "@lerna/child-process" "5.5.2" + "@lerna/child-process" "5.5.4" semver "^7.3.4" -"@lerna/import@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/import/-/import-5.5.2.tgz#7f18d17723a320ceea694955c351c7c8d60e3152" - integrity sha512-QtHJEo/9RRO9oILzSK45k5apsAyUEgwpGj4Ys3gZ7rFuXQ4+xHi9R6YC0IjwyiSfoN/i3Qbsku+PByxhhzkxHQ== - dependencies: - "@lerna/child-process" "5.5.2" - "@lerna/command" "5.5.2" - "@lerna/prompt" "5.5.2" - "@lerna/pulse-till-done" "5.5.2" - "@lerna/validation-error" "5.5.2" +"@lerna/import@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/import/-/import-5.5.4.tgz#b0e07b54c13c786eac4a7639cc0db80ff1f952c6" + integrity sha512-1edy4e+0w4/awahc3uPvRQngIHbri5BGZZbjvsX8aKlPUd9pFg5U9/5w3lVE5jnZFRnqwhpJyyvJjL2M5F6IgQ== + dependencies: + "@lerna/child-process" "5.5.4" + "@lerna/command" "5.5.4" + "@lerna/prompt" "5.5.4" + "@lerna/pulse-till-done" "5.5.4" + "@lerna/validation-error" "5.5.4" dedent "^0.7.0" fs-extra "^9.1.0" p-map-series "^2.1.0" -"@lerna/info@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/info/-/info-5.5.2.tgz#8ae7b2efb64579f6aa153c597cd2da99e2716802" - integrity sha512-Ek+bCooAfng+K4Fgy9i6jKBMpZZQ3lQpv6SWg8TbrwGR/el8FYBJod3+I5khJ2RJqHAmjLBz6wiSyVPMjwvptw== +"@lerna/info@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/info/-/info-5.5.4.tgz#c0bb38a5d97f60019278a49ee324a3be804b9baa" + integrity sha512-JgYRP2WZUCuiYyf3CQjqEMGoqWpM7t/bammKW/sC3P0/xGSykh45vdRwVojcu4fGRZ/YS7sfFt28Dbw4QFp0iQ== dependencies: - "@lerna/command" "5.5.2" - "@lerna/output" "5.5.2" + "@lerna/command" "5.5.4" + "@lerna/output" "5.5.4" envinfo "^7.7.4" -"@lerna/init@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/init/-/init-5.5.2.tgz#51439bacfcf6670bda042541566432836c6fb54e" - integrity sha512-CKHrcOlm2XXXF384FeCKK+CjKBW22HkJ5CcLlU1gnTFD2QarrBwTOGjpRaREXP8T/k3q7h0W0FK8B77opqLwDg== +"@lerna/init@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/init/-/init-5.5.4.tgz#78142ec262e5d54c0ced716239c39acd2c2cf821" + integrity sha512-BteH3O8ywUN8eBhwzOey3gTXxxKRxGz1JJ6tP1mA0KZoJgiBsSFoZbx7SJeGrR8gY7kmEyvXTY1geaxmb7V+vQ== dependencies: - "@lerna/child-process" "5.5.2" - "@lerna/command" "5.5.2" - "@lerna/project" "5.5.2" + "@lerna/child-process" "5.5.4" + "@lerna/command" "5.5.4" + "@lerna/project" "5.5.4" fs-extra "^9.1.0" p-map "^4.0.0" write-json-file "^4.3.0" -"@lerna/link@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/link/-/link-5.5.2.tgz#ed9225f29cb8887f5da124ebb54f7e0c978896bb" - integrity sha512-B/0a+biXO2uMSbNw1Vv9YMrfse0i8HU9mrrWQbXIHws3j0i5Wxuxvd7B/r0xzYN5LF5AFDxrPjPNTgC49U/58Q== +"@lerna/link@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/link/-/link-5.5.4.tgz#5bd2097ab123f6034b470626d220bd5ce03cbc77" + integrity sha512-/kFST918MLhvWbs3szbUw3/6pPa0/vS77WnHk8n3S3v/PuzUEjm9CncYrZ0xB1ZiGk6oa4YTPWMlqyYMY1k0hQ== dependencies: - "@lerna/command" "5.5.2" - "@lerna/package-graph" "5.5.2" - "@lerna/symlink-dependencies" "5.5.2" - "@lerna/validation-error" "5.5.2" + "@lerna/command" "5.5.4" + "@lerna/package-graph" "5.5.4" + "@lerna/symlink-dependencies" "5.5.4" + "@lerna/validation-error" "5.5.4" p-map "^4.0.0" slash "^3.0.0" -"@lerna/list@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/list/-/list-5.5.2.tgz#dfebcaae284bb25d2a5d1223086a95cd22bc4701" - integrity sha512-uC/LRq9zcOM33vV6l4Nmx18vXNNIcaxFHVCBOC3IxZJb0MTPzKFqlu/YIVQaJMWeHpiIo6OfbK4mbH1h8yXmHw== +"@lerna/list@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/list/-/list-5.5.4.tgz#fd27a69118e6ed515149fd77690ce6ecc3058456" + integrity sha512-ppLy99mQYoDkO+SxqnknPYqOnO+iJskb0G2h2fLF4ZK98oy2duJWkkehagwCVtmPax/DqWDDc/IAj+KWpcC0bQ== dependencies: - "@lerna/command" "5.5.2" - "@lerna/filter-options" "5.5.2" - "@lerna/listable" "5.5.2" - "@lerna/output" "5.5.2" + "@lerna/command" "5.5.4" + "@lerna/filter-options" "5.5.4" + "@lerna/listable" "5.5.4" + "@lerna/output" "5.5.4" -"@lerna/listable@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-5.5.2.tgz#ed2858acef7886067ff373f501102999caf86c55" - integrity sha512-CEDTaLB8V7faSSTgB1II1USpda5PQWUkfsvDJekJ4yZ4dql3XnzqdVZ48zLqPArl/30e0g1gWGOBkdKqswY+Yg== +"@lerna/listable@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-5.5.4.tgz#eff0720d5c01f734933b95dd8b2161d3126dc487" + integrity sha512-c6acWwSDQE5zeBcnH3m+mwfDr3zr515LsC30tXRenkqp4lbXeyrUPw0Mckw1ksw2nyb5LZl8gQnrFbAKC8gBSA== dependencies: - "@lerna/query-graph" "5.5.2" + "@lerna/query-graph" "5.5.4" chalk "^4.1.0" columnify "^1.6.0" -"@lerna/log-packed@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-5.5.2.tgz#3f651f2d010e830aa3dfe34b59ba8767c29e0658" - integrity sha512-k1tKZdNuAIj9t7ZJBSzua5zEnPoweKLpuXYzuiBE8CALBfl2Zf9szsbDQDsERDOxQ365+FEgK+GfkmvxtYx4tw== +"@lerna/log-packed@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-5.5.4.tgz#0f0285445aadf3289148af7949f2cd61a21ff553" + integrity sha512-g3lW5yIIe66aVTOYn78+h21GR9gr/WdU3/z8jm0VzGC+VR7KqCKU+49JOCOh7LlNf7sY4ZE6ZbaZptp5wUjrgQ== dependencies: byte-size "^7.0.0" columnify "^1.6.0" has-unicode "^2.0.1" npmlog "^6.0.2" -"@lerna/npm-conf@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-5.5.2.tgz#bec9b5d7d729be86386a154170bd65e6057578c6" - integrity sha512-X2EE1TCSfsYy2XTUUN0+QXXEPvecuGk3mpTXR5KP+ScAs0WmTisRLyJ9lofh/9e0SIIGdVYmh2PykhgduyOKsg== +"@lerna/npm-conf@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-5.5.4.tgz#642438b68dbd98af1189fb85646d3e0ca24b3741" + integrity sha512-BwnP0ezR84nQ5Sh0CdH77Q8evDcqP9bFUdjX6eZT4Rxl0432ocB1YpweNnUDQO4Boxj/FiOu/OaE0Kej+I+5ew== dependencies: config-chain "^1.1.12" pify "^5.0.0" -"@lerna/npm-dist-tag@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-5.5.2.tgz#56b441efb85cd3de88f15c97553942372da9a774" - integrity sha512-Od4liA0ISunwatHxArHdaxFc/m9dXMI0fAFqbScgeqVkY8OeoHEY/AlINjglYChtGcbKdHm1ml8qvlK9Tr2EXg== +"@lerna/npm-dist-tag@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-5.5.4.tgz#2ed3ad80af572bfdcf631f8271e59240d72e011b" + integrity sha512-aAisCh5b2+6cjLxZh03/MGGcBjL7KNBWi5qW6OCdQQpcxH5r0aUJ5F1rmXJE0qxgsLWaGRLzngWk+v6VJHqYJQ== dependencies: - "@lerna/otplease" "5.5.2" + "@lerna/otplease" "5.5.4" npm-package-arg "8.1.1" npm-registry-fetch "^13.3.0" npmlog "^6.0.2" -"@lerna/npm-install@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-5.5.2.tgz#26dcbf45b27f06e9744b9283c23d30d7feeaabb5" - integrity sha512-aDIDRS9C9uWheuc6JEntNqTcaTcSFyTx4FgUw5FDHrwsTZ9TiEAB9O+XyDKIlcGHlNviuQt270boUHjsvOoMcg== +"@lerna/npm-install@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-5.5.4.tgz#0b801d16d04cf2c9c6c114ec0b188ad190c63775" + integrity sha512-lglf2KRxg30dCvNWwxQRJmCfXC51byNqYQt9/dFrnWcotHwpNRIFnVM3tWMdVxlwJMiozU/PjUFBateaxmukXw== dependencies: - "@lerna/child-process" "5.5.2" - "@lerna/get-npm-exec-opts" "5.5.2" + "@lerna/child-process" "5.5.4" + "@lerna/get-npm-exec-opts" "5.5.4" fs-extra "^9.1.0" npm-package-arg "8.1.1" npmlog "^6.0.2" signal-exit "^3.0.3" write-pkg "^4.0.0" -"@lerna/npm-publish@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-5.5.2.tgz#be9c2f8eaf1ab21619ad43434e6f69a56e9eda28" - integrity sha512-TRYkkocg/VFy9MwWtfIa2gNXFkMwkDfaS1exgJK4DKbjH3hiBo/cDG3Zx/jMBGvetv4CLsC2n+phRhozgCezTA== +"@lerna/npm-publish@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-5.5.4.tgz#fbdcadf5bedf91bbd33ddca79e742262f8b72465" + integrity sha512-Z3GQqby0FR7HW82/t7j7nOF9pfSwNVmgms0zTq7a8YaEe8uDlAxGMW4sVN8uT89mZfBfS6R1WMlBbC5Ea+jy/A== dependencies: - "@lerna/otplease" "5.5.2" - "@lerna/run-lifecycle" "5.5.2" + "@lerna/otplease" "5.5.4" + "@lerna/run-lifecycle" "5.5.4" fs-extra "^9.1.0" libnpmpublish "^6.0.4" npm-package-arg "8.1.1" @@ -3057,85 +3057,85 @@ pify "^5.0.0" read-package-json "^5.0.1" -"@lerna/npm-run-script@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-5.5.2.tgz#790ac839f3f761deb017dd02a666488be0a7f24b" - integrity sha512-lKn4ybw/97SMR/0j5UcJraL+gpfXv2HWKmlrG47JuAMJaEFkQQyCh4EdP3cGPCnSzrI5zXsil8SS/JelkhQpkg== +"@lerna/npm-run-script@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-5.5.4.tgz#88dc25d81b5263d85443b570d06f1c87df38c58a" + integrity sha512-fwHZRTGUldN9D2Rugg0HdwE8A8OZ7CF7g63y7OjzIoxASqtZBDyHZgrVbY/xZcrhqCF0+VJ1vR0c/uFwtWFrtA== dependencies: - "@lerna/child-process" "5.5.2" - "@lerna/get-npm-exec-opts" "5.5.2" + "@lerna/child-process" "5.5.4" + "@lerna/get-npm-exec-opts" "5.5.4" npmlog "^6.0.2" -"@lerna/otplease@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-5.5.2.tgz#ae49aa9e2298d68282f641ebd7a94d1b9677e28b" - integrity sha512-kZwSWTLGFWLoFX0p6RJ8AARIo6P/wkIcUyAFrVU3YTesN7KqbujpzaVTf5bAWsDdeiRWizCGM1TVw2IDUtStQg== +"@lerna/otplease@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-5.5.4.tgz#8b1f5af43e3e99131ca6077ac6f9c274733a6a77" + integrity sha512-c/tSjuMGw0esoxqtW0Qs2gCcvFDCrOlFnd4EgTJQKUSbNwVrabMkDJRMP0zu7UiSYJCCWKlBnjpBCiBXNG2H4A== dependencies: - "@lerna/prompt" "5.5.2" + "@lerna/prompt" "5.5.4" -"@lerna/output@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/output/-/output-5.5.2.tgz#2c0aa22c15f887ff1835d15fdf7ca198110f2fb7" - integrity sha512-Sv5qMvwnY7RGUw3JHyNUHNlQ4f/167kK1tczCaHUXa1SmOq5adMBbiMNApa2y5s8B+v9OahkU2nnOOaIuVy0HQ== +"@lerna/output@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/output/-/output-5.5.4.tgz#22c9d78a39b7062c90fd1a1e0050a4129dc9c239" + integrity sha512-qiYtDQ4k9sXzXRlbSuLUFDNLk42sJY3n7x7fWKt6v5I9s2uh5d3cBctBuvV8+YX82H1inQ9hpyFafzOBO8tbCA== dependencies: npmlog "^6.0.2" -"@lerna/pack-directory@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-5.5.2.tgz#4a499fd2d2deeed0d2a1859c51b98f96b4b7ef9f" - integrity sha512-LvBbOeSwbpHPL7w9cI0Jtpa6r61N3KboD4nutNlWaT9LRv0dLlex2k10Pfc8u15agQ62leLhHa6UmjFt16msEA== +"@lerna/pack-directory@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-5.5.4.tgz#987dba5049a57fd822412e9a1770dab9f4da314c" + integrity sha512-yUhu8ADzUZOZPfimMwlxxuxIweXitMKTVAmhz9eruiNHxsc0GpKb89yemep03iXqtrjC1Pt/QsS+dhJNNKdZ4A== dependencies: - "@lerna/get-packed" "5.5.2" - "@lerna/package" "5.5.2" - "@lerna/run-lifecycle" "5.5.2" - "@lerna/temp-write" "5.5.2" + "@lerna/get-packed" "5.5.4" + "@lerna/package" "5.5.4" + "@lerna/run-lifecycle" "5.5.4" + "@lerna/temp-write" "5.5.4" npm-packlist "^5.1.1" npmlog "^6.0.2" tar "^6.1.0" -"@lerna/package-graph@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-5.5.2.tgz#ae1d52f520f376cf819823fe16524c0f39c6b32c" - integrity sha512-tyMokkrktvohhU3PE3nZLdjrmozcrV8ql37u0l/axHXrfNiV3RDn9ENVvYXnLnP2BCHV572RRpbI5kYto4wtRg== +"@lerna/package-graph@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-5.5.4.tgz#32abce3e23e09017f5323f2704d9544ffcb1ccbf" + integrity sha512-1g0c08mooZBtrIG8gMOdpbZ3rn5VM+e47pLFAXZcfGUaNUfc0OM58Z50ONiJq23XlJmS4vQ2e4X3cs7Hc7+Dxw== dependencies: - "@lerna/prerelease-id-from-version" "5.5.2" - "@lerna/validation-error" "5.5.2" + "@lerna/prerelease-id-from-version" "5.5.4" + "@lerna/validation-error" "5.5.4" npm-package-arg "8.1.1" npmlog "^6.0.2" semver "^7.3.4" -"@lerna/package@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/package/-/package-5.5.2.tgz#5f692289d1164a4d3456cba0c45ec6ea5fc0f4a7" - integrity sha512-/36+oq5Q63EYSyjW5mHPR3aMrXDo6Wn8zKcl9Dfd4bn+w0AfK/EbId7iB/TrFaNdGtw8CrhK+e5CmgiMBeXMPw== +"@lerna/package@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/package/-/package-5.5.4.tgz#815c35a8f5a12a6f91f3a0314178f198ffcbc1c5" + integrity sha512-wpBcq4zVFVQOJI9QT0TJItRjl6jGSGFp93n4D8KHXXiyeKmN9CW4EnwFY9bnT3r5OteZN+eorD6r2TnRe8VPDg== dependencies: load-json-file "^6.2.0" npm-package-arg "8.1.1" write-pkg "^4.0.0" -"@lerna/prerelease-id-from-version@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-5.5.2.tgz#0d27ce30aca010266db8f0de86509b44778cc1f3" - integrity sha512-FokuA8PFH+YMlbVvPsrTWgfZzaeXDmSmXGKzF8yEM7008UOFx9a3ivDzPnRK7IDaO9nUmt++Snb3QLey1ldYlQ== +"@lerna/prerelease-id-from-version@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-5.5.4.tgz#ba17e53051b15cfe7ba9c98e75abd5644559f8a7" + integrity sha512-IHNQxbILrRGhw9CCdqy0ncSjDpNvdJCcaGFh3+TJRx6Bjhl5ifbUjI0gBUxd7i5Aict5dguWlhAWHQpef48AqA== dependencies: semver "^7.3.4" -"@lerna/profiler@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-5.5.2.tgz#b977a5b59388671b9bb6b4d3a2e7ae84a228d121" - integrity sha512-030TM1sG0h/vSJ+49e8K1HtVIt94i6lOIRILTF4zkx+O00Fcg91wBtdIduKhZZt1ziWRi1v2soijKR26IDC+Tg== +"@lerna/profiler@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-5.5.4.tgz#2082a05c4aecee0bd567a5069efb09511212f4c6" + integrity sha512-LPnO8mXhXSBT8PD5pEWkgd+2d8lJqQ0fnwcIPG0B8o6tnQrSc2gXLNxStYOFedzcZXRhAYiFVrf5VjOKHV6Ghw== dependencies: fs-extra "^9.1.0" npmlog "^6.0.2" upath "^2.0.1" -"@lerna/project@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/project/-/project-5.5.2.tgz#02d1f031509347e62e665c862dd319703ce5528a" - integrity sha512-NtHov7CCM3DHbj6xaD9lTErOnEmz0s+piJP/nVw6aIvfkhvUl1fB6SnttM+0GHZrT6WSIXFWsb0pkRMTBn55Bw== +"@lerna/project@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/project/-/project-5.5.4.tgz#184d13b0b47187bed5fa6a6227c2a0abf6060fda" + integrity sha512-iLdyc+jPU0cR6BQO3V3Sf51WP3Oac+I/+518dIGdWS7ot9nEbjuZripHJjIkyZKSfnKPTEtz2aUta0ndoewwuQ== dependencies: - "@lerna/package" "5.5.2" - "@lerna/validation-error" "5.5.2" + "@lerna/package" "5.5.4" + "@lerna/validation-error" "5.5.4" cosmiconfig "^7.0.0" dedent "^0.7.0" dot-prop "^6.0.1" @@ -3148,38 +3148,38 @@ resolve-from "^5.0.0" write-json-file "^4.3.0" -"@lerna/prompt@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-5.5.2.tgz#d21e1ef3d18ad5cf2418c640927bbb64f54e72dd" - integrity sha512-flV5SOu9CZrTf2YxGgMPwiAsv2jkUzyIs3cTTdFhFtKoZV7YPVZkGyMhqhEMIuUCOeITFY+emar9iPS6d7U4Jg== +"@lerna/prompt@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-5.5.4.tgz#3b61a9ba3996c0cf3926671e8f9a15189b9b9ef4" + integrity sha512-X8H2V4dDkFLYzZkMTillvuGAphU5fTDR66HgZlhgKtbJjm7OrjxhoRdk/YlMpI+HdYwXhdUzhEe9YJEhqhfe6w== dependencies: inquirer "^8.2.4" npmlog "^6.0.2" -"@lerna/publish@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-5.5.2.tgz#4253ffa0bbd55b7b4380e247c6039a2f283b13a6" - integrity sha512-ZC8LP4I3nLcVIcyqiRAVvGRaCkHHBdYVcqtF7S9KA8w2VvuAeqHRFUTIhKBziVbYnwI2uzJXGIRWP50U+p/wAA== - dependencies: - "@lerna/check-working-tree" "5.5.2" - "@lerna/child-process" "5.5.2" - "@lerna/collect-updates" "5.5.2" - "@lerna/command" "5.5.2" - "@lerna/describe-ref" "5.5.2" - "@lerna/log-packed" "5.5.2" - "@lerna/npm-conf" "5.5.2" - "@lerna/npm-dist-tag" "5.5.2" - "@lerna/npm-publish" "5.5.2" - "@lerna/otplease" "5.5.2" - "@lerna/output" "5.5.2" - "@lerna/pack-directory" "5.5.2" - "@lerna/prerelease-id-from-version" "5.5.2" - "@lerna/prompt" "5.5.2" - "@lerna/pulse-till-done" "5.5.2" - "@lerna/run-lifecycle" "5.5.2" - "@lerna/run-topologically" "5.5.2" - "@lerna/validation-error" "5.5.2" - "@lerna/version" "5.5.2" +"@lerna/publish@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-5.5.4.tgz#73dceae590815e096d3410c98f07ba01a7bccbc1" + integrity sha512-zBlZsk+NBUfg4o7ycKH8/hc4NRJWd4RmxB6Kn7xo7MOJMW3x+K4aABcqY2GGxEMUxx3rBBVPIdziVWbyS7UIxA== + dependencies: + "@lerna/check-working-tree" "5.5.4" + "@lerna/child-process" "5.5.4" + "@lerna/collect-updates" "5.5.4" + "@lerna/command" "5.5.4" + "@lerna/describe-ref" "5.5.4" + "@lerna/log-packed" "5.5.4" + "@lerna/npm-conf" "5.5.4" + "@lerna/npm-dist-tag" "5.5.4" + "@lerna/npm-publish" "5.5.4" + "@lerna/otplease" "5.5.4" + "@lerna/output" "5.5.4" + "@lerna/pack-directory" "5.5.4" + "@lerna/prerelease-id-from-version" "5.5.4" + "@lerna/prompt" "5.5.4" + "@lerna/pulse-till-done" "5.5.4" + "@lerna/run-lifecycle" "5.5.4" + "@lerna/run-topologically" "5.5.4" + "@lerna/validation-error" "5.5.4" + "@lerna/version" "5.5.4" fs-extra "^9.1.0" libnpmaccess "^6.0.3" npm-package-arg "8.1.1" @@ -3190,99 +3190,99 @@ pacote "^13.6.1" semver "^7.3.4" -"@lerna/pulse-till-done@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-5.5.2.tgz#b71aa52971ecfc75b756151321f0bef49d9e3ff4" - integrity sha512-e8sRby4FxSU9QjdRYXvHQtb5GMVO5XDnSH83RWdSxAVFGVEVWKqI3qg3otGH1JlD/kOu195d+ZzndF9qqMvveQ== +"@lerna/pulse-till-done@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-5.5.4.tgz#c7fe3349a1da86534fb42bb7f858a6245e6d67e0" + integrity sha512-xC4/QPnIQfrE1aA8W5w6AfaT0gTm8SeVmrsQzMMlUTJ2JAnflsHv1oG69M89xq2DrlXsEVaah56Xbjavy+woQg== dependencies: npmlog "^6.0.2" -"@lerna/query-graph@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-5.5.2.tgz#3bfe53430936a62c3f225cb5af91709876da982e" - integrity sha512-krKt+mvGm+9fp71ZGUO1MiUZsL+W6dAKx5kBPNWkrw5TFZCasZJHRSIqby9iXpjma+MYohjFjLVvg1PIYKt/kg== +"@lerna/query-graph@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-5.5.4.tgz#64079526a6e483a28c0b9cda12f8444ced6016b3" + integrity sha512-TJsmJ++3NpEs+LxF0B02hAv2HigJ9ffa9e+paK27oE8sTiH3YataMHaNu5ZkeotJTw7u0IiRLm0zi4z4xoRlLg== dependencies: - "@lerna/package-graph" "5.5.2" + "@lerna/package-graph" "5.5.4" -"@lerna/resolve-symlink@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-5.5.2.tgz#ba1e3a04600b6ffae604e522e5a4abf2bf52b936" - integrity sha512-JLJg6/IFqpmGjFfKvj+lntcsGGWbIxF2uAcrVKldqwcPTmlMvolg51lL+wqII3s8N3gZIGdxhjXfhDdKuKtEzQ== +"@lerna/resolve-symlink@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-5.5.4.tgz#3711dc911193d8f1843616bf4a77e4fbf14daedf" + integrity sha512-cAIXELf04dHx/XF/2njCM0bpiyup6Nedpmm1XNJzrJuWrGmwK2qW5F2wQ/RHXWXsLIe/BsOl/hfEONm7o7k8sA== dependencies: fs-extra "^9.1.0" npmlog "^6.0.2" read-cmd-shim "^3.0.0" -"@lerna/rimraf-dir@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-5.5.2.tgz#e1de764dadd7ca305d1d2698676f5fcfbe0d0ada" - integrity sha512-siE1RpEpSLFlnnbAJZz+CuBIcOqXrhR/SXVBnPDpIg4tGgHns+Q99m6K29ltuh+vZMBLMYnnyfPYitJFYTC3MQ== +"@lerna/rimraf-dir@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-5.5.4.tgz#35b1ee9cf3bca12748df4e53f7e5cef5ef845d6a" + integrity sha512-++I7ToqICE4KSqi4T8enfcou8XPZV3gmrpARVD9VW4Tz3w8BP/JijB6AJwgZKojdqQenXU7u3lLTzfepKN1iOA== dependencies: - "@lerna/child-process" "5.5.2" + "@lerna/child-process" "5.5.4" npmlog "^6.0.2" path-exists "^4.0.0" rimraf "^3.0.2" -"@lerna/run-lifecycle@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-5.5.2.tgz#8a4faa272007495729b7ef39206b47cde094074a" - integrity sha512-d5pF0abAv6MVNG3xhG1BakHZtr93vIn27aqgBvu9XK1CW6GdbpBpCv1kc8RjHyOpjjFDt4+uK2TG7s7T0oCZPw== +"@lerna/run-lifecycle@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-5.5.4.tgz#e9d61d5c290402f936818ca775168a677d965ad7" + integrity sha512-MIE8HJml8gWkH5jt/5omiPr69VUMUPwvhkf6Irpg5yxIE5K4oeViVZMay2v6cPA9jAeTDCshHb7gt2EPBSsYQA== dependencies: - "@lerna/npm-conf" "5.5.2" + "@lerna/npm-conf" "5.5.4" "@npmcli/run-script" "^4.1.7" npmlog "^6.0.2" p-queue "^6.6.2" -"@lerna/run-topologically@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-5.5.2.tgz#e485f7ce859198ad0e487814ea8ca83ebcb17ada" - integrity sha512-o3XYXk7hG8ijUjejgXoa7fuQvzEohMUm4AB5SPBbvq1BhoqIZfW50KlBNjud1zVD4OsA8jJOfjItcY9KfxowuA== +"@lerna/run-topologically@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-5.5.4.tgz#14fdd4d40882445b9346d0e814c61eb8237687a9" + integrity sha512-p1UNHgR8sOaS40nVD0HyqwmawDXBOikIibjbJLcY2QuvWwzAGKjfWm/sAXagYjgzaPYQAhaHyOxTdGe8T+a7uQ== dependencies: - "@lerna/query-graph" "5.5.2" + "@lerna/query-graph" "5.5.4" p-queue "^6.6.2" -"@lerna/run@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/run/-/run-5.5.2.tgz#8449406d9257def944b9cba28c76ed12246bc8a4" - integrity sha512-KVMkjL2ehW+/6VAwTTLgq82Rgw4W6vOz1I9XwwO/bk9h7DoY1HlE8leaaYRNqT+Cv437A9AwggR+LswhoK3alA== - dependencies: - "@lerna/command" "5.5.2" - "@lerna/filter-options" "5.5.2" - "@lerna/npm-run-script" "5.5.2" - "@lerna/output" "5.5.2" - "@lerna/profiler" "5.5.2" - "@lerna/run-topologically" "5.5.2" - "@lerna/timer" "5.5.2" - "@lerna/validation-error" "5.5.2" +"@lerna/run@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/run/-/run-5.5.4.tgz#b7cff31b3240c7326119a9a675af2bbc16af6d2a" + integrity sha512-R9g+4nfIDgK+I4RleAJpXrStzLlUCEHR/rxH2t5LJ6DLaoKUG6oeRZsf2w/It/r2IMV1dq2xG6chs+H1o1J+Ow== + dependencies: + "@lerna/command" "5.5.4" + "@lerna/filter-options" "5.5.4" + "@lerna/npm-run-script" "5.5.4" + "@lerna/output" "5.5.4" + "@lerna/profiler" "5.5.4" + "@lerna/run-topologically" "5.5.4" + "@lerna/timer" "5.5.4" + "@lerna/validation-error" "5.5.4" fs-extra "^9.1.0" p-map "^4.0.0" -"@lerna/symlink-binary@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-5.5.2.tgz#0227875212576e2a20a450ebe3362bfa7708284a" - integrity sha512-fQAN0ClwlVLThqm+m9d4lIfa2TuONocdNQocmou8UBDI/C/VVW6dvD+tSL3I4jYIYJWsXJe1hBBjil4ZYXpQrQ== +"@lerna/symlink-binary@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-5.5.4.tgz#cb7e8194e7b860196aff306aa35e0db67f1b5c3a" + integrity sha512-FVhkL8KIgk0gPJV136Sl0/t3LD3qDngIRqJVNPIbATVHagkLVsuJM6+BcdWLxoMUCtwHIyWqgcXn1Oa/DVSUEA== dependencies: - "@lerna/create-symlink" "5.5.2" - "@lerna/package" "5.5.2" + "@lerna/create-symlink" "5.5.4" + "@lerna/package" "5.5.4" fs-extra "^9.1.0" p-map "^4.0.0" -"@lerna/symlink-dependencies@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-5.5.2.tgz#f97eab64a0ad0702ef2da1690e7eeafb1c4e5c29" - integrity sha512-eNIICnlUD1YCiIY50O2TKHkxXCF4rYAFOCVWTiUS098tNKLssTPnIQrK3ASKxK9t7srmfcm49LFxNRPjVKjSBw== +"@lerna/symlink-dependencies@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-5.5.4.tgz#99607534e239b1479209d3025988e3b2c5ccc073" + integrity sha512-BfOcATr0TreXRfIhIRvgGCT2o8uEqrwVLo8edCQICeqgju19fFn22Qmyb8LW+LMJjBUuSkpJDqqamQ6nj3Ch2A== dependencies: - "@lerna/create-symlink" "5.5.2" - "@lerna/resolve-symlink" "5.5.2" - "@lerna/symlink-binary" "5.5.2" + "@lerna/create-symlink" "5.5.4" + "@lerna/resolve-symlink" "5.5.4" + "@lerna/symlink-binary" "5.5.4" fs-extra "^9.1.0" p-map "^4.0.0" p-map-series "^2.1.0" -"@lerna/temp-write@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/temp-write/-/temp-write-5.5.2.tgz#86cb3b3190bcb959d84bb2e06a910543f3957af3" - integrity sha512-K/9L+25qIw4qw/SSLxwfAWzaUE3luqGTusd3x934Hg2sBQVX28xddwaZlasQ6qen7ETp6Ec9vSVWF2ffWTxKJg== +"@lerna/temp-write@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/temp-write/-/temp-write-5.5.4.tgz#02c07da23944a765d3f319f247c71e0b99b9416f" + integrity sha512-cJy9f9uSvnPxfc2a1ARapGLJXllQlJKKb0idi8aA3ylvgDA7grfKIDPdkf6cBcpPAq8aixDq9GdCZ6oLKdISeA== dependencies: graceful-fs "^4.1.15" is-stream "^2.0.0" @@ -3290,37 +3290,37 @@ temp-dir "^1.0.0" uuid "^8.3.2" -"@lerna/timer@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-5.5.2.tgz#d28b4c4431e2988e0c308d8c9d98c503416dae21" - integrity sha512-QcnMFwcP7xlT9DH4oGVuDYuSOfpAghG4wj7D8vN1GhJFd9ueDCzTFJpFRd6INacIbESBNMjq5WuTeNdxcDo8Fg== +"@lerna/timer@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-5.5.4.tgz#815f054f3825a58af58518309d32e29e36fd2c8b" + integrity sha512-B3eesmrNaw64Svo2pkmCtBVIJbomegiOMrdxFkZrf8ugTKwobn3KSZZkdbN+hjq8SKpRz3XgtjAuSFUzdg8c3A== -"@lerna/validation-error@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-5.5.2.tgz#6ef92fdfab30404fc7d3668499c03c5740158d81" - integrity sha512-ZffmtrgOkihUxpho529rDI0llDV9YFNJqh0qF2+doFePeTtFKkFVFHZvxP9hPZPMOLypX9OHwCVfMaTlIpIjjA== +"@lerna/validation-error@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-5.5.4.tgz#935018275d0005cc5e7540854815ec7404a5b129" + integrity sha512-FUC3x40zBAu0ny1AWXT38LOVRaSJkjdAv9GiYLu9sx+7T7X18q38zPFyVPIIhrrTJsNNWkro/NTA7r4/BcdvoQ== dependencies: npmlog "^6.0.2" -"@lerna/version@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/version/-/version-5.5.2.tgz#938020878fe274d8569cbd443c4c14732afd8c67" - integrity sha512-MMO0rnC9Y8JQEl6+XJMu0JM/bWpe6mGNhQJ8C9W1hkpMwxrizhcoEFb9Vq/q/tw7DjCVc3inrb/5s50cRmrmtg== - dependencies: - "@lerna/check-working-tree" "5.5.2" - "@lerna/child-process" "5.5.2" - "@lerna/collect-updates" "5.5.2" - "@lerna/command" "5.5.2" - "@lerna/conventional-commits" "5.5.2" - "@lerna/github-client" "5.5.2" - "@lerna/gitlab-client" "5.5.2" - "@lerna/output" "5.5.2" - "@lerna/prerelease-id-from-version" "5.5.2" - "@lerna/prompt" "5.5.2" - "@lerna/run-lifecycle" "5.5.2" - "@lerna/run-topologically" "5.5.2" - "@lerna/temp-write" "5.5.2" - "@lerna/validation-error" "5.5.2" +"@lerna/version@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/version/-/version-5.5.4.tgz#4bfe1ec09a508f5a14c325599c88a92d3bede8a4" + integrity sha512-J39m2KfhkkDzfCUjnC2+UbBrWBRs1TkrvFlHFbb8wHUOY5bs+dj5RLyUchF/VJOYFSJXr8LLQFdMPeptF2wItg== + dependencies: + "@lerna/check-working-tree" "5.5.4" + "@lerna/child-process" "5.5.4" + "@lerna/collect-updates" "5.5.4" + "@lerna/command" "5.5.4" + "@lerna/conventional-commits" "5.5.4" + "@lerna/github-client" "5.5.4" + "@lerna/gitlab-client" "5.5.4" + "@lerna/output" "5.5.4" + "@lerna/prerelease-id-from-version" "5.5.4" + "@lerna/prompt" "5.5.4" + "@lerna/run-lifecycle" "5.5.4" + "@lerna/run-topologically" "5.5.4" + "@lerna/temp-write" "5.5.4" + "@lerna/validation-error" "5.5.4" chalk "^4.1.0" dedent "^0.7.0" load-json-file "^6.2.0" @@ -3334,10 +3334,10 @@ slash "^3.0.0" write-json-file "^4.3.0" -"@lerna/write-log-file@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-5.5.2.tgz#4ae8243b8e2821feea9f25c67488409a7fe82544" - integrity sha512-eeW10lriUl3w6WXtYk30z4rZB77QXeQCkLgSMv6Rqa7AMCTZNPhIBJQ0Nkmxo8LaFSWMhin1pLhHTYdqcsaFLA== +"@lerna/write-log-file@5.5.4": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-5.5.4.tgz#28d04afa813457a58c6d32d8a4b4581cbaf34d02" + integrity sha512-PDdVuWHLkMw6ygP1hKTciphmYKRDTmNJASxVlxxOv9UkZe7QQvfke0i/OXNPRZHJK7eKCtv2Zu91amE8qCjVNw== dependencies: npmlog "^6.0.2" write-file-atomic "^4.0.1" @@ -10227,27 +10227,27 @@ lazy-ass@^1.6.0: resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM= -lerna@5.5.2: - version "5.5.2" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-5.5.2.tgz#3b96ea81bb71a0e57c110b64c6dc2cc58d7acca9" - integrity sha512-P0ThZMfWJ4BP9xRbXaLyoOCYjlPN615FRV2ZBnTBA12lw32IlcREIgvF0N1zZX7wXtsmN56rU3CABoJ5lU8xuw== - dependencies: - "@lerna/add" "5.5.2" - "@lerna/bootstrap" "5.5.2" - "@lerna/changed" "5.5.2" - "@lerna/clean" "5.5.2" - "@lerna/cli" "5.5.2" - "@lerna/create" "5.5.2" - "@lerna/diff" "5.5.2" - "@lerna/exec" "5.5.2" - "@lerna/import" "5.5.2" - "@lerna/info" "5.5.2" - "@lerna/init" "5.5.2" - "@lerna/link" "5.5.2" - "@lerna/list" "5.5.2" - "@lerna/publish" "5.5.2" - "@lerna/run" "5.5.2" - "@lerna/version" "5.5.2" +lerna@5.5.4: + version "5.5.4" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-5.5.4.tgz#34d95dd3e26c725ce4ba981b887aaf59ce899519" + integrity sha512-LAFQ/U6SL7/EM0sedtFaFS4b0RbTqsYYOJ6LV9Y7l/zWFlqLcg41vLblkNRuxsNB5FZBNpfiWvXmd1KiWkQ/yQ== + dependencies: + "@lerna/add" "5.5.4" + "@lerna/bootstrap" "5.5.4" + "@lerna/changed" "5.5.4" + "@lerna/clean" "5.5.4" + "@lerna/cli" "5.5.4" + "@lerna/create" "5.5.4" + "@lerna/diff" "5.5.4" + "@lerna/exec" "5.5.4" + "@lerna/import" "5.5.4" + "@lerna/info" "5.5.4" + "@lerna/init" "5.5.4" + "@lerna/link" "5.5.4" + "@lerna/list" "5.5.4" + "@lerna/publish" "5.5.4" + "@lerna/run" "5.5.4" + "@lerna/version" "5.5.4" import-local "^3.0.2" npmlog "^6.0.2" nx ">=14.6.1 < 16" From 7a8a0a3c500ca726d2ab3bee0ae9f3fb9d8d39b8 Mon Sep 17 00:00:00 2001 From: YeonJuan Date: Wed, 5 Oct 2022 20:37:49 +0900 Subject: [PATCH 021/193] fix(eslint-plugin): [consistent-indexed-object-style] handle interface generic (#5746) * fix(eslint-plugin): [consistent-indexed-object-style] handle interface generic * fix lint error --- .../rules/consistent-indexed-object-style.ts | 4 ++-- .../consistent-indexed-object-style.test.ts | 22 ++++++++++++++++++- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/packages/eslint-plugin/src/rules/consistent-indexed-object-style.ts b/packages/eslint-plugin/src/rules/consistent-indexed-object-style.ts index 2b260865a4c..535692f3fa8 100644 --- a/packages/eslint-plugin/src/rules/consistent-indexed-object-style.ts +++ b/packages/eslint-plugin/src/rules/consistent-indexed-object-style.ts @@ -1,5 +1,5 @@ import type { TSESLint, TSESTree } from '@typescript-eslint/utils'; -import { AST_NODE_TYPES } from '@typescript-eslint/utils'; +import { AST_NODE_TYPES, ASTUtils } from '@typescript-eslint/utils'; import { createRule } from '../util'; @@ -67,7 +67,7 @@ export default createRule({ if (parentId) { const scope = context.getScope(); - const superVar = scope.set.get(parentId.name); + const superVar = ASTUtils.findVariable(scope, parentId.name); if (superVar) { const isCircular = superVar.references.some( item => diff --git a/packages/eslint-plugin/tests/rules/consistent-indexed-object-style.test.ts b/packages/eslint-plugin/tests/rules/consistent-indexed-object-style.test.ts index 5c59f92b92d..6bdc76362e0 100644 --- a/packages/eslint-plugin/tests/rules/consistent-indexed-object-style.test.ts +++ b/packages/eslint-plugin/tests/rules/consistent-indexed-object-style.test.ts @@ -39,7 +39,16 @@ interface Foo { [key: string]: Foo; } `, - + ` +interface Foo { + [key: string]: Foo; +} + `, + ` +interface Foo { + [key: string]: Foo | string; +} + `, // Type literal 'type Foo = {};', ` @@ -328,6 +337,17 @@ type Foo = Readonly>; }, { code: ` +interface Foo { + [k: string]: T; +} + `, + output: ` +type Foo = Record; + `, + errors: [{ messageId: 'preferRecord', line: 2, column: 1 }], + }, + { + code: ` interface Foo { [k: string]: A.Foo; } From 4939ec8b0b7e9586b42e7da4c9f4d43a867e0adc Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Fri, 7 Oct 2022 02:15:36 +1030 Subject: [PATCH 022/193] chore: unignore typescript and eslint from dependabot (#5751) --- .github/dependabot.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 0c40cbe5d13..6f306092e36 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -15,5 +15,3 @@ updates: day: monday ignore: - dependency-name: cypress - - dependency-name: typescript - - dependency-name: eslint From ac8f06b68dca7666bfb78fb38d6ccc07f676e435 Mon Sep 17 00:00:00 2001 From: YeonJuan Date: Sat, 8 Oct 2022 01:33:29 +0900 Subject: [PATCH 023/193] fix(eslint-plugin): [no-unnecessary-condition] handle void (#5766) --- .../eslint-plugin/src/rules/no-unnecessary-condition.ts | 7 ++++--- .../tests/rules/no-unnecessary-condition.test.ts | 7 ++++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/eslint-plugin/src/rules/no-unnecessary-condition.ts b/packages/eslint-plugin/src/rules/no-unnecessary-condition.ts index 942048bce0b..51d42f82926 100644 --- a/packages/eslint-plugin/src/rules/no-unnecessary-condition.ts +++ b/packages/eslint-plugin/src/rules/no-unnecessary-condition.ts @@ -330,6 +330,7 @@ export default createRule({ if (isStrictNullChecks) { const UNDEFINED = ts.TypeFlags.Undefined; const NULL = ts.TypeFlags.Null; + const VOID = ts.TypeFlags.Void; const isComparable = (type: ts.Type, flag: ts.TypeFlags): boolean => { // Allow comparison to `any`, `unknown` or a naked type parameter. flag |= @@ -339,7 +340,7 @@ export default createRule({ // Allow loose comparison to nullish values. if (node.operator === '==' || node.operator === '!=') { - flag |= NULL | UNDEFINED; + flag |= NULL | UNDEFINED | VOID; } return isTypeFlagSet(type, flag); @@ -347,9 +348,9 @@ export default createRule({ if ( (leftType.flags === UNDEFINED && - !isComparable(rightType, UNDEFINED)) || + !isComparable(rightType, UNDEFINED | VOID)) || (rightType.flags === UNDEFINED && - !isComparable(leftType, UNDEFINED)) || + !isComparable(leftType, UNDEFINED | VOID)) || (leftType.flags === NULL && !isComparable(rightType, NULL)) || (rightType.flags === NULL && !isComparable(leftType, NULL)) ) { diff --git a/packages/eslint-plugin/tests/rules/no-unnecessary-condition.test.ts b/packages/eslint-plugin/tests/rules/no-unnecessary-condition.test.ts index d5fd8a8e5b3..f8401399a20 100644 --- a/packages/eslint-plugin/tests/rules/no-unnecessary-condition.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unnecessary-condition.test.ts @@ -45,7 +45,7 @@ const unnecessaryConditionTest = ( errors: [ruleError(4, 12, messageId)], }); -ruleTester.run('no-unnecessary-conditionals', rule, { +ruleTester.run('no-unnecessary-condition', rule, { valid: [ ` declare const b1: boolean; @@ -67,6 +67,11 @@ for (let i = 0; b1 && b2; i++) { } const t1 = b1 && b2 ? 'yes' : 'no'; for (;;) {} + `, + ` +declare function foo(): number | void; +const result1 = foo() === undefined; +const result2 = foo() == null; `, necessaryConditionTest('false | 5'), // Truthy literal and falsy literal necessaryConditionTest('boolean | "foo"'), // boolean and truthy literal From 7a377e4e0b7db4c9e772307bf04842b6a2411c84 Mon Sep 17 00:00:00 2001 From: RahulGautamSingh Date: Fri, 7 Oct 2022 22:24:24 +0530 Subject: [PATCH 024/193] chore: switch from dependabot to Renovate (#5761) * chore: switch from dependabot to Renovate * Update renovate.json * Apply suggestions * apply suggestions * fix: format renoavte.json * Back to ignoreDeps, alas Co-authored-by: Josh Goldberg --- .github/dependabot.yml | 17 ----------------- .github/renovate.json | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 17 deletions(-) delete mode 100644 .github/dependabot.yml create mode 100644 .github/renovate.json diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 6f306092e36..00000000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,17 +0,0 @@ -version: 2 -updates: - - package-ecosystem: github-actions - directory: / - ignore: - - dependency-name: cypress - schedule: - interval: weekly - day: monday - - - package-ecosystem: npm - directory: / - schedule: - interval: weekly - day: monday - ignore: - - dependency-name: cypress diff --git a/.github/renovate.json b/.github/renovate.json new file mode 100644 index 00000000000..dcf569f2df6 --- /dev/null +++ b/.github/renovate.json @@ -0,0 +1,19 @@ +{ + "automerge": true, + "enabledManagers": ["github-actions", "npm"], + "ignoreDeps": ["cypress"], + "internalChecksFilters": "strict", + "labels": ["dependencies"], + "packageRules": [ + { + "addLabels": ["github-actions"], + "manager": "github-actions" + }, + { + "addLabels": ["javascript"], + "manager": "npm" + } + ], + "matchUpdateTypes": ["minor", "patch", "pin", "digest"], + "stabilityDays": 3 +} From 6477f3855627cc257edc021b859711d4a5847a12 Mon Sep 17 00:00:00 2001 From: Aaron Hill Date: Fri, 7 Oct 2022 14:05:00 -0500 Subject: [PATCH 025/193] feat(eslint-plugin): Check 'rest' parameters in no-misused-promises (#5731) * feat(eslint-plugin): Check 'rest' parameters in no-misused-promises Fixes #4015 This extends 'no-misued-promises' with support for checking variadic arguments passed to a 'rest' parameter. If a function is declared with an argument like '...handlers: Array<() => void>', we now check if the type argument to `Array` is a void-returning function, and if so, check if any of the variadic arguments return a Promise. * Address review comments * Fix spelling * Address additional review comments * nit: split up tests a bit, and add comments about () Co-authored-by: Josh Goldberg --- .../src/rules/no-misused-promises.ts | 92 +++++++++++-- .../tests/rules/no-misused-promises.test.ts | 129 ++++++++++++++++++ 2 files changed, 208 insertions(+), 13 deletions(-) diff --git a/packages/eslint-plugin/src/rules/no-misused-promises.ts b/packages/eslint-plugin/src/rules/no-misused-promises.ts index 2c7f1eeb259..7afb62785b5 100644 --- a/packages/eslint-plugin/src/rules/no-misused-promises.ts +++ b/packages/eslint-plugin/src/rules/no-misused-promises.ts @@ -213,13 +213,13 @@ export default util.createRule({ node: TSESTree.CallExpression | TSESTree.NewExpression, ): void { const tsNode = parserServices.esTreeNodeToTSNodeMap.get(node); - const voidParams = voidFunctionParams(checker, tsNode); - if (voidParams.size === 0) { + const voidArgs = voidFunctionArguments(checker, tsNode); + if (voidArgs.size === 0) { return; } for (const [index, argument] of node.arguments.entries()) { - if (!voidParams.has(index)) { + if (!voidArgs.has(index)) { continue; } @@ -486,13 +486,40 @@ function isFunctionParam( return false; } -// Get the positions of parameters which are void functions (and not also +function checkThenableOrVoidArgument( + checker: ts.TypeChecker, + node: ts.CallExpression | ts.NewExpression, + type: ts.Type, + index: number, + thenableReturnIndices: Set, + voidReturnIndices: Set, +): void { + if (isThenableReturningFunctionType(checker, node.expression, type)) { + thenableReturnIndices.add(index); + } else if (isVoidReturningFunctionType(checker, node.expression, type)) { + // If a certain argument accepts both thenable and void returns, + // a promise-returning function is valid + if (!thenableReturnIndices.has(index)) { + voidReturnIndices.add(index); + } + } +} + +// Get the positions of arguments which are void functions (and not also // thenable functions). These are the candidates for the void-return check at // the current call site. -function voidFunctionParams( +// If the function parameters end with a 'rest' parameter, then we consider +// the array type parameter (e.g. '...args:Array') when determining +// if trailing arguments are candidates. +function voidFunctionArguments( checker: ts.TypeChecker, node: ts.CallExpression | ts.NewExpression, ): Set { + // 'new' can be used without any arguments, as in 'let b = new Object;' + // In this case, there are no argument positions to check, so return early. + if (!node.arguments) { + return new Set(); + } const thenableReturnIndices = new Set(); const voidReturnIndices = new Set(); const type = checker.getTypeAtLocation(node.expression); @@ -507,17 +534,56 @@ function voidFunctionParams( : subType.getConstructSignatures(); for (const signature of signatures) { for (const [index, parameter] of signature.parameters.entries()) { - const type = checker.getTypeOfSymbolAtLocation( + const decl = parameter.valueDeclaration; + let type = checker.getTypeOfSymbolAtLocation( parameter, node.expression, ); - if (isThenableReturningFunctionType(checker, node.expression, type)) { - thenableReturnIndices.add(index); - } else if ( - !thenableReturnIndices.has(index) && - isVoidReturningFunctionType(checker, node.expression, type) - ) { - voidReturnIndices.add(index); + + // If this is a array 'rest' parameter, check all of the argument indices + // from the current argument to the end. + // Note - we currently do not support 'spread' arguments - adding support for them + // is tracked in https://github.com/typescript-eslint/typescript-eslint/issues/5744 + if (decl && ts.isParameter(decl) && decl.dotDotDotToken) { + if (checker.isArrayType(type)) { + // Unwrap 'Array' to 'MaybeVoidFunction', + // so that we'll handle it in the same way as a non-rest + // 'param: MaybeVoidFunction' + type = checker.getTypeArguments(type)[0]; + for (let i = index; i < node.arguments.length; i++) { + checkThenableOrVoidArgument( + checker, + node, + type, + i, + thenableReturnIndices, + voidReturnIndices, + ); + } + } else if (checker.isTupleType(type)) { + // Check each type in the tuple - for example, [boolean, () => void] would + // add the index of the second tuple parameter to 'voidReturnIndices' + const typeArgs = checker.getTypeArguments(type); + for (let i = index; i < node.arguments.length; i++) { + checkThenableOrVoidArgument( + checker, + node, + typeArgs[i - index], + i, + thenableReturnIndices, + voidReturnIndices, + ); + } + } + } else { + checkThenableOrVoidArgument( + checker, + node, + type, + index, + thenableReturnIndices, + voidReturnIndices, + ); } } } diff --git a/packages/eslint-plugin/tests/rules/no-misused-promises.test.ts b/packages/eslint-plugin/tests/rules/no-misused-promises.test.ts index 55ba429cdb0..e333e1f4e67 100644 --- a/packages/eslint-plugin/tests/rules/no-misused-promises.test.ts +++ b/packages/eslint-plugin/tests/rules/no-misused-promises.test.ts @@ -373,6 +373,52 @@ console.log([...Promise.resolve(42)]); `, options: [{ checksSpreads: false }], }, + ` +function spreadAny(..._args: any): void {} + +spreadAny( + true, + () => Promise.resolve(1), + () => Promise.resolve(false), +); + `, + ` +function spreadArrayAny(..._args: Array): void {} + +spreadArrayAny( + true, + () => Promise.resolve(1), + () => Promise.resolve(false), +); + `, + ` +function spreadArrayUnknown(..._args: Array): void {} + +spreadArrayUnknown(() => Promise.resolve(true), 1, 2); + +function spreadArrayFuncPromise( + ..._args: Array<() => Promise> +): void {} + +spreadArrayFuncPromise( + () => Promise.resolve(undefined), + () => Promise.resolve(undefined), +); + `, + // Prettier adds a () but this tests arguments being undefined, not [] + // eslint-disable-next-line @typescript-eslint/internal/plugin-test-formatting + ` +class TakeCallbacks { + constructor(...callbacks: Array<() => void>) {} +} + +new TakeCallbacks; +new TakeCallbacks(); +new TakeCallbacks( + () => 1, + () => true, +); + `, ], invalid: [ @@ -970,5 +1016,88 @@ console.log({ ...(condition ? Promise.resolve({ key: 42 }) : {}) }); { line: 7, messageId: 'spread' }, ], }, + { + code: ` +function restPromises(first: Boolean, ...callbacks: Array<() => void>): void {} + +restPromises( + true, + () => Promise.resolve(true), + () => Promise.resolve(null), + () => true, + () => Promise.resolve('Hello'), +); + `, + errors: [ + { line: 6, messageId: 'voidReturnArgument' }, + { line: 7, messageId: 'voidReturnArgument' }, + { line: 9, messageId: 'voidReturnArgument' }, + ], + }, + { + code: ` +type MyUnion = (() => void) | boolean; + +function restUnion(first: string, ...callbacks: Array): void {} +restUnion('Testing', false, () => Promise.resolve(true)); + `, + errors: [{ line: 5, messageId: 'voidReturnArgument' }], + }, + { + code: ` +function restTupleOne(first: string, ...callbacks: [() => void]): void {} +restTupleOne('My string', () => Promise.resolve(1)); + `, + errors: [{ line: 3, messageId: 'voidReturnArgument' }], + }, + { + code: ` +function restTupleTwo( + first: boolean, + ...callbacks: [undefined, () => void, undefined] +): void {} + +restTupleTwo(true, undefined, () => Promise.resolve(true), undefined); + `, + errors: [{ line: 7, messageId: 'voidReturnArgument' }], + }, + { + code: ` +function restTupleFour( + first: number, + ...callbacks: [() => void, boolean, () => void, () => void] +): void; + +restTupleFour( + 1, + () => Promise.resolve(true), + false, + () => {}, + () => Promise.resolve(1), +); + `, + errors: [ + { line: 9, messageId: 'voidReturnArgument' }, + { line: 12, messageId: 'voidReturnArgument' }, + ], + }, + { + // Prettier adds a () but this tests arguments being undefined, not [] + // eslint-disable-next-line @typescript-eslint/internal/plugin-test-formatting + code: ` +class TakesVoidCb { + constructor(first: string, ...args: Array<() => void>); +} + +new TakesVoidCb; +new TakesVoidCb(); +new TakesVoidCb( + 'Testing', + () => {}, + () => Promise.resolve(true), +); + `, + errors: [{ line: 11, messageId: 'voidReturnArgument' }], + }, ], }); From 121f4c0e7252def95d917e4734e933e53e29d501 Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Sun, 9 Oct 2022 18:04:38 +1030 Subject: [PATCH 026/193] feat(utils): add dependency constraint filtering for `RuleTester` (#5750) * feat(utils): add dependency constraint filtering for eslint plugin RuleTester * address feedback and add more tests * Update packages/utils/src/eslint-utils/rule-tester/dependencyConstraints.ts Co-authored-by: Josh Goldberg * Update packages/utils/src/eslint-utils/rule-tester/RuleTester.ts Co-authored-by: Josh Goldberg Co-authored-by: Josh Goldberg --- .../eslint-plugin-internal/jest.config.js | 1 + packages/eslint-plugin/jest.config.js | 1 + packages/utils/package.json | 4 +- packages/utils/src/eslint-utils/RuleTester.ts | 130 ---- .../eslint-utils/batchedSingleLineTests.ts | 5 +- packages/utils/src/eslint-utils/index.ts | 2 +- .../eslint-utils/rule-tester/RuleTester.ts | 250 ++++++ .../rule-tester/dependencyConstraints.ts | 63 ++ packages/utils/src/ts-eslint/RuleTester.ts | 18 +- .../rule-tester/RuleTester.test.ts | 719 ++++++++++++++++++ 10 files changed, 1058 insertions(+), 135 deletions(-) delete mode 100644 packages/utils/src/eslint-utils/RuleTester.ts create mode 100644 packages/utils/src/eslint-utils/rule-tester/RuleTester.ts create mode 100644 packages/utils/src/eslint-utils/rule-tester/dependencyConstraints.ts create mode 100644 packages/utils/tests/eslint-utils/rule-tester/RuleTester.test.ts diff --git a/packages/eslint-plugin-internal/jest.config.js b/packages/eslint-plugin-internal/jest.config.js index 910991b20cf..72e29aa600b 100644 --- a/packages/eslint-plugin-internal/jest.config.js +++ b/packages/eslint-plugin-internal/jest.config.js @@ -4,4 +4,5 @@ /** @type {import('@jest/types').Config.InitialOptions} */ module.exports = { ...require('../../jest.config.base.js'), + coveragePathIgnorePatterns: ['src/index.ts$', 'src/configs/.*.ts$'], }; diff --git a/packages/eslint-plugin/jest.config.js b/packages/eslint-plugin/jest.config.js index 910991b20cf..72e29aa600b 100644 --- a/packages/eslint-plugin/jest.config.js +++ b/packages/eslint-plugin/jest.config.js @@ -4,4 +4,5 @@ /** @type {import('@jest/types').Config.InitialOptions} */ module.exports = { ...require('../../jest.config.base.js'), + coveragePathIgnorePatterns: ['src/index.ts$', 'src/configs/.*.ts$'], }; diff --git a/packages/utils/package.json b/packages/utils/package.json index 15be0d28738..78452a7fed2 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -44,12 +44,14 @@ "@typescript-eslint/types": "5.39.0", "@typescript-eslint/typescript-estree": "5.39.0", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "devDependencies": { + "@typescript-eslint/parser": "5.39.0", "typescript": "*" }, "funding": { diff --git a/packages/utils/src/eslint-utils/RuleTester.ts b/packages/utils/src/eslint-utils/RuleTester.ts deleted file mode 100644 index d0317837211..00000000000 --- a/packages/utils/src/eslint-utils/RuleTester.ts +++ /dev/null @@ -1,130 +0,0 @@ -import * as path from 'path'; - -import * as TSESLint from '../ts-eslint'; - -const parser = '@typescript-eslint/parser'; - -type RuleTesterConfig = Omit & { - parser: typeof parser; -}; - -class RuleTester extends TSESLint.RuleTester { - readonly #options: RuleTesterConfig; - - // as of eslint 6 you have to provide an absolute path to the parser - // but that's not as clean to type, this saves us trying to manually enforce - // that contributors require.resolve everything - constructor(options: RuleTesterConfig) { - super({ - ...options, - parserOptions: { - ...options.parserOptions, - warnOnUnsupportedTypeScriptVersion: - options.parserOptions?.warnOnUnsupportedTypeScriptVersion ?? false, - }, - parser: require.resolve(options.parser), - }); - - this.#options = options; - - // make sure that the parser doesn't hold onto file handles between tests - // on linux (i.e. our CI env), there can be very a limited number of watch handles available - if (typeof afterAll !== 'undefined') { - afterAll(() => { - try { - // instead of creating a hard dependency, just use a soft require - // a bit weird, but if they're using this tooling, it'll be installed - // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access - require(parser).clearCaches(); - } catch { - // ignored - } - }); - } - } - private getFilename(options?: TSESLint.ParserOptions): string { - if (options) { - const filename = `file.ts${options.ecmaFeatures?.jsx ? 'x' : ''}`; - if (options.project) { - return path.join( - options.tsconfigRootDir != null - ? options.tsconfigRootDir - : process.cwd(), - filename, - ); - } - - return filename; - } else if (this.#options.parserOptions) { - return this.getFilename(this.#options.parserOptions); - } - - return 'file.ts'; - } - - // as of eslint 6 you have to provide an absolute path to the parser - // If you don't do that at the test level, the test will fail somewhat cryptically... - // This is a lot more explicit - run>( - name: string, - rule: TSESLint.RuleModule, - testsReadonly: TSESLint.RunTests, - ): void { - const errorMessage = `Do not set the parser at the test level unless you want to use a parser other than ${parser}`; - - const tests = { ...testsReadonly }; - - // standardize the valid tests as objects - tests.valid = tests.valid.map(test => { - if (typeof test === 'string') { - return { - code: test, - }; - } - return test; - }); - - tests.valid = tests.valid.map(test => { - if (typeof test !== 'string') { - if (test.parser === parser) { - throw new Error(errorMessage); - } - if (!test.filename) { - return { - ...test, - filename: this.getFilename(test.parserOptions), - }; - } - } - return test; - }); - tests.invalid = tests.invalid.map(test => { - if (test.parser === parser) { - throw new Error(errorMessage); - } - if (!test.filename) { - return { - ...test, - filename: this.getFilename(test.parserOptions), - }; - } - return test; - }); - - super.run(name, rule, tests); - } -} - -/** - * Simple no-op tag to mark code samples as "should not format with prettier" - * for the internal/plugin-test-formatting lint rule - */ -function noFormat(strings: TemplateStringsArray, ...keys: string[]): string { - const lastIndex = strings.length - 1; - return ( - strings.slice(0, lastIndex).reduce((p, s, i) => p + s + keys[i], '') + - strings[lastIndex] - ); -} - -export { noFormat, RuleTester }; diff --git a/packages/utils/src/eslint-utils/batchedSingleLineTests.ts b/packages/utils/src/eslint-utils/batchedSingleLineTests.ts index 64a29fd5109..fcd15210e48 100644 --- a/packages/utils/src/eslint-utils/batchedSingleLineTests.ts +++ b/packages/utils/src/eslint-utils/batchedSingleLineTests.ts @@ -1,4 +1,7 @@ -import type { InvalidTestCase, ValidTestCase } from '../ts-eslint'; +import type { + InvalidTestCase, + ValidTestCase, +} from '../eslint-utils/rule-tester/RuleTester'; /** * Converts a batch of single line tests into a number of separate test cases. diff --git a/packages/utils/src/eslint-utils/index.ts b/packages/utils/src/eslint-utils/index.ts index fc8e410428e..a3d0cb75245 100644 --- a/packages/utils/src/eslint-utils/index.ts +++ b/packages/utils/src/eslint-utils/index.ts @@ -3,6 +3,6 @@ export * from './batchedSingleLineTests'; export * from './getParserServices'; export * from './InferTypesFromRule'; export * from './RuleCreator'; -export * from './RuleTester'; +export * from './rule-tester/RuleTester'; export * from './deepMerge'; export * from './nullThrows'; diff --git a/packages/utils/src/eslint-utils/rule-tester/RuleTester.ts b/packages/utils/src/eslint-utils/rule-tester/RuleTester.ts new file mode 100644 index 00000000000..e81d23d0206 --- /dev/null +++ b/packages/utils/src/eslint-utils/rule-tester/RuleTester.ts @@ -0,0 +1,250 @@ +import type * as TSESLintParserType from '@typescript-eslint/parser'; +import { version as eslintVersion } from 'eslint/package.json'; +import * as path from 'path'; +import * as semver from 'semver'; + +import * as TSESLint from '../../ts-eslint'; +import { deepMerge } from '../deepMerge'; +import type { DependencyConstraint } from './dependencyConstraints'; +import { satisfiesAllDependencyConstraints } from './dependencyConstraints'; + +const TS_ESLINT_PARSER = '@typescript-eslint/parser'; +const ERROR_MESSAGE = `Do not set the parser at the test level unless you want to use a parser other than ${TS_ESLINT_PARSER}`; + +type RuleTesterConfig = Omit & { + parser: typeof TS_ESLINT_PARSER; +}; + +interface InvalidTestCase< + TMessageIds extends string, + TOptions extends Readonly, +> extends TSESLint.InvalidTestCase { + dependencyConstraints?: DependencyConstraint; +} +interface ValidTestCase> + extends TSESLint.ValidTestCase { + dependencyConstraints?: DependencyConstraint; +} +interface RunTests< + TMessageIds extends string, + TOptions extends Readonly, +> { + // RuleTester.run also accepts strings for valid cases + readonly valid: readonly (ValidTestCase | string)[]; + readonly invalid: readonly InvalidTestCase[]; +} + +type AfterAll = (fn: () => void) => void; + +class RuleTester extends TSESLint.RuleTester { + readonly #baseOptions: RuleTesterConfig; + + static #afterAll: AfterAll; + /** + * If you supply a value to this property, the rule tester will call this instead of using the version defined on + * the global namespace. + */ + static get afterAll(): AfterAll { + return ( + this.#afterAll || + (typeof afterAll === 'function' ? afterAll : (): void => {}) + ); + } + static set afterAll(value) { + this.#afterAll = value; + } + + constructor(baseOptions: RuleTesterConfig) { + super({ + ...baseOptions, + parserOptions: { + ...baseOptions.parserOptions, + warnOnUnsupportedTypeScriptVersion: + baseOptions.parserOptions?.warnOnUnsupportedTypeScriptVersion ?? + false, + }, + // as of eslint 6 you have to provide an absolute path to the parser + // but that's not as clean to type, this saves us trying to manually enforce + // that contributors require.resolve everything + parser: require.resolve(baseOptions.parser), + }); + + this.#baseOptions = baseOptions; + + // make sure that the parser doesn't hold onto file handles between tests + // on linux (i.e. our CI env), there can be very a limited number of watch handles available + // the cast here is due to https://github.com/microsoft/TypeScript/issues/3841 + (this.constructor as typeof RuleTester).afterAll(() => { + try { + // instead of creating a hard dependency, just use a soft require + // a bit weird, but if they're using this tooling, it'll be installed + const parser = require(TS_ESLINT_PARSER) as typeof TSESLintParserType; + parser.clearCaches(); + } catch { + // ignored on purpose + } + }); + } + private getFilename(testOptions?: TSESLint.ParserOptions): string { + const resolvedOptions = deepMerge( + this.#baseOptions.parserOptions, + testOptions, + ) as TSESLint.ParserOptions; + const filename = `file.ts${resolvedOptions.ecmaFeatures?.jsx ? 'x' : ''}`; + if (resolvedOptions.project) { + return path.join( + resolvedOptions.tsconfigRootDir != null + ? resolvedOptions.tsconfigRootDir + : process.cwd(), + filename, + ); + } + return filename; + } + + // as of eslint 6 you have to provide an absolute path to the parser + // If you don't do that at the test level, the test will fail somewhat cryptically... + // This is a lot more explicit + run>( + name: string, + rule: TSESLint.RuleModule, + testsReadonly: RunTests, + ): void { + const tests = { + // standardize the valid tests as objects + valid: testsReadonly.valid.map(test => { + if (typeof test === 'string') { + return { + code: test, + }; + } + return test; + }), + invalid: testsReadonly.invalid, + }; + + // convenience iterator to make it easy to loop all tests without a concat + const allTestsIterator = { + *[Symbol.iterator](): Generator, void, unknown> { + for (const test of tests.valid) { + yield test; + } + for (const test of tests.invalid) { + yield test; + } + }, + }; + + /* + Automatically add a filename to the tests to enable type-aware tests to "just work". + This saves users having to verbosely and manually add the filename to every + single test case. + Hugely helps with the string-based valid test cases as it means they don't + need to be made objects! + */ + const addFilename = < + T extends + | ValidTestCase + | InvalidTestCase, + >( + test: T, + ): T => { + if (test.parser === TS_ESLINT_PARSER) { + throw new Error(ERROR_MESSAGE); + } + if (!test.filename) { + return { + ...test, + filename: this.getFilename(test.parserOptions), + }; + } + return test; + }; + tests.valid = tests.valid.map(addFilename); + tests.invalid = tests.invalid.map(addFilename); + + const hasOnly = ((): boolean => { + for (const test of allTestsIterator) { + if (test.only) { + return true; + } + } + return false; + })(); + // if there is an `only: true` - don't apply constraints - assume that + // we are in "local development" mode rather than "CI validation" mode + if (!hasOnly) { + /* + Automatically skip tests that don't satisfy the dependency constraints. + */ + const hasConstraints = ((): boolean => { + for (const test of allTestsIterator) { + if ( + test.dependencyConstraints && + Object.keys(test.dependencyConstraints).length > 0 + ) { + return true; + } + } + return false; + })(); + if (hasConstraints) { + // The `only: boolean` test property was only added in ESLint v7.29.0. + if (semver.satisfies(eslintVersion, '>=7.29.0')) { + /* + Mark all satisfactory tests as `only: true`, and all other tests as + `only: false`. + When multiple tests are marked as "only", test frameworks like jest and mocha + will run all of those tests and will just skip the other tests. + + We do this instead of just omitting the tests entirely because it gives the + test framework the opportunity to log the test as skipped rather than the test + just disappearing. + */ + const maybeMarkAsOnly = < + T extends + | ValidTestCase + | InvalidTestCase, + >( + test: T, + ): T => { + return { + ...test, + only: satisfiesAllDependencyConstraints( + test.dependencyConstraints, + ), + }; + }; + + tests.valid = tests.valid.map(maybeMarkAsOnly); + tests.invalid = tests.invalid.map(maybeMarkAsOnly); + } else { + // On older versions we just fallback to raw array filtering like SAVAGES + tests.valid = tests.valid.filter(test => + satisfiesAllDependencyConstraints(test.dependencyConstraints), + ); + tests.invalid = tests.invalid.filter(test => + satisfiesAllDependencyConstraints(test.dependencyConstraints), + ); + } + } + } + + super.run(name, rule, tests); + } +} + +/** + * Simple no-op tag to mark code samples as "should not format with prettier" + * for the internal/plugin-test-formatting lint rule + */ +function noFormat(strings: TemplateStringsArray, ...keys: string[]): string { + const lastIndex = strings.length - 1; + return ( + strings.slice(0, lastIndex).reduce((p, s, i) => p + s + keys[i], '') + + strings[lastIndex] + ); +} + +export { noFormat, RuleTester }; +export type { InvalidTestCase, ValidTestCase, RunTests }; diff --git a/packages/utils/src/eslint-utils/rule-tester/dependencyConstraints.ts b/packages/utils/src/eslint-utils/rule-tester/dependencyConstraints.ts new file mode 100644 index 00000000000..0bc1f5fc5ce --- /dev/null +++ b/packages/utils/src/eslint-utils/rule-tester/dependencyConstraints.ts @@ -0,0 +1,63 @@ +import * as semver from 'semver'; + +interface SemverVersionConstraint { + readonly range: string; + readonly options?: Parameters[2]; +} +type AtLeastVersionConstraint = + | `${number}` + | `${number}.${number}` + | `${number}.${number}.${number}` + | `${number}.${number}.${number}-${string}`; +type VersionConstraint = SemverVersionConstraint | AtLeastVersionConstraint; +interface DependencyConstraint { + /** + * Passing a string for the value is shorthand for a '>=' constraint + */ + readonly [packageName: string]: VersionConstraint; +} + +const BASE_SATISFIES_OPTIONS: semver.RangeOptions = { + includePrerelease: true, +}; + +function satisfiesDependencyConstraint( + packageName: string, + constraintIn: DependencyConstraint[string], +): boolean { + const constraint: SemverVersionConstraint = + typeof constraintIn === 'string' + ? { + range: `>=${constraintIn}`, + } + : constraintIn; + + return semver.satisfies( + (require(`${packageName}/package.json`) as { version: string }).version, + constraint.range, + typeof constraint.options === 'object' + ? { ...BASE_SATISFIES_OPTIONS, ...constraint.options } + : constraint.options, + ); +} + +function satisfiesAllDependencyConstraints( + dependencyConstraints: DependencyConstraint | undefined, +): boolean { + if (dependencyConstraints == null) { + return true; + } + + for (const [packageName, constraint] of Object.entries( + dependencyConstraints, + )) { + if (!satisfiesDependencyConstraint(packageName, constraint)) { + return false; + } + } + + return true; +} + +export { satisfiesAllDependencyConstraints }; +export type { DependencyConstraint }; diff --git a/packages/utils/src/ts-eslint/RuleTester.ts b/packages/utils/src/ts-eslint/RuleTester.ts index 15f3bd7e1f5..7002fc538cd 100644 --- a/packages/utils/src/ts-eslint/RuleTester.ts +++ b/packages/utils/src/ts-eslint/RuleTester.ts @@ -125,6 +125,11 @@ interface TestCaseError { // readonly message?: string | RegExp; } +type RuleTesterTestFrameworkFunction = ( + text: string, + callback: () => void, +) => void; + interface RunTests< TMessageIds extends string, TOptions extends Readonly, @@ -164,7 +169,15 @@ declare class RuleTesterBase { * @param text a string describing the rule * @param callback the test callback */ - static describe?: (text: string, callback: () => void) => void; + static describe?: RuleTesterTestFrameworkFunction; + + /** + * If you supply a value to this property, the rule tester will call this instead of using the version defined on + * the global namespace. + * @param text a string describing the test case + * @param callback the test callback + */ + static it?: RuleTesterTestFrameworkFunction; /** * If you supply a value to this property, the rule tester will call this instead of using the version defined on @@ -172,7 +185,7 @@ declare class RuleTesterBase { * @param text a string describing the test case * @param callback the test callback */ - static it?: (text: string, callback: () => void) => void; + static itOnly?: RuleTesterTestFrameworkFunction; /** * Define a rule for one particular run of tests. @@ -194,6 +207,7 @@ export { SuggestionOutput, RuleTester, RuleTesterConfig, + RuleTesterTestFrameworkFunction, RunTests, TestCaseError, ValidTestCase, diff --git a/packages/utils/tests/eslint-utils/rule-tester/RuleTester.test.ts b/packages/utils/tests/eslint-utils/rule-tester/RuleTester.test.ts new file mode 100644 index 00000000000..cab7666196a --- /dev/null +++ b/packages/utils/tests/eslint-utils/rule-tester/RuleTester.test.ts @@ -0,0 +1,719 @@ +import * as parser from '@typescript-eslint/parser'; +import eslintPackageJson from 'eslint/package.json'; + +import * as dependencyConstraintsModule from '../../../src/eslint-utils/rule-tester/dependencyConstraints'; +import { RuleTester } from '../../../src/eslint-utils/rule-tester/RuleTester'; +import type { RuleModule } from '../../../src/ts-eslint'; +import { RuleTester as BaseRuleTester } from '../../../src/ts-eslint'; + +// we can't spy on the exports of an ES module - so we instead have to mock the entire module +jest.mock('../../../src/eslint-utils/rule-tester/dependencyConstraints', () => { + const dependencyConstraints = jest.requireActual< + typeof dependencyConstraintsModule + >('../../../src/eslint-utils/rule-tester/dependencyConstraints'); + + return { + ...dependencyConstraints, + __esModule: true, + satisfiesAllDependencyConstraints: jest.fn( + dependencyConstraints.satisfiesAllDependencyConstraints, + ), + }; +}); +const satisfiesAllDependencyConstraintsMock = jest.mocked( + dependencyConstraintsModule.satisfiesAllDependencyConstraints, +); + +jest.mock( + 'totally-real-dependency/package.json', + () => ({ + version: '10.0.0', + }), + { + // this is not a real module that will exist + virtual: true, + }, +); +jest.mock( + 'totally-real-dependency-prerelease/package.json', + () => ({ + version: '10.0.0-rc.1', + }), + { + // this is not a real module that will exist + virtual: true, + }, +); + +// mock the eslint package.json so that we can manipulate the version in the test +jest.mock('eslint/package.json', () => { + return { + // make the version a getter so we can spy on it and change the return value + get version(): string { + // fix the version so the test is stable on older ESLint versions + return '8.0.0'; + }, + }; +}); + +jest.mock('@typescript-eslint/parser', () => { + return { + __esModule: true, + clearCaches: jest.fn(), + }; +}); + +/* eslint-disable jest/prefer-spy-on -- + need to specifically assign to the properties or else it will use the + global value */ +RuleTester.afterAll = jest.fn(); +RuleTester.describe = jest.fn(); +RuleTester.it = jest.fn(); +RuleTester.itOnly = jest.fn(); +/* eslint-enable jest/prefer-spy-on */ + +const mockedAfterAll = jest.mocked(RuleTester.afterAll); +const _mockedDescribe = jest.mocked(RuleTester.describe); +const _mockedIt = jest.mocked(RuleTester.it); +const _mockedItOnly = jest.mocked(RuleTester.itOnly); +const runSpy = jest.spyOn(BaseRuleTester.prototype, 'run'); +const mockedParserClearCaches = jest.mocked(parser.clearCaches); + +const eslintVersionSpy = jest.spyOn(eslintPackageJson, 'version', 'get'); + +beforeEach(() => { + jest.clearAllMocks(); +}); + +const NOOP_RULE: RuleModule<'error', []> = { + meta: { + messages: { + error: 'error', + }, + type: 'problem', + schema: {}, + }, + defaultOptions: [], + create() { + return {}; + }, +}; + +describe('RuleTester', () => { + it('automatically sets the filename for tests', () => { + const ruleTester = new RuleTester({ + parser: '@typescript-eslint/parser', + parserOptions: { + project: 'tsconfig.json', + tsconfigRootDir: '/some/path/that/totally/exists/', + }, + }); + + ruleTester.run('my-rule', NOOP_RULE, { + invalid: [ + { + code: 'invalid tests should work as well', + errors: [], + }, + ], + valid: [ + 'string based valid test', + { + code: 'object based valid test', + }, + { + code: "explicit filename shouldn't be overwritten", + filename: '/set/in/the/test.ts', + }, + { + code: 'jsx should have the correct filename', + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + }, + }, + { + code: 'type-aware parser options should override the constructor config', + parserOptions: { + project: 'tsconfig.test-specific.json', + tsconfigRootDir: '/set/in/the/test/', + }, + }, + ], + }); + + expect(runSpy.mock.lastCall?.[2]).toMatchInlineSnapshot(` + { + "invalid": [ + { + "code": "invalid tests should work as well", + "errors": [], + "filename": "/some/path/that/totally/exists/file.ts", + }, + ], + "valid": [ + { + "code": "string based valid test", + "filename": "/some/path/that/totally/exists/file.ts", + }, + { + "code": "object based valid test", + "filename": "/some/path/that/totally/exists/file.ts", + }, + { + "code": "explicit filename shouldn't be overwritten", + "filename": "/set/in/the/test.ts", + }, + { + "code": "jsx should have the correct filename", + "filename": "/some/path/that/totally/exists/file.tsx", + "parserOptions": { + "ecmaFeatures": { + "jsx": true, + }, + }, + }, + { + "code": "type-aware parser options should override the constructor config", + "filename": "/set/in/the/test/file.ts", + "parserOptions": { + "project": "tsconfig.test-specific.json", + "tsconfigRootDir": "/set/in/the/test/", + }, + }, + ], + } + `); + }); + + it('schedules the parser caches to be cleared afterAll', () => { + // it should schedule the afterAll + expect(mockedAfterAll).toHaveBeenCalledTimes(0); + const _ruleTester = new RuleTester({ + parser: '@typescript-eslint/parser', + parserOptions: { + project: 'tsconfig.json', + tsconfigRootDir: '/some/path/that/totally/exists/', + }, + }); + expect(mockedAfterAll).toHaveBeenCalledTimes(1); + + // the provided callback should clear the caches + const callback = mockedAfterAll.mock.calls[0][0]; + expect(typeof callback).toBe('function'); + expect(mockedParserClearCaches).not.toHaveBeenCalled(); + callback(); + expect(mockedParserClearCaches).toHaveBeenCalledTimes(1); + }); + + it('throws an error if you attempt to set the parser to ts-eslint at the test level', () => { + const ruleTester = new RuleTester({ + parser: '@typescript-eslint/parser', + parserOptions: { + project: 'tsconfig.json', + tsconfigRootDir: '/some/path/that/totally/exists/', + }, + }); + + expect(() => + ruleTester.run('my-rule', NOOP_RULE, { + valid: [ + { + code: 'object based valid test', + parser: '@typescript-eslint/parser', + }, + ], + + invalid: [], + }), + ).toThrowErrorMatchingInlineSnapshot( + `"Do not set the parser at the test level unless you want to use a parser other than @typescript-eslint/parser"`, + ); + }); + + describe('checks dependencies as specified', () => { + it('does not check dependencies if there are no dependency constraints', () => { + const ruleTester = new RuleTester({ + parser: '@typescript-eslint/parser', + }); + + ruleTester.run('my-rule', NOOP_RULE, { + valid: [ + 'const x = 1;', + { code: 'const x = 2;' }, + // empty object is ignored + { code: 'const x = 3;', dependencyConstraints: {} }, + ], + invalid: [], + }); + + expect(satisfiesAllDependencyConstraintsMock).not.toHaveBeenCalled(); + }); + + describe('does not check dependencies if is an "only" manually set', () => { + it('in the valid section', () => { + const ruleTester = new RuleTester({ + parser: '@typescript-eslint/parser', + }); + + ruleTester.run('my-rule', NOOP_RULE, { + valid: [ + 'const x = 1;', + { code: 'const x = 2;' }, + { + code: 'const x = 3;', + // eslint-disable-next-line eslint-plugin/no-only-tests -- intentional only for test purposes + only: true, + }, + { + code: 'const x = 4;', + dependencyConstraints: { + 'totally-real-dependency': '999', + }, + }, + ], + invalid: [], + }); + + expect(satisfiesAllDependencyConstraintsMock).not.toHaveBeenCalled(); + }); + + it('in the invalid section', () => { + const ruleTester = new RuleTester({ + parser: '@typescript-eslint/parser', + }); + + ruleTester.run('my-rule', NOOP_RULE, { + valid: [ + 'const x = 1;', + { code: 'const x = 2;' }, + { + code: 'const x = 4;', + dependencyConstraints: { + 'totally-real-dependency': '999', + }, + }, + ], + invalid: [ + { + code: 'const x = 3;', + errors: [], + // eslint-disable-next-line eslint-plugin/no-only-tests -- intentional only for test purposes + only: true, + }, + ], + }); + + expect(satisfiesAllDependencyConstraintsMock).not.toHaveBeenCalled(); + }); + }); + + it('correctly handles string-based at-least', () => { + const ruleTester = new RuleTester({ + parser: '@typescript-eslint/parser', + }); + + ruleTester.run('my-rule', NOOP_RULE, { + invalid: [ + { + code: 'failing - major', + errors: [], + dependencyConstraints: { + 'totally-real-dependency': '999', + }, + }, + { + code: 'failing - major.minor', + errors: [], + dependencyConstraints: { + 'totally-real-dependency': '999.0', + }, + }, + { + code: 'failing - major.minor.patch', + errors: [], + dependencyConstraints: { + 'totally-real-dependency': '999.0.0', + }, + }, + ], + valid: [ + { + code: 'passing - major', + dependencyConstraints: { + 'totally-real-dependency': '10', + }, + }, + { + code: 'passing - major.minor', + dependencyConstraints: { + 'totally-real-dependency': '10.0', + }, + }, + { + code: 'passing - major.minor.patch', + dependencyConstraints: { + 'totally-real-dependency': '10.0.0', + }, + }, + ], + }); + + expect(runSpy.mock.lastCall?.[2]).toMatchInlineSnapshot(` + { + "invalid": [ + { + "code": "failing - major", + "dependencyConstraints": { + "totally-real-dependency": "999", + }, + "errors": [], + "filename": "file.ts", + "only": false, + }, + { + "code": "failing - major.minor", + "dependencyConstraints": { + "totally-real-dependency": "999.0", + }, + "errors": [], + "filename": "file.ts", + "only": false, + }, + { + "code": "failing - major.minor.patch", + "dependencyConstraints": { + "totally-real-dependency": "999.0.0", + }, + "errors": [], + "filename": "file.ts", + "only": false, + }, + ], + "valid": [ + { + "code": "passing - major", + "dependencyConstraints": { + "totally-real-dependency": "10", + }, + "filename": "file.ts", + "only": true, + }, + { + "code": "passing - major.minor", + "dependencyConstraints": { + "totally-real-dependency": "10.0", + }, + "filename": "file.ts", + "only": true, + }, + { + "code": "passing - major.minor.patch", + "dependencyConstraints": { + "totally-real-dependency": "10.0.0", + }, + "filename": "file.ts", + "only": true, + }, + ], + } + `); + }); + + it('correctly handles object-based semver', () => { + const ruleTester = new RuleTester({ + parser: '@typescript-eslint/parser', + }); + + ruleTester.run('my-rule', NOOP_RULE, { + invalid: [ + { + code: 'failing - major', + errors: [], + dependencyConstraints: { + 'totally-real-dependency': { + range: '^999', + }, + }, + }, + { + code: 'failing - major.minor', + errors: [], + dependencyConstraints: { + 'totally-real-dependency': { + range: '>=999.0', + }, + }, + }, + + { + code: 'failing with options', + errors: [], + dependencyConstraints: { + 'totally-real-dependency-prerelease': { + range: '^10', + options: { + includePrerelease: false, + }, + }, + }, + }, + ], + valid: [ + { + code: 'passing - major', + dependencyConstraints: { + 'totally-real-dependency': { + range: '^10', + }, + }, + }, + { + code: 'passing - major.minor', + dependencyConstraints: { + 'totally-real-dependency': { + range: '<999', + }, + }, + }, + ], + }); + + expect(runSpy.mock.lastCall?.[2]).toMatchInlineSnapshot(` + { + "invalid": [ + { + "code": "failing - major", + "dependencyConstraints": { + "totally-real-dependency": { + "range": "^999", + }, + }, + "errors": [], + "filename": "file.ts", + "only": false, + }, + { + "code": "failing - major.minor", + "dependencyConstraints": { + "totally-real-dependency": { + "range": ">=999.0", + }, + }, + "errors": [], + "filename": "file.ts", + "only": false, + }, + { + "code": "failing with options", + "dependencyConstraints": { + "totally-real-dependency-prerelease": { + "options": { + "includePrerelease": false, + }, + "range": "^10", + }, + }, + "errors": [], + "filename": "file.ts", + "only": false, + }, + ], + "valid": [ + { + "code": "passing - major", + "dependencyConstraints": { + "totally-real-dependency": { + "range": "^10", + }, + }, + "filename": "file.ts", + "only": true, + }, + { + "code": "passing - major.minor", + "dependencyConstraints": { + "totally-real-dependency": { + "range": "<999", + }, + }, + "filename": "file.ts", + "only": true, + }, + ], + } + `); + }); + + it('tests without versions should always be run', () => { + const ruleTester = new RuleTester({ + parser: '@typescript-eslint/parser', + }); + + ruleTester.run('my-rule', NOOP_RULE, { + invalid: [ + { + code: 'no constraints is always run', + errors: [], + }, + { + code: 'empty object is always run', + errors: [], + dependencyConstraints: {}, + }, + { + code: 'failing constraint', + errors: [], + dependencyConstraints: { + 'totally-real-dependency': '99999', + }, + }, + ], + valid: [ + 'string based is always run', + { + code: 'no constraints is always run', + }, + { + code: 'empty object is always run', + dependencyConstraints: {}, + }, + { + code: 'passing constraint', + dependencyConstraints: { + 'totally-real-dependency': '10', + }, + }, + ], + }); + + expect(runSpy.mock.lastCall?.[2]).toMatchInlineSnapshot(` + { + "invalid": [ + { + "code": "no constraints is always run", + "errors": [], + "filename": "file.ts", + "only": true, + }, + { + "code": "empty object is always run", + "dependencyConstraints": {}, + "errors": [], + "filename": "file.ts", + "only": true, + }, + { + "code": "failing constraint", + "dependencyConstraints": { + "totally-real-dependency": "99999", + }, + "errors": [], + "filename": "file.ts", + "only": false, + }, + ], + "valid": [ + { + "code": "string based is always run", + "filename": "file.ts", + "only": true, + }, + { + "code": "no constraints is always run", + "filename": "file.ts", + "only": true, + }, + { + "code": "empty object is always run", + "dependencyConstraints": {}, + "filename": "file.ts", + "only": true, + }, + { + "code": "passing constraint", + "dependencyConstraints": { + "totally-real-dependency": "10", + }, + "filename": "file.ts", + "only": true, + }, + ], + } + `); + }); + + it('uses filter instead of "only" for old ESLint versions', () => { + // need it twice because ESLint internally fetches this value once :( + eslintVersionSpy.mockReturnValueOnce('1.0.0'); + eslintVersionSpy.mockReturnValueOnce('1.0.0'); + + const ruleTester = new RuleTester({ + parser: '@typescript-eslint/parser', + }); + + ruleTester.run('my-rule', NOOP_RULE, { + invalid: [ + { + code: 'failing', + errors: [], + dependencyConstraints: { + 'totally-real-dependency': '999', + }, + }, + { + code: 'passing', + errors: [], + dependencyConstraints: { + 'totally-real-dependency': '10', + }, + }, + ], + valid: [ + 'always passing string test', + { + code: 'failing', + dependencyConstraints: { + 'totally-real-dependency': '999', + }, + }, + { + code: 'passing', + dependencyConstraints: { + 'totally-real-dependency': '10', + }, + }, + ], + }); + + expect(runSpy.mock.lastCall?.[2]).toMatchInlineSnapshot(` + { + "invalid": [ + { + "code": "passing", + "dependencyConstraints": { + "totally-real-dependency": "10", + }, + "errors": [], + "filename": "file.ts", + }, + ], + "valid": [ + { + "code": "always passing string test", + "filename": "file.ts", + }, + { + "code": "passing", + "dependencyConstraints": { + "totally-real-dependency": "10", + }, + "filename": "file.ts", + }, + ], + } + `); + }); + }); +}); From e2d9d97900e02c8effc7d08ebb6a6269f955f617 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sun, 9 Oct 2022 13:41:26 -0400 Subject: [PATCH 027/193] chore(website): fix RuleTester alias in Rollup (#5772) --- packages/website-eslint/rollup.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/website-eslint/rollup.config.js b/packages/website-eslint/rollup.config.js index bc9143b27db..77c6d528003 100644 --- a/packages/website-eslint/rollup.config.js +++ b/packages/website-eslint/rollup.config.js @@ -27,7 +27,7 @@ module.exports = { match: [ /eslint\/lib\/(rule-tester|eslint|cli-engine|init)\//u, /eslint\/lib\/cli\.js$/, - /utils\/dist\/eslint-utils\/RuleTester\.js$/, + /utils\/dist\/eslint-utils\/rule-tester\/RuleTester\.js$/, /utils\/dist\/ts-eslint\/CLIEngine\.js$/, /utils\/dist\/ts-eslint\/RuleTester\.js$/, /typescript-estree\/dist\/create-program\/createWatchProgram\.js/, From 1b91951d7efa42ba706c134cf6dd20a879e4883f Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Mon, 10 Oct 2022 04:16:59 +1030 Subject: [PATCH 028/193] chore: deduplicate after renovate updates (#5770) --- .github/renovate.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/renovate.json b/.github/renovate.json index dcf569f2df6..180dd0004d6 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -15,5 +15,6 @@ } ], "matchUpdateTypes": ["minor", "patch", "pin", "digest"], - "stabilityDays": 3 + "stabilityDays": 3, + "postUpdateOptions": ["yarnDedupeHighest"] } From 77d2336594ca10b47c0f7978ae64f87d24a25d33 Mon Sep 17 00:00:00 2001 From: Dima Date: Sun, 9 Oct 2022 16:53:20 -0400 Subject: [PATCH 029/193] feat(website): store options TypeScript, Enable jsx and AST Viewer in browser's local storage (#5769) * feat(website): store options TypeScript, Enable jsx and AST Viewer in browser's local storage * Apply suggestions from code review * fix: hasOwnProperty Co-authored-by: Josh Goldberg --- .../src/components/hooks/useHashState.ts | 55 +++++++++++++++++++ .../src/components/lib/has-own-property.ts | 9 +++ 2 files changed, 64 insertions(+) create mode 100644 packages/website/src/components/lib/has-own-property.ts diff --git a/packages/website/src/components/hooks/useHashState.ts b/packages/website/src/components/hooks/useHashState.ts index fa94232e89e..21538642891 100644 --- a/packages/website/src/components/hooks/useHashState.ts +++ b/packages/website/src/components/hooks/useHashState.ts @@ -2,6 +2,7 @@ import { toJsonConfig } from '@site/src/components/config/utils'; import * as lz from 'lzstring.ts'; import { useCallback, useEffect, useState } from 'react'; +import { hasOwnProperty } from '../lib/has-own-property'; import { shallowEqual } from '../lib/shallowEqual'; import type { ConfigModel } from '../types'; @@ -114,16 +115,69 @@ const writeStateToUrl = (newState: ConfigModel): string => { return ''; }; +const retrieveStateFromLocalStorage = (): Partial | undefined => { + try { + const configString = window.localStorage.getItem('config'); + if (!configString) { + return undefined; + } + + const config: unknown = JSON.parse(configString); + if (typeof config !== 'object' || !config) { + return undefined; + } + + const state: Partial = {}; + if (hasOwnProperty('ts', config)) { + const ts = config.ts; + if (typeof ts === 'string') { + state.ts = ts; + } + } + if (hasOwnProperty('jsx', config)) { + const jsx = config.jsx; + if (typeof jsx === 'boolean') { + state.jsx = jsx; + } + } + if (hasOwnProperty('showAST', config)) { + const showAST = config.showAST; + if (typeof showAST === 'boolean') { + state.showAST = showAST; + } else if (typeof showAST === 'string') { + state.showAST = readShowAST(showAST); + } + } + + return state; + } catch (e) { + // eslint-disable-next-line no-console + console.warn(e); + } + return undefined; +}; + +const writeStateToLocalStorage = (newState: ConfigModel): void => { + const config: Partial = { + ts: newState.ts, + jsx: newState.jsx, + showAST: newState.showAST, + }; + window.localStorage.setItem('config', JSON.stringify(config)); +}; + function useHashState( initialState: ConfigModel, ): [ConfigModel, (cfg: Partial) => void] { const [hash, setHash] = useState(window.location.hash.slice(1)); const [state, setState] = useState(() => ({ ...initialState, + ...retrieveStateFromLocalStorage(), ...parseStateFromUrl(window.location.hash.slice(1)), })); const [tmpState, setTmpState] = useState>(() => ({ ...initialState, + ...retrieveStateFromLocalStorage(), ...parseStateFromUrl(window.location.hash.slice(1)), })); @@ -141,6 +195,7 @@ function useHashState( useEffect(() => { const newState = { ...state, ...tmpState }; if (!shallowEqual(newState, state)) { + writeStateToLocalStorage(newState); const newHash = writeStateToUrl(newState); setState(newState); setHash(newHash); diff --git a/packages/website/src/components/lib/has-own-property.ts b/packages/website/src/components/lib/has-own-property.ts new file mode 100644 index 00000000000..eca42ee42fc --- /dev/null +++ b/packages/website/src/components/lib/has-own-property.ts @@ -0,0 +1,9 @@ +export function hasOwnProperty< + Container extends object, + Key extends PropertyKey, +>( + property: Key, + object: Container, +): object is Container & Record { + return property in object; +} From 42289143a7144327728f8177abf57cd843964a11 Mon Sep 17 00:00:00 2001 From: RahulGautamSingh Date: Mon, 10 Oct 2022 07:29:56 +0530 Subject: [PATCH 030/193] chore: update renovate config (#5773) * fix: renovate.json * Update .github/renovate.json Co-authored-by: Josh Goldberg --- .github/renovate.json | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/.github/renovate.json b/.github/renovate.json index 180dd0004d6..afa6e92523a 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -2,19 +2,18 @@ "automerge": true, "enabledManagers": ["github-actions", "npm"], "ignoreDeps": ["cypress"], - "internalChecksFilters": "strict", + "internalChecksFilter": "strict", "labels": ["dependencies"], "packageRules": [ { - "addLabels": ["github-actions"], - "manager": "github-actions" + "matchManagers": ["npm"], + "addLabels": ["javascript"] }, { - "addLabels": ["javascript"], - "manager": "npm" + "matchManagers": ["github-actions"], + "addLabels": ["github-actions"] } ], - "matchUpdateTypes": ["minor", "patch", "pin", "digest"], - "stabilityDays": 3, - "postUpdateOptions": ["yarnDedupeHighest"] + "postUpdateOptions": ["yarnDedupeHighest"], + "stabilityDays": 3 } From aa4b5a74fb13f9ffacd90f9c10ffee71f6058cfc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 10 Oct 2022 05:51:27 -0700 Subject: [PATCH 031/193] chore(deps): update dependency cspell to v6 (#5790) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 805 ++++++++++++++++++--------------------------------- 2 files changed, 289 insertions(+), 518 deletions(-) diff --git a/package.json b/package.json index 67f0ae8ccec..ee6ef10712f 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ "console-fail-test": "^0.1.7", "cross-env": "^7.0.3", "cross-fetch": "^3.1.5", - "cspell": "^5.20.0", + "cspell": "^6.0.0", "downlevel-dts": ">=0.10.0", "enhanced-resolve": "^5.9.3", "eslint": "^8.15.0", diff --git a/yarn.lock b/yarn.lock index 1d92b449d6a..d4cd4689c5a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -153,17 +153,7 @@ dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" - integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== - -"@babel/compat-data@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.1.tgz#72d647b4ff6a4f82878d184613353af1dd0290f9" - integrity sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg== - -"@babel/compat-data@^7.19.3": +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.3": version "7.19.3" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.3.tgz#707b939793f867f5a73b2666e6d9a3396eb03151" integrity sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw== @@ -220,16 +210,7 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.0" -"@babel/generator@^7.12.5", "@babel/generator@^7.18.7", "@babel/generator@^7.19.0", "@babel/generator@^7.7.2": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.0.tgz#785596c06425e59334df2ccee63ab166b738419a" - integrity sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg== - dependencies: - "@babel/types" "^7.19.0" - "@jridgewell/gen-mapping" "^0.3.2" - jsesc "^2.5.1" - -"@babel/generator@^7.19.3": +"@babel/generator@^7.12.5", "@babel/generator@^7.18.7", "@babel/generator@^7.19.3", "@babel/generator@^7.7.2": version "7.19.3" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.3.tgz#d7f4d1300485b4547cb6f94b27d10d237b42bf59" integrity sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ== @@ -253,17 +234,7 @@ "@babel/helper-explode-assignable-expression" "^7.18.6" "@babel/types" "^7.18.9" -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz#7f630911d83b408b76fe584831c98e5395d7a17c" - integrity sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg== - dependencies: - "@babel/compat-data" "^7.19.1" - "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.21.3" - semver "^6.3.0" - -"@babel/helper-compilation-targets@^7.19.0", "@babel/helper-compilation-targets@^7.19.3": +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0", "@babel/helper-compilation-targets@^7.19.3": version "7.19.3" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz#a10a04588125675d7c7ae299af86fa1b2ee038ca" integrity sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg== @@ -286,15 +257,7 @@ "@babel/helper-replace-supers" "^7.18.9" "@babel/helper-split-export-declaration" "^7.18.6" -"@babel/helper-create-regexp-features-plugin@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz#3e35f4e04acbbf25f1b3534a657610a000543d3c" - integrity sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - regexpu-core "^5.1.0" - -"@babel/helper-create-regexp-features-plugin@^7.19.0": +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.19.0": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz#7976aca61c0984202baca73d84e2337a5424a41b" integrity sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw== @@ -302,19 +265,7 @@ "@babel/helper-annotate-as-pure" "^7.18.6" regexpu-core "^5.1.0" -"@babel/helper-define-polyfill-provider@^0.3.1", "@babel/helper-define-polyfill-provider@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz#bd10d0aca18e8ce012755395b05a79f45eca5073" - integrity sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg== - dependencies: - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-define-polyfill-provider@^0.3.3": +"@babel/helper-define-polyfill-provider@^0.3.1", "@babel/helper-define-polyfill-provider@^0.3.2", "@babel/helper-define-polyfill-provider@^0.3.3": version "0.3.3" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== @@ -338,15 +289,7 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-function-name@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz#940e6084a55dee867d33b4e487da2676365e86b0" - integrity sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A== - dependencies: - "@babel/template" "^7.18.6" - "@babel/types" "^7.18.9" - -"@babel/helper-function-name@^7.19.0": +"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== @@ -401,12 +344,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f" - integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== - -"@babel/helper-plugin-utils@^7.19.0": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz#4796bb14961521f0f8715990bee2fb6e51ce21bf" integrity sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw== @@ -496,12 +434,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@*", "@babel/parser@^7.1.0", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.18.0", "@babel/parser@^7.18.10", "@babel/parser@^7.18.8", "@babel/parser@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.1.tgz#6f6d6c2e621aad19a92544cc217ed13f1aac5b4c" - integrity sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A== - -"@babel/parser@^7.19.3": +"@babel/parser@*", "@babel/parser@^7.1.0", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.18.0", "@babel/parser@^7.18.10", "@babel/parser@^7.18.8", "@babel/parser@^7.19.3": version "7.19.3" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.3.tgz#8dd36d17c53ff347f9e55c328710321b49479a9a" integrity sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ== @@ -1251,23 +1184,7 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.12.9", "@babel/traverse@^7.18.8", "@babel/traverse@^7.18.9", "@babel/traverse@^7.19.0", "@babel/traverse@^7.7.2": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.1.tgz#0fafe100a8c2a603b4718b1d9bf2568d1d193347" - integrity sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.0" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.19.1" - "@babel/types" "^7.19.0" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.19.3": +"@babel/traverse@^7.12.9", "@babel/traverse@^7.18.8", "@babel/traverse@^7.18.9", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.3", "@babel/traverse@^7.7.2": version "7.19.3" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.3.tgz#3a3c5348d4988ba60884e8494b0592b2f15a04b4" integrity sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ== @@ -1312,112 +1229,124 @@ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== -"@cspell/cspell-bundled-dicts@^5.20.0": - version "5.20.0" - resolved "https://registry.yarnpkg.com/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-5.20.0.tgz#294106a2660baf825494535019a0d2230c3cc0c1" - integrity sha512-tCO32xVSuey4Tg8XuayBzcrCAfrAXL8J1PeYl26+/ZUl5zkAL4AuyL0Cf4e2PpeEomnUWP2y5noZLLbUeOIwnw== +"@cspell/cspell-bundled-dicts@^6.12.0": + version "6.12.0" + resolved "https://registry.yarnpkg.com/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-6.12.0.tgz#a5f2d380e505ba4857cb96af6960b55a12c7f5c2" + integrity sha512-myfsDwSJcAMjKbztKBG424wIp/YV9/lvxsgHFKxBGPi+nNx1p7TbOjAAO9EWk0mZVHyGKZwCFJS2ohkoqxJWoQ== dependencies: - "@cspell/dict-ada" "^2.0.0" + "@cspell/dict-ada" "^2.0.1" "@cspell/dict-aws" "^2.0.0" - "@cspell/dict-bash" "^2.0.2" - "@cspell/dict-companies" "^2.0.4" - "@cspell/dict-cpp" "^2.0.3" + "@cspell/dict-bash" "^2.0.4" + "@cspell/dict-companies" "^2.0.14" + "@cspell/dict-cpp" "^3.2.1" "@cspell/dict-cryptocurrencies" "^2.0.0" - "@cspell/dict-csharp" "^2.0.1" - "@cspell/dict-css" "^2.0.0" - "@cspell/dict-dart" "^1.1.0" + "@cspell/dict-csharp" "^3.0.1" + "@cspell/dict-css" "^2.1.0" + "@cspell/dict-dart" "^1.1.1" "@cspell/dict-django" "^2.0.0" + "@cspell/dict-docker" "^1.1.1" "@cspell/dict-dotnet" "^2.0.1" "@cspell/dict-elixir" "^2.0.1" "@cspell/dict-en-gb" "^1.1.33" - "@cspell/dict-en_us" "^2.2.2" - "@cspell/dict-filetypes" "^2.0.1" - "@cspell/dict-fonts" "^2.0.0" - "@cspell/dict-fullstack" "^2.0.5" + "@cspell/dict-en_us" "^2.3.3" + "@cspell/dict-filetypes" "^2.1.1" + "@cspell/dict-fonts" "^2.1.0" + "@cspell/dict-fullstack" "^2.0.6" "@cspell/dict-git" "^1.0.1" - "@cspell/dict-golang" "^2.0.0" - "@cspell/dict-haskell" "^2.0.0" - "@cspell/dict-html" "^3.0.1" - "@cspell/dict-html-symbol-entities" "^2.0.0" - "@cspell/dict-java" "^2.0.0" - "@cspell/dict-latex" "^2.0.0" - "@cspell/dict-lorem-ipsum" "^2.0.0" + "@cspell/dict-golang" "^3.0.1" + "@cspell/dict-haskell" "^2.0.1" + "@cspell/dict-html" "^3.3.2" + "@cspell/dict-html-symbol-entities" "^3.0.0" + "@cspell/dict-java" "^3.0.7" + "@cspell/dict-latex" "^2.0.9" + "@cspell/dict-lorem-ipsum" "^2.0.1" "@cspell/dict-lua" "^2.0.0" - "@cspell/dict-node" "^2.0.1" - "@cspell/dict-npm" "^2.0.3" + "@cspell/dict-node" "^3.0.1" + "@cspell/dict-npm" "^3.1.2" "@cspell/dict-php" "^2.0.0" "@cspell/dict-powershell" "^2.0.0" - "@cspell/dict-public-licenses" "^1.0.4" - "@cspell/dict-python" "^3.0.3" - "@cspell/dict-r" "^1.0.2" - "@cspell/dict-ruby" "^2.0.1" - "@cspell/dict-rust" "^2.0.0" + "@cspell/dict-public-licenses" "^1.0.6" + "@cspell/dict-python" "^3.0.6" + "@cspell/dict-r" "^1.0.3" + "@cspell/dict-ruby" "^2.0.2" + "@cspell/dict-rust" "^2.0.1" "@cspell/dict-scala" "^2.0.0" - "@cspell/dict-software-terms" "^2.1.5" - "@cspell/dict-swift" "^1.0.2" - "@cspell/dict-typescript" "^2.0.0" + "@cspell/dict-software-terms" "^2.2.11" + "@cspell/dict-sql" "^1.0.4" + "@cspell/dict-swift" "^1.0.3" + "@cspell/dict-typescript" "^2.0.2" "@cspell/dict-vue" "^2.0.2" -"@cspell/cspell-pipe@^5.20.0": - version "5.20.0" - resolved "https://registry.yarnpkg.com/@cspell/cspell-pipe/-/cspell-pipe-5.20.0.tgz#964aa560c89ecdf4eea9145700ccd6ab4c235ed8" - integrity sha512-dGHf4XZgPlGqviYTD+5ZwSk3hpiywsuuDqnoPo9SeQ1xPon7uFVKsMiAAzvhGAkkBaKIBNP/nwPU0feYvLoCJg== +"@cspell/cspell-pipe@^6.12.0": + version "6.12.0" + resolved "https://registry.yarnpkg.com/@cspell/cspell-pipe/-/cspell-pipe-6.12.0.tgz#838620484f7105dc8ae96ad4cd59cb7c508a6260" + integrity sha512-Nkm+tIJ5k+jZPovZCdmZhrWrwRFwnDq+7yCxhov0C7UX3hsSNtTJIpFuaCNEQJ+Whpvxdh1YKflvHiHYygEgTg== -"@cspell/cspell-types@^5.20.0": - version "5.20.0" - resolved "https://registry.yarnpkg.com/@cspell/cspell-types/-/cspell-types-5.20.0.tgz#4c9a47249e1ad534938f2f35fbba1221e7800570" - integrity sha512-p06/HAKgalqyGHfnowJvjO3SQHxuOzKdiJTUlUi8x1CrEk7PmZEHuORlt9tVVZ46Xf2qY9+QLeTtattlWPJ39A== +"@cspell/cspell-service-bus@^6.12.0": + version "6.12.0" + resolved "https://registry.yarnpkg.com/@cspell/cspell-service-bus/-/cspell-service-bus-6.12.0.tgz#f6121c5461d5f8ed00501496a59d3957d7a36108" + integrity sha512-GgvciSeMUekl8z8vP8//cs5/qRQJSLz9IVREf6fxQW4upjw6zXZ1KonwPqOF5uLocIMAr8eCdrJzHKuKvigJIA== -"@cspell/dict-ada@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@cspell/dict-ada/-/dict-ada-2.0.0.tgz#5d31967cbd7a0d12f4b4de3fd5b09e59239cf78b" - integrity sha512-4gfJEYXVwz6IN2LBaT6QoUV4pqaR35i0z0u9O684vLuVczvNJIHa4vNaSEFBr9d6xxncUyqstgP9P73ajJjh9A== +"@cspell/cspell-types@^6.12.0": + version "6.12.0" + resolved "https://registry.yarnpkg.com/@cspell/cspell-types/-/cspell-types-6.12.0.tgz#ab1bbb305f40f6fe1ff1eae9a29a669beb681389" + integrity sha512-BcZTt05fNy9SGXfbPgUyxS4FfIaUpcVq8IOJ0noN+jsKsmlbssOUgJOB2ApN1h66FfWcKuFy/uNrjfcrQ7PTqg== + +"@cspell/dict-ada@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@cspell/dict-ada/-/dict-ada-2.0.1.tgz#662e1f459531298e7c3f1ff7e63fd36c2b311d5b" + integrity sha512-vopTJ1oHrrFYV5GU55Sr+AzItR78Uj5YbCaspYABmYKlq4NRrcUAUsr4bWgymDcspMIHO7e7IFcj48OKs1fndA== "@cspell/dict-aws@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@cspell/dict-aws/-/dict-aws-2.0.0.tgz#9af72af4e59e96029dd4335271d87784843cb7dd" integrity sha512-NKz7pDZ7pwj/b33i3f4WLpC1rOOUMmENwYgftxU+giU2YBeKM2wZbMTSEIzsrel56r0UlQYmdIVlP/B4nnVaoQ== -"@cspell/dict-bash@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@cspell/dict-bash/-/dict-bash-2.0.2.tgz#8bc3e0a6c1b9c0df1bd9a1b7694c58d9843fd16b" - integrity sha512-ASIgI/LmV2TYrD4mtk+gm4XmUSTRomOyRt7NDWyBpEww/AeawC2O2NH6FosyUT6dUU3GaXt2wgJRN7R78n1SGg== - -"@cspell/dict-companies@^2.0.4": +"@cspell/dict-bash@^2.0.4": version "2.0.4" - resolved "https://registry.yarnpkg.com/@cspell/dict-companies/-/dict-companies-2.0.4.tgz#2ba11418478d99d67a96004ea782a47a42c501a3" - integrity sha512-nLNVddo+iu4q/Mu03nkVTMnSPxBkoLyZ0MgpHJZWCqxVATbBkzoZNNNjsTkJhvkbrUIWydf8YW4U4wYY+kyh7Q== + resolved "https://registry.yarnpkg.com/@cspell/dict-bash/-/dict-bash-2.0.4.tgz#93f0ff159d96b8823fed9282f803e4f3447af33d" + integrity sha512-uK/ehmp5LYrmRH2Gv3nbvdPswpkybJUn34WYKLpeuYHQktmi+pOI1A9uPdBPnSbMDffSvwQlQohIyKawz+X8Ag== -"@cspell/dict-cpp@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@cspell/dict-cpp/-/dict-cpp-2.0.3.tgz#551bec166c4520f7ba36f8d263fb885d19f98db0" - integrity sha512-aWRvI3CQW2M3XeJpDVffItw/9n4hxsN5EPwyBa6Po6EnCxZZZLOqpieZk4JNz4pH0/xbnOX+sMMuSeKWr71r/w== +"@cspell/dict-companies@^2.0.14": + version "2.0.14" + resolved "https://registry.yarnpkg.com/@cspell/dict-companies/-/dict-companies-2.0.14.tgz#2b31941107e3aa41d3d122d40c3f3daae9eaa7f2" + integrity sha512-Sq1X29Z05OZ/UNqTwVhf3/WaqvJQy4/S6gS8qYI5AQRX45gVe8CPhNBLmZOTC6z8m716bfQCxa5rRT9YNSdTZg== + +"@cspell/dict-cpp@^3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@cspell/dict-cpp/-/dict-cpp-3.2.1.tgz#2c8c232c53c22c69b73802a26480203e1d9b6fbf" + integrity sha512-XcmzrKIghqFfrYLLaHtWKOp9rupiuGdc5ODONk+emsq0W5CIc3Abn27IQHwUzxzF+Cm5IfKAIJ5Kpe6hkzm0HQ== "@cspell/dict-cryptocurrencies@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@cspell/dict-cryptocurrencies/-/dict-cryptocurrencies-2.0.0.tgz#a74eecb42a46a96d08b6613fdb5c554529d3afff" integrity sha512-nREysmmfOp7L2YCRAUufQahwD5/Punzb5AZ6eyg4zUamdRWHgBFphb5/9h2flt1vgdUfhc6hZcML21Ci7iXjaA== -"@cspell/dict-csharp@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@cspell/dict-csharp/-/dict-csharp-2.0.1.tgz#86ec4fa42ba9a4cc57df28ec7a335b56bf751c5b" - integrity sha512-ZzAr+WRP2FUtXHZtfhe8f3j9vPjH+5i44Hcr5JqbWxmqciGoTbWBPQXwu9y+J4mbdC69HSWRrVGkNJ8rQk8pSw== +"@cspell/dict-csharp@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@cspell/dict-csharp/-/dict-csharp-3.0.1.tgz#94a673e02bb7cc03c25bc699bc1b5bd786c2c5fd" + integrity sha512-xkfQu03F388w4sdVQSSjrVMkxAxpTYB2yW7nw0XYtTjl3L/jBgvTr/j1BTjdFbQhdNf10Lg0Ak1kXOjmHodVqA== -"@cspell/dict-css@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@cspell/dict-css/-/dict-css-2.0.0.tgz#91dca013f16b51144eaea160e144b830f2dad027" - integrity sha512-MrFyswFHnPh4H0u6IlV4eHy+ZCUrrHzeL161LyTOqCvaKpbZavMgNYXzZqTF9xafO0iLgwKrl+Gkclu1KVBg0Q== +"@cspell/dict-css@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@cspell/dict-css/-/dict-css-2.1.0.tgz#799708a8e59cb58077b21b1f37aacdc75c240efb" + integrity sha512-glASAELcGhh4Ru0rTQ4G9mTQxSyPwsZOON/5BYflB6Kks8YC8nUvKrtMCoo5W7CPKPfSEa8zUNctFQ1+IUYDHA== -"@cspell/dict-dart@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@cspell/dict-dart/-/dict-dart-1.1.0.tgz#d79689493debdad231efe495bd1460bff1d2f577" - integrity sha512-bBqZINm+RVjMgUrAhRzv/xx3jc3dkIqO0higPbsK+63IAtMNY3EiQnEO4eapbU+qAhyvICY9hZQZXy5Ux4p+Pw== +"@cspell/dict-dart@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@cspell/dict-dart/-/dict-dart-1.1.1.tgz#d4da9cf72e5df369b6d9ebe588f9c1474adf3556" + integrity sha512-XBOCpezXrgFN18kGEwqMpTUGZdw4BjCoJrNOo6qBdcdZySCrEHLwELraLOkcSba2kM4stmTp0t59FkwtP8TKOA== "@cspell/dict-django@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@cspell/dict-django/-/dict-django-2.0.0.tgz#a5f5f693a686e5873f9dfb547ee3b3142ef760b1" integrity sha512-GkJdJv6cmzrKcmq2/oxTXjKF5uv71r4eTqnFmgPbNBW1t+G4VYpzOf0QrVQrhx2RC4DdW5XfcTf+iS0FxHOTmw== +"@cspell/dict-docker@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@cspell/dict-docker/-/dict-docker-1.1.1.tgz#f9cc1c732a9be2f31a5a4aa079d045798b97b01d" + integrity sha512-UEYoeRDm7oUN9yz1mYSozz6D4+2N14S/cd2Re9et6Xzq6yi62s4ky3knF92Of2weelADjnN41UA22VBhRAf7Sw== + "@cspell/dict-dotnet@^2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@cspell/dict-dotnet/-/dict-dotnet-2.0.1.tgz#8ef56df758b63f0a2ba4d8681a427a6861ed34d5" @@ -1433,80 +1362,80 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-en-gb/-/dict-en-gb-1.1.33.tgz#7f1fd90fc364a5cb77111b5438fc9fcf9cc6da0e" integrity sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g== -"@cspell/dict-en_us@^2.2.2": - version "2.2.4" - resolved "https://registry.yarnpkg.com/@cspell/dict-en_us/-/dict-en_us-2.2.4.tgz#20abce3eabe048aa5d858de7b9475c6c290cdc1e" - integrity sha512-gblsvIPLNAK+pRR/Mn2m2kRQLVFeoORQJeaZKlGHWckA3s0iuTN49hSSTbK66k3aWlzhirtSoux7IdvT2RpgnQ== +"@cspell/dict-en_us@^2.3.3": + version "2.3.3" + resolved "https://registry.yarnpkg.com/@cspell/dict-en_us/-/dict-en_us-2.3.3.tgz#4b20b5aa91151a4fb6f40425436b3b4c54ddaef4" + integrity sha512-csyKeaNktfpvMkmE2GOPTwsrQm3wWhLKVaDRaGU0qTcIjDiCvqv/iYgrVrKRkoddA3kdNTZ8YNCcix7lb6VkOg== -"@cspell/dict-filetypes@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@cspell/dict-filetypes/-/dict-filetypes-2.0.1.tgz#a77467dad8fee31c28d623f85a15ce6fca3e2fdc" - integrity sha512-bQ7K3U/3hKO2lpQjObf0veNP/n50qk5CVezSwApMBckf/sAVvDTR1RGAvYdr+vdQnkdQrk6wYmhbshXi0sLDVg== +"@cspell/dict-filetypes@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@cspell/dict-filetypes/-/dict-filetypes-2.1.1.tgz#f778ad814ff6d7050f81bbd7c856b6f555ba6bae" + integrity sha512-Oo0/mUbFHzsaATqRLdkV1RMoYns3aGzeKFIpVJg415GYtJ8EABXtEArYTXeMwlboyGTPvEk+PR2hBSTSfQTqmg== -"@cspell/dict-fonts@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@cspell/dict-fonts/-/dict-fonts-2.0.0.tgz#76e7781b44cdda6933144e15cba80e978c29bd15" - integrity sha512-AgkTalphfDPtKFPYmEExDcj8rRCh86xlOSXco8tehOEkYVYbksOk9XH0YVH34RFpy93YBd2nnVGLgyGVwagcPw== +"@cspell/dict-fonts@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@cspell/dict-fonts/-/dict-fonts-2.1.0.tgz#89b32b41bc66a38b6fbf9c970540e2f7ebd6e8b1" + integrity sha512-hk7xsbfWEUhc136Xj7I2TD7ouKAfWwzCVAQaHBxcVXAsVxu7bDOGj4FvE2jBzlkSUY8A9Ww8qS0GOFvowJshVg== -"@cspell/dict-fullstack@^2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@cspell/dict-fullstack/-/dict-fullstack-2.0.5.tgz#ffe416f90b0b30f1586e75432c0bc09b4c1faf96" - integrity sha512-jnLnHZ4HcCFNUfN+q7m0CUDtISNKat0Jahe1GgnAdEwzcozqKBhlGAjV7mQWPtKpqfJU61JakDnrxzqefAfZHw== +"@cspell/dict-fullstack@^2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@cspell/dict-fullstack/-/dict-fullstack-2.0.6.tgz#0bec93306cba070ed6aa0b619d8080c86310ab5d" + integrity sha512-R2E2xvbHvvRwwurxfpBJDRIJjXBMfEPF5WNV3LTOEMRqkZtoYCeJK9aqc8LHlmJMtAbnN1cx//BCDIyTJ0rO0A== "@cspell/dict-git@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@cspell/dict-git/-/dict-git-1.0.1.tgz#9de5ab2532abcdc8b10bd83ccb1f5e5dae0b6067" integrity sha512-Rk+eTof/9inF11lvxmkCRK+gODatA3qai8kSASv6OG/JfPvpj7fTHErx/rdgPw/LOTDUafnoTjTYmj7B2MOQXg== -"@cspell/dict-golang@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@cspell/dict-golang/-/dict-golang-2.0.0.tgz#a392533780c9fc3dc959f1358d09f7a6c6d82656" - integrity sha512-rUeZJR/S/ZjAsOURtxsAO6xDQhL0IzF458ScahaeOqe0zVL3tx7tCLikCgT92NWPs3BNqmsZGqYSDbn/1KsSIA== +"@cspell/dict-golang@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@cspell/dict-golang/-/dict-golang-3.0.1.tgz#acde95eb340c4512d132586a8326b1b3d971c0f7" + integrity sha512-0KNfXTbxHW2l8iVjxeOf+KFv9Qrw3z5cyKnkuYJWlBTSB5KcUBfeKCb4fsds26VdANqiy6U91b4gDx5kNEmBjQ== -"@cspell/dict-haskell@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@cspell/dict-haskell/-/dict-haskell-2.0.0.tgz#9e7e58eba2b4633221650dcdcc43f73588b48119" - integrity sha512-cjX1Br+gSWqtcmJD/IMHz1UoP3pUaKIIKy/JfhEs7ANtRt6hhfEKe9dl2kQzDkkKt4pXol+YgdYxL/sVc/nLgQ== +"@cspell/dict-haskell@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@cspell/dict-haskell/-/dict-haskell-2.0.1.tgz#941aa5eed0eb5e327e1a2b04dcad4f0e60f663c0" + integrity sha512-ooA23qIG7InOOxlLm67CNH5O2J85QsPHEAzEU9KEqVfYG5ovFs5tx6n9pHekDVk3MpQULpqfNUYDR0KigPLg5g== -"@cspell/dict-html-symbol-entities@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-2.0.0.tgz#a25d39e62bd2dd7191ca5612714aa0a1b90ca10f" - integrity sha512-71S5wGCe7dq6C+zGDwsEAe5msub/irrLi6SExeG11a/EkpA3RKAEheDGPk0hOY4+vOcIFHaApxOjLTtgQfYWfA== +"@cspell/dict-html-symbol-entities@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-3.0.0.tgz#55d5d96c37ecbde00492c4238e229908eea9cedb" + integrity sha512-04K7cPTcbYXmHICfiob4gZA1yaj4hpfM+Nl5WIJ1EAZsSGHdqmGEF28GuCjyQ8ZeKiJAsPt/vXuLBbjxkHqZyQ== -"@cspell/dict-html@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@cspell/dict-html/-/dict-html-3.0.1.tgz#d5d10ef9b62361d8250cf9fe8564606993faa9df" - integrity sha512-sbuFd+nSjgbrGf5eYwSddFhm1eLLePKWyH6Zn8Zb0OODrBK5e4vGn1/scI/MOH5a2IvNs8W9wp84uMBFJcQZtw== +"@cspell/dict-html@^3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@cspell/dict-html/-/dict-html-3.3.2.tgz#5b5fa6b2b8a1d51f8f735dc3fd5310ff287c29bf" + integrity sha512-cM5pQSEiqjrdk6cRFLrlLdWNT/J8399f/A6DjwjfYhHrGy0e/Rsjv76HZT0GlE1OqMoq9eG9jdQsfoYYgWTIpQ== -"@cspell/dict-java@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@cspell/dict-java/-/dict-java-2.0.0.tgz#76252cee8f04e099ac6dae0f45f22257088060a7" - integrity sha512-9f5LDATlAiXRGqxLxgqbOLlQxuMW2zcN7tBgxwtN+4u90vM03ZUOR/gKIuDV/y0ZuAiWBIjA73cjk8DJ13Q1eA== +"@cspell/dict-java@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@cspell/dict-java/-/dict-java-3.0.7.tgz#609a640f6e6816de0e2ac1f1e2ef2c9939970601" + integrity sha512-IL7ubsRvKX6dZSx++TplJCfhiS7kkEGpbTPG0gMEP50DTNAVM4icZS8zmer2UBCU5PTwF85abJjdX7mRADWKVg== -"@cspell/dict-latex@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@cspell/dict-latex/-/dict-latex-2.0.0.tgz#0b13b6522d305f5842833ec0179078d900714f65" - integrity sha512-H6RRwbHhQ9ARoO1R57SDqB+q/J5jUDdVnkdfukJkA+HNlJBhCcDuzGOIJqr+GBkJYDkF3obZ3LEOk2lUfT+Eyg== +"@cspell/dict-latex@^2.0.9": + version "2.0.9" + resolved "https://registry.yarnpkg.com/@cspell/dict-latex/-/dict-latex-2.0.9.tgz#ba376b2ae8c4b9fad14e8ed293df027a8b08348f" + integrity sha512-d1kTK6dJb5z6UcfASQWjqQlsjZvnoVOvMWxYtLpGksYf6gM4IgqoPVNMLYYK6xBS4T/uAnLIj975A6YuAeyZpg== -"@cspell/dict-lorem-ipsum@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@cspell/dict-lorem-ipsum/-/dict-lorem-ipsum-2.0.0.tgz#47f2a9ec24808cdf8417457ae8f5a588f33c338c" - integrity sha512-jKogAKtqvgPMleL6usyj3rZ0m8sVUR6drrD+wMnWSfdx1BmUyTsYiuh/mPEfLAebaYHELWSLQG3rDZRvV9Riqg== +"@cspell/dict-lorem-ipsum@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@cspell/dict-lorem-ipsum/-/dict-lorem-ipsum-2.0.1.tgz#694ffe36ea9cdb7bce35066a850f9d4e4811c5d9" + integrity sha512-s7Ft8UiloUJwgz4z8uLeFvCkeTcZ43HQl7mSAlZd76eW+keLSsdeGmLDx2zaciqo+MftPGyzygVCwaJjTGxiew== "@cspell/dict-lua@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@cspell/dict-lua/-/dict-lua-2.0.0.tgz#b96d0363a28ac7e0483ad03edb21705c4f951459" integrity sha512-7WUEBEspSKtsq104WdIys1+DLqAxpJPzw74Py1TuE3fI5GvlzeSZkRFP2ya54GB2lCO4C3mq4M8EnitpibVDfw== -"@cspell/dict-node@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@cspell/dict-node/-/dict-node-2.0.1.tgz#eda891ebdbce83f20829cb6c85cd209da8cf5cdd" - integrity sha512-ztBWzhvI+YaMehICSJ65cohhjQqoztxf9vrS3YckOiVGBFvUMaFVNdX9klQkvrLcS/O4+2PzoGeIEkmf99amLA== +"@cspell/dict-node@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@cspell/dict-node/-/dict-node-3.0.1.tgz#a6ee043f5dc044391e5ecc4f293497f9d96d48e1" + integrity sha512-sK2cpuV0EAc43Amd5xeQXkI9MeRTECMw+yjap06gKSModbgI7BqJUHeKZed+0Hii+LpaJ4TYpLGiRVsO+qSk0w== -"@cspell/dict-npm@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@cspell/dict-npm/-/dict-npm-2.0.3.tgz#044d71c36cf322f2816a77978bfd5dc21698667c" - integrity sha512-K/rnVhmHkR3jfdo7o8P2NDKyMcpVe9pUBiFDY1y2C0YqZXIxCz1f5hObm/hxyO+Vbn5VLU3TKU5fZ5z3LspXOg== +"@cspell/dict-npm@^3.1.2": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@cspell/dict-npm/-/dict-npm-3.1.3.tgz#dfba43f30cd9e9945f1a9d9fbe0446feab2669f5" + integrity sha512-xnGp+TMpArdMLBUSG+ZrbEuhvY016rb76Yh35/OPDDEEz4ulENxLSZJxtN2/A0tZ9FJngDNSdFh7eJsOFmciZQ== "@cspell/dict-php@^2.0.0": version "2.0.0" @@ -1518,50 +1447,55 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-powershell/-/dict-powershell-2.0.0.tgz#6e8ae7381b1928dfaf8f5a625f8fae6e8d93f224" integrity sha512-6uvEhLiGmG3u9TFkM1TYcky6aL9Yk7Sk3KJwoTYBaQJY2KqrprgyQtW6yxIw9oU52VRHlq3KKvSAA9Q26+SIkQ== -"@cspell/dict-public-licenses@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@cspell/dict-public-licenses/-/dict-public-licenses-1.0.4.tgz#13c2af357e7139bf3896eba58e0feb9f51053b3f" - integrity sha512-h4xULfVEDUeWyvp1OO19pcGDqWcBEQ7WGMp3QBHyYpjsamlzsyYYjCRSY2ZvpM7wruDmywSRFmRHJ/+uNFT7nA== +"@cspell/dict-public-licenses@^1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@cspell/dict-public-licenses/-/dict-public-licenses-1.0.6.tgz#e296be04dfa8db9596ea1874d26dfd0ec3d62e80" + integrity sha512-Z9IUFPkkOpOsEdgPUfQOJNQ+qU6+iBAZWS/CR5sUqTX+s5VkPNVwQyVC2kdmgmE2U5qwzAPewG6nVKr2MVogwg== -"@cspell/dict-python@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@cspell/dict-python/-/dict-python-3.0.3.tgz#6c55ee768ffe93a828e607bcab437ccf78c494c6" - integrity sha512-Mt415KczTfqmLvKTgeV8FzMzpms9baTS0P5HfULTW+UxQtZeroviYyRM9TJPJKJSoI0ISu0GiIDgmYlV7+YPog== +"@cspell/dict-python@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@cspell/dict-python/-/dict-python-3.0.6.tgz#884f398e053a5d500adc9de47d1f1049a7afcc9c" + integrity sha512-tzxJ4sd9ZGhAUKg/WJJpQGDNtoHvM8Wn+iS2+PnQj2/LTHBW4mnaCogsGsBtYu8C4b2+BEQs+tc5808AeEfLug== -"@cspell/dict-r@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@cspell/dict-r/-/dict-r-1.0.2.tgz#4f21b240427e9bbaab8f82e0e20122d6b3cf7cee" - integrity sha512-Rp3d4sgD6izW9TW5yVI3D//3HTl9oOGBuzTvXRdoHksVPRvzIu2liVhj8MnQ3XIRe5Kc6IhLBAm6izuV2BpGwQ== +"@cspell/dict-r@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@cspell/dict-r/-/dict-r-1.0.3.tgz#1480016695ee119cf63fa8c71b161d033bbb9029" + integrity sha512-u2qeXd4cx/TvTVcmkvA+sK6f4K1uMAMO6QPMSr1pSvqGElPRP1mIBXmuiSuBzLO3LbsJuUEHw5Cp3/bxIB6rNA== -"@cspell/dict-ruby@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@cspell/dict-ruby/-/dict-ruby-2.0.1.tgz#1cbd4d8803428bd421a5562b2d2bb4b3bae80bce" - integrity sha512-qGqhYfFeoBOashv/l0Kj5o4ilyvfq0s+t+r32juPOkOnbHz+hzxnJo2tMMg/L/UdjVV7Y8ovg4LDBC/seVrMYQ== +"@cspell/dict-ruby@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@cspell/dict-ruby/-/dict-ruby-2.0.2.tgz#a0e9737832047e146e113f72268e198defda4e71" + integrity sha512-vVnUpSmGDbPjs7MHq741DsLHhQcoA4CnUCM9wsTorQ9AQRDAkDTbK/LcY8nM19MoXCb3eF8PFku5Jq+gqH0u7w== -"@cspell/dict-rust@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@cspell/dict-rust/-/dict-rust-2.0.0.tgz#89acc6c251164b09c424d23abb5ee560a4484ee6" - integrity sha512-EWlQivTKXMU3TTcq/Pi6KPKTQADknasQ700UrxRPzxhwQ4sKVZ88GDu6VZJlsbFUz8Vko289KS6wjiox/7WpmQ== +"@cspell/dict-rust@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@cspell/dict-rust/-/dict-rust-2.0.1.tgz#2923392a41784e76ee00b9456d581f86a83097fb" + integrity sha512-ATDpIh0VWpQdUIZa8zqqJY4wQz3q00BTXlQCodeOmObYSb23+L6KWWzJ8mKLgpbc1lqTkogWrqxiCxlrCmqNmg== "@cspell/dict-scala@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@cspell/dict-scala/-/dict-scala-2.0.0.tgz#b8098103bb03a13406c1c79f1769052353aafac4" integrity sha512-MUwA2YKpqaQOSR4V1/CVGRNk8Ii5kf6I8Ch+4/BhRZRQXuwWbi21rDRYWPqdQWps7VNzAbbMA+PQDWsD5YY38g== -"@cspell/dict-software-terms@^2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@cspell/dict-software-terms/-/dict-software-terms-2.1.5.tgz#4e2aa08839f37aa933cf1ac5196dbc7005bc8d3e" - integrity sha512-ylXWCsOJlYuucaMoHaHQLVaB8HeDrsCZ42a3jrTC/i6F/SF9I+4tBg4lMivd4w31bXBgILdbIvVHtWzJf+5m0A== +"@cspell/dict-software-terms@^2.2.11": + version "2.2.12" + resolved "https://registry.yarnpkg.com/@cspell/dict-software-terms/-/dict-software-terms-2.2.12.tgz#2cdf890409311144c2b0f67d915167e851832b2d" + integrity sha512-wVVy4on8Uq5VAWm3cqrrhewTRRbpmNxtmTURGQ5rT6FqUtJvZ7W2Pj3QquzXsA9zSFZhGFQR3U7IdFesET9yAg== -"@cspell/dict-swift@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@cspell/dict-swift/-/dict-swift-1.0.2.tgz#8d8f7f7a5c8d7cbcdb46fcf4526938ce9cb687a4" - integrity sha512-IrMcRO7AYB2qU5cj4ttZyEbd04DRNOG6Iha106qGGmn4P096m+Y7lOnSLJx/rZbD/cAT3Z/7i465Lr1J93j7yg== +"@cspell/dict-sql@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@cspell/dict-sql/-/dict-sql-1.0.4.tgz#109fb8b65ab125af1b4d66654626592fd1f23330" + integrity sha512-+9nMcwsCzdYH0tyv2LeuVvQ+DdecS2C1N+hw6sl0FTHWI5GwULHAGW840RBwcKw0s+dl7sc0WpZhS1EW7b0pXg== -"@cspell/dict-typescript@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@cspell/dict-typescript/-/dict-typescript-2.0.0.tgz#c1ce88dcb1b480623eb537670d11844047539a53" - integrity sha512-WFBahxsnD2y4Os14tE5Zxh31Ggn4DzGOAu3UoxYl1lLLxaszx4RH7LmAeFuznySboiaBeRBbpfJOjQA796O6VQ== +"@cspell/dict-swift@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@cspell/dict-swift/-/dict-swift-1.0.3.tgz#b819da0ca2c5dfecdd61bec55181636a06d23677" + integrity sha512-yOBLSaRD0AnkkkndJ8PuB82Evp6lA2xItf2AWsnPfCCgxp5Ojk6uUBC/WQBSkzkCAOGbXyHsu9D97tsOx2c6cw== + +"@cspell/dict-typescript@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@cspell/dict-typescript/-/dict-typescript-2.0.2.tgz#2cf4aa7a4e9c0a336fe442d8734a6f6dee273611" + integrity sha512-OIoSJsCw9WHX4eDikoF5/0QbptMPZjElOcMYdYCyV03nqV5n4ot72ysTexW95yW4+fQU6uDPNQvnrUnhXXEkTA== "@cspell/dict-vue@^2.0.2": version "2.0.2" @@ -2632,15 +2566,7 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/trace-mapping@^0.3.0", "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.14" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" - integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/trace-mapping@^0.3.15": +"@jridgewell/trace-mapping@^0.3.0", "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.9": version "0.3.15" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz#aba35c48a38d3fd84b37e66c9c0423f9744f9774" integrity sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g== @@ -3570,28 +3496,7 @@ dependencies: infer-owner "^1.0.4" -"@npmcli/run-script@^3.0.1": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-3.0.2.tgz#3e9116d831f4539bf292d18b015977a6118997ee" - integrity sha512-vdjD/PMBl+OX9j9C9irx5sCCIKfp2PWkpPNH9zxvlJAfSZ3Qp5aU412v+O3PFJl3R1PFNwuyChCqHg4ma6ci2Q== - dependencies: - "@npmcli/node-gyp" "^2.0.0" - "@npmcli/promise-spawn" "^3.0.0" - node-gyp "^9.0.0" - read-package-json-fast "^2.0.3" - -"@npmcli/run-script@^4.1.0": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-4.1.7.tgz#b1a2f57568eb738e45e9ea3123fb054b400a86f7" - integrity sha512-WXr/MyM4tpKA4BotB81NccGAv8B48lNH0gRoILucbcAhTQXLCoi6HflMV3KdXubIqvP9SuLsFn68Z7r4jl+ppw== - dependencies: - "@npmcli/node-gyp" "^2.0.0" - "@npmcli/promise-spawn" "^3.0.0" - node-gyp "^9.0.0" - read-package-json-fast "^2.0.3" - which "^2.0.2" - -"@npmcli/run-script@^4.1.3", "@npmcli/run-script@^4.1.7": +"@npmcli/run-script@^4.1.0", "@npmcli/run-script@^4.1.3", "@npmcli/run-script@^4.1.7": version "4.2.0" resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-4.2.0.tgz#2c25758f80831ba138afe25225d456e89acedac3" integrity sha512-e/QgLg7j2wSJp1/7JRl0GC8c7PMX+uYlA/1Tb+IDOLdSM4T7K1VQ9mm9IGU3WRtY5vEIObpqCLb3aCNCug18DA== @@ -3749,11 +3654,6 @@ "@octokit/types" "^6.0.3" universal-user-agent "^6.0.0" -"@octokit/openapi-types@^11.2.0": - version "11.2.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-11.2.0.tgz#b38d7fc3736d52a1e96b230c1ccd4a58a2f400a6" - integrity sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA== - "@octokit/openapi-types@^12.10.0": version "12.10.1" resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-12.10.1.tgz#57b5cc6c7b4e55d8642c93d06401fb1af4839899" @@ -3815,14 +3715,7 @@ "@octokit/plugin-request-log" "^1.0.4" "@octokit/plugin-rest-endpoint-methods" "^6.0.0" -"@octokit/types@^6.0.3", "@octokit/types@^6.16.1": - version "6.34.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.34.0.tgz#c6021333334d1ecfb5d370a8798162ddf1ae8218" - integrity sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw== - dependencies: - "@octokit/openapi-types" "^11.2.0" - -"@octokit/types@^6.39.0", "@octokit/types@^6.40.0": +"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.39.0", "@octokit/types@^6.40.0": version "6.40.0" resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.40.0.tgz#f2e665196d419e19bb4265603cf904a820505d0e" integrity sha512-MFZOU5r8SwgJWDMhrLUSvyJPtVsqA6VnbVI3TNbsmw+Jnvrktzvq2fYES/6RiJA/5Ykdwq4mJmtlYUfW7CGjmw== @@ -4950,17 +4843,7 @@ ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@~6.12.6: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.8.0: - version "8.8.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.8.2.tgz#01b4fef2007a28bf75f0b7fc009f62679de4abbb" - integrity sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ajv@^8.6.0: +ajv@^8.0.0, ajv@^8.6.0, ajv@^8.8.0: version "8.11.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== @@ -5340,16 +5223,7 @@ babel-plugin-jest-hoist@^29.0.2: "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" -babel-plugin-polyfill-corejs2@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz#e4c31d4c89b56f3cf85b92558954c66b54bd972d" - integrity sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q== - dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.2" - semver "^6.1.1" - -babel-plugin-polyfill-corejs2@^0.3.3: +babel-plugin-polyfill-corejs2@^0.3.1, babel-plugin-polyfill-corejs2@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== @@ -5575,28 +5449,7 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.18.1, browserslist@^4.20.3: - version "4.20.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" - integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== - dependencies: - caniuse-lite "^1.0.30001332" - electron-to-chromium "^1.4.118" - escalade "^3.1.1" - node-releases "^2.0.3" - picocolors "^1.0.0" - -browserslist@^4.21.3: - version "4.21.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.3.tgz#5df277694eb3c48bc5c4b05af3e8b7e09c5a6d1a" - integrity sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ== - dependencies: - caniuse-lite "^1.0.30001370" - electron-to-chromium "^1.4.202" - node-releases "^2.0.6" - update-browserslist-db "^1.0.5" - -browserslist@^4.21.4: +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.18.1, browserslist@^4.20.3, browserslist@^4.21.3, browserslist@^4.21.4: version "4.21.4" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== @@ -5636,12 +5489,7 @@ builtin-modules@^1.1.1: resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= -builtin-modules@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" - integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== - -builtin-modules@^3.1.0: +builtin-modules@^3.0.0, builtin-modules@^3.1.0: version "3.3.0" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== @@ -5775,17 +5623,7 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001335: - version "1.0.30001339" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001339.tgz#f9aece4ea8156071613b27791547ba0b33f176cf" - integrity sha512-Es8PiVqCe+uXdms0Gu5xP5PF2bxLR7OBp3wUzUnuO7OHzhOfCyg3hdiGWVPVxhiuniOzng+hTc1u3fEQ0TlkSQ== - -caniuse-lite@^1.0.30001370: - version "1.0.30001399" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001399.tgz#1bf994ca375d7f33f8d01ce03b7d5139e8587873" - integrity sha512-4vQ90tMKS+FkvuVWS5/QY1+d805ODxZiKFzsU8o/RsVJz49ZSRR8EjykLJbqhzdPgadbX6wB538wOzle3JniRA== - -caniuse-lite@^1.0.30001400: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001335, caniuse-lite@^1.0.30001400: version "1.0.30001414" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001414.tgz#5f1715e506e71860b4b07c50060ea6462217611e" integrity sha512-t55jfSaWjCdocnFdKQoO+d2ct9C59UZg4dY3OnUlSZ447r8pUtIKdp0hpAzrGFultmTC+Us+KpKi4GZl/LXlFg== @@ -6159,20 +5997,20 @@ commander@^8.3.0: resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== -commander@^9.2.0, commander@^9.3.0: - version "9.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-9.3.0.tgz#f619114a5a2d2054e0d9ff1b31d5ccf89255e26b" - integrity sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw== +commander@^9.3.0, commander@^9.4.0: + version "9.4.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd" + integrity sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw== commander@~9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/commander/-/commander-9.0.0.tgz#86d58f24ee98126568936bd1d3574e0308a99a40" integrity sha512-JJfP2saEKbQqvW+FI93OYUB4ByV5cizMpFMiiJI8xDbBvQvSkIk0VvQdn1CZ8mqAO8Loq2h0gYTYtDFUZUeERw== -comment-json@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/comment-json/-/comment-json-4.2.2.tgz#5fae70a94e0c8f84a077bd31df5aa5269252f293" - integrity sha512-H8T+kl3nZesZu41zO2oNXIJWojNeK3mHxCLrsBNu6feksBXsgb+PtYz5daP5P86A0F3sz3840KVYehr04enISQ== +comment-json@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/comment-json/-/comment-json-4.2.3.tgz#50b487ebbf43abe44431f575ebda07d30d015365" + integrity sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw== dependencies: array-timsort "^1.0.3" core-util-is "^1.0.3" @@ -6411,15 +6249,7 @@ copy-webpack-plugin@^11.0.0: schema-utils "^4.0.0" serialize-javascript "^6.0.0" -core-js-compat@^3.21.0: - version "3.22.5" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.22.5.tgz#7fffa1d20cb18405bd22756ca1353c6f1a0e8614" - integrity sha512-rEF75n3QtInrYICvJjrAgV03HwKiYvtKHdPtaba1KucG+cNZ4NJnH9isqt979e67KZlhpbCOTwnsvnIr+CVeOg== - dependencies: - browserslist "^4.20.3" - semver "7.0.0" - -core-js-compat@^3.25.1: +core-js-compat@^3.21.0, core-js-compat@^3.25.1: version "3.25.4" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.25.4.tgz#730a255d4a47a937513abf1672bf278dc24dcebf" integrity sha512-gCEcIEEqCR6230WroNunK/653CWKhqyCKJ9b+uESqOt/WFJA8B4lTnnQFdpYY5vmBcwJAA90Bo5vXs+CVsf6iA== @@ -6512,80 +6342,105 @@ 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-gitignore@^5.20.0: - version "5.20.0" - resolved "https://registry.yarnpkg.com/cspell-gitignore/-/cspell-gitignore-5.20.0.tgz#0c4f405559383663a9c24fab5cf829e7b19abed5" - integrity sha512-oWzoHcaidX6jFON6vwiH3cA1HqkGmawD1DWt+fPWKrea9/SuTcvFxm+RbqO4DjwXEAMIczyPOWo+SCM0VbcCrA== +cspell-dictionary@^6.12.0: + version "6.12.0" + resolved "https://registry.yarnpkg.com/cspell-dictionary/-/cspell-dictionary-6.12.0.tgz#5d9e5c0fa5a44403400bb7e3f36b137222aaaa84" + integrity sha512-I2cXSdXndt9H7yXmJzLTjgui/SAPGghXwxFeibTbvF68gyQYD5fUXvOygEIPrOEySKlAIb+aouV77SgoURxMHw== dependencies: - cspell-glob "^5.20.0" + "@cspell/cspell-pipe" "^6.12.0" + "@cspell/cspell-types" "^6.12.0" + cspell-trie-lib "^6.12.0" + fast-equals "^4.0.3" + gensequence "^4.0.2" + +cspell-gitignore@^6.12.0: + version "6.12.0" + resolved "https://registry.yarnpkg.com/cspell-gitignore/-/cspell-gitignore-6.12.0.tgz#148215fb9251bc04fca9ad5a8f2cc11eaec75b71" + integrity sha512-gtsN2AAvqdE8CHVzpxsQcd/Wn5GAMTjzHpDXX71g/k8IJn743poGU06O0O1WSVAgK0fWTRsfg+V5OegA1TAo7A== + dependencies: + cspell-glob "^6.12.0" find-up "^5.0.0" -cspell-glob@^5.20.0: - version "5.20.0" - resolved "https://registry.yarnpkg.com/cspell-glob/-/cspell-glob-5.20.0.tgz#2bda5cc90bc6694ce2eb1a5aaee54196fc9b37a9" - integrity sha512-eyo8NYH4GapHxfilMarwvf1HIyGWT3gWuFlYkmQjYVx3KjzmfR1Y1x9S068wmwjp9kKCu9T6Vj71EGG+9R59Lw== +cspell-glob@^6.12.0: + version "6.12.0" + resolved "https://registry.yarnpkg.com/cspell-glob/-/cspell-glob-6.12.0.tgz#7ed9d672d429d48fb272d1f5a2c5c6001da05d40" + integrity sha512-Q0rMGTxDyFFPm1LmHYM0ziuxQt2aXgr8Oi1glA2s0dBs0hg1DexlAEoLwLiMDUwSTvibEKIidPzlrmZ1AUDWEg== dependencies: micromatch "^4.0.5" -cspell-io@^5.20.0: - version "5.20.0" - resolved "https://registry.yarnpkg.com/cspell-io/-/cspell-io-5.20.0.tgz#2f7fc676a068acc641f3bd77ddca7f72985b6ee5" - integrity sha512-wgqqpVIhtMh+/+3YfHt8cDfrD7OLF+xQlStlURj8AJwEJ0xu16zyI9S5zcig+83+0QyzuMdxfZiMgbdQxWEvOg== +cspell-grammar@^6.12.0: + version "6.12.0" + resolved "https://registry.yarnpkg.com/cspell-grammar/-/cspell-grammar-6.12.0.tgz#4fda96fcf0da62fe6f72abce2f27389d95d12cd2" + integrity sha512-WXcDiWJ2pTW0jHY0Bf0DW5s8A9S0a+2tsVZsNxE/0CR5P/8yDSnznE+59uok/JN+GXOKQ6VIaqAZA3/XjDZuuA== + dependencies: + "@cspell/cspell-pipe" "^6.12.0" + "@cspell/cspell-types" "^6.12.0" + +cspell-io@^6.12.0: + version "6.12.0" + resolved "https://registry.yarnpkg.com/cspell-io/-/cspell-io-6.12.0.tgz#318052ffa30d801b40fa8af81d9865ec4a5e68ea" + integrity sha512-1faxDj2OMgq61w7GaiXZD7ytks6PksJlG484LMl2USv58jDky4i2lujJs1C/+aP97Box9EcdwzydHX9GpnqqCw== + dependencies: + "@cspell/cspell-service-bus" "^6.12.0" + node-fetch "^2.6.7" -cspell-lib@^5.20.0: - version "5.20.0" - resolved "https://registry.yarnpkg.com/cspell-lib/-/cspell-lib-5.20.0.tgz#0eb5797cb32ce03db7ad7e14649296c434e3d142" - integrity sha512-Fc7+3ExF2pNS8BsQTXSMkhR6ITbpyiMQf+y4ZH/aBml09+O6lrbj4j2tJx/oR4XvDEA8uQkV/5lMGdU+otC1KQ== +cspell-lib@^6.12.0: + version "6.12.0" + resolved "https://registry.yarnpkg.com/cspell-lib/-/cspell-lib-6.12.0.tgz#fe68a887e3e83688c4133f2fa1420e0569d5dd3f" + integrity sha512-IKd2MzH/zoiXohc26Lqb1b8i+41Y2xGreyAe9ihv/7Z2dscGGVy7F/2taZvZK9kJIhaz33Yatxfx3htT6w0hqg== dependencies: - "@cspell/cspell-bundled-dicts" "^5.20.0" - "@cspell/cspell-pipe" "^5.20.0" - "@cspell/cspell-types" "^5.20.0" + "@cspell/cspell-bundled-dicts" "^6.12.0" + "@cspell/cspell-pipe" "^6.12.0" + "@cspell/cspell-types" "^6.12.0" clear-module "^4.1.2" - comment-json "^4.2.2" + comment-json "^4.2.3" configstore "^5.0.1" cosmiconfig "^7.0.1" - cspell-glob "^5.20.0" - cspell-io "^5.20.0" - cspell-trie-lib "^5.20.0" - fast-equals "^3.0.2" + cspell-dictionary "^6.12.0" + cspell-glob "^6.12.0" + cspell-grammar "^6.12.0" + cspell-io "^6.12.0" + cspell-trie-lib "^6.12.0" + fast-equals "^4.0.3" find-up "^5.0.0" fs-extra "^10.1.0" - gensequence "^3.1.1" + gensequence "^4.0.2" import-fresh "^3.3.0" resolve-from "^5.0.0" resolve-global "^1.0.0" - vscode-languageserver-textdocument "^1.0.4" - vscode-uri "^3.0.3" + vscode-languageserver-textdocument "^1.0.7" + vscode-uri "^3.0.6" -cspell-trie-lib@^5.20.0: - version "5.20.0" - resolved "https://registry.yarnpkg.com/cspell-trie-lib/-/cspell-trie-lib-5.20.0.tgz#3a13ba0477a36ecb16311e85b270bcc2b4300f37" - integrity sha512-ET95dJh+OJ04PdLI9dKqAa+dDu47tXcUxCR6uKiZ+qZ18v1Zl986s8q89m9c+xpo7Leqh0rF6Zsw3M9Cjy6Jhw== +cspell-trie-lib@^6.12.0: + version "6.12.0" + resolved "https://registry.yarnpkg.com/cspell-trie-lib/-/cspell-trie-lib-6.12.0.tgz#f0eb2c63eb8033cc6e31d738bbb280ef7a014670" + integrity sha512-SJOdb51Wy3ewaKfttZwc9NYOIXaKlhyr+ykYKBExj3qMfV1J4d4iDLE95FriaRcqnq6X/qEM9jUvZHlvadDk3A== dependencies: - "@cspell/cspell-pipe" "^5.20.0" + "@cspell/cspell-pipe" "^6.12.0" + "@cspell/cspell-types" "^6.12.0" fs-extra "^10.1.0" - gensequence "^3.1.1" + gensequence "^4.0.2" -cspell@^5.20.0: - version "5.20.0" - resolved "https://registry.yarnpkg.com/cspell/-/cspell-5.20.0.tgz#580909fc1283aeda43f1c583188ea046417d340b" - integrity sha512-lXAS14ZlfJfOI3FgoAAfyl/AlTB8T+ayHmKrHxwuRRUvN4IBT4y8d7tdjWDj7/bsM4u5M5WrlAXg6vXH3Fg5bA== +cspell@^6.0.0: + version "6.12.0" + resolved "https://registry.yarnpkg.com/cspell/-/cspell-6.12.0.tgz#b0d0be78304dde598f79262df26e907d3af1c4fb" + integrity sha512-ny4xVEPYFP2jVf5w71Mnk4HKj6RbPH+CMSzUrOMbYVVNnQUj3GLfzy5DrSFLG0zGa353ZRC4/s9MsEvnAL8mkA== dependencies: - "@cspell/cspell-pipe" "^5.20.0" + "@cspell/cspell-pipe" "^6.12.0" chalk "^4.1.2" - commander "^9.2.0" - cspell-gitignore "^5.20.0" - cspell-glob "^5.20.0" - cspell-lib "^5.20.0" + commander "^9.4.0" + cspell-gitignore "^6.12.0" + cspell-glob "^6.12.0" + cspell-lib "^6.12.0" fast-json-stable-stringify "^2.1.0" file-entry-cache "^6.0.1" fs-extra "^10.1.0" get-stdin "^8.0.0" - glob "^8.0.1" + glob "^8.0.3" imurmurhash "^0.1.4" semver "^7.3.7" strip-ansi "^6.0.1" - vscode-uri "^3.0.3" + vscode-uri "^3.0.6" css-declaration-sorter@^6.3.0: version "6.3.0" @@ -7185,30 +7040,13 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -ejs@^3.1.6: +ejs@^3.1.6, ejs@^3.1.7: version "3.1.8" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== dependencies: jake "^10.8.5" -ejs@^3.1.7: - version "3.1.7" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.7.tgz#c544d9c7f715783dd92f0bddcf73a59e6962d006" - integrity sha512-BIar7R6abbUxDA3bfXrO4DSgwo8I+fB5/1zgujl3HLLjwd6+9iOnrT+t3grn2qbk9vOgBubXOFwX2m9axoFaGw== - dependencies: - jake "^10.8.5" - -electron-to-chromium@^1.4.118: - version "1.4.137" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz#186180a45617283f1c012284458510cd99d6787f" - integrity sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA== - -electron-to-chromium@^1.4.202: - version "1.4.250" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.250.tgz#e4535fc00d17b9a719bc688352c4a185acc2a347" - integrity sha512-KDLKcPEKPK+Q3/LdKX6knDzqyh8B82EaHccTYuGJR2qp1ymyGAo5HMH2x2OwDgzOPHlINSLIIeVhlFdq6aJgNA== - electron-to-chromium@^1.4.251: version "1.4.270" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.270.tgz#2c6ea409b45cdb5c3e0cb2c08cf6c0ba7e0f2c26" @@ -7879,10 +7717,10 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-equals@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-3.0.2.tgz#77f80047b381b6cb747130463ccc144e24c44097" - integrity sha512-iY0fAmW7fzxHp22VCRLpOgWbsWsF+DJWi1jhc8w+VGlJUiS+KcGZV2A8t+Q9oTQwhG3L1W8Lu/oe3ZyOPdhZjw== +fast-equals@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-4.0.3.tgz#72884cc805ec3c6679b99875f6b7654f39f0e8c7" + integrity sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg== fast-glob@3.2.7: version "3.2.7" @@ -8256,10 +8094,10 @@ gauge@^4.0.3: strip-ansi "^6.0.1" wide-align "^1.1.5" -gensequence@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/gensequence/-/gensequence-3.1.1.tgz#95c1afc7c0680f92942c17f2d6f83f3d26ea97af" - integrity sha512-ys3h0hiteRwmY6BsvSttPmkhC0vEQHPJduANBRtH/dlDPZ0UBIb/dXy80IcckXyuQ6LKg+PloRqvGER9IS7F7g== +gensequence@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/gensequence/-/gensequence-4.0.2.tgz#7c6147cf04451e9f6efe3872be9d46bb8d9c2603" + integrity sha512-mQiFskYFPFDSUpBJ/n3ebAV2Ufu6DZGvUPXzyWYzFfJr6/DyOOZVnjx6VTWE4y0RLvYWnc5tZq5sCjzEWhRjqQ== gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: version "1.0.0-beta.2" @@ -8436,7 +8274,7 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@*, glob@^8.0.1: +glob@*, glob@^8.0.1, glob@^8.0.3: version "8.0.3" resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== @@ -10548,20 +10386,13 @@ lzstring.ts@^2.0.2: dependencies: tslib "^1.10.0" -magic-string@^0.25.0: +magic-string@^0.25.0, magic-string@^0.25.7: version "0.25.9" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== dependencies: sourcemap-codec "^1.4.8" -magic-string@^0.25.7: - version "0.25.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" - integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== - dependencies: - sourcemap-codec "^1.4.4" - make-dir@*, make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" @@ -11146,11 +10977,6 @@ node-machine-id@^1.1.12: resolved "https://registry.yarnpkg.com/node-machine-id/-/node-machine-id-1.1.12.tgz#37904eee1e59b320bb9c5d6c0a59f3b469cb6267" integrity sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ== -node-releases@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.4.tgz#f38252370c43854dc48aa431c766c6c398f40476" - integrity sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ== - node-releases@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" @@ -11250,16 +11076,6 @@ npm-package-arg@^9.0.0, npm-package-arg@^9.0.1: semver "^7.3.5" validate-npm-package-name "^4.0.0" -npm-packlist@^5.0.0: - version "5.0.4" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-5.0.4.tgz#b8a0635964dbf72baeeb7e69ec32e822f1c26159" - integrity sha512-G4sCWzzHokHC5oxGD46Q9vCe+eN2tFb+3RfADD/eZbx4nKa7Y1eku1xvIWrw5R3F3hWX7IM2BgdqbQsyBUa3IA== - dependencies: - glob "^8.0.1" - ignore-walk "^5.0.1" - npm-bundled "^1.1.2" - npm-normalize-package-bin "^1.0.1" - npm-packlist@^5.1.0, npm-packlist@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-5.1.1.tgz#79bcaf22a26b6c30aa4dd66b976d69cc286800e0" @@ -11280,20 +11096,7 @@ npm-pick-manifest@^7.0.0: npm-package-arg "^9.0.0" semver "^7.3.5" -npm-registry-fetch@^13.0.0, npm-registry-fetch@^13.0.1: - version "13.1.1" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-13.1.1.tgz#26dc4b26d0a545886e807748032ba2aefaaae96b" - integrity sha512-5p8rwe6wQPLJ8dMqeTnA57Dp9Ox6GH9H60xkyJup07FmVlu3Mk7pf/kIIpl9gaN5bM8NM+UUx3emUWvDNTt39w== - dependencies: - make-fetch-happen "^10.0.6" - minipass "^3.1.6" - minipass-fetch "^2.0.3" - minipass-json-stream "^1.0.1" - minizlib "^2.1.2" - npm-package-arg "^9.0.1" - proc-log "^2.0.0" - -npm-registry-fetch@^13.3.0: +npm-registry-fetch@^13.0.0, npm-registry-fetch@^13.0.1, npm-registry-fetch@^13.3.0: version "13.3.0" resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-13.3.0.tgz#0ce10fa4a699a1e70685ecf41bbfb4150d74231b" integrity sha512-10LJQ/1+VhKrZjIuY9I/+gQTvumqqlgnsCufoXETHAPFTS3+M+Z5CFhZRDHGavmJ6rOye3UvNga88vl8n1r6gg== @@ -11710,34 +11513,7 @@ package-json@^6.3.0: registry-url "^5.0.0" semver "^6.2.0" -pacote@^13.0.3: - version "13.4.1" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-13.4.1.tgz#b6610bf8903abc075bfffa02a2cedafe81a97293" - integrity sha512-FqlSWlD8n+ejCE17GF/lf0yasztMGFl4UFzYQk5njaK/qPPWfVDWnfQwqmqeXObWLSmIBew+O+CFD24vxkVDjg== - dependencies: - "@npmcli/git" "^3.0.0" - "@npmcli/installed-package-contents" "^1.0.7" - "@npmcli/promise-spawn" "^3.0.0" - "@npmcli/run-script" "^3.0.1" - cacache "^16.0.0" - chownr "^2.0.0" - fs-minipass "^2.1.0" - infer-owner "^1.0.4" - minipass "^3.1.6" - mkdirp "^1.0.4" - npm-package-arg "^9.0.0" - npm-packlist "^5.0.0" - npm-pick-manifest "^7.0.0" - npm-registry-fetch "^13.0.1" - proc-log "^2.0.0" - promise-retry "^2.0.1" - read-package-json "^5.0.0" - read-package-json-fast "^2.0.3" - rimraf "^3.0.2" - ssri "^9.0.0" - tar "^6.1.11" - -pacote@^13.6.1: +pacote@^13.0.3, pacote@^13.6.1: version "13.6.1" resolved "https://registry.yarnpkg.com/pacote/-/pacote-13.6.1.tgz#ac6cbd9032b4c16e5c1e0c60138dfe44e4cc589d" integrity sha512-L+2BI1ougAPsFjXRyBhcKmfT016NscRFLv6Pz5EiNf1CCFJFU0pSKKQwsZTyAQB+sTuUL4TyFyp6J1Ork3dOqw== @@ -13355,11 +13131,6 @@ semver-diff@^3.1.1: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - semver@7.3.4: version "7.3.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" @@ -13686,7 +13457,7 @@ source-map@^0.8.0-beta.0: dependencies: whatwg-url "^7.0.0" -sourcemap-codec@^1.4.4, sourcemap-codec@^1.4.8: +sourcemap-codec@^1.4.8: version "1.4.8" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== @@ -14672,7 +14443,7 @@ upath@^2.0.1: resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== -update-browserslist-db@^1.0.5, update-browserslist-db@^1.0.9: +update-browserslist-db@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz#2924d3927367a38d5c555413a7ce138fc95fcb18" integrity sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg== @@ -14863,15 +14634,15 @@ vfile@^4.0.0: unist-util-stringify-position "^2.0.0" vfile-message "^2.0.0" -vscode-languageserver-textdocument@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.4.tgz#3cd56dd14cec1d09e86c4bb04b09a246cb3df157" - integrity sha512-/xhqXP/2A2RSs+J8JNXpiiNVvvNM0oTosNVmQnunlKvq9o4mupHOBAnnzH0lwIPKazXKvAKsVp1kr+H/K4lgoQ== +vscode-languageserver-textdocument@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.7.tgz#16df468d5c2606103c90554ae05f9f3d335b771b" + integrity sha512-bFJH7UQxlXT8kKeyiyu41r22jCZXG8kuuVVA33OEJn1diWOZK5n8zBSPZFHVBOu8kXZ6h0LIRhf5UnCo61J4Hg== -vscode-uri@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.3.tgz#a95c1ce2e6f41b7549f86279d19f47951e4f4d84" - integrity sha512-EcswR2S8bpR7fD0YPeS7r2xXExrScVMxg4MedACaWHEtx9ftCF/qHG1xGkolzTPcEmjTavCQgbVzHUIdTMzFGA== +vscode-uri@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.6.tgz#5e6e2e1a4170543af30151b561a41f71db1d6f91" + integrity sha512-fmL7V1eiDBFRRnu+gfRWTzyPpNIHJTc4mWnFkwBUmO9U3KPgJAmTx7oxi2bl/Rh6HLdU7+4C9wlj0k2E4AdKFQ== wait-on@^6.0.1: version "6.0.1" From 79768658be69fc5e5f1d55a23b11811c1d3b3297 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 10 Oct 2022 05:52:18 -0700 Subject: [PATCH 032/193] chore(deps): update dependency @types/node to v18 (#5789) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 4 ++-- yarn.lock | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index ee6ef10712f..77f0c4616de 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,7 @@ "@types/lodash": "^4.14.182", "@types/marked": "^4.0.3", "@types/ncp": "^2.0.5", - "@types/node": "^17.0.31", + "@types/node": "^18.0.0", "@types/prettier": "^2.6.0", "@types/rimraf": "^3.0.2", "@types/semver": "^7.3.9", @@ -109,7 +109,7 @@ }, "resolutions": { "typescript": "~4.8.3", - "@types/node": "^17.0.31", + "@types/node": "^18.0.0", "//": "Pin jest to v29 across the repo", "@jest/create-cache-key-function": "^29", "@jest/reporters": "^29", diff --git a/yarn.lock b/yarn.lock index d4cd4689c5a..8057073e797 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4406,10 +4406,10 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@12.20.24", "@types/node@^14.14.31", "@types/node@^17.0.31", "@types/node@^17.0.5": - version "17.0.31" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.31.tgz#a5bb84ecfa27eec5e1c802c6bbf8139bdb163a5d" - integrity sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q== +"@types/node@*", "@types/node@12.20.24", "@types/node@^14.14.31", "@types/node@^17.0.5", "@types/node@^18.0.0": + version "18.8.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.8.3.tgz#ce750ab4017effa51aed6a7230651778d54e327c" + integrity sha512-0os9vz6BpGwxGe9LOhgP/ncvYN5Tx1fNcd2TM3rD/aCGBkysb+ZWpXEocG24h6ZzOi13+VB8HndAQFezsSOw1w== "@types/normalize-package-data@^2.4.0": version "2.4.1" From ac6ccda4e90cea2b16520f544b0999186b21d5d0 Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Mon, 10 Oct 2022 23:25:31 +1030 Subject: [PATCH 033/193] chore: remove erroneous project reference from parser to utils (#5801) --- packages/parser/tsconfig.build.json | 1 - packages/parser/tsconfig.json | 1 - 2 files changed, 2 deletions(-) diff --git a/packages/parser/tsconfig.build.json b/packages/parser/tsconfig.build.json index 8556d030722..4a72f7a3d46 100644 --- a/packages/parser/tsconfig.build.json +++ b/packages/parser/tsconfig.build.json @@ -8,7 +8,6 @@ }, "include": ["src"], "references": [ - { "path": "../utils/tsconfig.build.json" }, { "path": "../scope-manager/tsconfig.build.json" }, { "path": "../types/tsconfig.build.json" }, { "path": "../typescript-estree/tsconfig.build.json" } diff --git a/packages/parser/tsconfig.json b/packages/parser/tsconfig.json index ae4f11eded6..eebdf92705d 100644 --- a/packages/parser/tsconfig.json +++ b/packages/parser/tsconfig.json @@ -7,7 +7,6 @@ "include": ["src", "tests", "tools"], "exclude": ["tests/fixtures"], "references": [ - { "path": "../utils/tsconfig.build.json" }, { "path": "../scope-manager/tsconfig.build.json" }, { "path": "../types/tsconfig.build.json" }, { "path": "../typescript-estree/tsconfig.build.json" } From 0ab827571ca8aa68671792f25f58903d0ec7e763 Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Mon, 10 Oct 2022 23:51:36 +1030 Subject: [PATCH 034/193] chore: downgrade `@docusaurus/plugin-pwa` to match the current `@docusaurus/core` version (#5802) --- packages/website/package.json | 2 +- yarn.lock | 291 ++-------------------------------- 2 files changed, 11 insertions(+), 282 deletions(-) diff --git a/packages/website/package.json b/packages/website/package.json index 6f573a0dbb1..71c08a255f8 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -17,7 +17,7 @@ "dependencies": { "@babel/runtime": "^7.18.3", "@docusaurus/core": "~2.0.1", - "@docusaurus/plugin-pwa": "~2.1.0", + "@docusaurus/plugin-pwa": "~2.0.1", "@docusaurus/preset-classic": "~2.0.1", "@docusaurus/remark-plugin-npm2yarn": "~2.0.1", "@docusaurus/theme-common": "~2.0.1", diff --git a/yarn.lock b/yarn.lock index 8057073e797..3e09953c5b0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1638,83 +1638,6 @@ webpack-merge "^5.8.0" webpackbar "^5.0.2" -"@docusaurus/core@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.1.0.tgz#4aedc306f4c4cd2e0491b641bf78941d4b480ab6" - integrity sha512-/ZJ6xmm+VB9Izbn0/s6h6289cbPy2k4iYFwWDhjiLsVqwa/Y0YBBcXvStfaHccudUC3OfP+26hMk7UCjc50J6Q== - dependencies: - "@babel/core" "^7.18.6" - "@babel/generator" "^7.18.7" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-transform-runtime" "^7.18.6" - "@babel/preset-env" "^7.18.6" - "@babel/preset-react" "^7.18.6" - "@babel/preset-typescript" "^7.18.6" - "@babel/runtime" "^7.18.6" - "@babel/runtime-corejs3" "^7.18.6" - "@babel/traverse" "^7.18.8" - "@docusaurus/cssnano-preset" "2.1.0" - "@docusaurus/logger" "2.1.0" - "@docusaurus/mdx-loader" "2.1.0" - "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-common" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" - "@slorber/static-site-generator-webpack-plugin" "^4.0.7" - "@svgr/webpack" "^6.2.1" - autoprefixer "^10.4.7" - babel-loader "^8.2.5" - babel-plugin-dynamic-import-node "^2.3.3" - boxen "^6.2.1" - chalk "^4.1.2" - chokidar "^3.5.3" - clean-css "^5.3.0" - cli-table3 "^0.6.2" - combine-promises "^1.1.0" - commander "^5.1.0" - copy-webpack-plugin "^11.0.0" - core-js "^3.23.3" - css-loader "^6.7.1" - css-minimizer-webpack-plugin "^4.0.0" - cssnano "^5.1.12" - del "^6.1.1" - detect-port "^1.3.0" - escape-html "^1.0.3" - eta "^1.12.3" - file-loader "^6.2.0" - fs-extra "^10.1.0" - html-minifier-terser "^6.1.0" - html-tags "^3.2.0" - html-webpack-plugin "^5.5.0" - import-fresh "^3.3.0" - leven "^3.1.0" - lodash "^4.17.21" - mini-css-extract-plugin "^2.6.1" - postcss "^8.4.14" - postcss-loader "^7.0.0" - prompts "^2.4.2" - react-dev-utils "^12.0.1" - react-helmet-async "^1.3.0" - react-loadable "npm:@docusaurus/react-loadable@5.5.2" - react-loadable-ssr-addon-v5-slorber "^1.0.1" - react-router "^5.3.3" - react-router-config "^5.1.1" - react-router-dom "^5.3.3" - rtl-detect "^1.0.4" - semver "^7.3.7" - serve-handler "^6.1.3" - shelljs "^0.8.5" - terser-webpack-plugin "^5.3.3" - tslib "^2.4.0" - update-notifier "^5.1.0" - url-loader "^4.1.1" - wait-on "^6.0.1" - webpack "^5.73.0" - webpack-bundle-analyzer "^4.5.0" - webpack-dev-server "^4.9.3" - webpack-merge "^5.8.0" - webpackbar "^5.0.2" - "@docusaurus/cssnano-preset@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.1.tgz#4d0c49338cf3aa88c5bd7cffbf77654db8e1e3b2" @@ -1725,16 +1648,6 @@ postcss-sort-media-queries "^4.2.1" tslib "^2.4.0" -"@docusaurus/cssnano-preset@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.1.0.tgz#5b42107769b7cbc61655496090bc262d7788d6ab" - integrity sha512-pRLewcgGhOies6pzsUROfmPStDRdFw+FgV5sMtLr5+4Luv2rty5+b/eSIMMetqUsmg3A9r9bcxHk9bKAKvx3zQ== - dependencies: - cssnano-preset-advanced "^5.3.8" - postcss "^8.4.14" - postcss-sort-media-queries "^4.2.1" - tslib "^2.4.0" - "@docusaurus/logger@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.0.1.tgz#78a940a333d2f654fd9dea24db2c962034d4b1ff" @@ -1743,14 +1656,6 @@ chalk "^4.1.2" tslib "^2.4.0" -"@docusaurus/logger@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.1.0.tgz#86c97e948f578814d3e61fc2b2ad283043cbe87a" - integrity sha512-uuJx2T6hDBg82joFeyobywPjSOIfeq05GfyKGHThVoXuXsu1KAzMDYcjoDxarb9CoHCI/Dor8R2MoL6zII8x1Q== - dependencies: - chalk "^4.1.2" - tslib "^2.4.0" - "@docusaurus/mdx-loader@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.1.tgz#cc73690ca5d356687d9e75740560b4159cd5cdb5" @@ -1774,29 +1679,6 @@ url-loader "^4.1.1" webpack "^5.73.0" -"@docusaurus/mdx-loader@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.1.0.tgz#3fca9576cc73a22f8e7d9941985590b9e47a8526" - integrity sha512-i97hi7hbQjsD3/8OSFhLy7dbKGH8ryjEzOfyhQIn2CFBYOY3ko0vMVEf3IY9nD3Ld7amYzsZ8153RPkcnXA+Lg== - dependencies: - "@babel/parser" "^7.18.8" - "@babel/traverse" "^7.18.8" - "@docusaurus/logger" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@mdx-js/mdx" "^1.6.22" - escape-html "^1.0.3" - file-loader "^6.2.0" - fs-extra "^10.1.0" - image-size "^1.0.1" - mdast-util-to-string "^2.0.0" - remark-emoji "^2.2.0" - stringify-object "^3.3.0" - tslib "^2.4.0" - unified "^9.2.2" - unist-util-visit "^2.0.3" - url-loader "^4.1.1" - webpack "^5.73.0" - "@docusaurus/module-type-aliases@2.0.1", "@docusaurus/module-type-aliases@~2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.1.tgz#44d7132297bedae0890695b0e7ebbe14a73e26d1" @@ -1811,20 +1693,6 @@ react-helmet-async "*" react-loadable "npm:@docusaurus/react-loadable@5.5.2" -"@docusaurus/module-type-aliases@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.1.0.tgz#322f8fd5b436af2154c0dddfa173435730e66261" - integrity sha512-Z8WZaK5cis3xEtyfOT817u9xgGUauT0PuuVo85ysnFRX8n7qLN1lTPCkC+aCmFm/UcV8h/W5T4NtIsst94UntQ== - dependencies: - "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/types" "2.1.0" - "@types/history" "^4.7.11" - "@types/react" "*" - "@types/react-router-config" "*" - "@types/react-router-dom" "*" - react-helmet-async "*" - react-loadable "npm:@docusaurus/react-loadable@5.5.2" - "@docusaurus/plugin-content-blog@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.1.tgz#a37065e18ffd26e022ffb16a21ff28199140729e" @@ -1847,28 +1715,6 @@ utility-types "^3.10.0" webpack "^5.73.0" -"@docusaurus/plugin-content-blog@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.1.0.tgz#32b1a7cd4b0026f4a76fce4edc5cfdd0edb1ec42" - integrity sha512-xEp6jlu92HMNUmyRBEeJ4mCW1s77aAEQO4Keez94cUY/Ap7G/r0Awa6xSLff7HL0Fjg8KK1bEbDy7q9voIavdg== - dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/logger" "2.1.0" - "@docusaurus/mdx-loader" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-common" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" - cheerio "^1.0.0-rc.12" - feed "^4.2.2" - fs-extra "^10.1.0" - lodash "^4.17.21" - reading-time "^1.5.0" - tslib "^2.4.0" - unist-util-visit "^2.0.3" - utility-types "^3.10.0" - webpack "^5.73.0" - "@docusaurus/plugin-content-docs@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.1.tgz#4059591b4bff617e744e856ca680674b27c0b98a" @@ -1891,28 +1737,6 @@ utility-types "^3.10.0" webpack "^5.73.0" -"@docusaurus/plugin-content-docs@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.1.0.tgz#3fcdf258c13dde27268ce7108a102b74ca4c279b" - integrity sha512-Rup5pqXrXlKGIC4VgwvioIhGWF7E/NNSlxv+JAxRYpik8VKlWsk9ysrdHIlpX+KJUCO9irnY21kQh2814mlp/Q== - dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/logger" "2.1.0" - "@docusaurus/mdx-loader" "2.1.0" - "@docusaurus/module-type-aliases" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" - "@types/react-router-config" "^5.0.6" - combine-promises "^1.1.0" - fs-extra "^10.1.0" - import-fresh "^3.3.0" - js-yaml "^4.1.0" - lodash "^4.17.21" - tslib "^2.4.0" - utility-types "^3.10.0" - webpack "^5.73.0" - "@docusaurus/plugin-content-pages@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.1.tgz#013f2e66f80d19b5c95a2d941d67c7cdb67b7191" @@ -1927,20 +1751,6 @@ tslib "^2.4.0" webpack "^5.73.0" -"@docusaurus/plugin-content-pages@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.1.0.tgz#714d24f71d49dbfed888f50c15e975c2154c3ce8" - integrity sha512-SwZdDZRlObHNKXTnFo7W2aF6U5ZqNVI55Nw2GCBryL7oKQSLeI0lsrMlMXdzn+fS7OuBTd3MJBO1T4Zpz0i/+g== - dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/mdx-loader" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" - fs-extra "^10.1.0" - tslib "^2.4.0" - webpack "^5.73.0" - "@docusaurus/plugin-debug@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.1.tgz#2b2a473f8e01fd356e32236f753665b48209bcd4" @@ -1973,19 +1783,19 @@ "@docusaurus/utils-validation" "2.0.1" tslib "^2.4.0" -"@docusaurus/plugin-pwa@~2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-pwa/-/plugin-pwa-2.1.0.tgz#e6deb53a4c4b10de85c73886a75497a48bedd258" - integrity sha512-SOhEbv9sECaD/c9Ym2Bq6ruK56PAxV9Ftj6Hk2rKFdrASBv3ruri2iCT5YPKMpXqmzWd84GnE2pusMW2s1w2Sw== +"@docusaurus/plugin-pwa@~2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-pwa/-/plugin-pwa-2.0.1.tgz#e49f2a846f0beca58cb09e7a114393c43cd438b8" + integrity sha512-zN+dCx2V1yIK8+U3cey/IA44ynfmZQm/tdVhXy6EsXbkaEW8ZZu0AIpARFxJ2lmR2sPkG1ohkXIoOOCMOld1Xw== dependencies: "@babel/core" "^7.18.6" "@babel/preset-env" "^7.18.6" - "@docusaurus/core" "2.1.0" - "@docusaurus/theme-common" "2.1.0" - "@docusaurus/theme-translations" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" + "@docusaurus/core" "2.0.1" + "@docusaurus/theme-common" "2.0.1" + "@docusaurus/theme-translations" "2.0.1" + "@docusaurus/types" "2.0.1" + "@docusaurus/utils" "2.0.1" + "@docusaurus/utils-validation" "2.0.1" babel-loader "^8.2.5" clsx "^1.2.1" core-js "^3.23.3" @@ -2098,26 +1908,6 @@ tslib "^2.4.0" utility-types "^3.10.0" -"@docusaurus/theme-common@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.1.0.tgz#dff4d5d1e29efc06125dc06f7b259f689bb3f24d" - integrity sha512-vT1otpVPbKux90YpZUnvknsn5zvpLf+AW1W0EDcpE9up4cDrPqfsh0QoxGHFJnobE2/qftsBFC19BneN4BH8Ag== - dependencies: - "@docusaurus/mdx-loader" "2.1.0" - "@docusaurus/module-type-aliases" "2.1.0" - "@docusaurus/plugin-content-blog" "2.1.0" - "@docusaurus/plugin-content-docs" "2.1.0" - "@docusaurus/plugin-content-pages" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@types/history" "^4.7.11" - "@types/react" "*" - "@types/react-router-config" "*" - clsx "^1.2.1" - parse-numeric-range "^1.3.0" - prism-react-renderer "^1.3.5" - tslib "^2.4.0" - utility-types "^3.10.0" - "@docusaurus/theme-search-algolia@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.1.tgz#0aab8407b2163f67eb4c48f1de33944e1695fa74" @@ -2148,14 +1938,6 @@ fs-extra "^10.1.0" tslib "^2.4.0" -"@docusaurus/theme-translations@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.1.0.tgz#ce9a2955afd49bff364cfdfd4492b226f6dd3b6e" - integrity sha512-07n2akf2nqWvtJeMy3A+7oSGMuu5F673AovXVwY0aGAux1afzGCiqIFlYW3EP0CujvDJAEFSQi/Tetfh+95JNg== - dependencies: - fs-extra "^10.1.0" - tslib "^2.4.0" - "@docusaurus/types@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.1.tgz#8696a70e85c4b9be80b38ac592d520f6fe72618b" @@ -2170,20 +1952,6 @@ webpack "^5.73.0" webpack-merge "^5.8.0" -"@docusaurus/types@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.1.0.tgz#01e13cd9adb268fffe87b49eb90302d5dc3edd6b" - integrity sha512-BS1ebpJZnGG6esKqsjtEC9U9qSaPylPwlO7cQ1GaIE7J/kMZI3FITnNn0otXXu7c7ZTqhb6+8dOrG6fZn6fqzQ== - dependencies: - "@types/history" "^4.7.11" - "@types/react" "*" - commander "^5.1.0" - joi "^17.6.0" - react-helmet-async "^1.3.0" - utility-types "^3.10.0" - webpack "^5.73.0" - webpack-merge "^5.8.0" - "@docusaurus/utils-common@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.1.tgz#b6f2b029547f739e1431ec84abd16974edf495e0" @@ -2191,13 +1959,6 @@ dependencies: tslib "^2.4.0" -"@docusaurus/utils-common@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.1.0.tgz#248434751096f8c6c644ed65eed2a5a070a227f8" - integrity sha512-F2vgmt4yRFgRQR2vyEFGTWeyAdmgKbtmu3sjHObF0tjjx/pN0Iw/c6eCopaH34E6tc9nO0nvp01pwW+/86d1fg== - dependencies: - tslib "^2.4.0" - "@docusaurus/utils-validation@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.1.tgz#69f7d4944288d71f00fdba6dde10f05008f04308" @@ -2209,17 +1970,6 @@ js-yaml "^4.1.0" tslib "^2.4.0" -"@docusaurus/utils-validation@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.1.0.tgz#c8cf1d8454d924d9a564fefa86436268f43308e3" - integrity sha512-AMJzWYKL3b7FLltKtDXNLO9Y649V2BXvrnRdnW2AA+PpBnYV78zKLSCz135cuWwRj1ajNtP4onbXdlnyvCijGQ== - dependencies: - "@docusaurus/logger" "2.1.0" - "@docusaurus/utils" "2.1.0" - joi "^17.6.0" - js-yaml "^4.1.0" - tslib "^2.4.0" - "@docusaurus/utils@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.1.tgz#37b4b42e29175e5d2d811fcbf9f93bffeca7c353" @@ -2241,27 +1991,6 @@ url-loader "^4.1.1" webpack "^5.73.0" -"@docusaurus/utils@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.1.0.tgz#b77b45b22e61eb6c2dcad8a7e96f6db0409b655f" - integrity sha512-fPvrfmAuC54n8MjZuG4IysaMdmvN5A/qr7iFLbSGSyDrsbP4fnui6KdZZIa/YOLIPLec8vjZ8RIITJqF18mx4A== - dependencies: - "@docusaurus/logger" "2.1.0" - "@svgr/webpack" "^6.2.1" - file-loader "^6.2.0" - fs-extra "^10.1.0" - github-slugger "^1.4.0" - globby "^11.1.0" - gray-matter "^4.0.3" - js-yaml "^4.1.0" - lodash "^4.17.21" - micromatch "^4.0.5" - resolve-pathname "^3.0.0" - shelljs "^0.8.5" - tslib "^2.4.0" - url-loader "^4.1.1" - webpack "^5.73.0" - "@eslint/eslintrc@^1.2.3": version "1.2.3" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.3.tgz#fcaa2bcef39e13d6e9e7f6271f4cc7cae1174886" From 6ac0aa7ef4506031687b92240f5cbdd13f568917 Mon Sep 17 00:00:00 2001 From: "typescript-eslint[bot]" Date: Mon, 10 Oct 2022 17:39:41 +0000 Subject: [PATCH 035/193] chore: publish v5.40.0 --- CHANGELOG.md | 19 +++++++++++++++++++ lerna.json | 2 +- packages/ast-spec/CHANGELOG.md | 8 ++++++++ packages/ast-spec/package.json | 2 +- packages/eslint-plugin-internal/CHANGELOG.md | 11 +++++++++++ packages/eslint-plugin-internal/package.json | 6 +++--- packages/eslint-plugin-tslint/CHANGELOG.md | 8 ++++++++ packages/eslint-plugin-tslint/package.json | 6 +++--- packages/eslint-plugin/CHANGELOG.md | 18 ++++++++++++++++++ packages/eslint-plugin/package.json | 8 ++++---- packages/experimental-utils/CHANGELOG.md | 8 ++++++++ packages/experimental-utils/package.json | 4 ++-- packages/parser/CHANGELOG.md | 8 ++++++++ packages/parser/package.json | 8 ++++---- 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/type-utils/CHANGELOG.md | 8 ++++++++ packages/type-utils/package.json | 8 ++++---- packages/types/CHANGELOG.md | 8 ++++++++ packages/types/package.json | 2 +- packages/typescript-estree/CHANGELOG.md | 8 ++++++++ packages/typescript-estree/package.json | 8 ++++---- packages/utils/CHANGELOG.md | 11 +++++++++++ packages/utils/package.json | 10 +++++----- packages/visitor-keys/CHANGELOG.md | 8 ++++++++ packages/visitor-keys/package.json | 4 ++-- packages/website-eslint/CHANGELOG.md | 8 ++++++++ packages/website-eslint/package.json | 16 ++++++++-------- packages/website/CHANGELOG.md | 11 +++++++++++ packages/website/package.json | 8 ++++---- 32 files changed, 209 insertions(+), 51 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 26669379fd4..a3071f366c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,25 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.40.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.39.0...v5.40.0) (2022-10-10) + + +### Bug Fixes + +* **eslint-plugin:** [consistent-indexed-object-style] handle interface generic ([#5746](https://github.com/typescript-eslint/typescript-eslint/issues/5746)) ([7a8a0a3](https://github.com/typescript-eslint/typescript-eslint/commit/7a8a0a3c500ca726d2ab3bee0ae9f3fb9d8d39b8)) +* **eslint-plugin:** [no-unnecessary-condition] handle void ([#5766](https://github.com/typescript-eslint/typescript-eslint/issues/5766)) ([ac8f06b](https://github.com/typescript-eslint/typescript-eslint/commit/ac8f06b68dca7666bfb78fb38d6ccc07f676e435)) + + +### Features + +* **eslint-plugin:** Check 'rest' parameters in no-misused-promises ([#5731](https://github.com/typescript-eslint/typescript-eslint/issues/5731)) ([6477f38](https://github.com/typescript-eslint/typescript-eslint/commit/6477f3855627cc257edc021b859711d4a5847a12)), closes [#4015](https://github.com/typescript-eslint/typescript-eslint/issues/4015) +* **utils:** add dependency constraint filtering for `RuleTester` ([#5750](https://github.com/typescript-eslint/typescript-eslint/issues/5750)) ([121f4c0](https://github.com/typescript-eslint/typescript-eslint/commit/121f4c0e7252def95d917e4734e933e53e29d501)) +* **website:** store options TypeScript, Enable jsx and AST Viewer in browser's local storage ([#5769](https://github.com/typescript-eslint/typescript-eslint/issues/5769)) ([77d2336](https://github.com/typescript-eslint/typescript-eslint/commit/77d2336594ca10b47c0f7978ae64f87d24a25d33)) + + + + + # [5.39.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.38.1...v5.39.0) (2022-10-03) diff --git a/lerna.json b/lerna.json index b478f846acf..b2e9dda7887 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "5.39.0", + "version": "5.40.0", "npmClient": "yarn", "useWorkspaces": true, "stream": true diff --git a/packages/ast-spec/CHANGELOG.md b/packages/ast-spec/CHANGELOG.md index 9a5fc2598bb..8866db69658 100644 --- a/packages/ast-spec/CHANGELOG.md +++ b/packages/ast-spec/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. +# [5.40.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.39.0...v5.40.0) (2022-10-10) + +**Note:** Version bump only for package @typescript-eslint/ast-spec + + + + + # [5.39.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.38.1...v5.39.0) (2022-10-03) **Note:** Version bump only for package @typescript-eslint/ast-spec diff --git a/packages/ast-spec/package.json b/packages/ast-spec/package.json index a09416ecb35..22cf95f56b5 100644 --- a/packages/ast-spec/package.json +++ b/packages/ast-spec/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/ast-spec", - "version": "5.39.0", + "version": "5.40.0", "description": "TypeScript-ESTree AST spec", "private": true, "keywords": [ diff --git a/packages/eslint-plugin-internal/CHANGELOG.md b/packages/eslint-plugin-internal/CHANGELOG.md index 955f4430056..b6d78c8f224 100644 --- a/packages/eslint-plugin-internal/CHANGELOG.md +++ b/packages/eslint-plugin-internal/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.40.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.39.0...v5.40.0) (2022-10-10) + + +### Features + +* **utils:** add dependency constraint filtering for `RuleTester` ([#5750](https://github.com/typescript-eslint/typescript-eslint/issues/5750)) ([121f4c0](https://github.com/typescript-eslint/typescript-eslint/commit/121f4c0e7252def95d917e4734e933e53e29d501)) + + + + + # [5.39.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.38.1...v5.39.0) (2022-10-03) **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 a8f20e7683a..788564a4441 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": "5.39.0", + "version": "5.40.0", "private": true, "main": "dist/index.js", "scripts": { @@ -14,8 +14,8 @@ }, "dependencies": { "@types/prettier": "*", - "@typescript-eslint/scope-manager": "5.39.0", - "@typescript-eslint/utils": "5.39.0", + "@typescript-eslint/scope-manager": "5.40.0", + "@typescript-eslint/utils": "5.40.0", "prettier": "*" } } diff --git a/packages/eslint-plugin-tslint/CHANGELOG.md b/packages/eslint-plugin-tslint/CHANGELOG.md index 886cf7f02c9..c10cf29a4da 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. +# [5.40.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.39.0...v5.40.0) (2022-10-10) + +**Note:** Version bump only for package @typescript-eslint/eslint-plugin-tslint + + + + + # [5.39.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.38.1...v5.39.0) (2022-10-03) **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 7dc807fdb1b..c81ccc61d2a 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": "5.39.0", + "version": "5.40.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/utils": "5.39.0", + "@typescript-eslint/utils": "5.40.0", "lodash": "^4.17.21" }, "peerDependencies": { @@ -48,6 +48,6 @@ }, "devDependencies": { "@types/lodash": "*", - "@typescript-eslint/parser": "5.39.0" + "@typescript-eslint/parser": "5.40.0" } } diff --git a/packages/eslint-plugin/CHANGELOG.md b/packages/eslint-plugin/CHANGELOG.md index 3fd0506e389..f329dc65159 100644 --- a/packages/eslint-plugin/CHANGELOG.md +++ b/packages/eslint-plugin/CHANGELOG.md @@ -3,6 +3,24 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.40.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.39.0...v5.40.0) (2022-10-10) + + +### Bug Fixes + +* **eslint-plugin:** [consistent-indexed-object-style] handle interface generic ([#5746](https://github.com/typescript-eslint/typescript-eslint/issues/5746)) ([7a8a0a3](https://github.com/typescript-eslint/typescript-eslint/commit/7a8a0a3c500ca726d2ab3bee0ae9f3fb9d8d39b8)) +* **eslint-plugin:** [no-unnecessary-condition] handle void ([#5766](https://github.com/typescript-eslint/typescript-eslint/issues/5766)) ([ac8f06b](https://github.com/typescript-eslint/typescript-eslint/commit/ac8f06b68dca7666bfb78fb38d6ccc07f676e435)) + + +### Features + +* **eslint-plugin:** Check 'rest' parameters in no-misused-promises ([#5731](https://github.com/typescript-eslint/typescript-eslint/issues/5731)) ([6477f38](https://github.com/typescript-eslint/typescript-eslint/commit/6477f3855627cc257edc021b859711d4a5847a12)), closes [#4015](https://github.com/typescript-eslint/typescript-eslint/issues/4015) +* **utils:** add dependency constraint filtering for `RuleTester` ([#5750](https://github.com/typescript-eslint/typescript-eslint/issues/5750)) ([121f4c0](https://github.com/typescript-eslint/typescript-eslint/commit/121f4c0e7252def95d917e4734e933e53e29d501)) + + + + + # [5.39.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.38.1...v5.39.0) (2022-10-03) diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index 514455e7313..c65869f657e 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/eslint-plugin", - "version": "5.39.0", + "version": "5.40.0", "description": "TypeScript plugin for ESLint", "keywords": [ "eslint", @@ -44,9 +44,9 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/scope-manager": "5.39.0", - "@typescript-eslint/type-utils": "5.39.0", - "@typescript-eslint/utils": "5.39.0", + "@typescript-eslint/scope-manager": "5.40.0", + "@typescript-eslint/type-utils": "5.40.0", + "@typescript-eslint/utils": "5.40.0", "debug": "^4.3.4", "ignore": "^5.2.0", "regexpp": "^3.2.0", diff --git a/packages/experimental-utils/CHANGELOG.md b/packages/experimental-utils/CHANGELOG.md index d9ab5776de4..5b96918ef45 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. +# [5.40.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.39.0...v5.40.0) (2022-10-10) + +**Note:** Version bump only for package @typescript-eslint/experimental-utils + + + + + # [5.39.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.38.1...v5.39.0) (2022-10-03) **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 20bf9271848..9ba2b9c2b95 100644 --- a/packages/experimental-utils/package.json +++ b/packages/experimental-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/experimental-utils", - "version": "5.39.0", + "version": "5.40.0", "description": "(Experimental) Utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -38,7 +38,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/utils": "5.39.0" + "@typescript-eslint/utils": "5.40.0" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" diff --git a/packages/parser/CHANGELOG.md b/packages/parser/CHANGELOG.md index bf2bbe8aeae..f10795d1acf 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. +# [5.40.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.39.0...v5.40.0) (2022-10-10) + +**Note:** Version bump only for package @typescript-eslint/parser + + + + + # [5.39.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.38.1...v5.39.0) (2022-10-03) **Note:** Version bump only for package @typescript-eslint/parser diff --git a/packages/parser/package.json b/packages/parser/package.json index 1976d9efd6b..eb6375df2c7 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/parser", - "version": "5.39.0", + "version": "5.40.0", "description": "An ESLint custom parser which leverages TypeScript ESTree", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -45,9 +45,9 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "dependencies": { - "@typescript-eslint/scope-manager": "5.39.0", - "@typescript-eslint/types": "5.39.0", - "@typescript-eslint/typescript-estree": "5.39.0", + "@typescript-eslint/scope-manager": "5.40.0", + "@typescript-eslint/types": "5.40.0", + "@typescript-eslint/typescript-estree": "5.40.0", "debug": "^4.3.4" }, "devDependencies": { diff --git a/packages/scope-manager/CHANGELOG.md b/packages/scope-manager/CHANGELOG.md index 9ad9a8a1253..3c5d079cfa1 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. +# [5.40.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.39.0...v5.40.0) (2022-10-10) + +**Note:** Version bump only for package @typescript-eslint/scope-manager + + + + + # [5.39.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.38.1...v5.39.0) (2022-10-03) **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 f67265ca71b..76ad6d29837 100644 --- a/packages/scope-manager/package.json +++ b/packages/scope-manager/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/scope-manager", - "version": "5.39.0", + "version": "5.40.0", "description": "TypeScript scope analyser for ESLint", "keywords": [ "eslint", @@ -38,12 +38,12 @@ "typecheck": "cd ../../ && nx typecheck @typescript-eslint/scope-manager" }, "dependencies": { - "@typescript-eslint/types": "5.39.0", - "@typescript-eslint/visitor-keys": "5.39.0" + "@typescript-eslint/types": "5.40.0", + "@typescript-eslint/visitor-keys": "5.40.0" }, "devDependencies": { "@types/glob": "*", - "@typescript-eslint/typescript-estree": "5.39.0", + "@typescript-eslint/typescript-estree": "5.40.0", "glob": "*", "jest-specific-snapshot": "*", "make-dir": "*", diff --git a/packages/shared-fixtures/CHANGELOG.md b/packages/shared-fixtures/CHANGELOG.md index d15287d559d..2b606e90a00 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. +# [5.40.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.39.0...v5.40.0) (2022-10-10) + +**Note:** Version bump only for package @typescript-eslint/shared-fixtures + + + + + # [5.39.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.38.1...v5.39.0) (2022-10-03) **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 08055413546..1968f55a9bd 100644 --- a/packages/shared-fixtures/package.json +++ b/packages/shared-fixtures/package.json @@ -1,5 +1,5 @@ { "name": "@typescript-eslint/shared-fixtures", - "version": "5.39.0", + "version": "5.40.0", "private": true } diff --git a/packages/type-utils/CHANGELOG.md b/packages/type-utils/CHANGELOG.md index ad834ddc3d7..cee3ff87465 100644 --- a/packages/type-utils/CHANGELOG.md +++ b/packages/type-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. +# [5.40.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.39.0...v5.40.0) (2022-10-10) + +**Note:** Version bump only for package @typescript-eslint/type-utils + + + + + # [5.39.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.38.1...v5.39.0) (2022-10-03) **Note:** Version bump only for package @typescript-eslint/type-utils diff --git a/packages/type-utils/package.json b/packages/type-utils/package.json index 842c2288795..1d812bf8867 100644 --- a/packages/type-utils/package.json +++ b/packages/type-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/type-utils", - "version": "5.39.0", + "version": "5.40.0", "description": "Type utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -39,13 +39,13 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/typescript-estree": "5.39.0", - "@typescript-eslint/utils": "5.39.0", + "@typescript-eslint/typescript-estree": "5.40.0", + "@typescript-eslint/utils": "5.40.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, "devDependencies": { - "@typescript-eslint/parser": "5.39.0", + "@typescript-eslint/parser": "5.40.0", "typescript": "*" }, "peerDependencies": { diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index 517153ab601..402fc18bcf6 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. +# [5.40.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.39.0...v5.40.0) (2022-10-10) + +**Note:** Version bump only for package @typescript-eslint/types + + + + + # [5.39.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.38.1...v5.39.0) (2022-10-03) **Note:** Version bump only for package @typescript-eslint/types diff --git a/packages/types/package.json b/packages/types/package.json index 22b83fe35ca..259a020c899 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/types", - "version": "5.39.0", + "version": "5.40.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 1acad00016e..ddd52888198 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. +# [5.40.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.39.0...v5.40.0) (2022-10-10) + +**Note:** Version bump only for package @typescript-eslint/typescript-estree + + + + + # [5.39.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.38.1...v5.39.0) (2022-10-03) **Note:** Version bump only for package @typescript-eslint/typescript-estree diff --git a/packages/typescript-estree/package.json b/packages/typescript-estree/package.json index d6f16b776a5..78d3196940d 100644 --- a/packages/typescript-estree/package.json +++ b/packages/typescript-estree/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/typescript-estree", - "version": "5.39.0", + "version": "5.40.0", "description": "A parser that converts TypeScript source code into an ESTree compatible form", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -42,8 +42,8 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "5.39.0", - "@typescript-eslint/visitor-keys": "5.39.0", + "@typescript-eslint/types": "5.40.0", + "@typescript-eslint/visitor-keys": "5.40.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -59,7 +59,7 @@ "@types/is-glob": "*", "@types/semver": "*", "@types/tmp": "*", - "@typescript-eslint/shared-fixtures": "5.39.0", + "@typescript-eslint/shared-fixtures": "5.40.0", "glob": "*", "jest-specific-snapshot": "*", "make-dir": "*", diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md index 6f6d1772f54..5e1505d709c 100644 --- a/packages/utils/CHANGELOG.md +++ b/packages/utils/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.40.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.39.0...v5.40.0) (2022-10-10) + + +### Features + +* **utils:** add dependency constraint filtering for `RuleTester` ([#5750](https://github.com/typescript-eslint/typescript-eslint/issues/5750)) ([121f4c0](https://github.com/typescript-eslint/typescript-eslint/commit/121f4c0e7252def95d917e4734e933e53e29d501)) + + + + + # [5.39.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.38.1...v5.39.0) (2022-10-03) **Note:** Version bump only for package @typescript-eslint/utils diff --git a/packages/utils/package.json b/packages/utils/package.json index 78452a7fed2..f768ec92edf 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/utils", - "version": "5.39.0", + "version": "5.40.0", "description": "Utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -40,9 +40,9 @@ }, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.39.0", - "@typescript-eslint/types": "5.39.0", - "@typescript-eslint/typescript-estree": "5.39.0", + "@typescript-eslint/scope-manager": "5.40.0", + "@typescript-eslint/types": "5.40.0", + "@typescript-eslint/typescript-estree": "5.40.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -51,7 +51,7 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "devDependencies": { - "@typescript-eslint/parser": "5.39.0", + "@typescript-eslint/parser": "5.40.0", "typescript": "*" }, "funding": { diff --git a/packages/visitor-keys/CHANGELOG.md b/packages/visitor-keys/CHANGELOG.md index cd78eccf8b0..41dbd402aae 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. +# [5.40.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.39.0...v5.40.0) (2022-10-10) + +**Note:** Version bump only for package @typescript-eslint/visitor-keys + + + + + # [5.39.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.38.1...v5.39.0) (2022-10-03) **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 9d4f9024551..1b62a07d9a9 100644 --- a/packages/visitor-keys/package.json +++ b/packages/visitor-keys/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/visitor-keys", - "version": "5.39.0", + "version": "5.40.0", "description": "Visitor keys used to help traverse the TypeScript-ESTree AST", "keywords": [ "eslint", @@ -39,7 +39,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/types": "5.40.0", "eslint-visitor-keys": "^3.3.0" }, "devDependencies": { diff --git a/packages/website-eslint/CHANGELOG.md b/packages/website-eslint/CHANGELOG.md index c2d069e70a8..577d250c2e5 100644 --- a/packages/website-eslint/CHANGELOG.md +++ b/packages/website-eslint/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. +# [5.40.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.39.0...v5.40.0) (2022-10-10) + +**Note:** Version bump only for package @typescript-eslint/website-eslint + + + + + # [5.39.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.38.1...v5.39.0) (2022-10-03) **Note:** Version bump only for package @typescript-eslint/website-eslint diff --git a/packages/website-eslint/package.json b/packages/website-eslint/package.json index 7d4d0a520f3..bc54fe122f0 100644 --- a/packages/website-eslint/package.json +++ b/packages/website-eslint/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/website-eslint", - "version": "5.39.0", + "version": "5.40.0", "private": true, "description": "ESLint which works in browsers.", "engines": { @@ -16,19 +16,19 @@ "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore" }, "dependencies": { - "@typescript-eslint/types": "5.39.0", - "@typescript-eslint/utils": "5.39.0" + "@typescript-eslint/types": "5.40.0", + "@typescript-eslint/utils": "5.40.0" }, "devDependencies": { "@rollup/plugin-commonjs": "^22.0.0", "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^14.1.0", "@rollup/pluginutils": "^4.2.1", - "@typescript-eslint/eslint-plugin": "5.39.0", - "@typescript-eslint/parser": "5.39.0", - "@typescript-eslint/scope-manager": "5.39.0", - "@typescript-eslint/typescript-estree": "5.39.0", - "@typescript-eslint/visitor-keys": "5.39.0", + "@typescript-eslint/eslint-plugin": "5.40.0", + "@typescript-eslint/parser": "5.40.0", + "@typescript-eslint/scope-manager": "5.40.0", + "@typescript-eslint/typescript-estree": "5.40.0", + "@typescript-eslint/visitor-keys": "5.40.0", "eslint": "*", "rollup": "^2.75.4", "rollup-plugin-terser": "^7.0.2", diff --git a/packages/website/CHANGELOG.md b/packages/website/CHANGELOG.md index b46e5caeb19..ee27617ccc6 100644 --- a/packages/website/CHANGELOG.md +++ b/packages/website/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.40.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.39.0...v5.40.0) (2022-10-10) + + +### Features + +* **website:** store options TypeScript, Enable jsx and AST Viewer in browser's local storage ([#5769](https://github.com/typescript-eslint/typescript-eslint/issues/5769)) ([77d2336](https://github.com/typescript-eslint/typescript-eslint/commit/77d2336594ca10b47c0f7978ae64f87d24a25d33)) + + + + + # [5.39.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.38.1...v5.39.0) (2022-10-03) **Note:** Version bump only for package website diff --git a/packages/website/package.json b/packages/website/package.json index 71c08a255f8..24b4d3cd223 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -1,6 +1,6 @@ { "name": "website", - "version": "5.39.0", + "version": "5.40.0", "private": true, "scripts": { "build": "docusaurus build", @@ -22,8 +22,8 @@ "@docusaurus/remark-plugin-npm2yarn": "~2.0.1", "@docusaurus/theme-common": "~2.0.1", "@mdx-js/react": "1.6.22", - "@typescript-eslint/parser": "5.39.0", - "@typescript-eslint/website-eslint": "5.39.0", + "@typescript-eslint/parser": "5.40.0", + "@typescript-eslint/website-eslint": "5.40.0", "clsx": "^1.1.1", "eslint": "*", "json-schema": "^0.4.0", @@ -47,7 +47,7 @@ "@types/react": "^18.0.9", "@types/react-helmet": "^6.1.5", "@types/react-router-dom": "^5.3.3", - "@typescript-eslint/eslint-plugin": "5.39.0", + "@typescript-eslint/eslint-plugin": "5.40.0", "copy-webpack-plugin": "^11.0.0", "cypress": "8.3.0", "cypress-axe": "^0.14.0", From 852eb7acc3d668907775ba0052562acadbae3449 Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Tue, 11 Oct 2022 06:09:38 +1030 Subject: [PATCH 036/193] chore: group renovate updates (#5800) --- .github/renovate.json | 19 ----------- .github/renovate.json5 | 70 +++++++++++++++++++++++++++++++++++++++++ .vscode/extensions.json | 3 +- 3 files changed, 72 insertions(+), 20 deletions(-) delete mode 100644 .github/renovate.json create mode 100644 .github/renovate.json5 diff --git a/.github/renovate.json b/.github/renovate.json deleted file mode 100644 index afa6e92523a..00000000000 --- a/.github/renovate.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "automerge": true, - "enabledManagers": ["github-actions", "npm"], - "ignoreDeps": ["cypress"], - "internalChecksFilter": "strict", - "labels": ["dependencies"], - "packageRules": [ - { - "matchManagers": ["npm"], - "addLabels": ["javascript"] - }, - { - "matchManagers": ["github-actions"], - "addLabels": ["github-actions"] - } - ], - "postUpdateOptions": ["yarnDedupeHighest"], - "stabilityDays": 3 -} diff --git a/.github/renovate.json5 b/.github/renovate.json5 new file mode 100644 index 00000000000..dfe04ad1e74 --- /dev/null +++ b/.github/renovate.json5 @@ -0,0 +1,70 @@ +{ + enabledManagers: ['github-actions', 'npm'], + ignoreDeps: [ + // globby is ESM so we can't go any higher right now + 'globby', + // this dep now uses package.json exports - we will be removing it next major + 'eslint-scope', + // the nx packages get updated using the nx migrate CLI + '@nrwl/cli', + '@nrwl/devkit', + '@nrwl/jest', + '@nrwl/nx-cloud', + '@nrwl/tao', + ], + ignorePaths: [ + // integration test package.json's should never be updated as they're purposely fixed tests + 'tests/integration/fixtures', + ], + internalChecksFilter: 'strict', + labels: ['dependencies'], + packageRules: [ + // automerge everything but major updates + { + matchUpdateTypes: ['minor', 'patch', 'pin', 'digest'], + automerge: true, + automergeStrategy: 'squash', + }, + + // label PRs appropriately + { + matchManagers: ['npm'], + addLabels: ['javascript'], + }, + { + matchManagers: ['github-actions'], + addLabels: ['github-actions'], + }, + + // batch package sets together + { + extends: ['packages:react'], + groupName: 'react', + }, + { + extends: ['monorepo:docusaurus'], + groupName: 'docusaurus', + }, + { + extends: ['monorepo:babel'], + matchPackagePrefixes: ['@types/babel'], + groupName: 'babel', + }, + { + extends: ['monorepo:jest'], + matchPackageNames: ['ts-jest', 'pretty-format'], + matchPackagePrefixes: ['@types/jest'], + groupName: 'jest', + }, + { + matchPackageNames: ['cypress', 'cypress-axe'], + matchUpdateTypes: ['minor', 'patch', 'pin', 'digest'], + groupName: 'cypress', + }, + ], + postUpdateOptions: [ + // run yarn dedupe to cleanup the lockfile after updates + 'yarnDedupeHighest', + ], + stabilityDays: 3, +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 3c84af70cc5..d4d111dbe6e 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -5,7 +5,8 @@ "editorconfig.editorconfig", "esbenp.prettier-vscode", "streetsidesoftware.code-spell-checker", - "tlent.jest-snapshot-language-support" + "tlent.jest-snapshot-language-support", + "mrmlnc.vscode-json5" ], "unwantedRecommendations": ["hookyqr.beautify", "dbaeumer.jshint"] } From 8f6cf637b0db52110136cd65e3d47d55b6cb798e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 10 Oct 2022 16:12:48 -0700 Subject: [PATCH 037/193] chore(deps): update dependency lerna to v5.6.1 (#5785) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 909 +++++++++++++++++++++++++++------------------------ 2 files changed, 476 insertions(+), 435 deletions(-) diff --git a/package.json b/package.json index 77f0c4616de..9b2121960c6 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "jest-diff": "^29.0.3", "jest-snapshot": "^29.0.3", "jest-specific-snapshot": "^5.0.0", - "lerna": "5.5.4", + "lerna": "5.6.1", "lint-staged": "^13.0.0", "make-dir": "^3.1.0", "markdownlint-cli": "^0.31.1", diff --git a/yarn.lock b/yarn.lock index 3e09953c5b0..39efb78893c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2313,39 +2313,39 @@ resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== -"@lerna/add@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/add/-/add-5.5.4.tgz#2c925ced1cb42779a440f046c37aa0151a560b87" - integrity sha512-eMEWdyH2ijjDuOCZ5qI7nZlWtVmOx/aABGyNmNEG1ChNDQSmxgEmmqxagQCtW7+T63e9AaHsjrxYahBWYBnuhw== - dependencies: - "@lerna/bootstrap" "5.5.4" - "@lerna/command" "5.5.4" - "@lerna/filter-options" "5.5.4" - "@lerna/npm-conf" "5.5.4" - "@lerna/validation-error" "5.5.4" +"@lerna/add@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/add/-/add-5.6.1.tgz#6cbf5c39a907c3c10837765c0eed2d624546f3d2" + integrity sha512-cZvqMYoAclefw/KQwrRIpeQiKuj/KhbkNItWc6LnWcpweUmnrAm/AEfddIOnSagRHUgkSIY/pafjL2DGdIU25w== + dependencies: + "@lerna/bootstrap" "5.6.1" + "@lerna/command" "5.6.1" + "@lerna/filter-options" "5.6.1" + "@lerna/npm-conf" "5.6.1" + "@lerna/validation-error" "5.6.1" dedent "^0.7.0" npm-package-arg "8.1.1" p-map "^4.0.0" pacote "^13.6.1" semver "^7.3.4" -"@lerna/bootstrap@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-5.5.4.tgz#919fdccf9447ce1b6901fb30ca69860f6563c958" - integrity sha512-MGC6naM0DrFNYTZPEW477uqWCqXmI4MRBKjtGNMiJhczYcFdD6x30u688zoAuO5HUoyqL6Uw7Ea28GVEyDm93Q== - dependencies: - "@lerna/command" "5.5.4" - "@lerna/filter-options" "5.5.4" - "@lerna/has-npm-version" "5.5.4" - "@lerna/npm-install" "5.5.4" - "@lerna/package-graph" "5.5.4" - "@lerna/pulse-till-done" "5.5.4" - "@lerna/rimraf-dir" "5.5.4" - "@lerna/run-lifecycle" "5.5.4" - "@lerna/run-topologically" "5.5.4" - "@lerna/symlink-binary" "5.5.4" - "@lerna/symlink-dependencies" "5.5.4" - "@lerna/validation-error" "5.5.4" +"@lerna/bootstrap@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-5.6.1.tgz#1b81840ed77bfd924059b5890c4f13a78a7459d9" + integrity sha512-YMNDTDtAo5fpt/pmA/JOcU2HvgD/bdwiZAa80312HcRy6MortJqFDo6wOM6trfoqf0XkWOpcw+P7/d/8+b8SVw== + dependencies: + "@lerna/command" "5.6.1" + "@lerna/filter-options" "5.6.1" + "@lerna/has-npm-version" "5.6.1" + "@lerna/npm-install" "5.6.1" + "@lerna/package-graph" "5.6.1" + "@lerna/pulse-till-done" "5.6.1" + "@lerna/rimraf-dir" "5.6.1" + "@lerna/run-lifecycle" "5.6.1" + "@lerna/run-topologically" "5.6.1" + "@lerna/symlink-binary" "5.6.1" + "@lerna/symlink-dependencies" "5.6.1" + "@lerna/validation-error" "5.6.1" "@npmcli/arborist" "5.3.0" dedent "^0.7.0" get-port "^5.1.1" @@ -2357,100 +2357,100 @@ p-waterfall "^2.1.1" semver "^7.3.4" -"@lerna/changed@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-5.5.4.tgz#61742e6d92e7f0aaec6b787f6b0a6203ef444c99" - integrity sha512-/tns9PA5m9XCKJk13RRJotCOFR/bZ+7zfxz20zpIELT9GehZLTaEPsItxVnlqQ4dMHMe0fl6XG6dFqeBqLOW4g== +"@lerna/changed@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-5.6.1.tgz#f6eed0999dcd0609d694e793d66443846af08707" + integrity sha512-YVXkTEXlQWW1BSyURwZHz4HDpfl/yAwkLQbRQ2OtEmknkh4QOK41PPBgX0q1SCWKs3OYdSuI30A2H3KY8LMkxg== dependencies: - "@lerna/collect-updates" "5.5.4" - "@lerna/command" "5.5.4" - "@lerna/listable" "5.5.4" - "@lerna/output" "5.5.4" + "@lerna/collect-updates" "5.6.1" + "@lerna/command" "5.6.1" + "@lerna/listable" "5.6.1" + "@lerna/output" "5.6.1" -"@lerna/check-working-tree@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-5.5.4.tgz#f19bddb23543010a848a3f44e66fc63929f6d4c9" - integrity sha512-uIHlEb/JSX9P230UNH69W21fWM4oKu8ulRdXuYCBckpbJkDz9nT1yS2y4wUHx+3GfXWqGKygTh8Z06vSdYg+2A== +"@lerna/check-working-tree@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-5.6.1.tgz#29bc77d3e3dc4bcaeb281f99755d19ef690523bc" + integrity sha512-pzM/d+009Yl7ThpbWPntao5WuHi4nb/T9WKTOG/CzS/yLQgceVaX1vRaf3fML92RYmV+XGFPq+PaVQXtwHdMkA== dependencies: - "@lerna/collect-uncommitted" "5.5.4" - "@lerna/describe-ref" "5.5.4" - "@lerna/validation-error" "5.5.4" + "@lerna/collect-uncommitted" "5.6.1" + "@lerna/describe-ref" "5.6.1" + "@lerna/validation-error" "5.6.1" -"@lerna/child-process@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-5.5.4.tgz#97a7d2c994895e56ef8a0c49716a0a692867b5aa" - integrity sha512-1QlxFASrKlV3cG7XPFolOdrS4W784zv4DgipmTxaP++VlVAwbrHhqUdIEytDV6d0rlRksf6LPYzJhXdwlBkCEQ== +"@lerna/child-process@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-5.6.1.tgz#504bbf67ec981f7299cbbe1917415213357a800f" + integrity sha512-+86Z5EwBkdypTyV8z8Se3McbGCHh4wUBfGuOoNmar4NjeY2HVuiRCoaJsyqgoyNLoXJb1gqDGlWkG5LTuKvw/A== dependencies: chalk "^4.1.0" execa "^5.0.0" strong-log-transformer "^2.1.0" -"@lerna/clean@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-5.5.4.tgz#329ecf24c5c66056f0ba96fdff1d1bc2b9bed5fe" - integrity sha512-q1fXRm6ZXo3HrFfsgyY9C83haotPT/Xa5K8fQX6GADuNLk0Xo3+ycouHeidblRLmQtCa3WNPEmCthTuaWrSUoQ== +"@lerna/clean@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-5.6.1.tgz#2335dbd1c85c8343616696c6e793e2c847f61284" + integrity sha512-af+jZ/JT5AKvnW3JwFjqcuZyOiV1MCdYCi8KwHGJbEOT3ak2u7jdgFyHYtTngYTYeFn+VOSi9+vnVZ8RhQ0DQg== dependencies: - "@lerna/command" "5.5.4" - "@lerna/filter-options" "5.5.4" - "@lerna/prompt" "5.5.4" - "@lerna/pulse-till-done" "5.5.4" - "@lerna/rimraf-dir" "5.5.4" + "@lerna/command" "5.6.1" + "@lerna/filter-options" "5.6.1" + "@lerna/prompt" "5.6.1" + "@lerna/pulse-till-done" "5.6.1" + "@lerna/rimraf-dir" "5.6.1" p-map "^4.0.0" p-map-series "^2.1.0" p-waterfall "^2.1.1" -"@lerna/cli@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-5.5.4.tgz#f1c31d59d9be2aaafab6b856c7858a3da98d7b82" - integrity sha512-4uJEFEN0QNnQgghbpdY5wLmBPOeUeBeCKGh9s2pc1fkn0I1wKDhG0QByOfcf+jGuid2bA7DXzvJRXRgq0fWw0A== +"@lerna/cli@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-5.6.1.tgz#6a7fa68439b40709ad5723955e806d9e207087a8" + integrity sha512-y7GmT30rVovwJHKZQE+1aH5BbR+m9psNwzGhAl3bI3pIi3DPNwa+5Ag7XV+tzKItqwfNtNQbrGIt6u3xbVgR3Q== dependencies: - "@lerna/global-options" "5.5.4" + "@lerna/global-options" "5.6.1" dedent "^0.7.0" npmlog "^6.0.2" yargs "^16.2.0" -"@lerna/collect-uncommitted@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-5.5.4.tgz#cdfb5f0c1651742f72147189e38822b815e45892" - integrity sha512-xLCsp8Qx5z/BWCxqUt8W8Se2XJcCQE6YUAti9TSWD5Ar+M5Etkgz2YJiUjZfZrsWZPBCqNfGfxx9Sjs7a/r+8A== +"@lerna/collect-uncommitted@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-5.6.1.tgz#cec811ef38fa23ec484c6982b4c0b55cecce037f" + integrity sha512-Z1I4BFBcbqxX3RRiHtPA3JU92NOyTeJF/pWB5DImWDL7i5AYXWYA6iW99HyKTGfIsA3GrS4BIL0UOmp4vP7Yvw== dependencies: - "@lerna/child-process" "5.5.4" + "@lerna/child-process" "5.6.1" chalk "^4.1.0" npmlog "^6.0.2" -"@lerna/collect-updates@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-5.5.4.tgz#424fbcb4a717eb2ed7c6a2015857d85d7e2e131f" - integrity sha512-m34bVoMO5QOd5K5uyAtQtkTiXBIEJHydXMwNXs+YTIAgy82JXNHfZE9vV63Fd5ZWOGY6ORthuXuC2Jn0Vx9tQA== +"@lerna/collect-updates@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-5.6.1.tgz#035514b638fd3a75ff895c0ffe377da312b64fa1" + integrity sha512-xY5nJ//ACDVU/k9zn45W//wWw9+Cf4HWN7nla8J1YHLsRmn79uJONZnyK3MBCjMpgVzSAmMe47wuDu+ZzqV/Ew== dependencies: - "@lerna/child-process" "5.5.4" - "@lerna/describe-ref" "5.5.4" + "@lerna/child-process" "5.6.1" + "@lerna/describe-ref" "5.6.1" minimatch "^3.0.4" npmlog "^6.0.2" slash "^3.0.0" -"@lerna/command@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/command/-/command-5.5.4.tgz#f06f6dad4b5eed05fb4b98165d054af21be79715" - integrity sha512-/7drNy2DjVjDjm2knsDfEQIFEdRgPE2/lQ3yfEjVbXqs319o6KWbQVeoNy5GjGnLvc3v3eObA0cSJXHzEV11Bg== +"@lerna/command@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/command/-/command-5.6.1.tgz#74faf2f378c85eae4d0d366883c2bc294d207299" + integrity sha512-QxJr73TUQQ4B+4mWfwH7kNNTxP3lBnNKN6zX9NnjanQ2u6Nij/SMbvym1L0T2EVgZMseFzZEQnXE3d+jbWn/aQ== dependencies: - "@lerna/child-process" "5.5.4" - "@lerna/package-graph" "5.5.4" - "@lerna/project" "5.5.4" - "@lerna/validation-error" "5.5.4" - "@lerna/write-log-file" "5.5.4" + "@lerna/child-process" "5.6.1" + "@lerna/package-graph" "5.6.1" + "@lerna/project" "5.6.1" + "@lerna/validation-error" "5.6.1" + "@lerna/write-log-file" "5.6.1" clone-deep "^4.0.1" dedent "^0.7.0" execa "^5.0.0" is-ci "^2.0.0" npmlog "^6.0.2" -"@lerna/conventional-commits@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-5.5.4.tgz#d4fbc9240ec95bc73395b87b2e778cb95ac57b36" - integrity sha512-zLcaveLXnIDYo3e9ChKsHSxiG7vOJeKdcoC5Fj8WH4DjAq/aqy15TE5SJr6aO8hOU/ph0EonPwyQBf4X2Lg5fg== +"@lerna/conventional-commits@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-5.6.1.tgz#7900ae050a8cf77ffce992dee703cc54b5f99494" + integrity sha512-H86fO470tU/lnws+xrSxzeJFBehAo10dtI35+AC9kwub7XwWO19AhdbQjf4PwWhG8/CTl65Tn9UMg+kHYilmzA== dependencies: - "@lerna/validation-error" "5.5.4" + "@lerna/validation-error" "5.6.1" conventional-changelog-angular "^5.0.12" conventional-changelog-core "^4.2.4" conventional-recommended-bump "^6.1.0" @@ -2461,24 +2461,24 @@ pify "^5.0.0" semver "^7.3.4" -"@lerna/create-symlink@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-5.5.4.tgz#91314744a715ad0ef4d330d0b4cf30cadd052025" - integrity sha512-TOfkeEQGhE90mvtky0Vpfl+6hwBz0tSXV0+gjRBmla/sYU/9+QoSH36TauHrmu/O3C8/CWtoGruxiWq8jP6Gyw== +"@lerna/create-symlink@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-5.6.1.tgz#01288d0938e76ec2342a5427a751eabfe5d038b2" + integrity sha512-u46aoyxdoHXiyOQ1vCsA8PPkPkyjZanKuiJxnqMXITMwpQFjo18FvSN9BvnZkbJ6Jwnj/boO1TjDUewrQ4wPjw== dependencies: cmd-shim "^5.0.0" fs-extra "^9.1.0" npmlog "^6.0.2" -"@lerna/create@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/create/-/create-5.5.4.tgz#defb6bc3ab263bf8acbbfc34407a4de23cd2594f" - integrity sha512-mmZKy5U4OKBr/r8Tm6C8gubYHubQaHdPJ+aYuA/l4uCfK0p/Jly84Fy7M3kclcqm8FKDPKDhlp0Y2jnc32jBbA== +"@lerna/create@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/create/-/create-5.6.1.tgz#237f41a23f2803551ec5098358bc5056434868fa" + integrity sha512-DSDprUvSszb6qedync3TFfDLrFzP264LNPdw+MBSw4o3lpZAmAGelzyw+xSQQQjLNoGC5q/UUePKiCiWps8aPw== dependencies: - "@lerna/child-process" "5.5.4" - "@lerna/command" "5.5.4" - "@lerna/npm-conf" "5.5.4" - "@lerna/validation-error" "5.5.4" + "@lerna/child-process" "5.6.1" + "@lerna/command" "5.6.1" + "@lerna/npm-conf" "5.6.1" + "@lerna/validation-error" "5.6.1" dedent "^0.7.0" fs-extra "^9.1.0" globby "^11.0.2" @@ -2493,218 +2493,218 @@ validate-npm-package-name "^4.0.0" yargs-parser "20.2.4" -"@lerna/describe-ref@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-5.5.4.tgz#8b5dc90b5570e6646ca813fe4006e06408acfb05" - integrity sha512-2LDEsuSbZTta7SuwKVo9ofeKvxqy4YFNOjEt7+JceZIfh4si3MjIPBX7l8AsCaUmwJnpOEYba0aau72AUAOtoA== +"@lerna/describe-ref@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-5.6.1.tgz#d401b20c8dff972c2975e3a2e31d29e24e9b5d15" + integrity sha512-VskLszuC3NoN5l31kSh3NiIt4cqaulBI75Ek1HDT+VcGXR2AJzsE1BweDWrh2xJBdqdK8cLp72R/vgUDbjKQCg== dependencies: - "@lerna/child-process" "5.5.4" + "@lerna/child-process" "5.6.1" npmlog "^6.0.2" -"@lerna/diff@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-5.5.4.tgz#21344bd0fb5d2578b7873b16959ceee6eee4e512" - integrity sha512-OTieqJA4zKAV0KeG0nXwPnCkwg3LH+ucXlelnj1w+gaP2ndHbJVwgUWXGpqCHk8tn935KKOULhP7BGmAwvTYlQ== +"@lerna/diff@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-5.6.1.tgz#d1e91d12762cd9ea53d74eb2933c7d167953ed3e" + integrity sha512-5JTxFUuLfEJZwtplAhWAbffv+FzJsP9ndsJFsmobdfKHZxxoyCvwc5fgMFRgQQMZcQue+lnZEYITJim078xy2A== dependencies: - "@lerna/child-process" "5.5.4" - "@lerna/command" "5.5.4" - "@lerna/validation-error" "5.5.4" + "@lerna/child-process" "5.6.1" + "@lerna/command" "5.6.1" + "@lerna/validation-error" "5.6.1" npmlog "^6.0.2" -"@lerna/exec@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-5.5.4.tgz#7ff09f9c786bf66ade7bf4823f60a4feab3b267c" - integrity sha512-o1SQ+6/U6L8hih6+wAgjyOhqo2CKzMcW6YWLs5erRY9E6VCEc2kX7SW3223ehsAhUIPfG7n+KYPmuZbWvTpbGQ== - dependencies: - "@lerna/child-process" "5.5.4" - "@lerna/command" "5.5.4" - "@lerna/filter-options" "5.5.4" - "@lerna/profiler" "5.5.4" - "@lerna/run-topologically" "5.5.4" - "@lerna/validation-error" "5.5.4" +"@lerna/exec@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-5.6.1.tgz#a00bbca110c80054b15213474cac87d22083f443" + integrity sha512-nNZAm6yhbHG59xMOCnJjYjQRtjqZqwjSiWakWz8upj+2HBd2Z0eMnQvrX1j9GhurhgHzhG7AM7FLnJHyh1b3Tw== + dependencies: + "@lerna/child-process" "5.6.1" + "@lerna/command" "5.6.1" + "@lerna/filter-options" "5.6.1" + "@lerna/profiler" "5.6.1" + "@lerna/run-topologically" "5.6.1" + "@lerna/validation-error" "5.6.1" p-map "^4.0.0" -"@lerna/filter-options@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-5.5.4.tgz#c25ee6abb2eb2610d1da390911eafbfddecedf68" - integrity sha512-t1amUypgloaKN8d3VN7GiJQd4ommDplxSisAMS8hztb6ail3EbxasRQ03GXz4+6yQ98sam+D03soqSWAJcinrw== +"@lerna/filter-options@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-5.6.1.tgz#5d3389041e987584efb44b2a064c11b6593fe588" + integrity sha512-uii0ZDlv2j8e6d3D25wp59L0nRUh7C3B6ImCTOraEdkir6E1UEXZK7VmIzxWD44L78vnUW1kl+j/q7Kib3cP/g== dependencies: - "@lerna/collect-updates" "5.5.4" - "@lerna/filter-packages" "5.5.4" + "@lerna/collect-updates" "5.6.1" + "@lerna/filter-packages" "5.6.1" dedent "^0.7.0" npmlog "^6.0.2" -"@lerna/filter-packages@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-5.5.4.tgz#7f07fe9afb4eacc43fec67c82c9e4acb33b393a7" - integrity sha512-mwpiF+L0np003AUp3ntKEFkNOXWBONwm9q8rW9TOR8OeqMXbxYWGLg2IR+Wc8EClmen79tahn076nUD85OLqew== +"@lerna/filter-packages@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-5.6.1.tgz#e37e13261cb587e6dd664ff359b0d43b4b1218fa" + integrity sha512-uKaIebxrx235wg78SqY8A0ZugValdW6PgwkDFjss/Y2m8/9c+PiAbfkBeF5Q8iv8VP7te2MsGcvV12UmIQKDdA== dependencies: - "@lerna/validation-error" "5.5.4" + "@lerna/validation-error" "5.6.1" multimatch "^5.0.0" npmlog "^6.0.2" -"@lerna/get-npm-exec-opts@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-5.5.4.tgz#8c1b19a364071350a305f9da50a6b851ced1fc6f" - integrity sha512-PLvSdt0woeOz3TZDHRshYVR9TSOUNunxZ4mE8f0tg9FPQ5R1uuwd2BF4HmEL7AlWFtFS+sOwuL9bI1btV1ELew== +"@lerna/get-npm-exec-opts@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-5.6.1.tgz#53ec8cc9b506aca8f88e6dc531523c9f50c418dc" + integrity sha512-y+Fzd9l1LM6tlarKrWxXQBKm02m7sjzj1T7vgiPW5uo324qEZVil89849iXgm2tLZt7/KD18Gqene2Hik0jmGQ== dependencies: npmlog "^6.0.2" -"@lerna/get-packed@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-5.5.4.tgz#2aa2772a6c90bdb1335b79d6c9058fca73a74505" - integrity sha512-BXQcQ5rfdIa8hkDd4UdETWs9mDiFvmBRpSNxpgaRiuL1w7AXEaMREQgKOFiv8fv/e+z/F0SXD048Fptj8d5pjA== +"@lerna/get-packed@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-5.6.1.tgz#7ae0b0251a42e6a7d59be08c851daa4a5233672d" + integrity sha512-PI+WSCHXsBCF2+McaEUtcR3acZu/0JApUH+IJMz0TdYzspF4ewzEWhBn+4Gmw926oFsqnqfz37KInXNHGmBvCg== dependencies: fs-extra "^9.1.0" ssri "^9.0.1" tar "^6.1.0" -"@lerna/github-client@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-5.5.4.tgz#9ff47636e57514fb8d44678ad64664c932868d79" - integrity sha512-m5vTRsHyfzh16T3fX3ipdjZyQwl4Gnwav4RmEaVUFp2uMqsr0TrML7LJ/eqOqjGvj/+JWa52rIQsUCQe9BJYag== +"@lerna/github-client@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-5.6.1.tgz#6ce59479ce9c31f3a91119236e00ff5894f80630" + integrity sha512-XGAry8MX2fou8aAP3mf1+6oPP34QdgXzrRbdtXlCv8ksddbp/S1Tn5hNvorEJn2yDMNcjIDIdvrL/T4UiVzQjA== dependencies: - "@lerna/child-process" "5.5.4" + "@lerna/child-process" "5.6.1" "@octokit/plugin-enterprise-rest" "^6.0.1" "@octokit/rest" "^19.0.3" git-url-parse "^13.1.0" npmlog "^6.0.2" -"@lerna/gitlab-client@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-5.5.4.tgz#e18a479e8f2f3ce0ecfa1e0d4f0a16d646809bba" - integrity sha512-vPSr6xFxtOigFY/fE8oYF+360WsV+g2ZkoJB34FA6UucjWBBPu2W13ydUYfqvJYODJYFzhTjB9b8zf0MJ0KMrQ== +"@lerna/gitlab-client@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-5.6.1.tgz#a0e57eeb2fe6dbb6a5922faec348cda22f14ff5a" + integrity sha512-zNG27B1dNy4QF45tUPEywthNtsDbzvsUSiokMx847Gxq5qLHtRHRR8kK51Q2dJ6u2biZafGNyzHqT5CQ/0ndnQ== dependencies: node-fetch "^2.6.1" npmlog "^6.0.2" -"@lerna/global-options@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-5.5.4.tgz#ed2daee879205255b4667921d6c91a4e2c04dda8" - integrity sha512-J2K4CsnYuKrW7bDR2gRABUFFrLaJ5z4GaaDpaKtQi6sHFKcVBfYz0B51Fe3NGFOvrct4YS9N7SgKDxPd5Nznig== +"@lerna/global-options@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-5.6.1.tgz#29b506e39663aaea4d08fec8288fe1e22ead1c19" + integrity sha512-VgHVo0T2NC/YK/mR9nu8Z3DL65UtoamRclrnqK3HsaTub15UnqAlbcnEk2lB50e5TLsIZAp4TatDYrYNPKKJPQ== -"@lerna/has-npm-version@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-5.5.4.tgz#32655bdf0d7deeb7de78ebc4e978ecc02b18bf91" - integrity sha512-l+nDc/QYvfA5f0tFxzd9mZ/SP0nfxbqpZ9csGyqU8NV/40fHRRouO+fcLtxjcG/mruMjiAB/P216BBbRmGb2VA== +"@lerna/has-npm-version@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-5.6.1.tgz#011b3d1a1a61606b06ee79fcdff1682e9f66895c" + integrity sha512-V6lt830kXnEm/1pHyFh9Pci4lgRbQcBr1eORAD8d03uxQDfxA7Z8Gu9afhH5m0rk+P8txNO/3pUe2pf5Ex4DGg== dependencies: - "@lerna/child-process" "5.5.4" + "@lerna/child-process" "5.6.1" semver "^7.3.4" -"@lerna/import@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/import/-/import-5.5.4.tgz#b0e07b54c13c786eac4a7639cc0db80ff1f952c6" - integrity sha512-1edy4e+0w4/awahc3uPvRQngIHbri5BGZZbjvsX8aKlPUd9pFg5U9/5w3lVE5jnZFRnqwhpJyyvJjL2M5F6IgQ== +"@lerna/import@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/import/-/import-5.6.1.tgz#d6d56e109c5e16196fc345832ca5675d1c2d9027" + integrity sha512-cOLjRAWWfY1ezsiBRIbA6lN4THu89xjtS+wJ8WUqr/xbYbGZ/qr4DBAWnpWpMfLLWN6Eel6nEAhah+Ch1IKNog== dependencies: - "@lerna/child-process" "5.5.4" - "@lerna/command" "5.5.4" - "@lerna/prompt" "5.5.4" - "@lerna/pulse-till-done" "5.5.4" - "@lerna/validation-error" "5.5.4" + "@lerna/child-process" "5.6.1" + "@lerna/command" "5.6.1" + "@lerna/prompt" "5.6.1" + "@lerna/pulse-till-done" "5.6.1" + "@lerna/validation-error" "5.6.1" dedent "^0.7.0" fs-extra "^9.1.0" p-map-series "^2.1.0" -"@lerna/info@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/info/-/info-5.5.4.tgz#c0bb38a5d97f60019278a49ee324a3be804b9baa" - integrity sha512-JgYRP2WZUCuiYyf3CQjqEMGoqWpM7t/bammKW/sC3P0/xGSykh45vdRwVojcu4fGRZ/YS7sfFt28Dbw4QFp0iQ== +"@lerna/info@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/info/-/info-5.6.1.tgz#3df8ff719fc5db7cd6a8dc913b5bddb6baccb2fe" + integrity sha512-0ixkn6Z8jlesMozQBlG3vdivFOjleapCusjDFZ1F7quuEcWDQuW1bQ4i55ISsVhh5gLCTTwQiNEhPnDQzs7fww== dependencies: - "@lerna/command" "5.5.4" - "@lerna/output" "5.5.4" + "@lerna/command" "5.6.1" + "@lerna/output" "5.6.1" envinfo "^7.7.4" -"@lerna/init@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/init/-/init-5.5.4.tgz#78142ec262e5d54c0ced716239c39acd2c2cf821" - integrity sha512-BteH3O8ywUN8eBhwzOey3gTXxxKRxGz1JJ6tP1mA0KZoJgiBsSFoZbx7SJeGrR8gY7kmEyvXTY1geaxmb7V+vQ== +"@lerna/init@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/init/-/init-5.6.1.tgz#026efdde44e9eab9914b3f1140eec14a19d0c5bf" + integrity sha512-EPA3XCteadwZjb7GOqJFw+QcqwV/CrpWm9FZOEpo9uXNUCvOW8NqDlFzTEMrMiXBTldoP0H9SK9yM81c0Mip7Q== dependencies: - "@lerna/child-process" "5.5.4" - "@lerna/command" "5.5.4" - "@lerna/project" "5.5.4" + "@lerna/child-process" "5.6.1" + "@lerna/command" "5.6.1" + "@lerna/project" "5.6.1" fs-extra "^9.1.0" p-map "^4.0.0" write-json-file "^4.3.0" -"@lerna/link@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/link/-/link-5.5.4.tgz#5bd2097ab123f6034b470626d220bd5ce03cbc77" - integrity sha512-/kFST918MLhvWbs3szbUw3/6pPa0/vS77WnHk8n3S3v/PuzUEjm9CncYrZ0xB1ZiGk6oa4YTPWMlqyYMY1k0hQ== +"@lerna/link@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/link/-/link-5.6.1.tgz#a57d591b6715788257e9d7a245edf2ae2f5724c7" + integrity sha512-iWr7HGviIK3N/WNUoAZVV0RRf0CQzpR9uJXmsfuVKXj5gN8IHqFOdGS8TIIN57ekC0DOpDtR21h65zZXD1TSHQ== dependencies: - "@lerna/command" "5.5.4" - "@lerna/package-graph" "5.5.4" - "@lerna/symlink-dependencies" "5.5.4" - "@lerna/validation-error" "5.5.4" + "@lerna/command" "5.6.1" + "@lerna/package-graph" "5.6.1" + "@lerna/symlink-dependencies" "5.6.1" + "@lerna/validation-error" "5.6.1" p-map "^4.0.0" slash "^3.0.0" -"@lerna/list@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/list/-/list-5.5.4.tgz#fd27a69118e6ed515149fd77690ce6ecc3058456" - integrity sha512-ppLy99mQYoDkO+SxqnknPYqOnO+iJskb0G2h2fLF4ZK98oy2duJWkkehagwCVtmPax/DqWDDc/IAj+KWpcC0bQ== +"@lerna/list@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/list/-/list-5.6.1.tgz#8beb107494139698dbde62ca54ca28fc3737bbae" + integrity sha512-4VyAvVwKZQC+ntfjJuL8PbFu5jeR/8t21BzFXVWRkrZc3/sGVxSNtzi+9Brgrxm4n8qir3+wiiC4LSHdYG8Mlw== dependencies: - "@lerna/command" "5.5.4" - "@lerna/filter-options" "5.5.4" - "@lerna/listable" "5.5.4" - "@lerna/output" "5.5.4" + "@lerna/command" "5.6.1" + "@lerna/filter-options" "5.6.1" + "@lerna/listable" "5.6.1" + "@lerna/output" "5.6.1" -"@lerna/listable@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-5.5.4.tgz#eff0720d5c01f734933b95dd8b2161d3126dc487" - integrity sha512-c6acWwSDQE5zeBcnH3m+mwfDr3zr515LsC30tXRenkqp4lbXeyrUPw0Mckw1ksw2nyb5LZl8gQnrFbAKC8gBSA== +"@lerna/listable@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-5.6.1.tgz#97a5c790a52a2931814f90b25fa798b65a2e7670" + integrity sha512-c7vzJYEPiH0DT7BJpjomLt2zwViPupk0g/dU9rCBkm4w2jk6Vult60/O3rx5rb95PUFz/pYM+3w3vkZWXx9AnQ== dependencies: - "@lerna/query-graph" "5.5.4" + "@lerna/query-graph" "5.6.1" chalk "^4.1.0" columnify "^1.6.0" -"@lerna/log-packed@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-5.5.4.tgz#0f0285445aadf3289148af7949f2cd61a21ff553" - integrity sha512-g3lW5yIIe66aVTOYn78+h21GR9gr/WdU3/z8jm0VzGC+VR7KqCKU+49JOCOh7LlNf7sY4ZE6ZbaZptp5wUjrgQ== +"@lerna/log-packed@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-5.6.1.tgz#218ce06ad4323265da1d27865e5020b933a6aa35" + integrity sha512-nyrrI8SbwO4nezuwDDQPea2XR3IWVRxgDzuZHA+g5utx75BuCZ2d1yrZe8URzfCIVVoGYI5OuOlv32BtLzt4tw== dependencies: byte-size "^7.0.0" columnify "^1.6.0" has-unicode "^2.0.1" npmlog "^6.0.2" -"@lerna/npm-conf@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-5.5.4.tgz#642438b68dbd98af1189fb85646d3e0ca24b3741" - integrity sha512-BwnP0ezR84nQ5Sh0CdH77Q8evDcqP9bFUdjX6eZT4Rxl0432ocB1YpweNnUDQO4Boxj/FiOu/OaE0Kej+I+5ew== +"@lerna/npm-conf@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-5.6.1.tgz#b2475f908802dd8c84c805c6b231a23fee0b6a19" + integrity sha512-u4Pg0IjMhRIGdgNr18nzwyv6wcP5Qo0QEvf07P6tV8G3ocY+3w8q6mrPyFT3NitodLQ4AMWFDfyFZzXikJI+uw== dependencies: config-chain "^1.1.12" pify "^5.0.0" -"@lerna/npm-dist-tag@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-5.5.4.tgz#2ed3ad80af572bfdcf631f8271e59240d72e011b" - integrity sha512-aAisCh5b2+6cjLxZh03/MGGcBjL7KNBWi5qW6OCdQQpcxH5r0aUJ5F1rmXJE0qxgsLWaGRLzngWk+v6VJHqYJQ== +"@lerna/npm-dist-tag@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-5.6.1.tgz#10c212607595396280a1c372f119f987ee0dc267" + integrity sha512-YEbIP1J6V0U9qco7wk9qK0JbApIshPrUGqr0Kp1rx57pwtcwxIAvH/AEbqdVqjmItiPDpYgP7VukG7MI6EGe1w== dependencies: - "@lerna/otplease" "5.5.4" + "@lerna/otplease" "5.6.1" npm-package-arg "8.1.1" npm-registry-fetch "^13.3.0" npmlog "^6.0.2" -"@lerna/npm-install@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-5.5.4.tgz#0b801d16d04cf2c9c6c114ec0b188ad190c63775" - integrity sha512-lglf2KRxg30dCvNWwxQRJmCfXC51byNqYQt9/dFrnWcotHwpNRIFnVM3tWMdVxlwJMiozU/PjUFBateaxmukXw== +"@lerna/npm-install@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-5.6.1.tgz#0ea4190e604708759d83e58bbf1ffb5f891b1e5f" + integrity sha512-PWJyqWzDQGkhn5/mr88yYfLF+t9NzHadcmMPYxv8lBTBUTZy9sdCw8k0uQ19lNUsI/DfMTLrcYZPSLxqe3mN8A== dependencies: - "@lerna/child-process" "5.5.4" - "@lerna/get-npm-exec-opts" "5.5.4" + "@lerna/child-process" "5.6.1" + "@lerna/get-npm-exec-opts" "5.6.1" fs-extra "^9.1.0" npm-package-arg "8.1.1" npmlog "^6.0.2" signal-exit "^3.0.3" write-pkg "^4.0.0" -"@lerna/npm-publish@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-5.5.4.tgz#fbdcadf5bedf91bbd33ddca79e742262f8b72465" - integrity sha512-Z3GQqby0FR7HW82/t7j7nOF9pfSwNVmgms0zTq7a8YaEe8uDlAxGMW4sVN8uT89mZfBfS6R1WMlBbC5Ea+jy/A== +"@lerna/npm-publish@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-5.6.1.tgz#1d0891cd182be2d2f167993a0261df0f88e9275f" + integrity sha512-eSotBP+mu6EtRIfhKsbQR3m5RnL7zxhZav1zxtnYvolKPjodLlGxzqcYCqTMdnR6GAIcInFh123uuTfZNzu9CA== dependencies: - "@lerna/otplease" "5.5.4" - "@lerna/run-lifecycle" "5.5.4" + "@lerna/otplease" "5.6.1" + "@lerna/run-lifecycle" "5.6.1" fs-extra "^9.1.0" libnpmpublish "^6.0.4" npm-package-arg "8.1.1" @@ -2712,85 +2712,85 @@ pify "^5.0.0" read-package-json "^5.0.1" -"@lerna/npm-run-script@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-5.5.4.tgz#88dc25d81b5263d85443b570d06f1c87df38c58a" - integrity sha512-fwHZRTGUldN9D2Rugg0HdwE8A8OZ7CF7g63y7OjzIoxASqtZBDyHZgrVbY/xZcrhqCF0+VJ1vR0c/uFwtWFrtA== +"@lerna/npm-run-script@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-5.6.1.tgz#b073187fd696e4d8dcb9271ea59abb9d300ef6b6" + integrity sha512-VRScf/chK01PxFCiH6j8GWOlS8w3dH4koq7tVX9OSi3FVwqrNvN7wky/AO7cKRyuTmdoG+puDsI7gHtGclYvrQ== dependencies: - "@lerna/child-process" "5.5.4" - "@lerna/get-npm-exec-opts" "5.5.4" + "@lerna/child-process" "5.6.1" + "@lerna/get-npm-exec-opts" "5.6.1" npmlog "^6.0.2" -"@lerna/otplease@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-5.5.4.tgz#8b1f5af43e3e99131ca6077ac6f9c274733a6a77" - integrity sha512-c/tSjuMGw0esoxqtW0Qs2gCcvFDCrOlFnd4EgTJQKUSbNwVrabMkDJRMP0zu7UiSYJCCWKlBnjpBCiBXNG2H4A== +"@lerna/otplease@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-5.6.1.tgz#5962c6f075b5ed1eb578d6dd33a2774434be3153" + integrity sha512-MbS09KoDHDvsFpnwIYOZ3lu5+d/bDUm2jQ+kcJe7VH3P37t84OFRXmixSVjf1xpLuvoXbSZZsfDsYx9VkAdq4w== dependencies: - "@lerna/prompt" "5.5.4" + "@lerna/prompt" "5.6.1" -"@lerna/output@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/output/-/output-5.5.4.tgz#22c9d78a39b7062c90fd1a1e0050a4129dc9c239" - integrity sha512-qiYtDQ4k9sXzXRlbSuLUFDNLk42sJY3n7x7fWKt6v5I9s2uh5d3cBctBuvV8+YX82H1inQ9hpyFafzOBO8tbCA== +"@lerna/output@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/output/-/output-5.6.1.tgz#1b77f63c36d09f94f25dda3cf82fca2bdbc9537e" + integrity sha512-XEUvLn8jOVL63PRcjwSd8SdjAJvWLDDNpq75hBfemHHSpcfc7qlqqkXWs+Mz1C938rub8MtPUj7ImEUo12k1KQ== dependencies: npmlog "^6.0.2" -"@lerna/pack-directory@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-5.5.4.tgz#987dba5049a57fd822412e9a1770dab9f4da314c" - integrity sha512-yUhu8ADzUZOZPfimMwlxxuxIweXitMKTVAmhz9eruiNHxsc0GpKb89yemep03iXqtrjC1Pt/QsS+dhJNNKdZ4A== +"@lerna/pack-directory@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-5.6.1.tgz#6e81776f7ee0baf3fcfa0a0031f5089da0127f4b" + integrity sha512-vmkvD4LnYJhPps+I9t03pV02rnZak4gyAh/St1lj/OYV9ecRWQWOqWIFhffKOFHBes3Lxmha8FMSN2IOkG1BxQ== dependencies: - "@lerna/get-packed" "5.5.4" - "@lerna/package" "5.5.4" - "@lerna/run-lifecycle" "5.5.4" - "@lerna/temp-write" "5.5.4" + "@lerna/get-packed" "5.6.1" + "@lerna/package" "5.6.1" + "@lerna/run-lifecycle" "5.6.1" + "@lerna/temp-write" "5.6.1" npm-packlist "^5.1.1" npmlog "^6.0.2" tar "^6.1.0" -"@lerna/package-graph@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-5.5.4.tgz#32abce3e23e09017f5323f2704d9544ffcb1ccbf" - integrity sha512-1g0c08mooZBtrIG8gMOdpbZ3rn5VM+e47pLFAXZcfGUaNUfc0OM58Z50ONiJq23XlJmS4vQ2e4X3cs7Hc7+Dxw== +"@lerna/package-graph@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-5.6.1.tgz#ae2354b4ddd52a797af2638bc53384f379981c67" + integrity sha512-R3ToEGzFy5x1Po/eoOy8vsM2x/zxR26bFewDLUDWbs5lWDC7ml5v44JqjfWB869M/XprN55yz2/VE5NhEB6QsQ== dependencies: - "@lerna/prerelease-id-from-version" "5.5.4" - "@lerna/validation-error" "5.5.4" + "@lerna/prerelease-id-from-version" "5.6.1" + "@lerna/validation-error" "5.6.1" npm-package-arg "8.1.1" npmlog "^6.0.2" semver "^7.3.4" -"@lerna/package@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/package/-/package-5.5.4.tgz#815c35a8f5a12a6f91f3a0314178f198ffcbc1c5" - integrity sha512-wpBcq4zVFVQOJI9QT0TJItRjl6jGSGFp93n4D8KHXXiyeKmN9CW4EnwFY9bnT3r5OteZN+eorD6r2TnRe8VPDg== +"@lerna/package@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/package/-/package-5.6.1.tgz#5b8a6abb255492c245fd982a4f21345353ed847a" + integrity sha512-QTWoRe/wTETDrF9ByhctmyZpFl+UmwSJJUcsTd2pUqvd5QaOd1twXwZdc5/1Rr08Yxl0PZqJCtZYJDcXce0eRg== dependencies: load-json-file "^6.2.0" npm-package-arg "8.1.1" write-pkg "^4.0.0" -"@lerna/prerelease-id-from-version@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-5.5.4.tgz#ba17e53051b15cfe7ba9c98e75abd5644559f8a7" - integrity sha512-IHNQxbILrRGhw9CCdqy0ncSjDpNvdJCcaGFh3+TJRx6Bjhl5ifbUjI0gBUxd7i5Aict5dguWlhAWHQpef48AqA== +"@lerna/prerelease-id-from-version@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-5.6.1.tgz#fdff7cdd54e46151834572d6ad42a5da4b1a5f97" + integrity sha512-+ctzgoA1XAGbTQCeJjMEoQQCzCBW6WVAMVKNEOKrcsEVMb5gsKKSVha8WsKEzvK6gAC/x3pXemtuVWQvtYPw0Q== dependencies: semver "^7.3.4" -"@lerna/profiler@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-5.5.4.tgz#2082a05c4aecee0bd567a5069efb09511212f4c6" - integrity sha512-LPnO8mXhXSBT8PD5pEWkgd+2d8lJqQ0fnwcIPG0B8o6tnQrSc2gXLNxStYOFedzcZXRhAYiFVrf5VjOKHV6Ghw== +"@lerna/profiler@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-5.6.1.tgz#0697c14aa0ffa08395488d7f3e361921c140a577" + integrity sha512-HxY0hg5iHxPzyHvb7gVkZzUG+jJKZ1fErATcC53+kA7qOBTGlz2huZ8gU+rpX3SlTJGodnZ5FwHQvHD2bzkTZg== dependencies: fs-extra "^9.1.0" npmlog "^6.0.2" upath "^2.0.1" -"@lerna/project@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/project/-/project-5.5.4.tgz#184d13b0b47187bed5fa6a6227c2a0abf6060fda" - integrity sha512-iLdyc+jPU0cR6BQO3V3Sf51WP3Oac+I/+518dIGdWS7ot9nEbjuZripHJjIkyZKSfnKPTEtz2aUta0ndoewwuQ== +"@lerna/project@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/project/-/project-5.6.1.tgz#dbcc8074c57a0e937ddd09c0eaf0700daeae5d8c" + integrity sha512-GlM+b4pyImtegQztMRsLAkSPCYfmAqCqtgkffjXQS9tMjXnUBqu4+gW/uMBTTOD2CKf+Nikwjc602rpRaUQLyw== dependencies: - "@lerna/package" "5.5.4" - "@lerna/validation-error" "5.5.4" + "@lerna/package" "5.6.1" + "@lerna/validation-error" "5.6.1" cosmiconfig "^7.0.0" dedent "^0.7.0" dot-prop "^6.0.1" @@ -2803,38 +2803,38 @@ resolve-from "^5.0.0" write-json-file "^4.3.0" -"@lerna/prompt@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-5.5.4.tgz#3b61a9ba3996c0cf3926671e8f9a15189b9b9ef4" - integrity sha512-X8H2V4dDkFLYzZkMTillvuGAphU5fTDR66HgZlhgKtbJjm7OrjxhoRdk/YlMpI+HdYwXhdUzhEe9YJEhqhfe6w== +"@lerna/prompt@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-5.6.1.tgz#8fc0cd73b063c9ad79e30421fdb5c16bb8bbc5fa" + integrity sha512-CZSHV2yK6I6+35IKz7Fh3SeNSPR4XuCFXsW0RuauTZoNffk3mP2pOt/CrI1P6yOj7tqcyjghzzv1gkINtrq4/w== dependencies: inquirer "^8.2.4" npmlog "^6.0.2" -"@lerna/publish@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-5.5.4.tgz#73dceae590815e096d3410c98f07ba01a7bccbc1" - integrity sha512-zBlZsk+NBUfg4o7ycKH8/hc4NRJWd4RmxB6Kn7xo7MOJMW3x+K4aABcqY2GGxEMUxx3rBBVPIdziVWbyS7UIxA== - dependencies: - "@lerna/check-working-tree" "5.5.4" - "@lerna/child-process" "5.5.4" - "@lerna/collect-updates" "5.5.4" - "@lerna/command" "5.5.4" - "@lerna/describe-ref" "5.5.4" - "@lerna/log-packed" "5.5.4" - "@lerna/npm-conf" "5.5.4" - "@lerna/npm-dist-tag" "5.5.4" - "@lerna/npm-publish" "5.5.4" - "@lerna/otplease" "5.5.4" - "@lerna/output" "5.5.4" - "@lerna/pack-directory" "5.5.4" - "@lerna/prerelease-id-from-version" "5.5.4" - "@lerna/prompt" "5.5.4" - "@lerna/pulse-till-done" "5.5.4" - "@lerna/run-lifecycle" "5.5.4" - "@lerna/run-topologically" "5.5.4" - "@lerna/validation-error" "5.5.4" - "@lerna/version" "5.5.4" +"@lerna/publish@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-5.6.1.tgz#ca7a4e7efc09f2a694250934afced1a019aeb621" + integrity sha512-J2zYyDGXs44YQ1h19933F9bm3fjog0gNpD27kL7Zw2nrMrR/LAuxNIFT/0ljtZSuMjlXllxZ7Kyxyz1gvMv3cA== + dependencies: + "@lerna/check-working-tree" "5.6.1" + "@lerna/child-process" "5.6.1" + "@lerna/collect-updates" "5.6.1" + "@lerna/command" "5.6.1" + "@lerna/describe-ref" "5.6.1" + "@lerna/log-packed" "5.6.1" + "@lerna/npm-conf" "5.6.1" + "@lerna/npm-dist-tag" "5.6.1" + "@lerna/npm-publish" "5.6.1" + "@lerna/otplease" "5.6.1" + "@lerna/output" "5.6.1" + "@lerna/pack-directory" "5.6.1" + "@lerna/prerelease-id-from-version" "5.6.1" + "@lerna/prompt" "5.6.1" + "@lerna/pulse-till-done" "5.6.1" + "@lerna/run-lifecycle" "5.6.1" + "@lerna/run-topologically" "5.6.1" + "@lerna/validation-error" "5.6.1" + "@lerna/version" "5.6.1" fs-extra "^9.1.0" libnpmaccess "^6.0.3" npm-package-arg "8.1.1" @@ -2845,99 +2845,99 @@ pacote "^13.6.1" semver "^7.3.4" -"@lerna/pulse-till-done@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-5.5.4.tgz#c7fe3349a1da86534fb42bb7f858a6245e6d67e0" - integrity sha512-xC4/QPnIQfrE1aA8W5w6AfaT0gTm8SeVmrsQzMMlUTJ2JAnflsHv1oG69M89xq2DrlXsEVaah56Xbjavy+woQg== +"@lerna/pulse-till-done@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-5.6.1.tgz#70b6c5e55484a602db0ae326e1b50324022a2836" + integrity sha512-SCD1gCSkC4roOvCB0GTvnFrYVTLX7o9TXykyg5UTXb/XRMNqr9ZBFH7qZHJnleO9x3eMk1oh4W1rvfFIITyRjw== dependencies: npmlog "^6.0.2" -"@lerna/query-graph@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-5.5.4.tgz#64079526a6e483a28c0b9cda12f8444ced6016b3" - integrity sha512-TJsmJ++3NpEs+LxF0B02hAv2HigJ9ffa9e+paK27oE8sTiH3YataMHaNu5ZkeotJTw7u0IiRLm0zi4z4xoRlLg== +"@lerna/query-graph@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-5.6.1.tgz#e9aefba681449e9c81c5228f0bbcdae4cd180bdc" + integrity sha512-ySXS5Ur/GtrBOr+u5FZxrcH0xD3LsBSu68OEPNnMIAdt66AOhh6K4OXmc58biTN0sWAdnE43mulqA87bZH0aMg== dependencies: - "@lerna/package-graph" "5.5.4" + "@lerna/package-graph" "5.6.1" -"@lerna/resolve-symlink@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-5.5.4.tgz#3711dc911193d8f1843616bf4a77e4fbf14daedf" - integrity sha512-cAIXELf04dHx/XF/2njCM0bpiyup6Nedpmm1XNJzrJuWrGmwK2qW5F2wQ/RHXWXsLIe/BsOl/hfEONm7o7k8sA== +"@lerna/resolve-symlink@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-5.6.1.tgz#909495ef283df6a920ef91f713c73ebeabadf3c0" + integrity sha512-25TdowB5dIVycCJWyZGBDPSz6LoFOi/YRh85+dL1RrvxmvfiDwjrJ8P4eDl03/fDSV9YTFVYYmR8r1K2Vw8kQg== dependencies: fs-extra "^9.1.0" npmlog "^6.0.2" read-cmd-shim "^3.0.0" -"@lerna/rimraf-dir@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-5.5.4.tgz#35b1ee9cf3bca12748df4e53f7e5cef5ef845d6a" - integrity sha512-++I7ToqICE4KSqi4T8enfcou8XPZV3gmrpARVD9VW4Tz3w8BP/JijB6AJwgZKojdqQenXU7u3lLTzfepKN1iOA== +"@lerna/rimraf-dir@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-5.6.1.tgz#f7576686b5d6700d0db403b603224b4035f16445" + integrity sha512-1lm5FIiwFOpSzCMyNF90HX6NWHzDmY47TgDs07416B8ghMtZgb5aLMHi/aoarqWopn4X0ae3lxsZjUEOhSAWgA== dependencies: - "@lerna/child-process" "5.5.4" + "@lerna/child-process" "5.6.1" npmlog "^6.0.2" path-exists "^4.0.0" rimraf "^3.0.2" -"@lerna/run-lifecycle@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-5.5.4.tgz#e9d61d5c290402f936818ca775168a677d965ad7" - integrity sha512-MIE8HJml8gWkH5jt/5omiPr69VUMUPwvhkf6Irpg5yxIE5K4oeViVZMay2v6cPA9jAeTDCshHb7gt2EPBSsYQA== +"@lerna/run-lifecycle@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-5.6.1.tgz#66ef40449c6e40bf3372579fd8d0a12bf8bff47a" + integrity sha512-LkEvYDVYNX2mUY3PoNoDDBPDMofzNa5dHvAg7P2NVpffE41VbWBI0c0Q7uhN9nGuCksvsqamTffvmPdU9lCffA== dependencies: - "@lerna/npm-conf" "5.5.4" + "@lerna/npm-conf" "5.6.1" "@npmcli/run-script" "^4.1.7" npmlog "^6.0.2" p-queue "^6.6.2" -"@lerna/run-topologically@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-5.5.4.tgz#14fdd4d40882445b9346d0e814c61eb8237687a9" - integrity sha512-p1UNHgR8sOaS40nVD0HyqwmawDXBOikIibjbJLcY2QuvWwzAGKjfWm/sAXagYjgzaPYQAhaHyOxTdGe8T+a7uQ== +"@lerna/run-topologically@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-5.6.1.tgz#da6b9c1d21988482199edc9691c009a8ddb980ec" + integrity sha512-UjOppd/1dSQxDfIjQIJOH+c/lLwuTKSNyd9uKhII11OnpO+gmBP1kvA65k1cm9EZVky63o7X9/O+oTB8Tr8C3g== dependencies: - "@lerna/query-graph" "5.5.4" + "@lerna/query-graph" "5.6.1" p-queue "^6.6.2" -"@lerna/run@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/run/-/run-5.5.4.tgz#b7cff31b3240c7326119a9a675af2bbc16af6d2a" - integrity sha512-R9g+4nfIDgK+I4RleAJpXrStzLlUCEHR/rxH2t5LJ6DLaoKUG6oeRZsf2w/It/r2IMV1dq2xG6chs+H1o1J+Ow== - dependencies: - "@lerna/command" "5.5.4" - "@lerna/filter-options" "5.5.4" - "@lerna/npm-run-script" "5.5.4" - "@lerna/output" "5.5.4" - "@lerna/profiler" "5.5.4" - "@lerna/run-topologically" "5.5.4" - "@lerna/timer" "5.5.4" - "@lerna/validation-error" "5.5.4" +"@lerna/run@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/run/-/run-5.6.1.tgz#7f9505cba362b89e162eee8ae82b8e10ec6a2c34" + integrity sha512-kb4hwnhth3GKWIxoNlA/xdDUWGbK67yx1aLEyZjssmMemxfSKxvqrNB+TaHAPSz27hyAKqnOL9Ym/YkAt7s59A== + dependencies: + "@lerna/command" "5.6.1" + "@lerna/filter-options" "5.6.1" + "@lerna/npm-run-script" "5.6.1" + "@lerna/output" "5.6.1" + "@lerna/profiler" "5.6.1" + "@lerna/run-topologically" "5.6.1" + "@lerna/timer" "5.6.1" + "@lerna/validation-error" "5.6.1" fs-extra "^9.1.0" p-map "^4.0.0" -"@lerna/symlink-binary@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-5.5.4.tgz#cb7e8194e7b860196aff306aa35e0db67f1b5c3a" - integrity sha512-FVhkL8KIgk0gPJV136Sl0/t3LD3qDngIRqJVNPIbATVHagkLVsuJM6+BcdWLxoMUCtwHIyWqgcXn1Oa/DVSUEA== +"@lerna/symlink-binary@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-5.6.1.tgz#57eff521c706a42dcb10f8405eb45ddf8ff80b50" + integrity sha512-Y9x8gvvAP281467+QPwp56L6DDGdWtt24pREyWF7D+FIRcooJ29pn2C3B0rmzd5Ti63/6mrfCipUp9DXSWGwNg== dependencies: - "@lerna/create-symlink" "5.5.4" - "@lerna/package" "5.5.4" + "@lerna/create-symlink" "5.6.1" + "@lerna/package" "5.6.1" fs-extra "^9.1.0" p-map "^4.0.0" -"@lerna/symlink-dependencies@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-5.5.4.tgz#99607534e239b1479209d3025988e3b2c5ccc073" - integrity sha512-BfOcATr0TreXRfIhIRvgGCT2o8uEqrwVLo8edCQICeqgju19fFn22Qmyb8LW+LMJjBUuSkpJDqqamQ6nj3Ch2A== +"@lerna/symlink-dependencies@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-5.6.1.tgz#dbfc06a4a84f94b01f3eb2b9aa99c504f84d1644" + integrity sha512-lKnJFbEpIdj9R70cpRor6vf3pxBnvk0RF7fwiTlWpF2BmlBYVihM+lML2vCts5G7ZBSQ9zTVyIqlCXG3qhyoxQ== dependencies: - "@lerna/create-symlink" "5.5.4" - "@lerna/resolve-symlink" "5.5.4" - "@lerna/symlink-binary" "5.5.4" + "@lerna/create-symlink" "5.6.1" + "@lerna/resolve-symlink" "5.6.1" + "@lerna/symlink-binary" "5.6.1" fs-extra "^9.1.0" p-map "^4.0.0" p-map-series "^2.1.0" -"@lerna/temp-write@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/temp-write/-/temp-write-5.5.4.tgz#02c07da23944a765d3f319f247c71e0b99b9416f" - integrity sha512-cJy9f9uSvnPxfc2a1ARapGLJXllQlJKKb0idi8aA3ylvgDA7grfKIDPdkf6cBcpPAq8aixDq9GdCZ6oLKdISeA== +"@lerna/temp-write@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/temp-write/-/temp-write-5.6.1.tgz#f8779e2a6a723d0e83fce5817fe0a461f6c463f8" + integrity sha512-o0MOTsAfvMM8RC2o1wQ//F05hUd/cZJjBH8PKTrgXINDweW9VFey2fuUdL7TCpzgC4MUenL2x1nV6o8w87nFOQ== dependencies: graceful-fs "^4.1.15" is-stream "^2.0.0" @@ -2945,37 +2945,38 @@ temp-dir "^1.0.0" uuid "^8.3.2" -"@lerna/timer@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-5.5.4.tgz#815f054f3825a58af58518309d32e29e36fd2c8b" - integrity sha512-B3eesmrNaw64Svo2pkmCtBVIJbomegiOMrdxFkZrf8ugTKwobn3KSZZkdbN+hjq8SKpRz3XgtjAuSFUzdg8c3A== +"@lerna/timer@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-5.6.1.tgz#5b6c3a2ba0d6bdc1e3952544d2d75c4ec72e653f" + integrity sha512-MALjTi1KuYZeRPH18xttlJb6+BLAcVuwGIsSYHBREkuXdRwW1oEcnnN5xzGsMGpG0KRxWu5wgNgc94aH/MCz6A== -"@lerna/validation-error@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-5.5.4.tgz#935018275d0005cc5e7540854815ec7404a5b129" - integrity sha512-FUC3x40zBAu0ny1AWXT38LOVRaSJkjdAv9GiYLu9sx+7T7X18q38zPFyVPIIhrrTJsNNWkro/NTA7r4/BcdvoQ== +"@lerna/validation-error@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-5.6.1.tgz#3ab6e0e120e8d5ce10908ccbfd39c5b8c8d038b7" + integrity sha512-0Kl9SmRb72bcXANdRO3fjuz+hHhHL9AEl/exCGODaT+PYAC+xH717Xj2ts/1u4qNuLlsQEE6+iVhAAMLUv86CA== dependencies: npmlog "^6.0.2" -"@lerna/version@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/version/-/version-5.5.4.tgz#4bfe1ec09a508f5a14c325599c88a92d3bede8a4" - integrity sha512-J39m2KfhkkDzfCUjnC2+UbBrWBRs1TkrvFlHFbb8wHUOY5bs+dj5RLyUchF/VJOYFSJXr8LLQFdMPeptF2wItg== - dependencies: - "@lerna/check-working-tree" "5.5.4" - "@lerna/child-process" "5.5.4" - "@lerna/collect-updates" "5.5.4" - "@lerna/command" "5.5.4" - "@lerna/conventional-commits" "5.5.4" - "@lerna/github-client" "5.5.4" - "@lerna/gitlab-client" "5.5.4" - "@lerna/output" "5.5.4" - "@lerna/prerelease-id-from-version" "5.5.4" - "@lerna/prompt" "5.5.4" - "@lerna/run-lifecycle" "5.5.4" - "@lerna/run-topologically" "5.5.4" - "@lerna/temp-write" "5.5.4" - "@lerna/validation-error" "5.5.4" +"@lerna/version@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/version/-/version-5.6.1.tgz#028c945f7dbaa67160e7dfbe9dc371493e65c9f3" + integrity sha512-s9WIzduXOxeLH2Vu0T2HLBe1ICd9gxUsB3tlUyQveIAGE5wBuTAIL3nGQ3ljImPzFnriPqcS0xa5PC2DaW9JLA== + dependencies: + "@lerna/check-working-tree" "5.6.1" + "@lerna/child-process" "5.6.1" + "@lerna/collect-updates" "5.6.1" + "@lerna/command" "5.6.1" + "@lerna/conventional-commits" "5.6.1" + "@lerna/github-client" "5.6.1" + "@lerna/gitlab-client" "5.6.1" + "@lerna/output" "5.6.1" + "@lerna/prerelease-id-from-version" "5.6.1" + "@lerna/prompt" "5.6.1" + "@lerna/run-lifecycle" "5.6.1" + "@lerna/run-topologically" "5.6.1" + "@lerna/temp-write" "5.6.1" + "@lerna/validation-error" "5.6.1" + "@nrwl/devkit" ">=14.8.1 < 16" chalk "^4.1.0" dedent "^0.7.0" load-json-file "^6.2.0" @@ -2989,10 +2990,10 @@ slash "^3.0.0" write-json-file "^4.3.0" -"@lerna/write-log-file@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-5.5.4.tgz#28d04afa813457a58c6d32d8a4b4581cbaf34d02" - integrity sha512-PDdVuWHLkMw6ygP1hKTciphmYKRDTmNJASxVlxxOv9UkZe7QQvfke0i/OXNPRZHJK7eKCtv2Zu91amE8qCjVNw== +"@lerna/write-log-file@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-5.6.1.tgz#7c908cd36c18fb4bb96df6c092fd0a557def4485" + integrity sha512-wvgkL/tMozHbW6EkCFH7yLhLh5D3djRuwREsn5ptZxcCcay1RQjraON18yMX06mwsPfbpDItMH4D68q1dMSk5w== dependencies: npmlog "^6.0.2" write-file-atomic "^4.0.1" @@ -3243,12 +3244,12 @@ dependencies: nx "14.1.4" -"@nrwl/cli@14.7.5": - version "14.7.5" - resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-14.7.5.tgz#35315e55388de792b7c0a4d4513ba92351a19774" - integrity sha512-hkkavBDHPZKuxG9q8bcib9/TYnTn13t8CaePjx1JvYqWTYblWVLrzlPhJKFC44Dkch+rtvZ/USs5Fih76se25g== +"@nrwl/cli@14.8.3": + version "14.8.3" + resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-14.8.3.tgz#0debbc0887a3c19ba786d502ed0bf158a248c8b8" + integrity sha512-a8URAbqyZvegXMYU8pCA3Hfv0UdiDJc6HboazxinCJJgZWyqKYxRIWmKiWnfpXsr+qF6ntmBR/tC6yHbOL22gQ== dependencies: - nx "14.7.5" + nx "14.8.3" "@nrwl/devkit@14.1.4": version "14.1.4" @@ -3261,6 +3262,16 @@ semver "7.3.4" tslib "^2.3.0" +"@nrwl/devkit@>=14.8.1 < 16": + version "14.8.3" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-14.8.3.tgz#c73230d48970f34257e59c820a86920d66380d82" + integrity sha512-jEH+oKS4F4MJvoIe0Zw6zUODO2j2ib7f+62D4lMDKl5qopcgnKyU9rVnSCDolqCH81j326dfr8b7FfE6Z7p71A== + dependencies: + "@phenomnomnominal/tsquery" "4.1.1" + ejs "^3.1.7" + ignore "^5.0.4" + tslib "^2.3.0" + "@nrwl/jest@14.1.4": version "14.1.4" resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-14.1.4.tgz#c69ad97913fba78ae9eabce83c9cec324a29881b" @@ -3307,12 +3318,12 @@ dependencies: nx "14.1.4" -"@nrwl/tao@14.7.5": - version "14.7.5" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-14.7.5.tgz#9b10c97f9efc558a651c98b27c29197ecc2d5d28" - integrity sha512-MzfJMqVbiMitYjWXaL5/7dDKw1hDG7acciGeu5SyUX8J2J0ymKzXhqjshPvn/Ga1E9QtnMckd6aKmLlvochVag== +"@nrwl/tao@14.8.3": + version "14.8.3" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-14.8.3.tgz#2d95902cd66694b5293cad349ad2bba2b8ef45ea" + integrity sha512-lN7+1biSM/7PYMMgh3jjOXJ9fe6VjhVrtZsDcB6lcklpShjXfHXqlpXDM7vjlw19aLeZMdFWHFoU2C5BTBtzgQ== dependencies: - nx "14.7.5" + nx "14.8.3" "@nrwl/workspace@14.1.4": version "14.1.4" @@ -4468,6 +4479,21 @@ resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== +"@yarnpkg/parsers@^3.0.0-rc.18": + version "3.0.0-rc.24" + resolved "https://registry.yarnpkg.com/@yarnpkg/parsers/-/parsers-3.0.0-rc.24.tgz#508f9dd089c7b297d9dcc297aa0e8c89fb56267f" + integrity sha512-A5wXsIUOipZUGDly1SHBht1OjKKW4y+E9EzzJxR2tby0Pj3atgCta9RSYa4+aXLkFfIMX3onnykmJnwJWqJj5g== + dependencies: + js-yaml "^3.10.0" + tslib "^2.4.0" + +"@zkochan/js-yaml@0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz#975f0b306e705e28b8068a07737fa46d3fc04826" + integrity sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg== + dependencies: + argparse "^2.0.1" + JSONStream@^1.0.4: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" @@ -4867,6 +4893,13 @@ axe-core@^4.4.3: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f" integrity sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w== +axios@0.21.1: + version "0.21.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" + integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== + dependencies: + follow-redirects "^1.10.0" + axios@^0.21.1: version "0.21.4" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" @@ -7676,10 +7709,10 @@ flux@^4.0.1: fbemitter "^3.0.0" fbjs "^3.0.0" -follow-redirects@^1.0.0, follow-redirects@^1.14.0, follow-redirects@^1.14.7: - version "1.14.9" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" - integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== +follow-redirects@^1.0.0, follow-redirects@^1.10.0, follow-redirects@^1.14.0, follow-redirects@^1.14.7: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== forever-agent@~0.6.1: version "0.6.1" @@ -9564,7 +9597,7 @@ js-yaml@4.1.0, js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -js-yaml@^3.13.1: +js-yaml@^3.10.0, js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -9669,7 +9702,7 @@ jsonc-parser@3.0.0, jsonc-parser@~3.0.0: resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA== -jsonc-parser@^3.2.0: +jsonc-parser@3.2.0, jsonc-parser@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== @@ -9794,30 +9827,33 @@ lazy-ass@^1.6.0: resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM= -lerna@5.5.4: - version "5.5.4" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-5.5.4.tgz#34d95dd3e26c725ce4ba981b887aaf59ce899519" - integrity sha512-LAFQ/U6SL7/EM0sedtFaFS4b0RbTqsYYOJ6LV9Y7l/zWFlqLcg41vLblkNRuxsNB5FZBNpfiWvXmd1KiWkQ/yQ== - dependencies: - "@lerna/add" "5.5.4" - "@lerna/bootstrap" "5.5.4" - "@lerna/changed" "5.5.4" - "@lerna/clean" "5.5.4" - "@lerna/cli" "5.5.4" - "@lerna/create" "5.5.4" - "@lerna/diff" "5.5.4" - "@lerna/exec" "5.5.4" - "@lerna/import" "5.5.4" - "@lerna/info" "5.5.4" - "@lerna/init" "5.5.4" - "@lerna/link" "5.5.4" - "@lerna/list" "5.5.4" - "@lerna/publish" "5.5.4" - "@lerna/run" "5.5.4" - "@lerna/version" "5.5.4" +lerna@5.6.1: + version "5.6.1" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-5.6.1.tgz#d405df5f859fdd93be1a696066cfaf3260890988" + integrity sha512-gAZxKlQVpYpAvzXMOpc6VfFa6WYZmdD7u6js1u3wu7tOwnwHcSQK+qGOO3/Ky/YP+LbrXuH0BnLj09d+ev9OwA== + dependencies: + "@lerna/add" "5.6.1" + "@lerna/bootstrap" "5.6.1" + "@lerna/changed" "5.6.1" + "@lerna/clean" "5.6.1" + "@lerna/cli" "5.6.1" + "@lerna/command" "5.6.1" + "@lerna/create" "5.6.1" + "@lerna/diff" "5.6.1" + "@lerna/exec" "5.6.1" + "@lerna/import" "5.6.1" + "@lerna/info" "5.6.1" + "@lerna/init" "5.6.1" + "@lerna/link" "5.6.1" + "@lerna/list" "5.6.1" + "@lerna/publish" "5.6.1" + "@lerna/run" "5.6.1" + "@lerna/version" "5.6.1" + "@nrwl/devkit" ">=14.8.1 < 16" import-local "^3.0.2" + inquirer "^8.2.4" npmlog "^6.0.2" - nx ">=14.6.1 < 16" + nx ">=14.8.1 < 16" typescript "^3 || ^4" leven@^3.1.0: @@ -10918,14 +10954,18 @@ nx@14.1.4: yargs "^17.4.0" yargs-parser "21.0.1" -nx@14.7.5, "nx@>=14.6.1 < 16": - version "14.7.5" - resolved "https://registry.yarnpkg.com/nx/-/nx-14.7.5.tgz#29b24560ebbd29c68b316ee52be90c9b9c2be12d" - integrity sha512-hp8TYk/t15MJVXQCafSduriZqoxR2zvw5mDHqg32Mjt2jFEFKaPWtaO5l/qKj+rlLE8cPYTeGL5qAS9WZkAWtg== +nx@14.8.3, "nx@>=14.8.1 < 16": + version "14.8.3" + resolved "https://registry.yarnpkg.com/nx/-/nx-14.8.3.tgz#6f6e5c579d37683aa182c1829f7f9ac44e838900" + integrity sha512-6aMYrzlTqE77vHbaE1teI5P1A2oYkJGkuDMIo/zegRwUxCAjRzLAluUgPrmgqhuPTyTDn8p4aDfxAWV3Q0o/2Q== dependencies: - "@nrwl/cli" "14.7.5" - "@nrwl/tao" "14.7.5" + "@nrwl/cli" "14.8.3" + "@nrwl/tao" "14.8.3" "@parcel/watcher" "2.0.4" + "@yarnpkg/lockfile" "^1.1.0" + "@yarnpkg/parsers" "^3.0.0-rc.18" + "@zkochan/js-yaml" "0.0.6" + axios "0.21.1" chalk "4.1.0" chokidar "^3.5.1" cli-cursor "3.1.0" @@ -10940,12 +10980,13 @@ nx@14.7.5, "nx@>=14.6.1 < 16": glob "7.1.4" ignore "^5.0.4" js-yaml "4.1.0" - jsonc-parser "3.0.0" + jsonc-parser "3.2.0" minimatch "3.0.5" npm-run-path "^4.0.1" open "^8.4.0" semver "7.3.4" string-width "^4.2.3" + strong-log-transformer "^2.1.0" tar-stream "~2.2.0" tmp "~0.2.1" tsconfig-paths "^3.9.0" From 7f7df8a04367102b137dbc55d3956ec4bf12bcb0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 10 Oct 2022 16:13:22 -0700 Subject: [PATCH 038/193] chore(deps): update dependency markdownlint-cli to ^0.32.0 (#5786) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 119 ++++++++++++++++++++++++--------------------------- 2 files changed, 57 insertions(+), 64 deletions(-) diff --git a/package.json b/package.json index 9b2121960c6..66ea2cdc1cd 100644 --- a/package.json +++ b/package.json @@ -96,7 +96,7 @@ "lerna": "5.6.1", "lint-staged": "^13.0.0", "make-dir": "^3.1.0", - "markdownlint-cli": "^0.31.1", + "markdownlint-cli": "^0.32.0", "ncp": "^2.0.0", "patch-package": "^6.4.7", "prettier": "2.7.1", diff --git a/yarn.lock b/yarn.lock index 39efb78893c..79cf64849ff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5759,16 +5759,11 @@ commander@^8.3.0: resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== -commander@^9.3.0, commander@^9.4.0: +commander@^9.3.0, commander@^9.4.0, commander@~9.4.0: version "9.4.1" resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd" integrity sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw== -commander@~9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-9.0.0.tgz#86d58f24ee98126568936bd1d3574e0308a99a40" - integrity sha512-JJfP2saEKbQqvW+FI93OYUB4ByV5cizMpFMiiJI8xDbBvQvSkIk0VvQdn1CZ8mqAO8Loq2h0gYTYtDFUZUeERw== - comment-json@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/comment-json/-/comment-json-4.2.3.tgz#50b487ebbf43abe44431f575ebda07d30d015365" @@ -6883,7 +6878,7 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -entities@^3.0.1: +entities@^3.0.1, entities@~3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== @@ -6893,11 +6888,6 @@ entities@^4.2.0, entities@^4.3.0: resolved "https://registry.yarnpkg.com/entities/-/entities-4.3.0.tgz#62915f08d67353bb4eb67e3d62641a4059aec656" integrity sha512-/iP1rZrSEJ0DTlPiX+jbzlA3eVkY/e8L8SozroF395fIqE3TYF/Nz7YOMAawta+vLmyJ/hkGNNPcSbMADCCXbg== -entities@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" - integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== - env-paths@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" @@ -8036,7 +8026,7 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@*, glob@^8.0.1, glob@^8.0.3: +glob@*, glob@^8.0.1, glob@^8.0.3, glob@~8.0.3: version "8.0.3" resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== @@ -8059,7 +8049,7 @@ glob@7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.2.0: +glob@^7.0.0, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -8683,7 +8673,7 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@2.0.0, ini@~2.0.0: +ini@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== @@ -8693,6 +8683,11 @@ ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== +ini@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ini/-/ini-3.0.1.tgz#c76ec81007875bc44d544ff7a11a55d12294102d" + integrity sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ== + init-package-json@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-3.0.2.tgz#f5bc9bac93f2bdc005778bc2271be642fecfcd69" @@ -9697,7 +9692,7 @@ json5@^2.1.2, json5@^2.2.0, json5@^2.2.1: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== -jsonc-parser@3.0.0, jsonc-parser@~3.0.0: +jsonc-parser@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA== @@ -9707,6 +9702,11 @@ jsonc-parser@3.2.0, jsonc-parser@^3.2.0: resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== +jsonc-parser@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.1.0.tgz#73b8f0e5c940b83d03476bc2e51a20ef0932615d" + integrity sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg== + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -9900,10 +9900,10 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= -linkify-it@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" - integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== +linkify-it@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-4.0.1.tgz#01f1d5e508190d06669982ba31a7d9f56a5751ec" + integrity sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw== dependencies: uc.micro "^1.0.1" @@ -10222,44 +10222,44 @@ markdown-escapes@^1.0.0: resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== -markdown-it@12.3.2: - version "12.3.2" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90" - integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== +markdown-it@13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-13.0.1.tgz#c6ecc431cacf1a5da531423fc6a42807814af430" + integrity sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q== dependencies: argparse "^2.0.1" - entities "~2.1.0" - linkify-it "^3.0.1" + entities "~3.0.1" + linkify-it "^4.0.1" mdurl "^1.0.1" uc.micro "^1.0.5" -markdownlint-cli@^0.31.1: - version "0.31.1" - resolved "https://registry.yarnpkg.com/markdownlint-cli/-/markdownlint-cli-0.31.1.tgz#8db34eec453e84bed06a954c8a289333f7c2c1c7" - integrity sha512-keIOMwQn+Ch7MoBwA+TdkyVMuxAeZFEGmIIlvwgV0Z1TGS5MxPnRr29XCLhkNzCHU+uNKGjU+VEjLX+Z9kli6g== +markdownlint-cli@^0.32.0: + version "0.32.2" + resolved "https://registry.yarnpkg.com/markdownlint-cli/-/markdownlint-cli-0.32.2.tgz#b7b5c5808039aef4022aef603efaa607caf8e0de" + integrity sha512-xmJT1rGueUgT4yGNwk6D0oqQr90UJ7nMyakXtqjgswAkEhYYqjHew9RY8wDbOmh2R270IWjuKSeZzHDEGPAUkQ== dependencies: - commander "~9.0.0" + commander "~9.4.0" get-stdin "~9.0.0" - glob "~7.2.0" + glob "~8.0.3" ignore "~5.2.0" js-yaml "^4.1.0" - jsonc-parser "~3.0.0" - markdownlint "~0.25.1" - markdownlint-rule-helpers "~0.16.0" - minimatch "~3.0.5" - run-con "~1.2.10" + jsonc-parser "~3.1.0" + markdownlint "~0.26.2" + markdownlint-rule-helpers "~0.17.2" + minimatch "~5.1.0" + run-con "~1.2.11" -markdownlint-rule-helpers@~0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.16.0.tgz#c327f72782bd2b9475127a240508231f0413a25e" - integrity sha512-oEacRUVeTJ5D5hW1UYd2qExYI0oELdYK72k1TKGvIeYJIbqQWAz476NAc7LNixSySUhcNl++d02DvX0ccDk9/w== +markdownlint-rule-helpers@~0.17.2: + version "0.17.2" + resolved "https://registry.yarnpkg.com/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.17.2.tgz#64d6e8c66e497e631b0e40cf1cef7ca622a0b654" + integrity sha512-XaeoW2NYSlWxMCZM2B3H7YTG6nlaLfkEZWMBhr4hSPlq9MuY2sy83+Xr89jXOqZMZYjvi5nBCGoFh7hHoPKZmA== -markdownlint@~0.25.1: - version "0.25.1" - resolved "https://registry.yarnpkg.com/markdownlint/-/markdownlint-0.25.1.tgz#df04536607ebeeda5ccd5e4f38138823ed623788" - integrity sha512-AG7UkLzNa1fxiOv5B+owPsPhtM4D6DoODhsJgiaNg1xowXovrYgOnLqAgOOFQpWOlHFVQUzjMY5ypNNTeov92g== +markdownlint@~0.26.2: + version "0.26.2" + resolved "https://registry.yarnpkg.com/markdownlint/-/markdownlint-0.26.2.tgz#11d3d03e7f0dd3c2e239753ee8fd064a861d9237" + integrity sha512-2Am42YX2Ex5SQhRq35HxYWDfz1NLEOZWWN25nqd2h3AHRKsGRE+Qg1gt1++exW792eXTrR4jCNHfShfWk9Nz8w== dependencies: - markdown-it "12.3.2" + markdown-it "13.0.1" marked@^4.0.15: version "4.1.1" @@ -10475,20 +10475,13 @@ minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" - integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== +minimatch@^5.0.1, minimatch@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" + integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== dependencies: brace-expansion "^2.0.1" -minimatch@~3.0.5: - version "3.0.8" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.8.tgz#5e6a59bd11e2ab0de1cfb843eb2d82e546c321c1" - integrity sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q== - dependencies: - brace-expansion "^1.1.7" - minimist-options@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -12769,14 +12762,14 @@ run-async@^2.4.0: resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== -run-con@~1.2.10: - version "1.2.10" - resolved "https://registry.yarnpkg.com/run-con/-/run-con-1.2.10.tgz#90de9d43d20274d00478f4c000495bd72f417d22" - integrity sha512-n7PZpYmMM26ZO21dd8y3Yw1TRtGABjRtgPSgFS/nhzfvbJMXFtJhJVyEgayMiP+w/23craJjsnfDvx4W4ue/HQ== +run-con@~1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/run-con/-/run-con-1.2.11.tgz#0014ed430bad034a60568dfe7de2235f32e3f3c4" + integrity sha512-NEMGsUT+cglWkzEr4IFK21P4Jca45HqiAbIIZIBdX5+UZTB24Mb/21iNGgz9xZa8tL6vbW7CXmq7MFN42+VjNQ== dependencies: deep-extend "^0.6.0" - ini "~2.0.0" - minimist "^1.2.5" + ini "~3.0.0" + minimist "^1.2.6" strip-json-comments "~3.1.1" run-parallel@^1.1.9: From 32127d2b780df8e4798fe8e8249ebfbfd8ca90cf Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 10 Oct 2022 16:13:55 -0700 Subject: [PATCH 039/193] chore(deps): update dependency cypress to v8.7.0 (#5804) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/website/package.json | 2 +- yarn.lock | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/packages/website/package.json b/packages/website/package.json index 24b4d3cd223..87a06d510c5 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -49,7 +49,7 @@ "@types/react-router-dom": "^5.3.3", "@typescript-eslint/eslint-plugin": "5.40.0", "copy-webpack-plugin": "^11.0.0", - "cypress": "8.3.0", + "cypress": "8.7.0", "cypress-axe": "^0.14.0", "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-react": "^7.29.4", diff --git a/yarn.lock b/yarn.lock index 79cf64849ff..6deeafc4e1e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1514,7 +1514,7 @@ dependencies: "@cspotcode/source-map-consumer" "0.8.0" -"@cypress/request@^2.88.5": +"@cypress/request@^2.88.6": version "2.88.10" resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.10.tgz#b66d76b07f860d3a4b8d7a0604d020c662752cce" integrity sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg== @@ -6353,12 +6353,12 @@ cypress-axe@^0.14.0: resolved "https://registry.yarnpkg.com/cypress-axe/-/cypress-axe-0.14.0.tgz#5f5e70fb36b8cb3ba73a8ba01e9262ff1268d5e2" integrity sha512-7Rdjnko0MjggCmndc1wECAkvQBIhuy+DRtjF7bd5YPZRFvubfMNvrxfqD8PWQmxm7MZE0ffS4Xr43V6ZmvLopg== -cypress@8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-8.3.0.tgz#ba906d2170888073ad94b2be1b994a749bbb7c7d" - integrity sha512-zA5Rcq8AZIfRfPXU0CCcauofF+YpaU9HYbfqkunFTmFV0Kdlo14tNjH2E3++MkjXKFnv3/pXq+HgxWtw8CSe8Q== +cypress@8.7.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-8.7.0.tgz#2ee371f383d8f233d3425b6cc26ddeec2668b6da" + integrity sha512-b1bMC3VQydC6sXzBMFnSqcvwc9dTZMgcaOzT0vpSD+Gq1yFc+72JDWi55sfUK5eIeNLAtWOGy1NNb6UlhMvB+Q== dependencies: - "@cypress/request" "^2.88.5" + "@cypress/request" "^2.88.6" "@cypress/xvfb" "^1.2.4" "@types/node" "^14.14.31" "@types/sinonjs__fake-timers" "^6.0.2" @@ -6392,6 +6392,7 @@ cypress@8.3.0: minimist "^1.2.5" ospath "^1.2.2" pretty-bytes "^5.6.0" + proxy-from-env "1.0.0" ramda "~0.27.1" request-progress "^3.0.0" supports-color "^8.1.1" @@ -11999,6 +12000,11 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" +proxy-from-env@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" + integrity sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A== + psl@^1.1.28: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" From d1f3c53180ca21bcc911d61423bf3202125f0fd4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 10 Oct 2022 16:15:11 -0700 Subject: [PATCH 040/193] chore(deps): update docusaurus to ~2.1.0 (#5805) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/website/package.json | 12 +- yarn.lock | 376 +++++++++++++++++----------------- 2 files changed, 194 insertions(+), 194 deletions(-) diff --git a/packages/website/package.json b/packages/website/package.json index 87a06d510c5..1d031557c16 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -16,11 +16,11 @@ }, "dependencies": { "@babel/runtime": "^7.18.3", - "@docusaurus/core": "~2.0.1", - "@docusaurus/plugin-pwa": "~2.0.1", - "@docusaurus/preset-classic": "~2.0.1", - "@docusaurus/remark-plugin-npm2yarn": "~2.0.1", - "@docusaurus/theme-common": "~2.0.1", + "@docusaurus/core": "~2.1.0", + "@docusaurus/plugin-pwa": "~2.1.0", + "@docusaurus/preset-classic": "~2.1.0", + "@docusaurus/remark-plugin-npm2yarn": "~2.1.0", + "@docusaurus/theme-common": "~2.1.0", "@mdx-js/react": "1.6.22", "@typescript-eslint/parser": "5.40.0", "@typescript-eslint/website-eslint": "5.40.0", @@ -43,7 +43,7 @@ "react": "^18.0.0" }, "devDependencies": { - "@docusaurus/module-type-aliases": "~2.0.1", + "@docusaurus/module-type-aliases": "~2.1.0", "@types/react": "^18.0.9", "@types/react-helmet": "^6.1.5", "@types/react-router-dom": "^5.3.3", diff --git a/yarn.lock b/yarn.lock index 6deeafc4e1e..6d37c99c831 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1561,10 +1561,10 @@ "@docsearch/css" "3.1.1" algoliasearch "^4.0.0" -"@docusaurus/core@2.0.1", "@docusaurus/core@~2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.1.tgz#a2b0d653e8f18eacddda4778a46b638dd1f0f45c" - integrity sha512-Prd46TtZdiixlTl8a+h9bI5HegkfREjSNkrX2rVEwJZeziSz4ya+l7QDnbnCB2XbxEG8cveFo/F9q5lixolDtQ== +"@docusaurus/core@2.1.0", "@docusaurus/core@~2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.1.0.tgz#4aedc306f4c4cd2e0491b641bf78941d4b480ab6" + integrity sha512-/ZJ6xmm+VB9Izbn0/s6h6289cbPy2k4iYFwWDhjiLsVqwa/Y0YBBcXvStfaHccudUC3OfP+26hMk7UCjc50J6Q== dependencies: "@babel/core" "^7.18.6" "@babel/generator" "^7.18.7" @@ -1576,13 +1576,13 @@ "@babel/runtime" "^7.18.6" "@babel/runtime-corejs3" "^7.18.6" "@babel/traverse" "^7.18.8" - "@docusaurus/cssnano-preset" "2.0.1" - "@docusaurus/logger" "2.0.1" - "@docusaurus/mdx-loader" "2.0.1" + "@docusaurus/cssnano-preset" "2.1.0" + "@docusaurus/logger" "2.1.0" + "@docusaurus/mdx-loader" "2.1.0" "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/utils" "2.0.1" - "@docusaurus/utils-common" "2.0.1" - "@docusaurus/utils-validation" "2.0.1" + "@docusaurus/utils" "2.1.0" + "@docusaurus/utils-common" "2.1.0" + "@docusaurus/utils-validation" "2.1.0" "@slorber/static-site-generator-webpack-plugin" "^4.0.7" "@svgr/webpack" "^6.2.1" autoprefixer "^10.4.7" @@ -1638,33 +1638,33 @@ webpack-merge "^5.8.0" webpackbar "^5.0.2" -"@docusaurus/cssnano-preset@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.1.tgz#4d0c49338cf3aa88c5bd7cffbf77654db8e1e3b2" - integrity sha512-MCJ6rRmlqLmlCsZIoIxOxDb0rYzIPEm9PYpsBW+CGNnbk+x8xK+11hnrxzvXHqDRNpxrq3Kq2jYUmg/DkqE6vg== +"@docusaurus/cssnano-preset@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.1.0.tgz#5b42107769b7cbc61655496090bc262d7788d6ab" + integrity sha512-pRLewcgGhOies6pzsUROfmPStDRdFw+FgV5sMtLr5+4Luv2rty5+b/eSIMMetqUsmg3A9r9bcxHk9bKAKvx3zQ== dependencies: cssnano-preset-advanced "^5.3.8" postcss "^8.4.14" postcss-sort-media-queries "^4.2.1" tslib "^2.4.0" -"@docusaurus/logger@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.0.1.tgz#78a940a333d2f654fd9dea24db2c962034d4b1ff" - integrity sha512-wIWseCKko1w/WARcDjO3N/XoJ0q/VE42AthP0eNAfEazDjJ94NXbaI6wuUsuY/bMg6hTKGVIpphjj2LoX3g6dA== +"@docusaurus/logger@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.1.0.tgz#86c97e948f578814d3e61fc2b2ad283043cbe87a" + integrity sha512-uuJx2T6hDBg82joFeyobywPjSOIfeq05GfyKGHThVoXuXsu1KAzMDYcjoDxarb9CoHCI/Dor8R2MoL6zII8x1Q== dependencies: chalk "^4.1.2" tslib "^2.4.0" -"@docusaurus/mdx-loader@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.1.tgz#cc73690ca5d356687d9e75740560b4159cd5cdb5" - integrity sha512-tdNeljdilXCmhbaEND3SAgsqaw/oh7v9onT5yrIrL26OSk2AFwd+MIi4R8jt8vq33M0R4rz2wpknm0fQIkDdvQ== +"@docusaurus/mdx-loader@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.1.0.tgz#3fca9576cc73a22f8e7d9941985590b9e47a8526" + integrity sha512-i97hi7hbQjsD3/8OSFhLy7dbKGH8ryjEzOfyhQIn2CFBYOY3ko0vMVEf3IY9nD3Ld7amYzsZ8153RPkcnXA+Lg== dependencies: "@babel/parser" "^7.18.8" "@babel/traverse" "^7.18.8" - "@docusaurus/logger" "2.0.1" - "@docusaurus/utils" "2.0.1" + "@docusaurus/logger" "2.1.0" + "@docusaurus/utils" "2.1.0" "@mdx-js/mdx" "^1.6.22" escape-html "^1.0.3" file-loader "^6.2.0" @@ -1679,13 +1679,13 @@ url-loader "^4.1.1" webpack "^5.73.0" -"@docusaurus/module-type-aliases@2.0.1", "@docusaurus/module-type-aliases@~2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.1.tgz#44d7132297bedae0890695b0e7ebbe14a73e26d1" - integrity sha512-f888ylnxHAM/3T8p1lx08+lTc6/g7AweSRfRuZvrVhHXj3Tz/nTTxaP6gPTGkJK7WLqTagpar/IGP6/74IBbkg== +"@docusaurus/module-type-aliases@2.1.0", "@docusaurus/module-type-aliases@~2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.1.0.tgz#322f8fd5b436af2154c0dddfa173435730e66261" + integrity sha512-Z8WZaK5cis3xEtyfOT817u9xgGUauT0PuuVo85ysnFRX8n7qLN1lTPCkC+aCmFm/UcV8h/W5T4NtIsst94UntQ== dependencies: "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/types" "2.0.1" + "@docusaurus/types" "2.1.0" "@types/history" "^4.7.11" "@types/react" "*" "@types/react-router-config" "*" @@ -1693,18 +1693,18 @@ react-helmet-async "*" react-loadable "npm:@docusaurus/react-loadable@5.5.2" -"@docusaurus/plugin-content-blog@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.1.tgz#a37065e18ffd26e022ffb16a21ff28199140729e" - integrity sha512-/4ua3iFYcpwgpeYgHnhVGROB/ybnauLH2+rICb4vz/+Gn1hjAmGXVYq1fk8g49zGs3uxx5nc0H5bL9P0g977IQ== - dependencies: - "@docusaurus/core" "2.0.1" - "@docusaurus/logger" "2.0.1" - "@docusaurus/mdx-loader" "2.0.1" - "@docusaurus/types" "2.0.1" - "@docusaurus/utils" "2.0.1" - "@docusaurus/utils-common" "2.0.1" - "@docusaurus/utils-validation" "2.0.1" +"@docusaurus/plugin-content-blog@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.1.0.tgz#32b1a7cd4b0026f4a76fce4edc5cfdd0edb1ec42" + integrity sha512-xEp6jlu92HMNUmyRBEeJ4mCW1s77aAEQO4Keez94cUY/Ap7G/r0Awa6xSLff7HL0Fjg8KK1bEbDy7q9voIavdg== + dependencies: + "@docusaurus/core" "2.1.0" + "@docusaurus/logger" "2.1.0" + "@docusaurus/mdx-loader" "2.1.0" + "@docusaurus/types" "2.1.0" + "@docusaurus/utils" "2.1.0" + "@docusaurus/utils-common" "2.1.0" + "@docusaurus/utils-validation" "2.1.0" cheerio "^1.0.0-rc.12" feed "^4.2.2" fs-extra "^10.1.0" @@ -1715,18 +1715,18 @@ utility-types "^3.10.0" webpack "^5.73.0" -"@docusaurus/plugin-content-docs@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.1.tgz#4059591b4bff617e744e856ca680674b27c0b98a" - integrity sha512-2qeBWRy1EjgnXdwAO6/csDIS1UVNmhmtk/bQ2s9jqjpwM8YVgZ8QVdkxFAMWXgZWDQdwWwdP1rnmoEelE4HknQ== - dependencies: - "@docusaurus/core" "2.0.1" - "@docusaurus/logger" "2.0.1" - "@docusaurus/mdx-loader" "2.0.1" - "@docusaurus/module-type-aliases" "2.0.1" - "@docusaurus/types" "2.0.1" - "@docusaurus/utils" "2.0.1" - "@docusaurus/utils-validation" "2.0.1" +"@docusaurus/plugin-content-docs@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.1.0.tgz#3fcdf258c13dde27268ce7108a102b74ca4c279b" + integrity sha512-Rup5pqXrXlKGIC4VgwvioIhGWF7E/NNSlxv+JAxRYpik8VKlWsk9ysrdHIlpX+KJUCO9irnY21kQh2814mlp/Q== + dependencies: + "@docusaurus/core" "2.1.0" + "@docusaurus/logger" "2.1.0" + "@docusaurus/mdx-loader" "2.1.0" + "@docusaurus/module-type-aliases" "2.1.0" + "@docusaurus/types" "2.1.0" + "@docusaurus/utils" "2.1.0" + "@docusaurus/utils-validation" "2.1.0" "@types/react-router-config" "^5.0.6" combine-promises "^1.1.0" fs-extra "^10.1.0" @@ -1737,65 +1737,65 @@ utility-types "^3.10.0" webpack "^5.73.0" -"@docusaurus/plugin-content-pages@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.1.tgz#013f2e66f80d19b5c95a2d941d67c7cdb67b7191" - integrity sha512-6apSVeJENnNecAH5cm5VnRqR103M6qSI6IuiP7tVfD5H4AWrfDNkvJQV2+R2PIq3bGrwmX4fcXl1x4g0oo7iwA== - dependencies: - "@docusaurus/core" "2.0.1" - "@docusaurus/mdx-loader" "2.0.1" - "@docusaurus/types" "2.0.1" - "@docusaurus/utils" "2.0.1" - "@docusaurus/utils-validation" "2.0.1" +"@docusaurus/plugin-content-pages@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.1.0.tgz#714d24f71d49dbfed888f50c15e975c2154c3ce8" + integrity sha512-SwZdDZRlObHNKXTnFo7W2aF6U5ZqNVI55Nw2GCBryL7oKQSLeI0lsrMlMXdzn+fS7OuBTd3MJBO1T4Zpz0i/+g== + dependencies: + "@docusaurus/core" "2.1.0" + "@docusaurus/mdx-loader" "2.1.0" + "@docusaurus/types" "2.1.0" + "@docusaurus/utils" "2.1.0" + "@docusaurus/utils-validation" "2.1.0" fs-extra "^10.1.0" tslib "^2.4.0" webpack "^5.73.0" -"@docusaurus/plugin-debug@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.1.tgz#2b2a473f8e01fd356e32236f753665b48209bcd4" - integrity sha512-jpZBT5HK7SWx1LRQyv9d14i44vSsKXGZsSPA2ndth5HykHJsiAj9Fwl1AtzmtGYuBmI+iXQyOd4MAMHd4ZZ1tg== +"@docusaurus/plugin-debug@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.1.0.tgz#b3145affb40e25cf342174638952a5928ddaf7dc" + integrity sha512-8wsDq3OIfiy6440KLlp/qT5uk+WRHQXIXklNHEeZcar+Of0TZxCNe2FBpv+bzb/0qcdP45ia5i5WmR5OjN6DPw== dependencies: - "@docusaurus/core" "2.0.1" - "@docusaurus/types" "2.0.1" - "@docusaurus/utils" "2.0.1" + "@docusaurus/core" "2.1.0" + "@docusaurus/types" "2.1.0" + "@docusaurus/utils" "2.1.0" fs-extra "^10.1.0" react-json-view "^1.21.3" tslib "^2.4.0" -"@docusaurus/plugin-google-analytics@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.1.tgz#e3b84237aad2e94dcd1cf1810c1c9bc3d94f186d" - integrity sha512-d5qb+ZeQcg1Czoxc+RacETjLdp2sN/TAd7PGN/GrvtijCdgNmvVAtZ9QgajBTG0YbJFVPTeZ39ad2bpoOexX0w== +"@docusaurus/plugin-google-analytics@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.1.0.tgz#c9a7269817b38e43484d38fad9996e39aac4196c" + integrity sha512-4cgeqIly/wcFVbbWP03y1QJJBgH8W+Bv6AVbWnsXNOZa1yB3AO6hf3ZdeQH9x20v9T2pREogVgAH0rSoVnNsgg== dependencies: - "@docusaurus/core" "2.0.1" - "@docusaurus/types" "2.0.1" - "@docusaurus/utils-validation" "2.0.1" + "@docusaurus/core" "2.1.0" + "@docusaurus/types" "2.1.0" + "@docusaurus/utils-validation" "2.1.0" tslib "^2.4.0" -"@docusaurus/plugin-google-gtag@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.1.tgz#4cbcf9d520f7ec8124679fbe00867f2299a2f6bb" - integrity sha512-qiRufJe2FvIyzICbkjm4VbVCI1hyEju/CebfDKkKh2ZtV4q6DM1WZG7D6VoQSXL8MrMFB895gipOM4BwdM8VsQ== +"@docusaurus/plugin-google-gtag@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.1.0.tgz#e4f351dcd98b933538d55bb742650a2a36ca9a32" + integrity sha512-/3aDlv2dMoCeiX2e+DTGvvrdTA+v3cKQV3DbmfsF4ENhvc5nKV23nth04Z3Vq0Ci1ui6Sn80TkhGk/tiCMW2AA== dependencies: - "@docusaurus/core" "2.0.1" - "@docusaurus/types" "2.0.1" - "@docusaurus/utils-validation" "2.0.1" + "@docusaurus/core" "2.1.0" + "@docusaurus/types" "2.1.0" + "@docusaurus/utils-validation" "2.1.0" tslib "^2.4.0" -"@docusaurus/plugin-pwa@~2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-pwa/-/plugin-pwa-2.0.1.tgz#e49f2a846f0beca58cb09e7a114393c43cd438b8" - integrity sha512-zN+dCx2V1yIK8+U3cey/IA44ynfmZQm/tdVhXy6EsXbkaEW8ZZu0AIpARFxJ2lmR2sPkG1ohkXIoOOCMOld1Xw== +"@docusaurus/plugin-pwa@~2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-pwa/-/plugin-pwa-2.1.0.tgz#e6deb53a4c4b10de85c73886a75497a48bedd258" + integrity sha512-SOhEbv9sECaD/c9Ym2Bq6ruK56PAxV9Ftj6Hk2rKFdrASBv3ruri2iCT5YPKMpXqmzWd84GnE2pusMW2s1w2Sw== dependencies: "@babel/core" "^7.18.6" "@babel/preset-env" "^7.18.6" - "@docusaurus/core" "2.0.1" - "@docusaurus/theme-common" "2.0.1" - "@docusaurus/theme-translations" "2.0.1" - "@docusaurus/types" "2.0.1" - "@docusaurus/utils" "2.0.1" - "@docusaurus/utils-validation" "2.0.1" + "@docusaurus/core" "2.1.0" + "@docusaurus/theme-common" "2.1.0" + "@docusaurus/theme-translations" "2.1.0" + "@docusaurus/types" "2.1.0" + "@docusaurus/utils" "2.1.0" + "@docusaurus/utils-validation" "2.1.0" babel-loader "^8.2.5" clsx "^1.2.1" core-js "^3.23.3" @@ -1807,38 +1807,38 @@ workbox-precaching "^6.5.3" workbox-window "^6.5.3" -"@docusaurus/plugin-sitemap@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.1.tgz#6f8edb82b745b040d6b1495e2798396f63e50289" - integrity sha512-KcYuIUIp2JPzUf+Xa7W2BSsjLgN1/0h+VAz7D/C3RYjAgC5ApPX8wO+TECmGfunl/m7WKGUmLabfOon/as64kQ== - dependencies: - "@docusaurus/core" "2.0.1" - "@docusaurus/logger" "2.0.1" - "@docusaurus/types" "2.0.1" - "@docusaurus/utils" "2.0.1" - "@docusaurus/utils-common" "2.0.1" - "@docusaurus/utils-validation" "2.0.1" +"@docusaurus/plugin-sitemap@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.1.0.tgz#b316bb9a42a1717845e26bd4e2d3071748a54b47" + integrity sha512-2Y6Br8drlrZ/jN9MwMBl0aoi9GAjpfyfMBYpaQZXimbK+e9VjYnujXlvQ4SxtM60ASDgtHIAzfVFBkSR/MwRUw== + dependencies: + "@docusaurus/core" "2.1.0" + "@docusaurus/logger" "2.1.0" + "@docusaurus/types" "2.1.0" + "@docusaurus/utils" "2.1.0" + "@docusaurus/utils-common" "2.1.0" + "@docusaurus/utils-validation" "2.1.0" fs-extra "^10.1.0" sitemap "^7.1.1" tslib "^2.4.0" -"@docusaurus/preset-classic@~2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.1.tgz#21a806e16b61026d2a0efa6ca97e17397065d894" - integrity sha512-nOoniTg46My1qdDlLWeFs55uEmxOJ+9WMF8KKG8KMCu5LAvpemMi7rQd4x8Tw+xiPHZ/sQzH9JmPTMPRE4QGPw== - dependencies: - "@docusaurus/core" "2.0.1" - "@docusaurus/plugin-content-blog" "2.0.1" - "@docusaurus/plugin-content-docs" "2.0.1" - "@docusaurus/plugin-content-pages" "2.0.1" - "@docusaurus/plugin-debug" "2.0.1" - "@docusaurus/plugin-google-analytics" "2.0.1" - "@docusaurus/plugin-google-gtag" "2.0.1" - "@docusaurus/plugin-sitemap" "2.0.1" - "@docusaurus/theme-classic" "2.0.1" - "@docusaurus/theme-common" "2.0.1" - "@docusaurus/theme-search-algolia" "2.0.1" - "@docusaurus/types" "2.0.1" +"@docusaurus/preset-classic@~2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.1.0.tgz#45b23c8ec10c96ded9ece128fac3a39b10bcbc56" + integrity sha512-NQMnaq974K4BcSMXFSJBQ5itniw6RSyW+VT+6i90kGZzTwiuKZmsp0r9lC6BYAvvVMQUNJQwrETmlu7y2XKW7w== + dependencies: + "@docusaurus/core" "2.1.0" + "@docusaurus/plugin-content-blog" "2.1.0" + "@docusaurus/plugin-content-docs" "2.1.0" + "@docusaurus/plugin-content-pages" "2.1.0" + "@docusaurus/plugin-debug" "2.1.0" + "@docusaurus/plugin-google-analytics" "2.1.0" + "@docusaurus/plugin-google-gtag" "2.1.0" + "@docusaurus/plugin-sitemap" "2.1.0" + "@docusaurus/theme-classic" "2.1.0" + "@docusaurus/theme-common" "2.1.0" + "@docusaurus/theme-search-algolia" "2.1.0" + "@docusaurus/types" "2.1.0" "@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2": version "5.5.2" @@ -1848,32 +1848,32 @@ "@types/react" "*" prop-types "^15.6.2" -"@docusaurus/remark-plugin-npm2yarn@~2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/remark-plugin-npm2yarn/-/remark-plugin-npm2yarn-2.0.1.tgz#9d49181e1711d8564e0304fc5b3cae21c47fc180" - integrity sha512-qTFTb4UG2gO1WcCmrRkE9ipGqzH+KTKicJbOxTNVNMcLne6qwiBPUiBg6UfqaMEho0aILyn+Vh1FFBONkEnAtg== +"@docusaurus/remark-plugin-npm2yarn@~2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/remark-plugin-npm2yarn/-/remark-plugin-npm2yarn-2.1.0.tgz#45d933002880e55ac70ac33a21894243e8af7643" + integrity sha512-crlbE7XN4m6f5PMW+1K0w1/r6YsJPBHPAnxBu+dwcObBYFKeNnmtci8mBOX/Ey1eeV9wO1yFwaSWKEn1EAbcbQ== dependencies: npm-to-yarn "^1.0.1" tslib "^2.4.0" unist-util-visit "^2.0.3" -"@docusaurus/theme-classic@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.1.tgz#043b6fcd2ecb2aecd134419b198c9f519029d5e7" - integrity sha512-0jfigiqkUwIuKOw7Me5tqUM9BBvoQX7qqeevx7v4tkYQexPhk3VYSZo7aRuoJ9oyW5makCTPX551PMJzmq7+sw== - dependencies: - "@docusaurus/core" "2.0.1" - "@docusaurus/mdx-loader" "2.0.1" - "@docusaurus/module-type-aliases" "2.0.1" - "@docusaurus/plugin-content-blog" "2.0.1" - "@docusaurus/plugin-content-docs" "2.0.1" - "@docusaurus/plugin-content-pages" "2.0.1" - "@docusaurus/theme-common" "2.0.1" - "@docusaurus/theme-translations" "2.0.1" - "@docusaurus/types" "2.0.1" - "@docusaurus/utils" "2.0.1" - "@docusaurus/utils-common" "2.0.1" - "@docusaurus/utils-validation" "2.0.1" +"@docusaurus/theme-classic@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.1.0.tgz#d957a907ea8dd035c1cf911d0fbe91d8f24aef3f" + integrity sha512-xn8ZfNMsf7gaSy9+ClFnUu71o7oKgMo5noYSS1hy3svNifRTkrBp6+MReLDsmIaj3mLf2e7+JCBYKBFbaGzQng== + dependencies: + "@docusaurus/core" "2.1.0" + "@docusaurus/mdx-loader" "2.1.0" + "@docusaurus/module-type-aliases" "2.1.0" + "@docusaurus/plugin-content-blog" "2.1.0" + "@docusaurus/plugin-content-docs" "2.1.0" + "@docusaurus/plugin-content-pages" "2.1.0" + "@docusaurus/theme-common" "2.1.0" + "@docusaurus/theme-translations" "2.1.0" + "@docusaurus/types" "2.1.0" + "@docusaurus/utils" "2.1.0" + "@docusaurus/utils-common" "2.1.0" + "@docusaurus/utils-validation" "2.1.0" "@mdx-js/react" "^1.6.22" clsx "^1.2.1" copy-text-to-clipboard "^3.0.1" @@ -1888,17 +1888,17 @@ tslib "^2.4.0" utility-types "^3.10.0" -"@docusaurus/theme-common@2.0.1", "@docusaurus/theme-common@~2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.1.tgz#9594d58fbef11fe480967b5ce4cdbb3cd78d9ca3" - integrity sha512-I3b6e/ryiTQMsbES40cP0DRGnfr0E2qghVq+XecyMKjBPejISoSFEDn0MsnbW8Q26k1Dh/0qDH8QKDqaZZgLhA== - dependencies: - "@docusaurus/mdx-loader" "2.0.1" - "@docusaurus/module-type-aliases" "2.0.1" - "@docusaurus/plugin-content-blog" "2.0.1" - "@docusaurus/plugin-content-docs" "2.0.1" - "@docusaurus/plugin-content-pages" "2.0.1" - "@docusaurus/utils" "2.0.1" +"@docusaurus/theme-common@2.1.0", "@docusaurus/theme-common@~2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.1.0.tgz#dff4d5d1e29efc06125dc06f7b259f689bb3f24d" + integrity sha512-vT1otpVPbKux90YpZUnvknsn5zvpLf+AW1W0EDcpE9up4cDrPqfsh0QoxGHFJnobE2/qftsBFC19BneN4BH8Ag== + dependencies: + "@docusaurus/mdx-loader" "2.1.0" + "@docusaurus/module-type-aliases" "2.1.0" + "@docusaurus/plugin-content-blog" "2.1.0" + "@docusaurus/plugin-content-docs" "2.1.0" + "@docusaurus/plugin-content-pages" "2.1.0" + "@docusaurus/utils" "2.1.0" "@types/history" "^4.7.11" "@types/react" "*" "@types/react-router-config" "*" @@ -1908,19 +1908,19 @@ tslib "^2.4.0" utility-types "^3.10.0" -"@docusaurus/theme-search-algolia@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.1.tgz#0aab8407b2163f67eb4c48f1de33944e1695fa74" - integrity sha512-cw3NaOSKbYlsY6uNj4PgO+5mwyQ3aEWre5RlmvjStaz2cbD15Nr69VG8Rd/F6Q5VsCT8BvSdkPDdDG5d/ACexg== +"@docusaurus/theme-search-algolia@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.1.0.tgz#e7cdf64b6f7a15b07c6dcf652fd308cfdaabb0ee" + integrity sha512-rNBvi35VvENhucslEeVPOtbAzBdZY/9j55gdsweGV5bYoAXy4mHB6zTGjealcB4pJ6lJY4a5g75fXXMOlUqPfg== dependencies: "@docsearch/react" "^3.1.1" - "@docusaurus/core" "2.0.1" - "@docusaurus/logger" "2.0.1" - "@docusaurus/plugin-content-docs" "2.0.1" - "@docusaurus/theme-common" "2.0.1" - "@docusaurus/theme-translations" "2.0.1" - "@docusaurus/utils" "2.0.1" - "@docusaurus/utils-validation" "2.0.1" + "@docusaurus/core" "2.1.0" + "@docusaurus/logger" "2.1.0" + "@docusaurus/plugin-content-docs" "2.1.0" + "@docusaurus/theme-common" "2.1.0" + "@docusaurus/theme-translations" "2.1.0" + "@docusaurus/utils" "2.1.0" + "@docusaurus/utils-validation" "2.1.0" algoliasearch "^4.13.1" algoliasearch-helper "^3.10.0" clsx "^1.2.1" @@ -1930,18 +1930,18 @@ tslib "^2.4.0" utility-types "^3.10.0" -"@docusaurus/theme-translations@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.0.1.tgz#955a687c974265a811bfc743d98ef3eab0379100" - integrity sha512-v1MYYlbsdX+rtKnXFcIAn9ar0Z6K0yjqnCYS0p/KLCLrfJwfJ8A3oRJw2HiaIb8jQfk1WMY2h5Qi1p4vHOekQw== +"@docusaurus/theme-translations@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.1.0.tgz#ce9a2955afd49bff364cfdfd4492b226f6dd3b6e" + integrity sha512-07n2akf2nqWvtJeMy3A+7oSGMuu5F673AovXVwY0aGAux1afzGCiqIFlYW3EP0CujvDJAEFSQi/Tetfh+95JNg== dependencies: fs-extra "^10.1.0" tslib "^2.4.0" -"@docusaurus/types@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.1.tgz#8696a70e85c4b9be80b38ac592d520f6fe72618b" - integrity sha512-o+4hAFWkj3sBszVnRTAnNqtAIuIW0bNaYyDwQhQ6bdz3RAPEq9cDKZxMpajsj4z2nRty8XjzhyufAAjxFTyrfg== +"@docusaurus/types@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.1.0.tgz#01e13cd9adb268fffe87b49eb90302d5dc3edd6b" + integrity sha512-BS1ebpJZnGG6esKqsjtEC9U9qSaPylPwlO7cQ1GaIE7J/kMZI3FITnNn0otXXu7c7ZTqhb6+8dOrG6fZn6fqzQ== dependencies: "@types/history" "^4.7.11" "@types/react" "*" @@ -1952,30 +1952,30 @@ webpack "^5.73.0" webpack-merge "^5.8.0" -"@docusaurus/utils-common@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.1.tgz#b6f2b029547f739e1431ec84abd16974edf495e0" - integrity sha512-kajCCDCXRd1HFH5EUW31MPaQcsyNlGakpkDoTBtBvpa4EIPvWaSKy7TIqYKHrZjX4tnJ0YbEJvaXfjjgdq5xSg== +"@docusaurus/utils-common@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.1.0.tgz#248434751096f8c6c644ed65eed2a5a070a227f8" + integrity sha512-F2vgmt4yRFgRQR2vyEFGTWeyAdmgKbtmu3sjHObF0tjjx/pN0Iw/c6eCopaH34E6tc9nO0nvp01pwW+/86d1fg== dependencies: tslib "^2.4.0" -"@docusaurus/utils-validation@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.1.tgz#69f7d4944288d71f00fdba6dde10f05008f04308" - integrity sha512-f14AnwFBy4/1A19zWthK+Ii80YDz+4qt8oPpK3julywXsheSxPBqgsND3LVBBvB2p3rJHvbo2m3HyB9Tco1JRw== +"@docusaurus/utils-validation@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.1.0.tgz#c8cf1d8454d924d9a564fefa86436268f43308e3" + integrity sha512-AMJzWYKL3b7FLltKtDXNLO9Y649V2BXvrnRdnW2AA+PpBnYV78zKLSCz135cuWwRj1ajNtP4onbXdlnyvCijGQ== dependencies: - "@docusaurus/logger" "2.0.1" - "@docusaurus/utils" "2.0.1" + "@docusaurus/logger" "2.1.0" + "@docusaurus/utils" "2.1.0" joi "^17.6.0" js-yaml "^4.1.0" tslib "^2.4.0" -"@docusaurus/utils@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.1.tgz#37b4b42e29175e5d2d811fcbf9f93bffeca7c353" - integrity sha512-u2Vdl/eoVwMfUjDCkg7FjxoiwFs/XhVVtNxQEw8cvB+qaw6QWyT73m96VZzWtUb1fDOefHoZ+bZ0ObFeKk9lMQ== +"@docusaurus/utils@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.1.0.tgz#b77b45b22e61eb6c2dcad8a7e96f6db0409b655f" + integrity sha512-fPvrfmAuC54n8MjZuG4IysaMdmvN5A/qr7iFLbSGSyDrsbP4fnui6KdZZIa/YOLIPLec8vjZ8RIITJqF18mx4A== dependencies: - "@docusaurus/logger" "2.0.1" + "@docusaurus/logger" "2.1.0" "@svgr/webpack" "^6.2.1" file-loader "^6.2.0" fs-extra "^10.1.0" From c5beaa2ea340985211ca5c12821842c54f5170f0 Mon Sep 17 00:00:00 2001 From: Aaron Hill Date: Tue, 11 Oct 2022 11:59:04 -0500 Subject: [PATCH 041/193] fix(eslint-plugin): Skip missing 'rest' tuple type arguments in no-misused-promises (#5809) Fixes #5807 When linting a function with a 'rest' tuple argument, we might have different numbers of arguments between signatures: ``` function foo(...args: []); function foo(...args: [string]); ``` This PR makes no-misused-promises handle this code correctly, by ensuring that we only check an argument when we have a corresponding type parameter in the tuple type arguments. --- .../src/rules/no-misused-promises.ts | 6 +++++- .../tests/rules/no-misused-promises.test.ts | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/packages/eslint-plugin/src/rules/no-misused-promises.ts b/packages/eslint-plugin/src/rules/no-misused-promises.ts index 7afb62785b5..b6914ae2c39 100644 --- a/packages/eslint-plugin/src/rules/no-misused-promises.ts +++ b/packages/eslint-plugin/src/rules/no-misused-promises.ts @@ -564,7 +564,11 @@ function voidFunctionArguments( // Check each type in the tuple - for example, [boolean, () => void] would // add the index of the second tuple parameter to 'voidReturnIndices' const typeArgs = checker.getTypeArguments(type); - for (let i = index; i < node.arguments.length; i++) { + for ( + let i = index; + i < node.arguments.length && i - index < typeArgs.length; + i++ + ) { checkThenableOrVoidArgument( checker, node, diff --git a/packages/eslint-plugin/tests/rules/no-misused-promises.test.ts b/packages/eslint-plugin/tests/rules/no-misused-promises.test.ts index e333e1f4e67..c962761717d 100644 --- a/packages/eslint-plugin/tests/rules/no-misused-promises.test.ts +++ b/packages/eslint-plugin/tests/rules/no-misused-promises.test.ts @@ -419,6 +419,14 @@ new TakeCallbacks( () => true, ); `, + ` +function restTuple(...args: []): void; +function restTuple(...args: [string]): void; +function restTuple(..._args: string[]): void {} + +restTuple(); +restTuple('Hello'); + `, ], invalid: [ @@ -1099,5 +1107,16 @@ new TakesVoidCb( `, errors: [{ line: 11, messageId: 'voidReturnArgument' }], }, + { + code: ` +function restTuple(...args: []): void; +function restTuple(...args: [boolean, () => void]): void; +function restTuple(..._args: any[]): void {} + +restTuple(); +restTuple(true, () => Promise.resolve(1)); + `, + errors: [{ line: 7, messageId: 'voidReturnArgument' }], + }, ], }); From 7797923db1d0c6eac807174039b42c241771f3c3 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Wed, 12 Oct 2022 18:52:22 -0400 Subject: [PATCH 042/193] docs: add .github/SPONSORSHIPS.md (#5774) --- .github/SPONSORSHIPS.md | 39 +++++++++++++++++++ .../FinancialContributors/index.tsx | 26 +++++++++---- .../FinancialContributors/styles.module.css | 6 +++ 3 files changed, 63 insertions(+), 8 deletions(-) create mode 100644 .github/SPONSORSHIPS.md diff --git a/.github/SPONSORSHIPS.md b/.github/SPONSORSHIPS.md new file mode 100644 index 00000000000..15638be935c --- /dev/null +++ b/.github/SPONSORSHIPS.md @@ -0,0 +1,39 @@ +# Sponsorship + +TypeScript ESLint is an entirely volunteer-run project. +We are not associated with any company or organization; our development is funded solely from community donations. + +## Why Sponsor TypeScript ESLint? + +Our tooling is used by the vast majority of TypeScript applications today, including nearly 10,000 dependent projects and 20 million weekly downloads on npm. +Our packages enable both ESLint and Prettier to run on TypeScript code. +We additionally provide a comprehensive suite of TypeScript-focused ESLint rules that, by enabling access to TypeScript's type checking APIs, can detect classifications of application bugs more advanced than ESLint alone can. +Sponsoring TypeScript ESLint helps keep our development process running reliably, which in turn directly allows us to: + +- Support new versions of TypeScript sooner after their release +- Continue improving our documentation and first-run experiences +- Fix bugs and add new features to existing rules +- Write more advanced rules to solve more areas of application correctness + +## Sponsorship Limitations + +### Project Direction + +TypeScript ESLint is always appreciative of organizations sponsoring the project. +However, we do not factor sponsorship amounts into issue prioritization or pull request reviews. +If you have a need to push forward an area of work in TypeScript ESLint more urgently than a general donation can provide, consider donating engineering time as well. + +### Website Placement + +Our top sponsors may have their link, logo, and/or name featured on the homepage of https://typescript-eslint.io. +We are inclusive by default and allow all organizations that newly meet a monetary threshold to be added. +However, at our discretion, we may remove organizations we feel we cannot promote in good conscience. +Organizations would most commonly be removed if their core charter and/or repeated organization-wide intentional activities: + +- Deny fundamental human rights +- Repeatedly spread large-scale harmful misinformation online +- Finance and/or promote other organizations that match these issues + +If you disagree with a choice made by the maintenance team, or would like a refund for your sponsorship, please let us know by emailing `typescripteslint@gmail.com`. + +> You can always view all financial contributors on [opencollective.com/typescript-eslint](https://opencollective.com/typescript-eslint). diff --git a/packages/website/src/components/FinancialContributors/index.tsx b/packages/website/src/components/FinancialContributors/index.tsx index f977dbdecc7..3d5889ecede 100644 --- a/packages/website/src/components/FinancialContributors/index.tsx +++ b/packages/website/src/components/FinancialContributors/index.tsx @@ -37,15 +37,25 @@ export function FinancialContributors(): JSX.Element { to="https://opencollective.com/typescript-eslint/contribute" target="_blank" > - Become a financial contributor - - - See all financial contributors + Become a financial sponsor +
+ + See all financial sponsors + + + Docs + +
); diff --git a/packages/website/src/components/FinancialContributors/styles.module.css b/packages/website/src/components/FinancialContributors/styles.module.css index b1c348155aa..68821a61f6b 100644 --- a/packages/website/src/components/FinancialContributors/styles.module.css +++ b/packages/website/src/components/FinancialContributors/styles.module.css @@ -14,6 +14,12 @@ .become { font-size: 1.25rem; + padding: 0.75rem 1.75rem; +} + +.linksMore { + display: flex; + gap: 0.5rem; } @media screen and (min-width: 1150px) { From 07ce6335bfff01a80bda6bb3b190019b19457ed3 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Wed, 12 Oct 2022 18:52:41 -0400 Subject: [PATCH 043/193] chore: fix replies.yml blank entry (#5796) --- .github/replies.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/replies.yml b/.github/replies.yml index 299aa0441d3..0522dfc445c 100644 --- a/.github/replies.yml +++ b/.github/replies.yml @@ -18,9 +18,6 @@ replies: If you need it sooner, please try the `canary` tag on NPM. name: Fix Has Been Merged - body: | - - name: - - body: | With any issue opened in this project — it either has visible progress in the form of an attached PR, or it has no progress.\ \ We are a community-run project. The volunteer maintainers spend most of their time triaging issues and reviewing PRs. This means that most issues will not progress unless a member of the community steps up and champions it.\ From 1e8b24101f4e71c422b2d066fcddb712983fef32 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 17:11:40 -0700 Subject: [PATCH 044/193] chore(deps): update dependency @rollup/plugin-commonjs to v23 (#5810) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/website-eslint/package.json | 2 +- yarn.lock | 32 +++++++++++++++++----------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/packages/website-eslint/package.json b/packages/website-eslint/package.json index bc54fe122f0..dd2608e43e5 100644 --- a/packages/website-eslint/package.json +++ b/packages/website-eslint/package.json @@ -20,7 +20,7 @@ "@typescript-eslint/utils": "5.40.0" }, "devDependencies": { - "@rollup/plugin-commonjs": "^22.0.0", + "@rollup/plugin-commonjs": "^23.0.0", "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^14.1.0", "@rollup/pluginutils": "^4.2.1", diff --git a/yarn.lock b/yarn.lock index 6d37c99c831..df6171de06f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3490,18 +3490,17 @@ "@babel/helper-module-imports" "^7.10.4" "@rollup/pluginutils" "^3.1.0" -"@rollup/plugin-commonjs@^22.0.0": - version "22.0.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-22.0.2.tgz#ee8ca8415cda30d383b4096aad5222435b4b69b6" - integrity sha512-//NdP6iIwPbMTcazYsiBMbJW7gfmpHom33u1beiIoHDEM0Q9clvtQB1T0efvMqHeKsGohiHo97BCPCkBXdscwg== +"@rollup/plugin-commonjs@^23.0.0": + version "23.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-23.0.0.tgz#3f64a49409d0681cd7496a71dd6577f07d39c3b0" + integrity sha512-JbrTRyDNtLQj/rhl7RFUuYXwQ2fac+33oLDAu2k++WD95zweyo28UAomLVA0JMGx4vmCa7Nw4T6k/1F6lelExg== dependencies: - "@rollup/pluginutils" "^3.1.0" + "@rollup/pluginutils" "^4.2.1" commondir "^1.0.1" - estree-walker "^2.0.1" - glob "^7.1.6" - is-reference "^1.2.1" - magic-string "^0.25.7" - resolve "^1.17.0" + estree-walker "^2.0.2" + glob "^8.0.3" + is-reference "1.2.1" + magic-string "^0.26.4" "@rollup/plugin-json@^4.1.0": version "4.1.0" @@ -7260,7 +7259,7 @@ estree-walker@^1.0.1: resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== -estree-walker@^2.0.1: +estree-walker@^2.0.1, estree-walker@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== @@ -8993,7 +8992,7 @@ is-promise@^2.2.2: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== -is-reference@^1.2.1: +is-reference@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== @@ -10159,6 +10158,13 @@ magic-string@^0.25.0, magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.8" +magic-string@^0.26.4: + version "0.26.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.7.tgz#caf7daf61b34e9982f8228c4527474dac8981d6f" + integrity sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow== + dependencies: + sourcemap-codec "^1.4.8" + make-dir@*, make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" @@ -12650,7 +12656,7 @@ resolve.exports@1.1.0, resolve.exports@^1.1.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.3.2: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.3.2: version "1.22.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== From b2c4d0f0fd08ad34d78b1ced911db8f278c604ad Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 17:11:56 -0700 Subject: [PATCH 045/193] chore(deps): update dependency lerna to v5.6.2 (#5812) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 823 +++++++++++++++++++++++++-------------------------- 2 files changed, 412 insertions(+), 413 deletions(-) diff --git a/package.json b/package.json index 66ea2cdc1cd..bdd03541a23 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "jest-diff": "^29.0.3", "jest-snapshot": "^29.0.3", "jest-specific-snapshot": "^5.0.0", - "lerna": "5.6.1", + "lerna": "5.6.2", "lint-staged": "^13.0.0", "make-dir": "^3.1.0", "markdownlint-cli": "^0.32.0", diff --git a/yarn.lock b/yarn.lock index df6171de06f..55ecf0199d3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2313,39 +2313,39 @@ resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== -"@lerna/add@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/add/-/add-5.6.1.tgz#6cbf5c39a907c3c10837765c0eed2d624546f3d2" - integrity sha512-cZvqMYoAclefw/KQwrRIpeQiKuj/KhbkNItWc6LnWcpweUmnrAm/AEfddIOnSagRHUgkSIY/pafjL2DGdIU25w== - dependencies: - "@lerna/bootstrap" "5.6.1" - "@lerna/command" "5.6.1" - "@lerna/filter-options" "5.6.1" - "@lerna/npm-conf" "5.6.1" - "@lerna/validation-error" "5.6.1" +"@lerna/add@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/add/-/add-5.6.2.tgz#d0e25fd4900b6f8a9548f940cc016ce8a3e2d2ba" + integrity sha512-NHrm7kYiqP+EviguY7/NltJ3G9vGmJW6v2BASUOhP9FZDhYbq3O+rCDlFdoVRNtcyrSg90rZFMOWHph4KOoCQQ== + dependencies: + "@lerna/bootstrap" "5.6.2" + "@lerna/command" "5.6.2" + "@lerna/filter-options" "5.6.2" + "@lerna/npm-conf" "5.6.2" + "@lerna/validation-error" "5.6.2" dedent "^0.7.0" npm-package-arg "8.1.1" p-map "^4.0.0" pacote "^13.6.1" semver "^7.3.4" -"@lerna/bootstrap@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-5.6.1.tgz#1b81840ed77bfd924059b5890c4f13a78a7459d9" - integrity sha512-YMNDTDtAo5fpt/pmA/JOcU2HvgD/bdwiZAa80312HcRy6MortJqFDo6wOM6trfoqf0XkWOpcw+P7/d/8+b8SVw== - dependencies: - "@lerna/command" "5.6.1" - "@lerna/filter-options" "5.6.1" - "@lerna/has-npm-version" "5.6.1" - "@lerna/npm-install" "5.6.1" - "@lerna/package-graph" "5.6.1" - "@lerna/pulse-till-done" "5.6.1" - "@lerna/rimraf-dir" "5.6.1" - "@lerna/run-lifecycle" "5.6.1" - "@lerna/run-topologically" "5.6.1" - "@lerna/symlink-binary" "5.6.1" - "@lerna/symlink-dependencies" "5.6.1" - "@lerna/validation-error" "5.6.1" +"@lerna/bootstrap@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-5.6.2.tgz#a0f015ae7c30189a3064c0d5940134010ece635e" + integrity sha512-S2fMOEXbef7nrybQhzBywIGSLhuiQ5huPp1sU+v9Y6XEBsy/2IA+lb0gsZosvPqlRfMtiaFstL+QunaBhlWECA== + dependencies: + "@lerna/command" "5.6.2" + "@lerna/filter-options" "5.6.2" + "@lerna/has-npm-version" "5.6.2" + "@lerna/npm-install" "5.6.2" + "@lerna/package-graph" "5.6.2" + "@lerna/pulse-till-done" "5.6.2" + "@lerna/rimraf-dir" "5.6.2" + "@lerna/run-lifecycle" "5.6.2" + "@lerna/run-topologically" "5.6.2" + "@lerna/symlink-binary" "5.6.2" + "@lerna/symlink-dependencies" "5.6.2" + "@lerna/validation-error" "5.6.2" "@npmcli/arborist" "5.3.0" dedent "^0.7.0" get-port "^5.1.1" @@ -2357,100 +2357,100 @@ p-waterfall "^2.1.1" semver "^7.3.4" -"@lerna/changed@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-5.6.1.tgz#f6eed0999dcd0609d694e793d66443846af08707" - integrity sha512-YVXkTEXlQWW1BSyURwZHz4HDpfl/yAwkLQbRQ2OtEmknkh4QOK41PPBgX0q1SCWKs3OYdSuI30A2H3KY8LMkxg== +"@lerna/changed@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-5.6.2.tgz#96a647ed202d8146b2077bf13a682466e8607f9a" + integrity sha512-uUgrkdj1eYJHQGsXXlpH5oEAfu3x0qzeTjgvpdNrxHEdQWi7zWiW59hRadmiImc14uJJYIwVK5q/QLugrsdGFQ== dependencies: - "@lerna/collect-updates" "5.6.1" - "@lerna/command" "5.6.1" - "@lerna/listable" "5.6.1" - "@lerna/output" "5.6.1" + "@lerna/collect-updates" "5.6.2" + "@lerna/command" "5.6.2" + "@lerna/listable" "5.6.2" + "@lerna/output" "5.6.2" -"@lerna/check-working-tree@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-5.6.1.tgz#29bc77d3e3dc4bcaeb281f99755d19ef690523bc" - integrity sha512-pzM/d+009Yl7ThpbWPntao5WuHi4nb/T9WKTOG/CzS/yLQgceVaX1vRaf3fML92RYmV+XGFPq+PaVQXtwHdMkA== +"@lerna/check-working-tree@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-5.6.2.tgz#dd03b0c3fe9f141c31c0c47a9a0162ee9c0f6c28" + integrity sha512-6Vf3IB6p+iNIubwVgr8A/KOmGh5xb4SyRmhFtAVqe33yWl2p3yc+mU5nGoz4ET3JLF1T9MhsePj0hNt6qyOTLQ== dependencies: - "@lerna/collect-uncommitted" "5.6.1" - "@lerna/describe-ref" "5.6.1" - "@lerna/validation-error" "5.6.1" + "@lerna/collect-uncommitted" "5.6.2" + "@lerna/describe-ref" "5.6.2" + "@lerna/validation-error" "5.6.2" -"@lerna/child-process@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-5.6.1.tgz#504bbf67ec981f7299cbbe1917415213357a800f" - integrity sha512-+86Z5EwBkdypTyV8z8Se3McbGCHh4wUBfGuOoNmar4NjeY2HVuiRCoaJsyqgoyNLoXJb1gqDGlWkG5LTuKvw/A== +"@lerna/child-process@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-5.6.2.tgz#4adbd09ff5a8e43b9471f1a987ae65a7d669421b" + integrity sha512-QIOQ3jIbWdduHd5892fbo3u7/dQgbhzEBB7cvf+Ys/iCPP8UQrBECi1lfRgA4kcTKC2MyMz0SoyXZz/lFcXc3A== dependencies: chalk "^4.1.0" execa "^5.0.0" strong-log-transformer "^2.1.0" -"@lerna/clean@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-5.6.1.tgz#2335dbd1c85c8343616696c6e793e2c847f61284" - integrity sha512-af+jZ/JT5AKvnW3JwFjqcuZyOiV1MCdYCi8KwHGJbEOT3ak2u7jdgFyHYtTngYTYeFn+VOSi9+vnVZ8RhQ0DQg== +"@lerna/clean@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-5.6.2.tgz#9611adf3e3035731af2b71aabeb850f7d16fc27d" + integrity sha512-A7j8r0Hk2pGyLUyaCmx4keNHen1L/KdcOjb4nR6X8GtTJR5AeA47a8rRKOCz9wwdyMPlo2Dau7d3RV9viv7a5g== dependencies: - "@lerna/command" "5.6.1" - "@lerna/filter-options" "5.6.1" - "@lerna/prompt" "5.6.1" - "@lerna/pulse-till-done" "5.6.1" - "@lerna/rimraf-dir" "5.6.1" + "@lerna/command" "5.6.2" + "@lerna/filter-options" "5.6.2" + "@lerna/prompt" "5.6.2" + "@lerna/pulse-till-done" "5.6.2" + "@lerna/rimraf-dir" "5.6.2" p-map "^4.0.0" p-map-series "^2.1.0" p-waterfall "^2.1.1" -"@lerna/cli@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-5.6.1.tgz#6a7fa68439b40709ad5723955e806d9e207087a8" - integrity sha512-y7GmT30rVovwJHKZQE+1aH5BbR+m9psNwzGhAl3bI3pIi3DPNwa+5Ag7XV+tzKItqwfNtNQbrGIt6u3xbVgR3Q== +"@lerna/cli@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-5.6.2.tgz#87a3dea0f066fa4b01c38ab191f316885dfe9fcd" + integrity sha512-w0NRIEqDOmYKlA5t0iyqx0hbY7zcozvApmfvwF0lhkuhf3k6LRAFSamtimGQWicC779a7J2NXw4ASuBV47Fs1Q== dependencies: - "@lerna/global-options" "5.6.1" + "@lerna/global-options" "5.6.2" dedent "^0.7.0" npmlog "^6.0.2" yargs "^16.2.0" -"@lerna/collect-uncommitted@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-5.6.1.tgz#cec811ef38fa23ec484c6982b4c0b55cecce037f" - integrity sha512-Z1I4BFBcbqxX3RRiHtPA3JU92NOyTeJF/pWB5DImWDL7i5AYXWYA6iW99HyKTGfIsA3GrS4BIL0UOmp4vP7Yvw== +"@lerna/collect-uncommitted@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-5.6.2.tgz#8f62d5a57c7800e9f5278897c7b254c1e3d425fe" + integrity sha512-i0jhxpypyOsW2PpPwIw4xg6EPh7/N3YuiI6P2yL7PynZ8nOv8DkIdoyMkhUP4gALjBfckH8Bj94eIaKMviqW4w== dependencies: - "@lerna/child-process" "5.6.1" + "@lerna/child-process" "5.6.2" chalk "^4.1.0" npmlog "^6.0.2" -"@lerna/collect-updates@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-5.6.1.tgz#035514b638fd3a75ff895c0ffe377da312b64fa1" - integrity sha512-xY5nJ//ACDVU/k9zn45W//wWw9+Cf4HWN7nla8J1YHLsRmn79uJONZnyK3MBCjMpgVzSAmMe47wuDu+ZzqV/Ew== +"@lerna/collect-updates@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-5.6.2.tgz#7dc9df48183ef35a975154182d338c64de76104f" + integrity sha512-DdTK13X6PIsh9HINiMniFeiivAizR/1FBB+hDVe6tOhsXFBfjHMw1xZhXlE+mYIoFmDm1UFK7zvQSexoaxRqFA== dependencies: - "@lerna/child-process" "5.6.1" - "@lerna/describe-ref" "5.6.1" + "@lerna/child-process" "5.6.2" + "@lerna/describe-ref" "5.6.2" minimatch "^3.0.4" npmlog "^6.0.2" slash "^3.0.0" -"@lerna/command@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/command/-/command-5.6.1.tgz#74faf2f378c85eae4d0d366883c2bc294d207299" - integrity sha512-QxJr73TUQQ4B+4mWfwH7kNNTxP3lBnNKN6zX9NnjanQ2u6Nij/SMbvym1L0T2EVgZMseFzZEQnXE3d+jbWn/aQ== +"@lerna/command@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/command/-/command-5.6.2.tgz#6cbb42b63c40a33565a7d39302d0e171e8e0f5b6" + integrity sha512-eLVGI9TmxcaGt1M7TXGhhBZoeWOtOedMiH7NuCGHtL6TMJ9k+SCExyx+KpNmE6ImyNOzws6EvYLPLjftiqmoaA== dependencies: - "@lerna/child-process" "5.6.1" - "@lerna/package-graph" "5.6.1" - "@lerna/project" "5.6.1" - "@lerna/validation-error" "5.6.1" - "@lerna/write-log-file" "5.6.1" + "@lerna/child-process" "5.6.2" + "@lerna/package-graph" "5.6.2" + "@lerna/project" "5.6.2" + "@lerna/validation-error" "5.6.2" + "@lerna/write-log-file" "5.6.2" clone-deep "^4.0.1" dedent "^0.7.0" execa "^5.0.0" is-ci "^2.0.0" npmlog "^6.0.2" -"@lerna/conventional-commits@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-5.6.1.tgz#7900ae050a8cf77ffce992dee703cc54b5f99494" - integrity sha512-H86fO470tU/lnws+xrSxzeJFBehAo10dtI35+AC9kwub7XwWO19AhdbQjf4PwWhG8/CTl65Tn9UMg+kHYilmzA== +"@lerna/conventional-commits@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-5.6.2.tgz#23f1a86ab79e48609c98a572eb59a705d7f0512f" + integrity sha512-fPrJpYJhxCgY2uyOCTcAAC6+T6lUAtpEGxLbjWHWTb13oKKEygp9THoFpe6SbAD0fYMb3jeZCZCqNofM62rmuA== dependencies: - "@lerna/validation-error" "5.6.1" + "@lerna/validation-error" "5.6.2" conventional-changelog-angular "^5.0.12" conventional-changelog-core "^4.2.4" conventional-recommended-bump "^6.1.0" @@ -2461,27 +2461,26 @@ pify "^5.0.0" semver "^7.3.4" -"@lerna/create-symlink@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-5.6.1.tgz#01288d0938e76ec2342a5427a751eabfe5d038b2" - integrity sha512-u46aoyxdoHXiyOQ1vCsA8PPkPkyjZanKuiJxnqMXITMwpQFjo18FvSN9BvnZkbJ6Jwnj/boO1TjDUewrQ4wPjw== +"@lerna/create-symlink@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-5.6.2.tgz#9bd327128e30a144ef50a45242433a2325081391" + integrity sha512-0WIs3P6ohPVh2+t5axrLZDE5Dt7fe3Kv0Auj0sBiBd6MmKZ2oS76apIl0Bspdbv8jX8+TRKGv6ib0280D0dtEw== dependencies: cmd-shim "^5.0.0" fs-extra "^9.1.0" npmlog "^6.0.2" -"@lerna/create@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/create/-/create-5.6.1.tgz#237f41a23f2803551ec5098358bc5056434868fa" - integrity sha512-DSDprUvSszb6qedync3TFfDLrFzP264LNPdw+MBSw4o3lpZAmAGelzyw+xSQQQjLNoGC5q/UUePKiCiWps8aPw== +"@lerna/create@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/create/-/create-5.6.2.tgz#2c2e4b089cd8426cd256c6b0a0df5e676aa3503a" + integrity sha512-+Y5cMUxMNXjTTU9IHpgRYIwKo39w+blui1P+s+qYlZUSCUAew0xNpOBG8iN0Nc5X9op4U094oIdHxv7Dyz6tWQ== dependencies: - "@lerna/child-process" "5.6.1" - "@lerna/command" "5.6.1" - "@lerna/npm-conf" "5.6.1" - "@lerna/validation-error" "5.6.1" + "@lerna/child-process" "5.6.2" + "@lerna/command" "5.6.2" + "@lerna/npm-conf" "5.6.2" + "@lerna/validation-error" "5.6.2" dedent "^0.7.0" fs-extra "^9.1.0" - globby "^11.0.2" init-package-json "^3.0.2" npm-package-arg "8.1.1" p-reduce "^2.1.0" @@ -2493,218 +2492,218 @@ validate-npm-package-name "^4.0.0" yargs-parser "20.2.4" -"@lerna/describe-ref@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-5.6.1.tgz#d401b20c8dff972c2975e3a2e31d29e24e9b5d15" - integrity sha512-VskLszuC3NoN5l31kSh3NiIt4cqaulBI75Ek1HDT+VcGXR2AJzsE1BweDWrh2xJBdqdK8cLp72R/vgUDbjKQCg== +"@lerna/describe-ref@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-5.6.2.tgz#8beb9884b59c419c67cec935cd90c08704e4c9b0" + integrity sha512-UqU0N77aT1W8duYGir7R+Sk3jsY/c4lhcCEcnayMpFScMbAp0ETGsW04cYsHK29sgg+ZCc5zEwebBqabWhMhnA== dependencies: - "@lerna/child-process" "5.6.1" + "@lerna/child-process" "5.6.2" npmlog "^6.0.2" -"@lerna/diff@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-5.6.1.tgz#d1e91d12762cd9ea53d74eb2933c7d167953ed3e" - integrity sha512-5JTxFUuLfEJZwtplAhWAbffv+FzJsP9ndsJFsmobdfKHZxxoyCvwc5fgMFRgQQMZcQue+lnZEYITJim078xy2A== +"@lerna/diff@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-5.6.2.tgz#059f62c95e08a506574e0e66044934a395e15b11" + integrity sha512-aHKzKvUvUI8vOcshC2Za/bdz+plM3r/ycqUrPqaERzp+kc1pYHyPeXezydVdEmgmmwmyKI5hx4+2QNnzOnun2A== dependencies: - "@lerna/child-process" "5.6.1" - "@lerna/command" "5.6.1" - "@lerna/validation-error" "5.6.1" + "@lerna/child-process" "5.6.2" + "@lerna/command" "5.6.2" + "@lerna/validation-error" "5.6.2" npmlog "^6.0.2" -"@lerna/exec@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-5.6.1.tgz#a00bbca110c80054b15213474cac87d22083f443" - integrity sha512-nNZAm6yhbHG59xMOCnJjYjQRtjqZqwjSiWakWz8upj+2HBd2Z0eMnQvrX1j9GhurhgHzhG7AM7FLnJHyh1b3Tw== - dependencies: - "@lerna/child-process" "5.6.1" - "@lerna/command" "5.6.1" - "@lerna/filter-options" "5.6.1" - "@lerna/profiler" "5.6.1" - "@lerna/run-topologically" "5.6.1" - "@lerna/validation-error" "5.6.1" +"@lerna/exec@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-5.6.2.tgz#b4edee66e26760de28bbf8472993ae8ad7508073" + integrity sha512-meZozok5stK7S0oAVn+kdbTmU+kHj9GTXjW7V8kgwG9ld+JJMTH3nKK1L3mEKyk9TFu9vFWyEOF7HNK6yEOoVg== + dependencies: + "@lerna/child-process" "5.6.2" + "@lerna/command" "5.6.2" + "@lerna/filter-options" "5.6.2" + "@lerna/profiler" "5.6.2" + "@lerna/run-topologically" "5.6.2" + "@lerna/validation-error" "5.6.2" p-map "^4.0.0" -"@lerna/filter-options@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-5.6.1.tgz#5d3389041e987584efb44b2a064c11b6593fe588" - integrity sha512-uii0ZDlv2j8e6d3D25wp59L0nRUh7C3B6ImCTOraEdkir6E1UEXZK7VmIzxWD44L78vnUW1kl+j/q7Kib3cP/g== +"@lerna/filter-options@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-5.6.2.tgz#0201d3aaf71eb7d7f8b1d28193218710c3220aa0" + integrity sha512-4Z0HIhPak2TabTsUqEBQaQeOqgqEt0qyskvsY0oviYvqP/nrJfJBZh4H93jIiNQF59LJCn5Ce3KJJrLExxjlzw== dependencies: - "@lerna/collect-updates" "5.6.1" - "@lerna/filter-packages" "5.6.1" + "@lerna/collect-updates" "5.6.2" + "@lerna/filter-packages" "5.6.2" dedent "^0.7.0" npmlog "^6.0.2" -"@lerna/filter-packages@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-5.6.1.tgz#e37e13261cb587e6dd664ff359b0d43b4b1218fa" - integrity sha512-uKaIebxrx235wg78SqY8A0ZugValdW6PgwkDFjss/Y2m8/9c+PiAbfkBeF5Q8iv8VP7te2MsGcvV12UmIQKDdA== +"@lerna/filter-packages@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-5.6.2.tgz#1118a9318f3e08f9e21fb03d23f91e1f77f4a72a" + integrity sha512-el9V2lTEG0Bbz+Omo45hATkRVnChCTJhcTpth19cMJ6mQ4M5H4IgbWCJdFMBi/RpTnOhz9BhJxDbj95kuIvvzw== dependencies: - "@lerna/validation-error" "5.6.1" + "@lerna/validation-error" "5.6.2" multimatch "^5.0.0" npmlog "^6.0.2" -"@lerna/get-npm-exec-opts@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-5.6.1.tgz#53ec8cc9b506aca8f88e6dc531523c9f50c418dc" - integrity sha512-y+Fzd9l1LM6tlarKrWxXQBKm02m7sjzj1T7vgiPW5uo324qEZVil89849iXgm2tLZt7/KD18Gqene2Hik0jmGQ== +"@lerna/get-npm-exec-opts@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-5.6.2.tgz#a5e1a93f62eba817961210b7be148c0768ee4eee" + integrity sha512-0RbSDJ+QC9D5UWZJh3DN7mBIU1NhBmdHOE289oHSkjDY+uEjdzMPkEUy+wZ8fCzMLFnnNQkAEqNaOAzZ7dmFLA== dependencies: npmlog "^6.0.2" -"@lerna/get-packed@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-5.6.1.tgz#7ae0b0251a42e6a7d59be08c851daa4a5233672d" - integrity sha512-PI+WSCHXsBCF2+McaEUtcR3acZu/0JApUH+IJMz0TdYzspF4ewzEWhBn+4Gmw926oFsqnqfz37KInXNHGmBvCg== +"@lerna/get-packed@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-5.6.2.tgz#cc5008008442ae00cfa5ed9484e76a44d48e37b6" + integrity sha512-pp5nNDmtrtd21aKHjwwOY5CS7XNIHxINzGa+Jholn1jMDYUtdskpN++ZqYbATGpW831++NJuiuBVyqAWi9xbXg== dependencies: fs-extra "^9.1.0" ssri "^9.0.1" tar "^6.1.0" -"@lerna/github-client@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-5.6.1.tgz#6ce59479ce9c31f3a91119236e00ff5894f80630" - integrity sha512-XGAry8MX2fou8aAP3mf1+6oPP34QdgXzrRbdtXlCv8ksddbp/S1Tn5hNvorEJn2yDMNcjIDIdvrL/T4UiVzQjA== +"@lerna/github-client@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-5.6.2.tgz#b40a71ddf5d40aefe178a48713aa107ef735f056" + integrity sha512-pjALazZoRZtKqfwLBwmW3HPptVhQm54PvA8s3qhCQ+3JkqrZiIFwkkxNZxs3jwzr+aaSOzfhSzCndg0urb0GXA== dependencies: - "@lerna/child-process" "5.6.1" + "@lerna/child-process" "5.6.2" "@octokit/plugin-enterprise-rest" "^6.0.1" "@octokit/rest" "^19.0.3" git-url-parse "^13.1.0" npmlog "^6.0.2" -"@lerna/gitlab-client@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-5.6.1.tgz#a0e57eeb2fe6dbb6a5922faec348cda22f14ff5a" - integrity sha512-zNG27B1dNy4QF45tUPEywthNtsDbzvsUSiokMx847Gxq5qLHtRHRR8kK51Q2dJ6u2biZafGNyzHqT5CQ/0ndnQ== +"@lerna/gitlab-client@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-5.6.2.tgz#3bb3c350d28f38f719ddbba083ca28dbd353494e" + integrity sha512-TInJmbrsmYIwUyrRxytjO82KjJbRwm67F7LoZs1shAq6rMvNqi4NxSY9j+hT/939alFmEq1zssoy/caeLXHRfQ== dependencies: node-fetch "^2.6.1" npmlog "^6.0.2" -"@lerna/global-options@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-5.6.1.tgz#29b506e39663aaea4d08fec8288fe1e22ead1c19" - integrity sha512-VgHVo0T2NC/YK/mR9nu8Z3DL65UtoamRclrnqK3HsaTub15UnqAlbcnEk2lB50e5TLsIZAp4TatDYrYNPKKJPQ== +"@lerna/global-options@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-5.6.2.tgz#30bec81cdb4ac0bb47588e4a502ce908a982ff7c" + integrity sha512-kaKELURXTlczthNJskdOvh6GGMyt24qat0xMoJZ8plYMdofJfhz24h1OFcvB/EwCUwP/XV1+ohE5P+vdktbrEg== -"@lerna/has-npm-version@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-5.6.1.tgz#011b3d1a1a61606b06ee79fcdff1682e9f66895c" - integrity sha512-V6lt830kXnEm/1pHyFh9Pci4lgRbQcBr1eORAD8d03uxQDfxA7Z8Gu9afhH5m0rk+P8txNO/3pUe2pf5Ex4DGg== +"@lerna/has-npm-version@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-5.6.2.tgz#5359e9870941f66fb3b859995120801800880944" + integrity sha512-kXCnSzffmTWsaK0ol30coyCfO8WH26HFbmJjRBzKv7VGkuAIcB6gX2gqRRgNLLlvI+Yrp+JSlpVNVnu15SEH2g== dependencies: - "@lerna/child-process" "5.6.1" + "@lerna/child-process" "5.6.2" semver "^7.3.4" -"@lerna/import@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/import/-/import-5.6.1.tgz#d6d56e109c5e16196fc345832ca5675d1c2d9027" - integrity sha512-cOLjRAWWfY1ezsiBRIbA6lN4THu89xjtS+wJ8WUqr/xbYbGZ/qr4DBAWnpWpMfLLWN6Eel6nEAhah+Ch1IKNog== +"@lerna/import@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/import/-/import-5.6.2.tgz#7be2321fbc41fa0f7fdd233eb62571e8418fcb75" + integrity sha512-xQUE49mtcP0z3KUdXBsyvp8rGDz6phuYUoQbhcFRJ7WPcQKzMvtm0XYrER6c2YWEX7QOuDac6tU82P8zTrTBaA== dependencies: - "@lerna/child-process" "5.6.1" - "@lerna/command" "5.6.1" - "@lerna/prompt" "5.6.1" - "@lerna/pulse-till-done" "5.6.1" - "@lerna/validation-error" "5.6.1" + "@lerna/child-process" "5.6.2" + "@lerna/command" "5.6.2" + "@lerna/prompt" "5.6.2" + "@lerna/pulse-till-done" "5.6.2" + "@lerna/validation-error" "5.6.2" dedent "^0.7.0" fs-extra "^9.1.0" p-map-series "^2.1.0" -"@lerna/info@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/info/-/info-5.6.1.tgz#3df8ff719fc5db7cd6a8dc913b5bddb6baccb2fe" - integrity sha512-0ixkn6Z8jlesMozQBlG3vdivFOjleapCusjDFZ1F7quuEcWDQuW1bQ4i55ISsVhh5gLCTTwQiNEhPnDQzs7fww== +"@lerna/info@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/info/-/info-5.6.2.tgz#82280cdae6e08aab5b3017c359f6e496116a62ae" + integrity sha512-MPjY5Olj+fiZHgfEdwXUFRKamdEuLr9Ob/qut8JsB/oQSQ4ALdQfnrOcMT8lJIcC2R67EA5yav2lHPBIkezm8A== dependencies: - "@lerna/command" "5.6.1" - "@lerna/output" "5.6.1" + "@lerna/command" "5.6.2" + "@lerna/output" "5.6.2" envinfo "^7.7.4" -"@lerna/init@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/init/-/init-5.6.1.tgz#026efdde44e9eab9914b3f1140eec14a19d0c5bf" - integrity sha512-EPA3XCteadwZjb7GOqJFw+QcqwV/CrpWm9FZOEpo9uXNUCvOW8NqDlFzTEMrMiXBTldoP0H9SK9yM81c0Mip7Q== +"@lerna/init@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/init/-/init-5.6.2.tgz#8f92868c3f9081245f5a8e0b94ce6b5979b8541e" + integrity sha512-ahU3/lgF+J8kdJAQysihFJROHthkIDXfHmvhw7AYnzf94HjxGNXj7nz6i3At1/dM/1nQhR+4/uNR1/OU4tTYYQ== dependencies: - "@lerna/child-process" "5.6.1" - "@lerna/command" "5.6.1" - "@lerna/project" "5.6.1" + "@lerna/child-process" "5.6.2" + "@lerna/command" "5.6.2" + "@lerna/project" "5.6.2" fs-extra "^9.1.0" p-map "^4.0.0" write-json-file "^4.3.0" -"@lerna/link@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/link/-/link-5.6.1.tgz#a57d591b6715788257e9d7a245edf2ae2f5724c7" - integrity sha512-iWr7HGviIK3N/WNUoAZVV0RRf0CQzpR9uJXmsfuVKXj5gN8IHqFOdGS8TIIN57ekC0DOpDtR21h65zZXD1TSHQ== +"@lerna/link@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/link/-/link-5.6.2.tgz#6af5addff89cd455c1837a47a36f430a2c6ae6a5" + integrity sha512-hXxQ4R3z6rUF1v2x62oIzLyeHL96u7ZBhxqYMJrm763D1VMSDcHKF9CjJfc6J9vH5Z2ZbL6CQg50Hw5mUpJbjg== dependencies: - "@lerna/command" "5.6.1" - "@lerna/package-graph" "5.6.1" - "@lerna/symlink-dependencies" "5.6.1" - "@lerna/validation-error" "5.6.1" + "@lerna/command" "5.6.2" + "@lerna/package-graph" "5.6.2" + "@lerna/symlink-dependencies" "5.6.2" + "@lerna/validation-error" "5.6.2" p-map "^4.0.0" slash "^3.0.0" -"@lerna/list@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/list/-/list-5.6.1.tgz#8beb107494139698dbde62ca54ca28fc3737bbae" - integrity sha512-4VyAvVwKZQC+ntfjJuL8PbFu5jeR/8t21BzFXVWRkrZc3/sGVxSNtzi+9Brgrxm4n8qir3+wiiC4LSHdYG8Mlw== +"@lerna/list@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/list/-/list-5.6.2.tgz#5fdf8c678891eacef1d90afb84fb461deb6bb662" + integrity sha512-WjE5O2tQ3TcS+8LqXUaxi0YdldhxUhNihT5+Gg4vzGdIlrPDioO50Zjo9d8jOU7i3LMIk6EzCma0sZr2CVfEGg== dependencies: - "@lerna/command" "5.6.1" - "@lerna/filter-options" "5.6.1" - "@lerna/listable" "5.6.1" - "@lerna/output" "5.6.1" + "@lerna/command" "5.6.2" + "@lerna/filter-options" "5.6.2" + "@lerna/listable" "5.6.2" + "@lerna/output" "5.6.2" -"@lerna/listable@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-5.6.1.tgz#97a5c790a52a2931814f90b25fa798b65a2e7670" - integrity sha512-c7vzJYEPiH0DT7BJpjomLt2zwViPupk0g/dU9rCBkm4w2jk6Vult60/O3rx5rb95PUFz/pYM+3w3vkZWXx9AnQ== +"@lerna/listable@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-5.6.2.tgz#1a35e8da081f2dc286647cbf4a4a7fb3c7fb1102" + integrity sha512-8Yp49BwkY/5XqVru38Zko+6Wj/sgbwzJfIGEPy3Qu575r1NA/b9eI1gX22aMsEeXUeGOybR7nWT5ewnPQHjqvA== dependencies: - "@lerna/query-graph" "5.6.1" + "@lerna/query-graph" "5.6.2" chalk "^4.1.0" columnify "^1.6.0" -"@lerna/log-packed@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-5.6.1.tgz#218ce06ad4323265da1d27865e5020b933a6aa35" - integrity sha512-nyrrI8SbwO4nezuwDDQPea2XR3IWVRxgDzuZHA+g5utx75BuCZ2d1yrZe8URzfCIVVoGYI5OuOlv32BtLzt4tw== +"@lerna/log-packed@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-5.6.2.tgz#05d26f038ce64e8ce8395c1745dfeb7589f89790" + integrity sha512-O9GODG7tMtWk+2fufn2MOkIDBYMRoKBhYMHshO5Aw/VIsH76DIxpX1koMzWfUngM/C70R4uNAKcVWineX4qzIw== dependencies: byte-size "^7.0.0" columnify "^1.6.0" has-unicode "^2.0.1" npmlog "^6.0.2" -"@lerna/npm-conf@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-5.6.1.tgz#b2475f908802dd8c84c805c6b231a23fee0b6a19" - integrity sha512-u4Pg0IjMhRIGdgNr18nzwyv6wcP5Qo0QEvf07P6tV8G3ocY+3w8q6mrPyFT3NitodLQ4AMWFDfyFZzXikJI+uw== +"@lerna/npm-conf@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-5.6.2.tgz#3b72fc528c8a1cd0acc9b277749a6153bd8de083" + integrity sha512-gWDPhw1wjXYXphk/PAghTLexO5T6abVFhXb+KOMCeem366mY0F5bM88PiorL73aErTNUoR8n+V4X29NTZzDZpQ== dependencies: config-chain "^1.1.12" pify "^5.0.0" -"@lerna/npm-dist-tag@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-5.6.1.tgz#10c212607595396280a1c372f119f987ee0dc267" - integrity sha512-YEbIP1J6V0U9qco7wk9qK0JbApIshPrUGqr0Kp1rx57pwtcwxIAvH/AEbqdVqjmItiPDpYgP7VukG7MI6EGe1w== +"@lerna/npm-dist-tag@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-5.6.2.tgz#6115aa4b005b57520d76428926ee7d12030f5e53" + integrity sha512-t2RmxV6Eog4acXkUI+EzWuYVbeVVY139pANIWS9qtdajfgp4GVXZi1S8mAIb70yeHdNpCp1mhK0xpCrFH9LvGQ== dependencies: - "@lerna/otplease" "5.6.1" + "@lerna/otplease" "5.6.2" npm-package-arg "8.1.1" npm-registry-fetch "^13.3.0" npmlog "^6.0.2" -"@lerna/npm-install@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-5.6.1.tgz#0ea4190e604708759d83e58bbf1ffb5f891b1e5f" - integrity sha512-PWJyqWzDQGkhn5/mr88yYfLF+t9NzHadcmMPYxv8lBTBUTZy9sdCw8k0uQ19lNUsI/DfMTLrcYZPSLxqe3mN8A== +"@lerna/npm-install@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-5.6.2.tgz#d5bd1e10c1c31f69a9ca5351b0cbe72dbc288dc2" + integrity sha512-AT226zdEo+uGENd37jwYgdALKJAIJK4pNOfmXWZWzVb9oMOr8I2YSjPYvSYUNG7gOo2YJQU8x5Zd7OShv2924Q== dependencies: - "@lerna/child-process" "5.6.1" - "@lerna/get-npm-exec-opts" "5.6.1" + "@lerna/child-process" "5.6.2" + "@lerna/get-npm-exec-opts" "5.6.2" fs-extra "^9.1.0" npm-package-arg "8.1.1" npmlog "^6.0.2" signal-exit "^3.0.3" write-pkg "^4.0.0" -"@lerna/npm-publish@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-5.6.1.tgz#1d0891cd182be2d2f167993a0261df0f88e9275f" - integrity sha512-eSotBP+mu6EtRIfhKsbQR3m5RnL7zxhZav1zxtnYvolKPjodLlGxzqcYCqTMdnR6GAIcInFh123uuTfZNzu9CA== +"@lerna/npm-publish@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-5.6.2.tgz#4e5e225b47589a7f8f96b7eee68b547e8ce432a2" + integrity sha512-ldSyewCfv9fAeC5xNjL0HKGSUxcC048EJoe/B+KRUmd+IPidvZxMEzRu08lSC/q3V9YeUv9ZvRnxATXOM8CffA== dependencies: - "@lerna/otplease" "5.6.1" - "@lerna/run-lifecycle" "5.6.1" + "@lerna/otplease" "5.6.2" + "@lerna/run-lifecycle" "5.6.2" fs-extra "^9.1.0" libnpmpublish "^6.0.4" npm-package-arg "8.1.1" @@ -2712,85 +2711,85 @@ pify "^5.0.0" read-package-json "^5.0.1" -"@lerna/npm-run-script@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-5.6.1.tgz#b073187fd696e4d8dcb9271ea59abb9d300ef6b6" - integrity sha512-VRScf/chK01PxFCiH6j8GWOlS8w3dH4koq7tVX9OSi3FVwqrNvN7wky/AO7cKRyuTmdoG+puDsI7gHtGclYvrQ== +"@lerna/npm-run-script@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-5.6.2.tgz#66e3391ebdd6136312277be37a1b62ce48c12abf" + integrity sha512-MOQoWNcAyJivM8SYp0zELM7vg/Dj07j4YMdxZkey+S1UO0T4/vKBxb575o16hH4WeNzC3Pd7WBlb7C8dLOfNwQ== dependencies: - "@lerna/child-process" "5.6.1" - "@lerna/get-npm-exec-opts" "5.6.1" + "@lerna/child-process" "5.6.2" + "@lerna/get-npm-exec-opts" "5.6.2" npmlog "^6.0.2" -"@lerna/otplease@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-5.6.1.tgz#5962c6f075b5ed1eb578d6dd33a2774434be3153" - integrity sha512-MbS09KoDHDvsFpnwIYOZ3lu5+d/bDUm2jQ+kcJe7VH3P37t84OFRXmixSVjf1xpLuvoXbSZZsfDsYx9VkAdq4w== +"@lerna/otplease@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-5.6.2.tgz#a94e4daf9d3d42bfc0366a6889b8809ed32dbdd0" + integrity sha512-dGS4lzkEQVTMAgji82jp8RK6UK32wlzrBAO4P4iiVHCUTuwNLsY9oeBXvVXSMrosJnl6Hbe0NOvi43mqSucGoA== dependencies: - "@lerna/prompt" "5.6.1" + "@lerna/prompt" "5.6.2" -"@lerna/output@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/output/-/output-5.6.1.tgz#1b77f63c36d09f94f25dda3cf82fca2bdbc9537e" - integrity sha512-XEUvLn8jOVL63PRcjwSd8SdjAJvWLDDNpq75hBfemHHSpcfc7qlqqkXWs+Mz1C938rub8MtPUj7ImEUo12k1KQ== +"@lerna/output@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/output/-/output-5.6.2.tgz#fa97315d16cfe005a2891a3fc98f6f4fd3f518ed" + integrity sha512-++d+bfOQwY66yo7q1XuAvRcqtRHCG45e/awP5xQomTZ6R1rhWiZ3whWdc9Z6lF7+UtBB9toSYYffKU/xc3L0yQ== dependencies: npmlog "^6.0.2" -"@lerna/pack-directory@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-5.6.1.tgz#6e81776f7ee0baf3fcfa0a0031f5089da0127f4b" - integrity sha512-vmkvD4LnYJhPps+I9t03pV02rnZak4gyAh/St1lj/OYV9ecRWQWOqWIFhffKOFHBes3Lxmha8FMSN2IOkG1BxQ== +"@lerna/pack-directory@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-5.6.2.tgz#ced0287d13d8575fe928ad7d9ad92dc6554cc86d" + integrity sha512-w5Jk5fo+HkN4Le7WMOudTcmAymcf0xPd302TqAQncjXpk0cb8tZbj+5bbNHsGb58GRjOIm5icQbHXooQUxbHhA== dependencies: - "@lerna/get-packed" "5.6.1" - "@lerna/package" "5.6.1" - "@lerna/run-lifecycle" "5.6.1" - "@lerna/temp-write" "5.6.1" + "@lerna/get-packed" "5.6.2" + "@lerna/package" "5.6.2" + "@lerna/run-lifecycle" "5.6.2" + "@lerna/temp-write" "5.6.2" npm-packlist "^5.1.1" npmlog "^6.0.2" tar "^6.1.0" -"@lerna/package-graph@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-5.6.1.tgz#ae2354b4ddd52a797af2638bc53384f379981c67" - integrity sha512-R3ToEGzFy5x1Po/eoOy8vsM2x/zxR26bFewDLUDWbs5lWDC7ml5v44JqjfWB869M/XprN55yz2/VE5NhEB6QsQ== +"@lerna/package-graph@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-5.6.2.tgz#cb0a70b83afc418c5b5363bb96746d501decdbeb" + integrity sha512-TmL61qBBvA3Tc4qICDirZzdFFwWOA6qicIXUruLiE2PblRowRmCO1bKrrP6XbDOspzwrkPef6N2F2/5gHQAnkQ== dependencies: - "@lerna/prerelease-id-from-version" "5.6.1" - "@lerna/validation-error" "5.6.1" + "@lerna/prerelease-id-from-version" "5.6.2" + "@lerna/validation-error" "5.6.2" npm-package-arg "8.1.1" npmlog "^6.0.2" semver "^7.3.4" -"@lerna/package@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/package/-/package-5.6.1.tgz#5b8a6abb255492c245fd982a4f21345353ed847a" - integrity sha512-QTWoRe/wTETDrF9ByhctmyZpFl+UmwSJJUcsTd2pUqvd5QaOd1twXwZdc5/1Rr08Yxl0PZqJCtZYJDcXce0eRg== +"@lerna/package@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/package/-/package-5.6.2.tgz#da73b350693fdd4154cf5b19799bfaadff57442e" + integrity sha512-LaOC8moyM5J9WnRiWZkedjOninSclBOJyPqhif6mHb2kCFX6jAroNYzE8KM4cphu8CunHuhI6Ixzswtv+Dultw== dependencies: load-json-file "^6.2.0" npm-package-arg "8.1.1" write-pkg "^4.0.0" -"@lerna/prerelease-id-from-version@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-5.6.1.tgz#fdff7cdd54e46151834572d6ad42a5da4b1a5f97" - integrity sha512-+ctzgoA1XAGbTQCeJjMEoQQCzCBW6WVAMVKNEOKrcsEVMb5gsKKSVha8WsKEzvK6gAC/x3pXemtuVWQvtYPw0Q== +"@lerna/prerelease-id-from-version@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-5.6.2.tgz#63002662024a261310c6fbf01a50cb5f50569ca8" + integrity sha512-7gIm9fecWFVNy2kpj/KbH11bRcpyANAwpsft3X5m6J7y7A6FTUscCbEvl3ZNdpQKHNuvnHgCtkm3A5PMSCEgkA== dependencies: semver "^7.3.4" -"@lerna/profiler@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-5.6.1.tgz#0697c14aa0ffa08395488d7f3e361921c140a577" - integrity sha512-HxY0hg5iHxPzyHvb7gVkZzUG+jJKZ1fErATcC53+kA7qOBTGlz2huZ8gU+rpX3SlTJGodnZ5FwHQvHD2bzkTZg== +"@lerna/profiler@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-5.6.2.tgz#5bfd52fb666ad0506cac3b8d2839e904d0acf90a" + integrity sha512-okwkagP5zyRIOYTceu/9/esW7UZFt7lyL6q6ZgpSG3TYC5Ay+FXLtS6Xiha/FQdVdumFqKULDWTGovzUlxcwaw== dependencies: fs-extra "^9.1.0" npmlog "^6.0.2" upath "^2.0.1" -"@lerna/project@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/project/-/project-5.6.1.tgz#dbcc8074c57a0e937ddd09c0eaf0700daeae5d8c" - integrity sha512-GlM+b4pyImtegQztMRsLAkSPCYfmAqCqtgkffjXQS9tMjXnUBqu4+gW/uMBTTOD2CKf+Nikwjc602rpRaUQLyw== +"@lerna/project@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/project/-/project-5.6.2.tgz#a893851cdceeace36d30fdfdbc2da9159a9e2041" + integrity sha512-kPIMcIy/0DVWM91FPMMFmXyAnCuuLm3NdhnA8NusE//VuY9wC6QC/3OwuCY39b2dbko/fPZheqKeAZkkMH6sGg== dependencies: - "@lerna/package" "5.6.1" - "@lerna/validation-error" "5.6.1" + "@lerna/package" "5.6.2" + "@lerna/validation-error" "5.6.2" cosmiconfig "^7.0.0" dedent "^0.7.0" dot-prop "^6.0.1" @@ -2803,38 +2802,38 @@ resolve-from "^5.0.0" write-json-file "^4.3.0" -"@lerna/prompt@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-5.6.1.tgz#8fc0cd73b063c9ad79e30421fdb5c16bb8bbc5fa" - integrity sha512-CZSHV2yK6I6+35IKz7Fh3SeNSPR4XuCFXsW0RuauTZoNffk3mP2pOt/CrI1P6yOj7tqcyjghzzv1gkINtrq4/w== +"@lerna/prompt@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-5.6.2.tgz#7ea10fd3543aced0bf5521741808d86ffcf4b320" + integrity sha512-4hTNmVYADEr0GJTMegWV+GW6n+dzKx1vN9v2ISqyle283Myv930WxuyO0PeYGqTrkneJsyPreCMovuEGCvZ0iQ== dependencies: inquirer "^8.2.4" npmlog "^6.0.2" -"@lerna/publish@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-5.6.1.tgz#ca7a4e7efc09f2a694250934afced1a019aeb621" - integrity sha512-J2zYyDGXs44YQ1h19933F9bm3fjog0gNpD27kL7Zw2nrMrR/LAuxNIFT/0ljtZSuMjlXllxZ7Kyxyz1gvMv3cA== - dependencies: - "@lerna/check-working-tree" "5.6.1" - "@lerna/child-process" "5.6.1" - "@lerna/collect-updates" "5.6.1" - "@lerna/command" "5.6.1" - "@lerna/describe-ref" "5.6.1" - "@lerna/log-packed" "5.6.1" - "@lerna/npm-conf" "5.6.1" - "@lerna/npm-dist-tag" "5.6.1" - "@lerna/npm-publish" "5.6.1" - "@lerna/otplease" "5.6.1" - "@lerna/output" "5.6.1" - "@lerna/pack-directory" "5.6.1" - "@lerna/prerelease-id-from-version" "5.6.1" - "@lerna/prompt" "5.6.1" - "@lerna/pulse-till-done" "5.6.1" - "@lerna/run-lifecycle" "5.6.1" - "@lerna/run-topologically" "5.6.1" - "@lerna/validation-error" "5.6.1" - "@lerna/version" "5.6.1" +"@lerna/publish@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-5.6.2.tgz#c8a26610c4fb2c7c5a232e04852bf545b242ee65" + integrity sha512-QaW0GjMJMuWlRNjeDCjmY/vjriGSWgkLS23yu8VKNtV5U3dt5yIKA3DNGV3HgZACuu45kQxzMDsfLzgzbGNtYA== + dependencies: + "@lerna/check-working-tree" "5.6.2" + "@lerna/child-process" "5.6.2" + "@lerna/collect-updates" "5.6.2" + "@lerna/command" "5.6.2" + "@lerna/describe-ref" "5.6.2" + "@lerna/log-packed" "5.6.2" + "@lerna/npm-conf" "5.6.2" + "@lerna/npm-dist-tag" "5.6.2" + "@lerna/npm-publish" "5.6.2" + "@lerna/otplease" "5.6.2" + "@lerna/output" "5.6.2" + "@lerna/pack-directory" "5.6.2" + "@lerna/prerelease-id-from-version" "5.6.2" + "@lerna/prompt" "5.6.2" + "@lerna/pulse-till-done" "5.6.2" + "@lerna/run-lifecycle" "5.6.2" + "@lerna/run-topologically" "5.6.2" + "@lerna/validation-error" "5.6.2" + "@lerna/version" "5.6.2" fs-extra "^9.1.0" libnpmaccess "^6.0.3" npm-package-arg "8.1.1" @@ -2845,99 +2844,99 @@ pacote "^13.6.1" semver "^7.3.4" -"@lerna/pulse-till-done@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-5.6.1.tgz#70b6c5e55484a602db0ae326e1b50324022a2836" - integrity sha512-SCD1gCSkC4roOvCB0GTvnFrYVTLX7o9TXykyg5UTXb/XRMNqr9ZBFH7qZHJnleO9x3eMk1oh4W1rvfFIITyRjw== +"@lerna/pulse-till-done@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-5.6.2.tgz#061c4ba2894fa08333fe4502299f9f9f24bdb91c" + integrity sha512-eA/X1RCxU5YGMNZmbgPi+Kyfx1Q3bn4P9jo/LZy+/NRRr1po3ASXP2GJZ1auBh/9A2ELDvvKTOXCVHqczKC6rA== dependencies: npmlog "^6.0.2" -"@lerna/query-graph@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-5.6.1.tgz#e9aefba681449e9c81c5228f0bbcdae4cd180bdc" - integrity sha512-ySXS5Ur/GtrBOr+u5FZxrcH0xD3LsBSu68OEPNnMIAdt66AOhh6K4OXmc58biTN0sWAdnE43mulqA87bZH0aMg== +"@lerna/query-graph@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-5.6.2.tgz#c507e9a9cb613c6d4d163d7d115a52ef8c1a9d3f" + integrity sha512-KRngr96yBP8XYDi9/U62fnGO+ZXqm04Qk6a2HtoTr/ha8QvO1s7Tgm0xs/G7qWXDQHZgunWIbmK/LhxM7eFQrw== dependencies: - "@lerna/package-graph" "5.6.1" + "@lerna/package-graph" "5.6.2" -"@lerna/resolve-symlink@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-5.6.1.tgz#909495ef283df6a920ef91f713c73ebeabadf3c0" - integrity sha512-25TdowB5dIVycCJWyZGBDPSz6LoFOi/YRh85+dL1RrvxmvfiDwjrJ8P4eDl03/fDSV9YTFVYYmR8r1K2Vw8kQg== +"@lerna/resolve-symlink@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-5.6.2.tgz#51b6f4bbee36a1dcbf52634d05dcd08bb286f2cf" + integrity sha512-PDQy+7M8JEFtwIVHJgWvSxHkxJf9zXCENkvIWDB+SsoDPhw9+caewt46bTeP5iGm9pOMu3oZukaWo/TvF7sNjg== dependencies: fs-extra "^9.1.0" npmlog "^6.0.2" read-cmd-shim "^3.0.0" -"@lerna/rimraf-dir@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-5.6.1.tgz#f7576686b5d6700d0db403b603224b4035f16445" - integrity sha512-1lm5FIiwFOpSzCMyNF90HX6NWHzDmY47TgDs07416B8ghMtZgb5aLMHi/aoarqWopn4X0ae3lxsZjUEOhSAWgA== +"@lerna/rimraf-dir@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-5.6.2.tgz#219c51a46c27b94789d683fc0424539f14505fea" + integrity sha512-jgEfzz7uBUiQKteq3G8MtJiA2D2VoKmZSSY3VSiW/tPOSXYxxSHxEsClQdCeNa6+sYrDNDT8fP6MJ3lPLjDeLA== dependencies: - "@lerna/child-process" "5.6.1" + "@lerna/child-process" "5.6.2" npmlog "^6.0.2" path-exists "^4.0.0" rimraf "^3.0.2" -"@lerna/run-lifecycle@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-5.6.1.tgz#66ef40449c6e40bf3372579fd8d0a12bf8bff47a" - integrity sha512-LkEvYDVYNX2mUY3PoNoDDBPDMofzNa5dHvAg7P2NVpffE41VbWBI0c0Q7uhN9nGuCksvsqamTffvmPdU9lCffA== +"@lerna/run-lifecycle@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-5.6.2.tgz#b6954f334b40ca80caeb9e0cb7ca936222f39915" + integrity sha512-u9gGgq/50Fm8dvfcc/TSHOCAQvzLD7poVanDMhHYWOAqRDnellJEEmA1K/Yka4vZmySrzluahkry9G6jcREt+g== dependencies: - "@lerna/npm-conf" "5.6.1" + "@lerna/npm-conf" "5.6.2" "@npmcli/run-script" "^4.1.7" npmlog "^6.0.2" p-queue "^6.6.2" -"@lerna/run-topologically@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-5.6.1.tgz#da6b9c1d21988482199edc9691c009a8ddb980ec" - integrity sha512-UjOppd/1dSQxDfIjQIJOH+c/lLwuTKSNyd9uKhII11OnpO+gmBP1kvA65k1cm9EZVky63o7X9/O+oTB8Tr8C3g== +"@lerna/run-topologically@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-5.6.2.tgz#ef00aa6751b4164ae4825244917cdd4bc2562501" + integrity sha512-QQ/jGOIsVvUg3izShWsd67RlWYh9UOH2yw97Ol1zySX9+JspCMVQrn9eKq1Pk8twQOFhT87LpT/aaxbTBgREPw== dependencies: - "@lerna/query-graph" "5.6.1" + "@lerna/query-graph" "5.6.2" p-queue "^6.6.2" -"@lerna/run@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/run/-/run-5.6.1.tgz#7f9505cba362b89e162eee8ae82b8e10ec6a2c34" - integrity sha512-kb4hwnhth3GKWIxoNlA/xdDUWGbK67yx1aLEyZjssmMemxfSKxvqrNB+TaHAPSz27hyAKqnOL9Ym/YkAt7s59A== - dependencies: - "@lerna/command" "5.6.1" - "@lerna/filter-options" "5.6.1" - "@lerna/npm-run-script" "5.6.1" - "@lerna/output" "5.6.1" - "@lerna/profiler" "5.6.1" - "@lerna/run-topologically" "5.6.1" - "@lerna/timer" "5.6.1" - "@lerna/validation-error" "5.6.1" +"@lerna/run@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/run/-/run-5.6.2.tgz#a964110d2fd13e4a3fe0fb4d752d0497651b26cb" + integrity sha512-c2kJxdFrNg5KOkrhmgwKKUOsfSrGNlFCe26EttufOJ3xfY0VnXlEw9rHOkTgwtu7969rfCdyaVP1qckMrF1Dgw== + dependencies: + "@lerna/command" "5.6.2" + "@lerna/filter-options" "5.6.2" + "@lerna/npm-run-script" "5.6.2" + "@lerna/output" "5.6.2" + "@lerna/profiler" "5.6.2" + "@lerna/run-topologically" "5.6.2" + "@lerna/timer" "5.6.2" + "@lerna/validation-error" "5.6.2" fs-extra "^9.1.0" p-map "^4.0.0" -"@lerna/symlink-binary@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-5.6.1.tgz#57eff521c706a42dcb10f8405eb45ddf8ff80b50" - integrity sha512-Y9x8gvvAP281467+QPwp56L6DDGdWtt24pREyWF7D+FIRcooJ29pn2C3B0rmzd5Ti63/6mrfCipUp9DXSWGwNg== +"@lerna/symlink-binary@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-5.6.2.tgz#f8c68273f8a4f382bc0420593815dc13027f245a" + integrity sha512-Cth+miwYyO81WAmrQbPBrLHuF+F0UUc0el5kRXLH6j5zzaRS3kMM68r40M7MmfH8m3GPi7691UARoWFEotW5jw== dependencies: - "@lerna/create-symlink" "5.6.1" - "@lerna/package" "5.6.1" + "@lerna/create-symlink" "5.6.2" + "@lerna/package" "5.6.2" fs-extra "^9.1.0" p-map "^4.0.0" -"@lerna/symlink-dependencies@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-5.6.1.tgz#dbfc06a4a84f94b01f3eb2b9aa99c504f84d1644" - integrity sha512-lKnJFbEpIdj9R70cpRor6vf3pxBnvk0RF7fwiTlWpF2BmlBYVihM+lML2vCts5G7ZBSQ9zTVyIqlCXG3qhyoxQ== +"@lerna/symlink-dependencies@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-5.6.2.tgz#263866a869c253db805a9a385741e8919b0aa341" + integrity sha512-dUVNQLEcjVOIQiT9OlSAKt0ykjyJPy8l9i4NJDe2/0XYaUjo8PWsxJ0vrutz27jzi2aZUy07ASmowQZEmnLHAw== dependencies: - "@lerna/create-symlink" "5.6.1" - "@lerna/resolve-symlink" "5.6.1" - "@lerna/symlink-binary" "5.6.1" + "@lerna/create-symlink" "5.6.2" + "@lerna/resolve-symlink" "5.6.2" + "@lerna/symlink-binary" "5.6.2" fs-extra "^9.1.0" p-map "^4.0.0" p-map-series "^2.1.0" -"@lerna/temp-write@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/temp-write/-/temp-write-5.6.1.tgz#f8779e2a6a723d0e83fce5817fe0a461f6c463f8" - integrity sha512-o0MOTsAfvMM8RC2o1wQ//F05hUd/cZJjBH8PKTrgXINDweW9VFey2fuUdL7TCpzgC4MUenL2x1nV6o8w87nFOQ== +"@lerna/temp-write@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/temp-write/-/temp-write-5.6.2.tgz#724fcadfe12bfaa723c1ea0fbc14804653816db0" + integrity sha512-S5ZNVTurSwWBmc9kh5alfSjmO3+BnRT6shYtOlmVIUYqWeYVYA5C1Htj322bbU4CSNCMFK6NQl4qGKL17HMuig== dependencies: graceful-fs "^4.1.15" is-stream "^2.0.0" @@ -2945,37 +2944,37 @@ temp-dir "^1.0.0" uuid "^8.3.2" -"@lerna/timer@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-5.6.1.tgz#5b6c3a2ba0d6bdc1e3952544d2d75c4ec72e653f" - integrity sha512-MALjTi1KuYZeRPH18xttlJb6+BLAcVuwGIsSYHBREkuXdRwW1oEcnnN5xzGsMGpG0KRxWu5wgNgc94aH/MCz6A== +"@lerna/timer@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-5.6.2.tgz#57de5dde716539c699f295b8a8c182dd41801b2e" + integrity sha512-AjMOiLc2B+5Nzdd9hNORetAdZ/WK8YNGX/+2ypzM68TMAPfIT5C40hMlSva9Yg4RsBz22REopXgM5s2zQd5ZQA== -"@lerna/validation-error@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-5.6.1.tgz#3ab6e0e120e8d5ce10908ccbfd39c5b8c8d038b7" - integrity sha512-0Kl9SmRb72bcXANdRO3fjuz+hHhHL9AEl/exCGODaT+PYAC+xH717Xj2ts/1u4qNuLlsQEE6+iVhAAMLUv86CA== +"@lerna/validation-error@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-5.6.2.tgz#75310749d94395f009c67a8fd47e146a86ce2943" + integrity sha512-4WlDUHaa+RSJNyJRtX3gVIAPVzjZD2tle8AJ0ZYBfdZnZmG0VlB2pD1FIbOQPK8sY2h5m0cHLRvfLoLncqHvdQ== dependencies: npmlog "^6.0.2" -"@lerna/version@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/version/-/version-5.6.1.tgz#028c945f7dbaa67160e7dfbe9dc371493e65c9f3" - integrity sha512-s9WIzduXOxeLH2Vu0T2HLBe1ICd9gxUsB3tlUyQveIAGE5wBuTAIL3nGQ3ljImPzFnriPqcS0xa5PC2DaW9JLA== - dependencies: - "@lerna/check-working-tree" "5.6.1" - "@lerna/child-process" "5.6.1" - "@lerna/collect-updates" "5.6.1" - "@lerna/command" "5.6.1" - "@lerna/conventional-commits" "5.6.1" - "@lerna/github-client" "5.6.1" - "@lerna/gitlab-client" "5.6.1" - "@lerna/output" "5.6.1" - "@lerna/prerelease-id-from-version" "5.6.1" - "@lerna/prompt" "5.6.1" - "@lerna/run-lifecycle" "5.6.1" - "@lerna/run-topologically" "5.6.1" - "@lerna/temp-write" "5.6.1" - "@lerna/validation-error" "5.6.1" +"@lerna/version@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/version/-/version-5.6.2.tgz#211ed1c0af3be0bb6bf6f79ef0d3e8daa1266ff0" + integrity sha512-odNSR2rTbHW++xMZSQKu/F6Syrd/sUvwDLPaMKktoOSPKmycHt/eWcuQQyACdtc43Iqeu4uQd7PCLsniqOVFrw== + dependencies: + "@lerna/check-working-tree" "5.6.2" + "@lerna/child-process" "5.6.2" + "@lerna/collect-updates" "5.6.2" + "@lerna/command" "5.6.2" + "@lerna/conventional-commits" "5.6.2" + "@lerna/github-client" "5.6.2" + "@lerna/gitlab-client" "5.6.2" + "@lerna/output" "5.6.2" + "@lerna/prerelease-id-from-version" "5.6.2" + "@lerna/prompt" "5.6.2" + "@lerna/run-lifecycle" "5.6.2" + "@lerna/run-topologically" "5.6.2" + "@lerna/temp-write" "5.6.2" + "@lerna/validation-error" "5.6.2" "@nrwl/devkit" ">=14.8.1 < 16" chalk "^4.1.0" dedent "^0.7.0" @@ -2990,10 +2989,10 @@ slash "^3.0.0" write-json-file "^4.3.0" -"@lerna/write-log-file@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-5.6.1.tgz#7c908cd36c18fb4bb96df6c092fd0a557def4485" - integrity sha512-wvgkL/tMozHbW6EkCFH7yLhLh5D3djRuwREsn5ptZxcCcay1RQjraON18yMX06mwsPfbpDItMH4D68q1dMSk5w== +"@lerna/write-log-file@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-5.6.2.tgz#a297307c80356abe4c3cfc75664febfa4658ec31" + integrity sha512-J09l18QnWQ3sXIRwuJkjXY3+KwPR2uO5NgbZGE3GXJK1V/LzOBRMvjGAIbuQHXw25uqe7vpLUpB8drtnFrubCQ== dependencies: npmlog "^6.0.2" write-file-atomic "^4.0.1" @@ -9827,28 +9826,28 @@ lazy-ass@^1.6.0: resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM= -lerna@5.6.1: - version "5.6.1" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-5.6.1.tgz#d405df5f859fdd93be1a696066cfaf3260890988" - integrity sha512-gAZxKlQVpYpAvzXMOpc6VfFa6WYZmdD7u6js1u3wu7tOwnwHcSQK+qGOO3/Ky/YP+LbrXuH0BnLj09d+ev9OwA== - dependencies: - "@lerna/add" "5.6.1" - "@lerna/bootstrap" "5.6.1" - "@lerna/changed" "5.6.1" - "@lerna/clean" "5.6.1" - "@lerna/cli" "5.6.1" - "@lerna/command" "5.6.1" - "@lerna/create" "5.6.1" - "@lerna/diff" "5.6.1" - "@lerna/exec" "5.6.1" - "@lerna/import" "5.6.1" - "@lerna/info" "5.6.1" - "@lerna/init" "5.6.1" - "@lerna/link" "5.6.1" - "@lerna/list" "5.6.1" - "@lerna/publish" "5.6.1" - "@lerna/run" "5.6.1" - "@lerna/version" "5.6.1" +lerna@5.6.2: + version "5.6.2" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-5.6.2.tgz#cdcdfe4e8bf07eccb4ecff1c216def9c67e62af2" + integrity sha512-Y0yMPslvnBnTZi7Nrs/gDyYZYauNf61xWNCehISHIORxZmmpoluNkcWTfcyb47is5uJQCv5QJX5xKKubbs+a6w== + dependencies: + "@lerna/add" "5.6.2" + "@lerna/bootstrap" "5.6.2" + "@lerna/changed" "5.6.2" + "@lerna/clean" "5.6.2" + "@lerna/cli" "5.6.2" + "@lerna/command" "5.6.2" + "@lerna/create" "5.6.2" + "@lerna/diff" "5.6.2" + "@lerna/exec" "5.6.2" + "@lerna/import" "5.6.2" + "@lerna/info" "5.6.2" + "@lerna/init" "5.6.2" + "@lerna/link" "5.6.2" + "@lerna/list" "5.6.2" + "@lerna/publish" "5.6.2" + "@lerna/run" "5.6.2" + "@lerna/version" "5.6.2" "@nrwl/devkit" ">=14.8.1 < 16" import-local "^3.0.2" inquirer "^8.2.4" From 351c0a8acebc245399aaca8208cb07c99c6909b2 Mon Sep 17 00:00:00 2001 From: Jovino Xu Date: Thu, 13 Oct 2022 19:05:21 +0800 Subject: [PATCH 046/193] chore(website): correct 'how to use' code block of rules (#5817) fix(website): correct 'how to use' code block of rules Co-authored-by: xujiongbo.1 --- packages/website/plugins/generated-rule-docs.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/website/plugins/generated-rule-docs.ts b/packages/website/plugins/generated-rule-docs.ts index a05519ab7da..04f35189f5c 100644 --- a/packages/website/plugins/generated-rule-docs.ts +++ b/packages/website/plugins/generated-rule-docs.ts @@ -198,9 +198,11 @@ export const generatedRuleDocs: Plugin = () => { type: 'code', meta: 'title=".eslintrc.cjs"', value: `module.exports = { - // Note: you must disable the base rule as it can report incorrect errors - "${extendsBaseRuleName}": "off", - "@typescript-eslint/${file.stem}": "${optionLevel}" + "rules": { + // Note: you must disable the base rule as it can report incorrect errors + "${extendsBaseRuleName}": "off", + "@typescript-eslint/${file.stem}": "${optionLevel}" + } };`, } as mdast.Code); } else { From 0f7f9b70a262d5bb9d8925a987f6b4b740724cec Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 13 Oct 2022 06:52:40 -0700 Subject: [PATCH 047/193] chore(deps): update dependency @rollup/plugin-json to v5 (#5819) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/website-eslint/package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/website-eslint/package.json b/packages/website-eslint/package.json index dd2608e43e5..79fa3cc0731 100644 --- a/packages/website-eslint/package.json +++ b/packages/website-eslint/package.json @@ -21,7 +21,7 @@ }, "devDependencies": { "@rollup/plugin-commonjs": "^23.0.0", - "@rollup/plugin-json": "^4.1.0", + "@rollup/plugin-json": "^5.0.0", "@rollup/plugin-node-resolve": "^14.1.0", "@rollup/pluginutils": "^4.2.1", "@typescript-eslint/eslint-plugin": "5.40.0", diff --git a/yarn.lock b/yarn.lock index 55ecf0199d3..79a953f63d5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3501,12 +3501,12 @@ is-reference "1.2.1" magic-string "^0.26.4" -"@rollup/plugin-json@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" - integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== +"@rollup/plugin-json@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-5.0.0.tgz#1e3e18302637760353c83a41d1f3c4e760afb20d" + integrity sha512-LsWDA5wJs/ggzakVuKQhZo7HPRcQZgBa3jWIVxQSFxaRToUGNi8ZBh3+k/gQ+1eInVYJgn4WBRCUkmoDrmmGzw== dependencies: - "@rollup/pluginutils" "^3.0.8" + "@rollup/pluginutils" "^4.2.1" "@rollup/plugin-node-resolve@^11.2.1": version "11.2.1" @@ -3540,7 +3540,7 @@ "@rollup/pluginutils" "^3.1.0" magic-string "^0.25.7" -"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": +"@rollup/pluginutils@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== From f28bc5c7e391f20d756b50bc7c745da94707f230 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 13 Oct 2022 06:53:15 -0700 Subject: [PATCH 048/193] chore(deps): update dependency @rollup/pluginutils to v5 (#5821) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/website-eslint/package.json | 2 +- yarn.lock | 22 ++++++++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/packages/website-eslint/package.json b/packages/website-eslint/package.json index 79fa3cc0731..5ebeeef2666 100644 --- a/packages/website-eslint/package.json +++ b/packages/website-eslint/package.json @@ -23,7 +23,7 @@ "@rollup/plugin-commonjs": "^23.0.0", "@rollup/plugin-json": "^5.0.0", "@rollup/plugin-node-resolve": "^14.1.0", - "@rollup/pluginutils": "^4.2.1", + "@rollup/pluginutils": "^5.0.0", "@typescript-eslint/eslint-plugin": "5.40.0", "@typescript-eslint/parser": "5.40.0", "@typescript-eslint/scope-manager": "5.40.0", diff --git a/yarn.lock b/yarn.lock index 79a953f63d5..444495a7421 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3557,6 +3557,15 @@ estree-walker "^2.0.1" picomatch "^2.2.2" +"@rollup/pluginutils@^5.0.0": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.1.tgz#63def51f5a76dadd984689d33c7f000164152a97" + integrity sha512-4HaCVEXXuObvcPUaUlLt4faHYHCeQOOWNj8NKFGaRSrw3ZLD0TWeAFZicV9vXjnE2nkNuaVTfTuwAnjR+6uc9A== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^2.3.1" + "@rushstack/node-core-library@3.53.0": version "3.53.0" resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.53.0.tgz#b4b812bc2e207e4fd3939991f8675335dab50978" @@ -3975,16 +3984,21 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^0.0.51": - version "0.0.51" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" - integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== +"@types/estree@*", "@types/estree@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" + integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== +"@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== + "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": version "4.17.28" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" From a08693200d76d7dd9313602324846f468112e98a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 13 Oct 2022 07:15:08 -0700 Subject: [PATCH 049/193] chore(deps): update dependency @rollup/plugin-node-resolve to v15 (#5820) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/website-eslint/package.json | 2 +- yarn.lock | 51 +++++++++++++++------------- 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/packages/website-eslint/package.json b/packages/website-eslint/package.json index 5ebeeef2666..e365ce45c0d 100644 --- a/packages/website-eslint/package.json +++ b/packages/website-eslint/package.json @@ -22,7 +22,7 @@ "devDependencies": { "@rollup/plugin-commonjs": "^23.0.0", "@rollup/plugin-json": "^5.0.0", - "@rollup/plugin-node-resolve": "^14.1.0", + "@rollup/plugin-node-resolve": "^15.0.0", "@rollup/pluginutils": "^5.0.0", "@typescript-eslint/eslint-plugin": "5.40.0", "@typescript-eslint/parser": "5.40.0", diff --git a/yarn.lock b/yarn.lock index 444495a7421..a7d4fe7d1ea 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3520,17 +3520,17 @@ is-module "^1.0.0" resolve "^1.19.0" -"@rollup/plugin-node-resolve@^14.1.0": - version "14.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-14.1.0.tgz#f2fa475405cd7fed6420bf438fe393f988a9bc96" - integrity sha512-5G2niJroNCz/1zqwXtk0t9+twOSDlG00k1Wfd7bkbbXmwg8H8dvgHdIWAun53Ps/rckfvOC7scDBjuGFg5OaWw== +"@rollup/plugin-node-resolve@^15.0.0": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.0.tgz#44ded58b36702de27bf36bbf19ca420bbd1d0c27" + integrity sha512-iwJbzfTzlzDDQcGmkS7EkCKwe2kSkdBrjX87Fy/KrNjr6UNnLpod0t6X66e502LRe5JJCA4FFqrEscWPnZAkig== dependencies: - "@rollup/pluginutils" "^3.1.0" - "@types/resolve" "1.17.1" + "@rollup/pluginutils" "^4.2.1" + "@types/resolve" "1.20.2" deepmerge "^4.2.2" - is-builtin-module "^3.1.0" + is-builtin-module "^3.2.0" is-module "^1.0.0" - resolve "^1.19.0" + resolve "^1.22.1" "@rollup/plugin-replace@^2.4.1": version "2.4.2" @@ -4247,6 +4247,11 @@ dependencies: "@types/node" "*" +"@types/resolve@1.20.2": + version "1.20.2" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" + integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== + "@types/retry@^0.12.0": version "0.12.1" resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065" @@ -5263,7 +5268,7 @@ builtin-modules@^1.1.1: resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= -builtin-modules@^3.0.0, builtin-modules@^3.1.0: +builtin-modules@^3.1.0, builtin-modules@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== @@ -8821,12 +8826,12 @@ is-buffer@^2.0.0: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== -is-builtin-module@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.1.0.tgz#6fdb24313b1c03b75f8b9711c0feb8c30b903b00" - integrity sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg== +is-builtin-module@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.0.tgz#bb0310dfe881f144ca83f30100ceb10cf58835e0" + integrity sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw== dependencies: - builtin-modules "^3.0.0" + builtin-modules "^3.3.0" is-callable@^1.1.4, is-callable@^1.2.4: version "1.2.4" @@ -8847,10 +8852,10 @@ is-ci@^3.0.0: dependencies: ci-info "^3.1.1" -is-core-module@^2.1.0, is-core-module@^2.2.0, is-core-module@^2.5.0, is-core-module@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" - integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== +is-core-module@^2.1.0, is-core-module@^2.2.0, is-core-module@^2.5.0, is-core-module@^2.8.1, is-core-module@^2.9.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" + integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== dependencies: has "^1.0.3" @@ -12669,12 +12674,12 @@ resolve.exports@1.1.0, resolve.exports@^1.1.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.3.2: - version "1.22.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" - integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1, resolve@^1.3.2: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== dependencies: - is-core-module "^2.8.1" + is-core-module "^2.9.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" From 56f89d622765c96cab768566e01195272b4f121f Mon Sep 17 00:00:00 2001 From: James Henry Date: Thu, 13 Oct 2022 09:43:31 -0700 Subject: [PATCH 050/193] chore: nx migrate latest (14.8.4) (#5798) --- nx.json | 12 +- package.json | 7 +- packages/ast-spec/project.json | 2 +- packages/eslint-plugin-internal/project.json | 2 +- packages/eslint-plugin-tslint/project.json | 2 +- packages/eslint-plugin/project.json | 2 +- packages/experimental-utils/project.json | 2 +- packages/parser/project.json | 2 +- packages/scope-manager/project.json | 12 +- packages/shared-fixtures/project.json | 2 +- packages/type-utils/project.json | 2 +- packages/types/project.json | 2 +- packages/typescript-estree/project.json | 2 +- packages/utils/project.json | 2 +- packages/visitor-keys/project.json | 2 +- packages/website-eslint/project.json | 2 +- packages/website/project.json | 2 +- workspace.json | 1 + yarn.lock | 249 +++++++++---------- 19 files changed, 152 insertions(+), 157 deletions(-) diff --git a/nx.json b/nx.json index 7b001c0f790..0d30e822c59 100644 --- a/nx.json +++ b/nx.json @@ -1,4 +1,5 @@ { + "$schema": "./node_modules/nx/schemas/nx-schema.json", "npmScope": "typescript-eslint", "implicitDependencies": { "package.json": { @@ -26,12 +27,9 @@ } } }, - "targetDependencies": { - "build": [ - { - "target": "build", - "projects": "dependencies" - } - ] + "targetDefaults": { + "build": { + "dependsOn": ["^build"] + } } } diff --git a/package.json b/package.json index bdd03541a23..dd56b2a66e9 100644 --- a/package.json +++ b/package.json @@ -53,10 +53,8 @@ "@babel/eslint-parser": "^7.18.2", "@babel/parser": "^7.18.0", "@babel/types": "^7.18.2", - "@nrwl/cli": "14.1.4", - "@nrwl/nx-cloud": "14.0.3", - "@nrwl/tao": "14.1.4", - "@nrwl/workspace": "14.1.4", + "@nrwl/nx-cloud": "14.7.0", + "@nrwl/workspace": "14.8.4", "@swc/core": "^1.3.1", "@swc/jest": "^0.2.21", "@types/babel__code-frame": "^7.0.3", @@ -98,6 +96,7 @@ "make-dir": "^3.1.0", "markdownlint-cli": "^0.32.0", "ncp": "^2.0.0", + "nx": "14.8.4", "patch-package": "^6.4.7", "prettier": "2.7.1", "pretty-format": "^29.0.3", diff --git a/packages/ast-spec/project.json b/packages/ast-spec/project.json index 3cb2cf7be65..24256b3e4d0 100644 --- a/packages/ast-spec/project.json +++ b/packages/ast-spec/project.json @@ -1,5 +1,5 @@ { - "root": "packages/ast-spec", + "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [] } diff --git a/packages/eslint-plugin-internal/project.json b/packages/eslint-plugin-internal/project.json index 948fce1f60c..24256b3e4d0 100644 --- a/packages/eslint-plugin-internal/project.json +++ b/packages/eslint-plugin-internal/project.json @@ -1,5 +1,5 @@ { - "root": "packages/eslint-plugin-internal", + "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [] } diff --git a/packages/eslint-plugin-tslint/project.json b/packages/eslint-plugin-tslint/project.json index 8ca785bd7d1..24256b3e4d0 100644 --- a/packages/eslint-plugin-tslint/project.json +++ b/packages/eslint-plugin-tslint/project.json @@ -1,5 +1,5 @@ { - "root": "packages/eslint-plugin-tslint", + "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [] } diff --git a/packages/eslint-plugin/project.json b/packages/eslint-plugin/project.json index d04cdcb07b1..24256b3e4d0 100644 --- a/packages/eslint-plugin/project.json +++ b/packages/eslint-plugin/project.json @@ -1,5 +1,5 @@ { - "root": "packages/eslint-plugin", + "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [] } diff --git a/packages/experimental-utils/project.json b/packages/experimental-utils/project.json index f8bd9117eea..24256b3e4d0 100644 --- a/packages/experimental-utils/project.json +++ b/packages/experimental-utils/project.json @@ -1,5 +1,5 @@ { - "root": "packages/experimental-utils", + "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [] } diff --git a/packages/parser/project.json b/packages/parser/project.json index c9c9e3b6321..24256b3e4d0 100644 --- a/packages/parser/project.json +++ b/packages/parser/project.json @@ -1,5 +1,5 @@ { - "root": "packages/parser", + "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [] } diff --git a/packages/scope-manager/project.json b/packages/scope-manager/project.json index 7753d267f39..1868938a6ac 100644 --- a/packages/scope-manager/project.json +++ b/packages/scope-manager/project.json @@ -1,10 +1,10 @@ { - "root": "packages/scope-manager", + "$schema": "../../node_modules/nx/schemas/project-schema.json", "sourceRoot": "packages/scope-manager/src", "projectType": "library", "targets": { "build": { - "executor": "@nrwl/workspace:run-commands", + "executor": "nx:run-commands", "outputs": [ "packages/scope-manager/dist", "packages/scope-manager/_ts3.4" @@ -20,7 +20,7 @@ } }, "typecheck": { - "executor": "@nrwl/workspace:run-commands", + "executor": "nx:run-commands", "options": { "parallel": true, "cwd": "packages/scope-manager", @@ -31,7 +31,7 @@ } }, "clean": { - "executor": "@nrwl/workspace:run-commands", + "executor": "nx:run-commands", "options": { "parallel": false, "cwd": "packages/scope-manager", @@ -44,7 +44,7 @@ } }, "clean-fixtures": { - "executor": "@nrwl/workspace:run-commands", + "executor": "nx:run-commands", "options": { "parallel": false, "cwd": "packages/scope-manager", @@ -68,7 +68,7 @@ } }, "generate-lib": { - "executor": "@nrwl/workspace:run-commands", + "executor": "nx:run-commands", "options": { "parallel": false, "cwd": "packages/scope-manager", diff --git a/packages/shared-fixtures/project.json b/packages/shared-fixtures/project.json index b100b1e4ba7..24256b3e4d0 100644 --- a/packages/shared-fixtures/project.json +++ b/packages/shared-fixtures/project.json @@ -1,5 +1,5 @@ { - "root": "packages/shared-fixtures", + "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [] } diff --git a/packages/type-utils/project.json b/packages/type-utils/project.json index fea4ee94ee4..24256b3e4d0 100644 --- a/packages/type-utils/project.json +++ b/packages/type-utils/project.json @@ -1,5 +1,5 @@ { - "root": "packages/type-utils", + "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [] } diff --git a/packages/types/project.json b/packages/types/project.json index d0c5660433f..3719aa0608b 100644 --- a/packages/types/project.json +++ b/packages/types/project.json @@ -1,5 +1,5 @@ { - "root": "packages/types", + "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": ["@typescript-eslint/ast-spec"] } diff --git a/packages/typescript-estree/project.json b/packages/typescript-estree/project.json index fe32123b550..edfec5ab524 100644 --- a/packages/typescript-estree/project.json +++ b/packages/typescript-estree/project.json @@ -1,5 +1,5 @@ { - "root": "packages/typescript-estree", + "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": ["@typescript-eslint/types"] } diff --git a/packages/utils/project.json b/packages/utils/project.json index b55a371ba33..24256b3e4d0 100644 --- a/packages/utils/project.json +++ b/packages/utils/project.json @@ -1,5 +1,5 @@ { - "root": "packages/utils", + "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [] } diff --git a/packages/visitor-keys/project.json b/packages/visitor-keys/project.json index e531f19f69d..24256b3e4d0 100644 --- a/packages/visitor-keys/project.json +++ b/packages/visitor-keys/project.json @@ -1,5 +1,5 @@ { - "root": "packages/visitor-keys", + "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [] } diff --git a/packages/website-eslint/project.json b/packages/website-eslint/project.json index ac6ff89fcb8..24256b3e4d0 100644 --- a/packages/website-eslint/project.json +++ b/packages/website-eslint/project.json @@ -1,5 +1,5 @@ { - "root": "packages/website-eslint", + "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [] } diff --git a/packages/website/project.json b/packages/website/project.json index 9bfd9e8a8aa..24256b3e4d0 100644 --- a/packages/website/project.json +++ b/packages/website/project.json @@ -1,5 +1,5 @@ { - "root": "packages/website", + "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [] } diff --git a/workspace.json b/workspace.json index 152f3d9f6d0..95b04adf875 100644 --- a/workspace.json +++ b/workspace.json @@ -1,4 +1,5 @@ { + "$schema": "./node_modules/nx/schemas/workspace-schema.json", "version": 2, "projects": { "@typescript-eslint/ast-spec": "packages/ast-spec", diff --git a/yarn.lock b/yarn.lock index a7d4fe7d1ea..792d2e03a4f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2163,7 +2163,7 @@ "@jest/types" "^29.1.2" jest-mock "^29.1.2" -"@jest/reporters@27.5.1", "@jest/reporters@^29", "@jest/reporters@^29.1.2": +"@jest/reporters@28.1.1", "@jest/reporters@^29", "@jest/reporters@^29.1.2": version "29.1.2" resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.1.2.tgz#5520898ed0a4ecf69d8b671e1dc8465d0acdfa6e" integrity sha512-X4fiwwyxy9mnfpxL0g9DD0KcTmEIqP0jUdnc2cfa9riHy+I6Gwwp5vOZiwyg0vZxfSDxrOlK9S4+340W4d+DAA== @@ -2210,7 +2210,7 @@ callsites "^3.0.0" graceful-fs "^4.2.9" -"@jest/test-result@27.5.1", "@jest/test-result@^29", "@jest/test-result@^29.1.2": +"@jest/test-result@28.1.1", "@jest/test-result@^29", "@jest/test-result@^29.1.2": version "29.1.2" resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.1.2.tgz#6a8d006eb2b31ce0287d1fc10d12b8ff8504f3c8" integrity sha512-jjYYjjumCJjH9hHCoMhA8PCl1OxNeGgAoZ7yuGYILRJX9NjgzTN0pCT5qAoYR4jfOP8htIByvAlz9vfNSSBoVg== @@ -3236,13 +3236,6 @@ read-package-json-fast "^2.0.3" which "^2.0.2" -"@nrwl/cli@14.1.4": - version "14.1.4" - resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-14.1.4.tgz#4d896bbfcb49f058711dd47a67c422297db03be9" - integrity sha512-XjJe/bnOKDYvvY9IxKdETWTGekRu/cN9wThwwlo8xo4Tqy1VK0MfqpDDALrFYp739NG5Zyuhtbz5+Ko48RK75g== - dependencies: - nx "14.1.4" - "@nrwl/cli@14.8.3": version "14.8.3" resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-14.8.3.tgz#0debbc0887a3c19ba786d502ed0bf158a248c8b8" @@ -3250,15 +3243,21 @@ dependencies: nx "14.8.3" -"@nrwl/devkit@14.1.4": - version "14.1.4" - resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-14.1.4.tgz#7cabec88109ec8fec60b11aba7cbfddc4b9e771e" - integrity sha512-Q7/cDrULhqdbfPRp8N0x9y67r49ApzYG+CVEXI8VowwHFAI3zCr/PNlzsfuLL4l2Uj0jYOt+LPoNbFZuCLAQLA== +"@nrwl/cli@14.8.4": + version "14.8.4" + resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-14.8.4.tgz#036ccf235e23a07410addf04900e647cc83153bf" + integrity sha512-JBoMw1IUFbtahDWolv3iBWJyO3ZXHOsqUt2AvWSrKfteOCjhSfG9GdQYGlnV9ZpWAx4bDf4f7Xz5z6+DJuaONA== + dependencies: + nx "14.8.4" + +"@nrwl/devkit@14.8.4": + version "14.8.4" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-14.8.4.tgz#15812910878a50220dc5944693e2d84795308b31" + integrity sha512-GmHZ8SVE0aL4iRfkYRzzE5I09rl6MgHpLDkuGAYQOPLOm4REjZ5jFjoODS2M7AydrJ34JxAq9eAFXGFr4cKauA== dependencies: + "@phenomnomnominal/tsquery" "4.1.1" ejs "^3.1.7" ignore "^5.0.4" - rxjs "^6.5.4" - semver "7.3.4" tslib "^2.3.0" "@nrwl/devkit@>=14.8.1 < 16": @@ -3271,51 +3270,49 @@ ignore "^5.0.4" tslib "^2.3.0" -"@nrwl/jest@14.1.4": - version "14.1.4" - resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-14.1.4.tgz#c69ad97913fba78ae9eabce83c9cec324a29881b" - integrity sha512-Me8r3QY080gVtEtD3F3FkQI7NU0MJl1PjU+qEcBejk5+NJD31LtPoIW4XHYdep/dPC/Og+m+QWopKK97K7Yuaw== +"@nrwl/jest@14.8.4": + version "14.8.4" + resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-14.8.4.tgz#671a9f32c6acc2b5cb6a47aae0a25d18eec94754" + integrity sha512-iVBHWLaTQpCxlfMleuMPcti6P9MivTozV4SEXUOPh4jG7y9j3le0YhrOW3R6JNSsXZHPlrsSZ3eFTLJ0BG6gjA== dependencies: - "@jest/reporters" "27.5.1" - "@jest/test-result" "27.5.1" - "@nrwl/devkit" "14.1.4" + "@jest/reporters" "28.1.1" + "@jest/test-result" "28.1.1" + "@nrwl/devkit" "14.8.4" + "@phenomnomnominal/tsquery" "4.1.1" chalk "4.1.0" + dotenv "~10.0.0" identity-obj-proxy "3.0.0" - jest-config "27.5.1" - jest-resolve "27.5.1" - jest-util "27.5.1" + jest-config "28.1.1" + jest-resolve "28.1.1" + jest-util "28.1.1" resolve.exports "1.1.0" - rxjs "^6.5.4" tslib "^2.3.0" -"@nrwl/linter@14.1.4": - version "14.1.4" - resolved "https://registry.yarnpkg.com/@nrwl/linter/-/linter-14.1.4.tgz#6e10da0b8e2ea3b38668cc1ac77b67b633c8be8f" - integrity sha512-DUChINM9aoR3nuoSjV2vMoaFrM6PwPamEnN0WFowO4x+DRpEdp4I5IPpoSCyXTnrQB9EUVWHBo0vgeYILtgKlA== +"@nrwl/linter@14.8.4": + version "14.8.4" + resolved "https://registry.yarnpkg.com/@nrwl/linter/-/linter-14.8.4.tgz#77f3935b4a69acd14a869344fe7b99c65607e5fe" + integrity sha512-S6l+WMF52rjZ4QX/0pjxacl4mLYqg1IckcKocqimpuiTr5B0WWaPHgpY0Nne40LRjKw94WlweWIDx/ar4zPW8Q== dependencies: - "@nrwl/devkit" "14.1.4" - "@nrwl/jest" "14.1.4" + "@nrwl/devkit" "14.8.4" + "@nrwl/jest" "14.8.4" "@phenomnomnominal/tsquery" "4.1.1" + nx "14.8.4" tmp "~0.2.1" tslib "^2.3.0" -"@nrwl/nx-cloud@14.0.3": - version "14.0.3" - resolved "https://registry.yarnpkg.com/@nrwl/nx-cloud/-/nx-cloud-14.0.3.tgz#fda3d75274ca6e8f4a6f469b294a4b65b54bdc28" - integrity sha512-08t9vnRzA5SAkG6gp+NrAGauraepHH0v4IByO4NQ+7JJ7JMWw0nt6fp/70wofRmem7MGQ+Y/AIgIc5T0m89k+w== +"@nrwl/nx-cloud@14.7.0": + version "14.7.0" + resolved "https://registry.yarnpkg.com/@nrwl/nx-cloud/-/nx-cloud-14.7.0.tgz#71dc6663c9527001bbc374f8d1d841d166fd031f" + integrity sha512-sEGK5Ire5DC2liIsT89qR6SzZa46uinmWEAMz8ocMuu7nIMnwV9m15qajxhmYKasYsq9vTeT+x7BlZ4fnxPrNg== dependencies: axios "^0.21.1" chalk "4.1.0" + dotenv "~10.0.0" + fs-extra "^10.1.0" node-machine-id "^1.1.12" strip-json-comments "^3.1.1" tar "6.1.11" - -"@nrwl/tao@14.1.4": - version "14.1.4" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-14.1.4.tgz#20902811c5712732d2944a8e0c4cde031e631694" - integrity sha512-Dk8/CM1/GTCYBuA5RJ59Vz1OJGK3Tf4KVE3QS7UpEkR/iWTPDmTtrcQmTLSgtX+tYgca5dMWHV9WfiJjKW2/ow== - dependencies: - nx "14.1.4" + yargs-parser ">=21.0.1" "@nrwl/tao@14.8.3": version "14.8.3" @@ -3324,14 +3321,21 @@ dependencies: nx "14.8.3" -"@nrwl/workspace@14.1.4": - version "14.1.4" - resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-14.1.4.tgz#ec5bfb05d00e7f7bb9eb45b5821ca8f93dad8f86" - integrity sha512-J/mcdlOPu5dkGoXDrGA1pPdEGFqYepRgZSoR+fSWlJT0Z4nb5C9aaXnu6OPl/8qwYFzAmQ5xsrqaaXQqtUHpQQ== +"@nrwl/tao@14.8.4": + version "14.8.4" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-14.8.4.tgz#77ad1f92928f58ef5a338e4df5efbb3a89d6e84b" + integrity sha512-wEDBELOYzfvp96xCnoWoMr4UA/e3cUri7kAXDGK3hrGGcCUplJ+notHiKJoZXmB3yHME2PMJca4dHcG4zVgA0w== + dependencies: + nx "14.8.4" + +"@nrwl/workspace@14.8.4": + version "14.8.4" + resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-14.8.4.tgz#dd06b7d3d7e0b0757464580e9be4d0c69de2cf63" + integrity sha512-/Epgr85sYBpA/OkFNIMGE3XPmoW+XdMi9W0zUadCThIkeojwbFgd6VrGG48vpCd0rCMRYirkd2Ar5RYsLJnsPQ== dependencies: - "@nrwl/devkit" "14.1.4" - "@nrwl/jest" "14.1.4" - "@nrwl/linter" "14.1.4" + "@nrwl/devkit" "14.8.4" + "@nrwl/jest" "14.8.4" + "@nrwl/linter" "14.8.4" "@parcel/watcher" "2.0.4" chalk "4.1.0" chokidar "^3.5.1" @@ -3341,12 +3345,12 @@ enquirer "~2.3.6" figures "3.2.0" flat "^5.0.2" - fs-extra "^9.1.0" + fs-extra "^10.1.0" glob "7.1.4" ignore "^5.0.4" - minimatch "3.0.4" + minimatch "3.0.5" npm-run-path "^4.0.1" - nx "14.1.4" + nx "14.8.4" open "^8.4.0" rxjs "^6.5.4" semver "7.3.4" @@ -3762,33 +3766,6 @@ "@svgr/plugin-jsx" "^6.2.1" "@svgr/plugin-svgo" "^6.2.0" -"@swc-node/core@^1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@swc-node/core/-/core-1.8.2.tgz#950ad394a8e8385658e6a951ec554bbf61a1693e" - integrity sha512-IoJ7tGHQ6JOMSmFe4VhP64uLmFKMNasS0QEgUrLFQ0h/dTvpQMynnoGBEJoPL6LfsebZ/q4uKqbpWrth6/yrAA== - dependencies: - "@swc/core" "^1.2.119" - -"@swc-node/register@^1.4.2": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@swc-node/register/-/register-1.4.2.tgz#98801cc5ad8792519511bd6ae31c01f40aa487a3" - integrity sha512-wLZz0J7BTO//1Eq7e4eBQjKF380Hr2eVemz849msQSKcVM1D7UJUt/dP2TinEVGx++/BXJ/0q37i6n9Iw0EM0w== - dependencies: - "@swc-node/core" "^1.8.2" - "@swc-node/sourcemap-support" "^0.1.11" - chalk "4" - debug "^4.3.3" - pirates "^4.0.4" - tslib "^2.3.1" - typescript "^4.5.3" - -"@swc-node/sourcemap-support@^0.1.11": - version "0.1.11" - resolved "https://registry.yarnpkg.com/@swc-node/sourcemap-support/-/sourcemap-support-0.1.11.tgz#50cda396baade0636e8f53596b7a66386490c06d" - integrity sha512-b+Mn3oQl+7nUSt7hPzIbY9B30YhcFo1PT4kd9P4QmD6raycmIealOAhAdZID/JevphzsOXHQB4OqJm7Yi5tMcA== - dependencies: - source-map-support "^0.5.21" - "@swc/core-android-arm-eabi@1.3.4", "@swc/core-android-arm-eabi@npm:dummypkg-a@1.0.0", "@swc/core-android-arm64@1.3.4", "@swc/core-android-arm64@npm:dummypkg-a@1.0.0", "@swc/core-freebsd-x64@1.3.4", "@swc/core-freebsd-x64@npm:dummypkg-a@1.0.0", "@swc/core-linux-arm-gnueabihf@1.3.4", "@swc/core-linux-arm-gnueabihf@npm:dummypkg-a@1.0.0", "@swc/core-linux-arm64-gnu@1.3.4", "@swc/core-linux-arm64-gnu@npm:dummypkg-a@1.0.0", "@swc/core-linux-arm64-musl@1.3.4", "@swc/core-linux-arm64-musl@npm:dummypkg-a@1.0.0", "@swc/core-win32-arm64-msvc@1.3.4", "@swc/core-win32-arm64-msvc@npm:dummypkg-a@1.0.0", "@swc/core-win32-ia32-msvc@1.3.4", "@swc/core-win32-ia32-msvc@npm:dummypkg-a@1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/dummypkg-a/-/dummypkg-a-1.0.0.tgz#02868251461af84d70603446ef5908b72c5c8435" @@ -3819,7 +3796,7 @@ resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.4.tgz#7bf6cd6f5c3197d7d807b273d12dd666e23b238e" integrity sha512-9/bSvgjV31u1G2slRFPgK85ohJdo8KtWJ0f4CPp2LdVtIJHbFGd0pWjnMfiPJeodSxSGGWrgUNQtajqIIsrbqA== -"@swc/core@^1.2.119", "@swc/core@^1.2.173", "@swc/core@^1.3.1": +"@swc/core@^1.3.1": version "1.3.4" resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.4.tgz#961183ede3a836b3aea7d755f07c4ae673c5a763" integrity sha512-W1AvQImfF2T+7dzWdg/GqFpcMJ24lyXGQ/kPKHL/FGPZbf0Q1ExD7wp3eQ2PQMgHTLe28qWonxicm2DPfprx3g== @@ -4931,6 +4908,15 @@ axios@^0.25.0: dependencies: follow-redirects "^1.14.7" +axios@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.1.2.tgz#8b6f6c540abf44ab98d9904e8daf55351ca4a331" + integrity sha512-bznQyETwElsXl2RK7HLLwb5GPpOLlycxHCtrpDR/4RqqBzjARaOTo3jz4IgtntWUYee7Ne4S8UHd92VCuzPaWA== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + axobject-query@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" @@ -5417,14 +5403,6 @@ ccount@^1.0.0: resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== -chalk@4, chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - chalk@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" @@ -5442,6 +5420,14 @@ chalk@^2.0.0, chalk@^2.3.0, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.0.1.tgz#ca57d71e82bb534a296df63bbacc4a1c22b2a4b6" @@ -5744,7 +5730,7 @@ combine-promises@^1.1.0: resolved "https://registry.yarnpkg.com/combine-promises/-/combine-promises-1.1.0.tgz#72db90743c0ca7aab7d0d8d2052fd7b0f674de71" integrity sha512-ZI9jvcLDxqwaXEixOhArm3r7ReIivsXkpbyEWyeOhzz1QS0iSgBPnWvEqvIQtYyamGCYA88gFhmUrs9hrrQ0pg== -combined-stream@^1.0.6, combined-stream@~1.0.6: +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -7717,7 +7703,7 @@ flux@^4.0.1: fbemitter "^3.0.0" fbjs "^3.0.0" -follow-redirects@^1.0.0, follow-redirects@^1.10.0, follow-redirects@^1.14.0, follow-redirects@^1.14.7: +follow-redirects@^1.0.0, follow-redirects@^1.10.0, follow-redirects@^1.14.0, follow-redirects@^1.14.7, follow-redirects@^1.15.0: version "1.15.2" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== @@ -7746,6 +7732,15 @@ fork-ts-checker-webpack-plugin@^6.5.0: semver "^7.3.2" tapable "^1.0.0" +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" @@ -9247,7 +9242,7 @@ jest-cli@^29.1.2: prompts "^2.0.1" yargs "^17.3.1" -jest-config@27.5.1, jest-config@^29, jest-config@^29.1.2: +jest-config@28.1.1, jest-config@^29, jest-config@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.1.2.tgz#7d004345ca4c09f5d8f802355f54494e90842f4d" integrity sha512-EC3Zi86HJUOz+2YWQcJYQXlf0zuBhJoeyxLM6vb6qJsVmpP7KcCP1JnyF0iaqTaXdBP8Rlwsvs7hnKWQWWLwwA== @@ -9399,7 +9394,7 @@ jest-resolve-dependencies@^29.1.2: jest-regex-util "^29.0.0" jest-snapshot "^29.1.2" -jest-resolve@27.5.1, jest-resolve@^29, jest-resolve@^29.1.2: +jest-resolve@28.1.1, jest-resolve@^29, jest-resolve@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.1.2.tgz#9dd8c2fc83e59ee7d676b14bd45a5f89e877741d" integrity sha512-7fcOr+k7UYSVRJYhSmJHIid3AnDBcLQX3VmT9OSbPWsWz1MfT7bcoerMhADKGvKCoMpOHUQaDHtQoNp/P9JMGg== @@ -9506,7 +9501,7 @@ jest-specific-snapshot@*, jest-specific-snapshot@^5.0.0: dependencies: jest-snapshot "^27.0.2" -jest-util@27.5.1, jest-util@^29, jest-util@^29.1.2: +jest-util@28.1.1, jest-util@^29, jest-util@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.1.2.tgz#ac5798e93cb6a6703084e194cfa0898d66126df1" integrity sha512-vPCk9F353i0Ymx3WQq3+a4lZ07NXu9Ca8wya6o4Fe4/aO1e1awMMprZ3woPFpKwghEOW+UXgd15vVotuNN9ONQ== @@ -9710,11 +9705,6 @@ json5@^2.1.2, json5@^2.2.0, json5@^2.2.1: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== -jsonc-parser@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" - integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA== - jsonc-parser@3.2.0, jsonc-parser@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" @@ -10933,16 +10923,18 @@ nth-check@^2.0.0, nth-check@^2.0.1: dependencies: boolbase "^1.0.0" -nx@14.1.4: - version "14.1.4" - resolved "https://registry.yarnpkg.com/nx/-/nx-14.1.4.tgz#83bfb7564604eb26a78b3f5718cb2f90faeaaf4f" - integrity sha512-cYULObHKIbDbvxUnxn0tVbBlM8Vzg2u9sZYpmL6TEVF/Xbj3PQi8oyazc2/dU5Qw319lqMJcZonG2ihv9yEGKg== +nx@14.8.3, "nx@>=14.8.1 < 16": + version "14.8.3" + resolved "https://registry.yarnpkg.com/nx/-/nx-14.8.3.tgz#6f6e5c579d37683aa182c1829f7f9ac44e838900" + integrity sha512-6aMYrzlTqE77vHbaE1teI5P1A2oYkJGkuDMIo/zegRwUxCAjRzLAluUgPrmgqhuPTyTDn8p4aDfxAWV3Q0o/2Q== dependencies: - "@nrwl/cli" "14.1.4" - "@nrwl/tao" "14.1.4" + "@nrwl/cli" "14.8.3" + "@nrwl/tao" "14.8.3" "@parcel/watcher" "2.0.4" - "@swc-node/register" "^1.4.2" - "@swc/core" "^1.2.173" + "@yarnpkg/lockfile" "^1.1.0" + "@yarnpkg/parsers" "^3.0.0-rc.18" + "@zkochan/js-yaml" "0.0.6" + axios "0.21.1" chalk "4.1.0" chokidar "^3.5.1" cli-cursor "3.1.0" @@ -10953,17 +10945,17 @@ nx@14.1.4: fast-glob "3.2.7" figures "3.2.0" flat "^5.0.2" - fs-extra "^9.1.0" + fs-extra "^10.1.0" glob "7.1.4" ignore "^5.0.4" - jsonc-parser "3.0.0" - minimatch "3.0.4" + js-yaml "4.1.0" + jsonc-parser "3.2.0" + minimatch "3.0.5" npm-run-path "^4.0.1" open "^8.4.0" - rxjs "^6.5.4" - rxjs-for-await "0.0.2" semver "7.3.4" string-width "^4.2.3" + strong-log-transformer "^2.1.0" tar-stream "~2.2.0" tmp "~0.2.1" tsconfig-paths "^3.9.0" @@ -10972,18 +10964,18 @@ nx@14.1.4: yargs "^17.4.0" yargs-parser "21.0.1" -nx@14.8.3, "nx@>=14.8.1 < 16": - version "14.8.3" - resolved "https://registry.yarnpkg.com/nx/-/nx-14.8.3.tgz#6f6e5c579d37683aa182c1829f7f9ac44e838900" - integrity sha512-6aMYrzlTqE77vHbaE1teI5P1A2oYkJGkuDMIo/zegRwUxCAjRzLAluUgPrmgqhuPTyTDn8p4aDfxAWV3Q0o/2Q== +nx@14.8.4: + version "14.8.4" + resolved "https://registry.yarnpkg.com/nx/-/nx-14.8.4.tgz#7a1f92409ed82aaf99d2ff190c47617179c5c6d2" + integrity sha512-J7QlmG6rsdR+1Ry0pohPZXHpPN1lzE70lvuCXveyU61VX8HsrbZBzgLif07BUT8lHbs7ORaOJSZd4BCqZBJSSw== dependencies: - "@nrwl/cli" "14.8.3" - "@nrwl/tao" "14.8.3" + "@nrwl/cli" "14.8.4" + "@nrwl/tao" "14.8.4" "@parcel/watcher" "2.0.4" "@yarnpkg/lockfile" "^1.1.0" "@yarnpkg/parsers" "^3.0.0-rc.18" "@zkochan/js-yaml" "0.0.6" - axios "0.21.1" + axios "^1.0.0" chalk "4.1.0" chokidar "^3.5.1" cli-cursor "3.1.0" @@ -12029,6 +12021,11 @@ proxy-from-env@1.0.0: resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" integrity sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A== +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + psl@^1.1.28: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" @@ -12809,11 +12806,6 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rxjs-for-await@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/rxjs-for-await/-/rxjs-for-await-0.0.2.tgz#26598a1d6167147cc192172970e7eed4e620384b" - integrity sha512-IJ8R/ZCFMHOcDIqoABs82jal00VrZx8Xkgfe7TOKoaRPAW5nH/VFlG23bXpeGdrmtqI9UobFPgUKgCuFc7Lncw== - rxjs@^6.5.4: version "6.6.7" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" @@ -13225,7 +13217,7 @@ source-map-support@0.5.13: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@^0.5.21, source-map-support@~0.5.20: +source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -14037,7 +14029,7 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@*, "typescript@>=3.3.1 <4.9.0", "typescript@^3 || ^4", typescript@^4.5.3, typescript@next, typescript@~4.8.3, typescript@~4.8.4: +typescript@*, "typescript@>=3.3.1 <4.9.0", "typescript@^3 || ^4", typescript@next, typescript@~4.8.3, typescript@~4.8.4: version "4.8.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== @@ -15010,6 +15002,11 @@ yargs-parser@21.0.1, yargs-parser@^21.0.0: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== +yargs-parser@>=21.0.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + yargs-parser@^20.2.2, yargs-parser@^20.2.3: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" From 9ffdb056f77af235031a0d7bef88c67207a12795 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Thu, 13 Oct 2022 20:10:44 +0100 Subject: [PATCH 051/193] chore(website): switch from Cypress to Playwright (#5814) * chore(website): switch from Cypress to Playwright * Touched up configs * Fixed linting * Remove remaining setup cruft * Update .github/workflows/ci.yml Co-authored-by: Brad Zacher Co-authored-by: Brad Zacher --- .github/actions/prepare-install/action.yml | 1 - .github/renovate.json5 | 5 - .github/workflows/ci.yml | 24 +- .gitignore | 5 +- packages/website/.eslintrc.js | 1 + .../website/cypress/integration/index.spec.js | 15 - packages/website/cypress/plugins/index.js | 17 - packages/website/cypress/support/commands.js | 1 - packages/website/cypress/support/index.js | 1 - packages/website/cypress/utils.js | 28 - packages/website/package.json | 7 +- packages/website/playwright.config.ts | 29 + packages/website/tests/index.spec.ts | 7 + packages/website/tsconfig.json | 8 +- yarn.lock | 535 ++---------------- 15 files changed, 100 insertions(+), 584 deletions(-) delete mode 100644 packages/website/cypress/integration/index.spec.js delete mode 100644 packages/website/cypress/plugins/index.js delete mode 100644 packages/website/cypress/support/commands.js delete mode 100644 packages/website/cypress/support/index.js delete mode 100644 packages/website/cypress/utils.js create mode 100644 packages/website/playwright.config.ts create mode 100644 packages/website/tests/index.spec.ts diff --git a/.github/actions/prepare-install/action.yml b/.github/actions/prepare-install/action.yml index 85051b4885d..6dc7dd9d57b 100644 --- a/.github/actions/prepare-install/action.yml +++ b/.github/actions/prepare-install/action.yml @@ -33,7 +33,6 @@ runs: with: path: | ${{ steps.yarn-cache-dir-path.outputs.dir }} - ~/.cache/Cypress key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- diff --git a/.github/renovate.json5 b/.github/renovate.json5 index dfe04ad1e74..907e9954c17 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -56,11 +56,6 @@ matchPackagePrefixes: ['@types/jest'], groupName: 'jest', }, - { - matchPackageNames: ['cypress', 'cypress-axe'], - matchUpdateTypes: ['minor', 'patch', 'pin', 'digest'], - groupName: 'cypress', - }, ], postUpdateOptions: [ // run yarn dedupe to cleanup the lockfile after updates diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0d47090d634..ff735911dfa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -175,7 +175,6 @@ jobs: website_tests: permissions: contents: read # to fetch code (actions/checkout) - actions: read # to correctly identify workflow run (cypress-io/github-action) name: Website tests needs: [build] @@ -192,23 +191,18 @@ jobs: - name: Build uses: ./.github/actions/prepare-build - - name: Install Cypress - run: yarn cypress install + - name: Install Playwright Browsers + run: npx playwright install --with-deps - - env: - DEBUG: '@cypress/github-action' - name: Cypress run - uses: cypress-io/github-action@v2 - with: - project: ./packages/website - start: yarn start + - name: Run Playwright tests + run: yarn playwright test --reporter=list + working-directory: packages/website - - uses: actions/upload-artifact@v3 + - if: always() + uses: actions/upload-artifact@v3 with: - name: screenshots - path: | - packages/website/cypress/screenshots/ - packages/website/cypress/videos/ + name: playwright-report + path: packages/website/playwright-report upload_coverage: name: Upload Codecov Coverage diff --git a/.gitignore b/.gitignore index 5159aa25e16..1ec5893ee55 100644 --- a/.gitignore +++ b/.gitignore @@ -9,9 +9,10 @@ yarn-error.log* packages/website/.docusaurus packages/website/.cache-loader packages/website/build -packages/website/cypress/screenshots -packages/website/cypress/videos +packages/website/playwright-report +packages/website/playwright/.cache packages/website/static/sandbox +packages/website/test-results # Runtime data pids diff --git a/packages/website/.eslintrc.js b/packages/website/.eslintrc.js index 0b55f475b33..2359a5a4cd5 100644 --- a/packages/website/.eslintrc.js +++ b/packages/website/.eslintrc.js @@ -9,6 +9,7 @@ module.exports = { overrides: [ { files: [ + './*.config.*', './src/pages/*.tsx', './src/components/**/*.tsx', './src/components/hooks/*.ts', diff --git a/packages/website/cypress/integration/index.spec.js b/packages/website/cypress/integration/index.spec.js deleted file mode 100644 index 250878da795..00000000000 --- a/packages/website/cypress/integration/index.spec.js +++ /dev/null @@ -1,15 +0,0 @@ -import { checkAccessibility } from '../utils'; - -describe('Index', () => { - it('has no accessibility issues detected by aXe', () => { - cy.visit('/'); - cy.injectAxe(); - - // 1. Check accessibility in default, light mode - checkAccessibility(); - - // 2. Check accessibility in dark mode - cy.get('[class*=toggleButton]').click(); - checkAccessibility(); - }); -}); diff --git a/packages/website/cypress/plugins/index.js b/packages/website/cypress/plugins/index.js deleted file mode 100644 index f27e2b46f7d..00000000000 --- a/packages/website/cypress/plugins/index.js +++ /dev/null @@ -1,17 +0,0 @@ -/// - -/** - * @type {Cypress.PluginConfig} - */ -module.exports = on => { - on('task', { - log(message) { - console.log(message); - return null; - }, - table(message) { - console.table(message); - return null; - }, - }); -}; diff --git a/packages/website/cypress/support/commands.js b/packages/website/cypress/support/commands.js deleted file mode 100644 index 46bfe99c37f..00000000000 --- a/packages/website/cypress/support/commands.js +++ /dev/null @@ -1 +0,0 @@ -import 'cypress-axe'; diff --git a/packages/website/cypress/support/index.js b/packages/website/cypress/support/index.js deleted file mode 100644 index 1221b17e096..00000000000 --- a/packages/website/cypress/support/index.js +++ /dev/null @@ -1 +0,0 @@ -import './commands'; diff --git a/packages/website/cypress/utils.js b/packages/website/cypress/utils.js deleted file mode 100644 index f60a8143c7e..00000000000 --- a/packages/website/cypress/utils.js +++ /dev/null @@ -1,28 +0,0 @@ -function terminalLog(violations) { - cy.task( - 'log', - `${violations.length} accessibility violation${ - violations.length === 1 ? '' : 's' - } detected`, - ); - for (const violation of violations) { - cy.task('log', JSON.stringify(violation, null, 4)); - } - - cy.task( - 'table', - violations.map(({ description, id, impact, nodes }) => ({ - description, - id, - impact, - nodes: nodes.length, - })), - ); -} - -export function checkAccessibility() { - // Wait for any pending paints and ticks to clear - cy.wait(500); - - cy.checkA11y(undefined, undefined, terminalLog); -} diff --git a/packages/website/package.json b/packages/website/package.json index 1d031557c16..1b3d9ed84d5 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -10,8 +10,7 @@ "serve": "docusaurus serve", "start": "docusaurus start", "swizzle": "docusaurus swizzle", - "test": "cypress run", - "test:open": "cypress open", + "test": "playwright test", "typecheck": "tsc" }, "dependencies": { @@ -43,14 +42,14 @@ "react": "^18.0.0" }, "devDependencies": { + "@axe-core/playwright": "^4.4.5", "@docusaurus/module-type-aliases": "~2.1.0", + "@playwright/test": "^1.27.1", "@types/react": "^18.0.9", "@types/react-helmet": "^6.1.5", "@types/react-router-dom": "^5.3.3", "@typescript-eslint/eslint-plugin": "5.40.0", "copy-webpack-plugin": "^11.0.0", - "cypress": "8.7.0", - "cypress-axe": "^0.14.0", "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-react": "^7.29.4", "eslint-plugin-react-hooks": "^4.5.0", diff --git a/packages/website/playwright.config.ts b/packages/website/playwright.config.ts new file mode 100644 index 00000000000..ba1f9df5617 --- /dev/null +++ b/packages/website/playwright.config.ts @@ -0,0 +1,29 @@ +import type { PlaywrightTestConfig } from '@playwright/test'; +import { devices } from '@playwright/test'; + +const config: PlaywrightTestConfig = { + forbidOnly: !!process.env.CI, + fullyParallel: true, + reporter: 'html', + retries: 0, + testDir: './tests', + use: { + baseURL: 'http://localhost:3000', + trace: 'on-first-retry', + }, + projects: [ + { + name: 'chromium', + use: { + ...devices['Desktop Chrome'], + }, + }, + ], + webServer: { + command: 'yarn start', + port: 3000, + }, + workers: process.env.CI ? 1 : undefined, +}; + +export default config; diff --git a/packages/website/tests/index.spec.ts b/packages/website/tests/index.spec.ts new file mode 100644 index 00000000000..1fd2a70b413 --- /dev/null +++ b/packages/website/tests/index.spec.ts @@ -0,0 +1,7 @@ +import AxeBuilder from '@axe-core/playwright'; +import { test } from '@playwright/test'; + +test('Index', async ({ page }) => { + await page.goto('/'); + await new AxeBuilder({ page }).analyze(); +}); diff --git a/packages/website/tsconfig.json b/packages/website/tsconfig.json index 429f1794b91..82eff535cb8 100644 --- a/packages/website/tsconfig.json +++ b/packages/website/tsconfig.json @@ -16,11 +16,5 @@ }, "types": ["@docusaurus/module-type-aliases", "@docusaurus/theme-classic"] }, - "include": [ - "src/", - "plugins/", - "typings", - "./docusaurusConfig.ts", - "./rulesMeta.ts" - ] + "include": ["src", "tests", "plugins", "typings", "./*.ts"] } diff --git a/yarn.lock b/yarn.lock index 792d2e03a4f..146b9e53bf8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -146,6 +146,13 @@ jsonpointer "^5.0.0" leven "^3.1.0" +"@axe-core/playwright@^4.4.5": + version "4.4.5" + resolved "https://registry.yarnpkg.com/@axe-core/playwright/-/playwright-4.4.5.tgz#196513ceb78ae42fa047de6bc757bec670eb13a0" + integrity sha512-oyh8TuAjPc6GIut3E+BiJU19jAEuzhf1ZMB7nrJqfGWsU6kWP0ymRwuj6TX3JJTT5mL3m+yFhph5RhCr/MkQ1g== + dependencies: + axe-core "^4.4.3" + "@babel/code-frame@*", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.8.3": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" @@ -1514,38 +1521,6 @@ dependencies: "@cspotcode/source-map-consumer" "0.8.0" -"@cypress/request@^2.88.6": - version "2.88.10" - resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.10.tgz#b66d76b07f860d3a4b8d7a0604d020c662752cce" - integrity sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - http-signature "~1.3.6" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^8.3.2" - -"@cypress/xvfb@^1.2.4": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a" - integrity sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q== - dependencies: - debug "^3.1.0" - lodash.once "^4.1.1" - "@docsearch/css@3.1.1": version "3.1.1" resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.1.1.tgz#e0976bf995e383f8ee8657306311b9cb95016330" @@ -3480,6 +3455,14 @@ dependencies: esquery "^1.0.1" +"@playwright/test@^1.27.1": + version "1.27.1" + resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.27.1.tgz#9364d1e02021261211c8ff586d903faa79ce95c4" + integrity sha512-mrL2q0an/7tVqniQQF6RBL2saskjljXzqNcCOVMUjRIgE6Y38nCNaP+Dc2FBW06bcpD3tqIws/HT9qiMHbNU0A== + dependencies: + "@types/node" "*" + playwright-core "1.27.1" + "@polka/url@^1.0.0-next.20": version "1.0.0-next.21" resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" @@ -4135,7 +4118,7 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@12.20.24", "@types/node@^14.14.31", "@types/node@^17.0.5", "@types/node@^18.0.0": +"@types/node@*", "@types/node@12.20.24", "@types/node@^17.0.5", "@types/node@^18.0.0": version "18.8.3" resolved "https://registry.yarnpkg.com/@types/node/-/node-18.8.3.tgz#ce750ab4017effa51aed6a7230651778d54e327c" integrity sha512-0os9vz6BpGwxGe9LOhgP/ncvYN5Tx1fNcd2TM3rD/aCGBkysb+ZWpXEocG24h6ZzOi13+VB8HndAQFezsSOw1w== @@ -4274,16 +4257,6 @@ "@types/mime" "^1" "@types/node" "*" -"@types/sinonjs__fake-timers@^6.0.2": - version "6.0.4" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz#0ecc1b9259b76598ef01942f547904ce61a6a77d" - integrity sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A== - -"@types/sizzle@^2.3.2": - version "2.3.3" - resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef" - integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ== - "@types/sockjs@^0.3.33": version "0.3.33" resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f" @@ -4330,13 +4303,6 @@ dependencies: "@types/yargs-parser" "*" -"@types/yauzl@^2.9.1": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.2.tgz#c48e5d56aff1444409e39fa164b0b4d4552a7b7a" - integrity sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA== - dependencies: - "@types/node" "*" - "@webassemblyjs/ast@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" @@ -4705,11 +4671,6 @@ anymatch@^3.0.3, anymatch@~3.1.2: resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== -arch@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" - integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== - are-we-there-yet@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz#ba20bd6b553e31d62fc8c31bd23d22b95734390d" @@ -4823,18 +4784,6 @@ asap@^2.0.0, asap@~2.0.3: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - ast-types-flow@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" @@ -4845,7 +4794,7 @@ astral-regex@^2.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== -async@^3.2.0, async@^3.2.3: +async@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g== @@ -4853,7 +4802,7 @@ async@^3.2.0, async@^3.2.3: asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== at-least-node@^1.0.0: version "1.0.0" @@ -4872,16 +4821,6 @@ autoprefixer@^10.3.7, autoprefixer@^10.4.7: picocolors "^1.0.0" postcss-value-parser "^4.2.0" -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - axe-core@^4.4.3: version "4.4.3" resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f" @@ -5078,13 +5017,6 @@ batch@0.6.1: resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - before-after-hook@^2.2.0: version "2.2.2" resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" @@ -5121,16 +5053,6 @@ bl@^4.0.3, bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" -blob-util@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" - integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== - -bluebird@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - body-parser@1.20.0: version "1.20.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" @@ -5231,11 +5153,6 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= - buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -5323,11 +5240,6 @@ cacheable-request@^6.0.0: normalize-url "^4.1.0" responselike "^1.0.2" -cachedir@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8" - integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw== - call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" @@ -5393,11 +5305,6 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001335, caniuse-lite@^1.0.30001400: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001414.tgz#5f1715e506e71860b4b07c50060ea6462217611e" integrity sha512-t55jfSaWjCdocnFdKQoO+d2ct9C59UZg4dY3OnUlSZ447r8pUtIKdp0hpAzrGFultmTC+Us+KpKi4GZl/LXlFg== -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - ccount@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" @@ -5458,11 +5365,6 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -check-more-types@^2.24.0: - version "2.24.0" - resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" - integrity sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA= - cheerio-select@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" @@ -5518,7 +5420,7 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -ci-info@^3.1.1, ci-info@^3.2.0: +ci-info@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6" integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A== @@ -5586,7 +5488,7 @@ cli-spinners@^2.5.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== -cli-table3@^0.6.2, cli-table3@~0.6.0: +cli-table3@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.2.tgz#aaf5df9d8b5bf12634dc8b3040806a0c07120d2a" integrity sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw== @@ -5730,7 +5632,7 @@ combine-promises@^1.1.0: resolved "https://registry.yarnpkg.com/combine-promises/-/combine-promises-1.1.0.tgz#72db90743c0ca7aab7d0d8d2052fd7b0f674de71" integrity sha512-ZI9jvcLDxqwaXEixOhArm3r7ReIivsXkpbyEWyeOhzz1QS0iSgBPnWvEqvIQtYyamGCYA88gFhmUrs9hrrQ0pg== -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: +combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -6026,11 +5928,6 @@ core-js@^3.23.3: resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.24.0.tgz#4928d4e99c593a234eb1a1f9abd3122b04d3ac57" integrity sha512-IeOyT8A6iK37Ep4kZDD423mpi6JfPRoPUdQwEWYiGolvn4o6j2diaRzNfDfpTdu3a5qMbrGUzKUpYpRY8jXCkQ== -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - core-util-is@^1.0.3, core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" @@ -6088,7 +5985,7 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -6351,59 +6248,6 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.9.tgz#6410af31b26bd0520933d02cbc64fce9ce3fbf0b" integrity sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw== -cypress-axe@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/cypress-axe/-/cypress-axe-0.14.0.tgz#5f5e70fb36b8cb3ba73a8ba01e9262ff1268d5e2" - integrity sha512-7Rdjnko0MjggCmndc1wECAkvQBIhuy+DRtjF7bd5YPZRFvubfMNvrxfqD8PWQmxm7MZE0ffS4Xr43V6ZmvLopg== - -cypress@8.7.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-8.7.0.tgz#2ee371f383d8f233d3425b6cc26ddeec2668b6da" - integrity sha512-b1bMC3VQydC6sXzBMFnSqcvwc9dTZMgcaOzT0vpSD+Gq1yFc+72JDWi55sfUK5eIeNLAtWOGy1NNb6UlhMvB+Q== - dependencies: - "@cypress/request" "^2.88.6" - "@cypress/xvfb" "^1.2.4" - "@types/node" "^14.14.31" - "@types/sinonjs__fake-timers" "^6.0.2" - "@types/sizzle" "^2.3.2" - arch "^2.2.0" - blob-util "^2.0.2" - bluebird "^3.7.2" - cachedir "^2.3.0" - chalk "^4.1.0" - check-more-types "^2.24.0" - cli-cursor "^3.1.0" - cli-table3 "~0.6.0" - commander "^5.1.0" - common-tags "^1.8.0" - dayjs "^1.10.4" - debug "^4.3.2" - enquirer "^2.3.6" - eventemitter2 "^6.4.3" - execa "4.1.0" - executable "^4.1.1" - extract-zip "2.0.1" - figures "^3.2.0" - fs-extra "^9.1.0" - getos "^3.2.1" - is-ci "^3.0.0" - is-installed-globally "~0.4.0" - lazy-ass "^1.6.0" - listr2 "^3.8.3" - lodash "^4.17.21" - log-symbols "^4.0.0" - minimist "^1.2.5" - ospath "^1.2.2" - pretty-bytes "^5.6.0" - proxy-from-env "1.0.0" - ramda "~0.27.1" - request-progress "^3.0.0" - supports-color "^8.1.1" - tmp "~0.2.1" - untildify "^4.0.0" - url "^0.11.0" - yauzl "^2.10.0" - d@1, d@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" @@ -6422,23 +6266,11 @@ dargs@^7.0.0: resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - dateformat@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== -dayjs@^1.10.4: - version "1.10.7" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.7.tgz#2cf5f91add28116748440866a0a1d26f3a6ce468" - integrity sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig== - debug@2.6.9, debug@^2.6.0, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -6453,7 +6285,7 @@ debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: dependencies: ms "2.1.2" -debug@^3.1.0, debug@^3.2.7: +debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== @@ -6554,7 +6386,7 @@ del@^6.1.1: delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== delegates@^1.0.0: version "1.0.0" @@ -6788,14 +6620,6 @@ eastasianwidth@^0.2.0: resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -6870,7 +6694,7 @@ enhanced-resolve@^5.10.0, enhanced-resolve@^5.9.3: graceful-fs "^4.2.4" tapable "^2.2.0" -enquirer@^2.3.6, enquirer@~2.3.6: +enquirer@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -7299,11 +7123,6 @@ event-emitter@^0.3.5: d "1" es5-ext "~0.10.14" -eventemitter2@^6.4.3: - version "6.4.5" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.5.tgz#97380f758ae24ac15df8353e0cc27f8b95644655" - integrity sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw== - eventemitter3@^4.0.0, eventemitter3@^4.0.4: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" @@ -7314,21 +7133,6 @@ events@^3.2.0: resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -execa@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -7359,13 +7163,6 @@ execa@^6.1.0: signal-exit "^3.0.7" strip-final-newline "^3.0.0" -executable@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" - integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg== - dependencies: - pify "^2.2.0" - exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -7433,7 +7230,7 @@ extend-shallow@^2.0.1: dependencies: is-extendable "^0.1.0" -extend@^3.0.0, extend@~3.0.2: +extend@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -7447,27 +7244,6 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -extract-zip@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" - integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== - dependencies: - debug "^4.1.1" - get-stream "^5.1.0" - yauzl "^2.10.0" - optionalDependencies: - "@types/yauzl" "^2.9.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -7563,13 +7339,6 @@ fbjs@^3.0.0: setimmediate "^1.0.5" ua-parser-js "^0.7.30" -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= - dependencies: - pend "~1.2.0" - feed@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/feed/-/feed-4.2.2.tgz#865783ef6ed12579e2c44bbef3c9113bc4956a7e" @@ -7577,7 +7346,7 @@ feed@^4.2.2: dependencies: xml-js "^1.6.11" -figures@3.2.0, figures@^3.0.0, figures@^3.2.0: +figures@3.2.0, figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== @@ -7708,11 +7477,6 @@ follow-redirects@^1.0.0, follow-redirects@^1.10.0, follow-redirects@^1.14.0, fol resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - fork-ts-checker-webpack-plugin@^6.5.0: version "6.5.0" resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz#0282b335fa495a97e167f69018f566ea7d2a2b5e" @@ -7741,15 +7505,6 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -7925,7 +7680,7 @@ get-stream@^4.1.0: dependencies: pump "^3.0.0" -get-stream@^5.0.0, get-stream@^5.1.0: +get-stream@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== @@ -7945,20 +7700,6 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" -getos@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5" - integrity sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q== - dependencies: - async "^3.2.0" - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - git-raw-commits@^2.0.8: version "2.0.10" resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.10.tgz#e2255ed9563b1c9c3ea6bd05806410290297bbc1" @@ -8518,15 +8259,6 @@ http-proxy@^1.18.1: follow-redirects "^1.0.0" requires-port "^1.0.0" -http-signature@~1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.3.6.tgz#cb6fbfdf86d1c974f343be94e87f7fc128662cf9" - integrity sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw== - dependencies: - assert-plus "^1.0.0" - jsprim "^2.0.2" - sshpk "^1.14.1" - https-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" @@ -8535,11 +8267,6 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" @@ -8840,13 +8567,6 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-ci@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" - integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== - dependencies: - ci-info "^3.1.1" - is-core-module@^2.1.0, is-core-module@^2.2.0, is-core-module@^2.5.0, is-core-module@^2.8.1, is-core-module@^2.9.0: version "2.10.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" @@ -8908,7 +8628,7 @@ is-hexadecimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== -is-installed-globally@^0.4.0, is-installed-globally@~0.4.0: +is-installed-globally@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== @@ -9075,7 +8795,7 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" -is-typedarray@^1.0.0, is-typedarray@~1.0.0: +is-typedarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= @@ -9134,11 +8854,6 @@ isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" @@ -9613,11 +9328,6 @@ js-yaml@^3.10.0, js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -9673,7 +9383,7 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json-schema@*, json-schema@0.4.0, json-schema@^0.4.0: +json-schema@*, json-schema@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== @@ -9688,7 +9398,7 @@ json-stringify-nice@^1.1.4: resolved "https://registry.yarnpkg.com/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" integrity sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw== -json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: +json-stringify-safe@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= @@ -9741,16 +9451,6 @@ jsonpointer@^5.0.0: resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== -jsprim@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-2.0.2.tgz#77ca23dbcd4135cd364800d22ff82c2185803d4d" - integrity sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ== - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.4.0" - verror "1.10.0" - "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.2.tgz#afe5efe4332cd3515c065072bd4d6b0aa22152bd" @@ -9830,11 +9530,6 @@ latest-version@^5.1.0: dependencies: package-json "^6.3.0" -lazy-ass@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" - integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM= - lerna@5.6.2: version "5.6.2" resolved "https://registry.yarnpkg.com/lerna/-/lerna-5.6.2.tgz#cdcdfe4e8bf07eccb4ecff1c216def9c67e62af2" @@ -9934,20 +9629,6 @@ lint-staged@^13.0.0: string-argv "^0.3.1" yaml "^2.1.1" -listr2@^3.8.3: - version "3.13.5" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.13.5.tgz#105a813f2eb2329c4aae27373a281d610ee4985f" - integrity sha512-3n8heFQDSk+NcwBn3CgxEibZGaRzx+pC64n3YjpMD1qguV4nWus3Al+Oo3KooqFKTQEJ1v7MmnbnyyNspgx3NA== - dependencies: - cli-truncate "^2.1.0" - colorette "^2.0.16" - log-update "^4.0.0" - p-map "^4.0.0" - rfdc "^1.3.0" - rxjs "^7.4.0" - through "^2.3.8" - wrap-ansi "^7.0.0" - listr2@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/listr2/-/listr2-4.0.5.tgz#9dcc50221583e8b4c71c43f9c7dfd0ef546b75d5" @@ -10071,11 +9752,6 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.once@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" - integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= - lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -10091,7 +9767,7 @@ lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@~4.17 resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@^4.0.0, log-symbols@^4.1.0: +log-symbols@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== @@ -10412,7 +10088,7 @@ mime-types@2.1.18: dependencies: mime-db "~1.33.0" -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -10882,7 +10558,7 @@ npm-registry-fetch@^13.0.0, npm-registry-fetch@^13.0.1, npm-registry-fetch@^13.3 npm-package-arg "^9.0.1" proc-log "^2.0.0" -npm-run-path@^4.0.0, npm-run-path@^4.0.1: +npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== @@ -11157,11 +10833,6 @@ os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -ospath@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" - integrity sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs= - p-cancelable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" @@ -11521,16 +11192,6 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" @@ -11546,7 +11207,7 @@ pidtree@^0.6.0: resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c" integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== -pify@^2.2.0, pify@^2.3.0: +pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= @@ -11585,6 +11246,11 @@ pkg-up@^3.1.0: dependencies: find-up "^3.0.0" +playwright-core@1.27.1: + version "1.27.1" + resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.27.1.tgz#840ef662e55a3ed759d8b5d3d00a5f885a7184f4" + integrity sha512-9EmeXDncC2Pmp/z+teoVYlvmPWUC6ejSSYZUln7YaP89Z6lpAaiaAnqroUt/BoLo8tn7WYShcfaCh+xofZa44Q== + postcss-calc@^8.2.3: version "8.2.4" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" @@ -11890,7 +11556,7 @@ prettier@*, prettier@2.7.1, prettier@^2.6.2: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== -pretty-bytes@^5.3.0, pretty-bytes@^5.6.0: +pretty-bytes@^5.3.0: version "5.6.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== @@ -12016,21 +11682,11 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" -proxy-from-env@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" - integrity sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A== - proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -12039,17 +11695,12 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - punycode@^1.3.2: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= -punycode@^2.1.0, punycode@^2.1.1: +punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== @@ -12078,16 +11729,6 @@ qs@6.10.3: dependencies: side-channel "^1.0.4" -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -12105,11 +11746,6 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -ramda@~0.27.1: - version "0.27.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" - integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw== - randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -12610,13 +12246,6 @@ repeat-string@^1.5.4, repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -request-progress@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe" - integrity sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4= - dependencies: - throttleit "^1.0.0" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -12813,7 +12442,7 @@ rxjs@^6.5.4: dependencies: tslib "^1.9.0" -rxjs@^7.4.0, rxjs@^7.5.4, rxjs@^7.5.5: +rxjs@^7.5.4, rxjs@^7.5.5: version "7.5.5" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== @@ -12825,12 +12454,12 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -13320,21 +12949,6 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= -sshpk@^1.14.1: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - ssri@^9.0.0, ssri@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" @@ -13559,7 +13173,7 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^8.0.0, supports-color@^8.1.1: +supports-color@^8.0.0: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== @@ -13712,11 +13326,6 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" -throttleit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" - integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw= - through2@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -13813,14 +13422,6 @@ totalist@^1.0.0: resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" @@ -13935,18 +13536,6 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -14213,11 +13802,6 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= -untildify@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" - integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== - upath@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" @@ -14279,14 +13863,6 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - use-composed-ref@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.1.0.tgz#9220e4e94a97b7b02d7d27eaeab0b37034438bbc" @@ -14387,15 +13963,6 @@ vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - vfile-location@^3.0.0, vfile-location@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.2.0.tgz#d8e41fbcbd406063669ebf6c33d56ae8721d0f3c" @@ -15038,14 +14605,6 @@ yargs@^17.3.1, yargs@^17.4.0: y18n "^5.0.5" yargs-parser "^21.0.0" -yauzl@^2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" - yn@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" From 17b887933a0640d6fe843622e0520c0315144bb7 Mon Sep 17 00:00:00 2001 From: Bryan Mishkin <698306+bmish@users.noreply.github.com> Date: Fri, 14 Oct 2022 04:34:47 -0400 Subject: [PATCH 052/193] fix(utils): add missing dependency on `@types/semver` (#5825) fix(utils): add missing dependency on @types/semver --- packages/utils/package.json | 1 + yarn.lock | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/utils/package.json b/packages/utils/package.json index f768ec92edf..4ef105fb758 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -40,6 +40,7 @@ }, "dependencies": { "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", "@typescript-eslint/scope-manager": "5.40.0", "@typescript-eslint/types": "5.40.0", "@typescript-eslint/typescript-estree": "5.40.0", diff --git a/yarn.lock b/yarn.lock index 146b9e53bf8..1d3f4d2ea73 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4237,7 +4237,7 @@ resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== -"@types/semver@*", "@types/semver@^7.3.9": +"@types/semver@*", "@types/semver@^7.3.12", "@types/semver@^7.3.9": version "7.3.12" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.12.tgz#920447fdd78d76b19de0438b7f60df3c4a80bf1c" integrity sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A== From 96d1032fc676de5e09980a571c325f55cbcee677 Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Fri, 14 Oct 2022 20:38:45 -0700 Subject: [PATCH 053/193] chore: group rollup in renovate updates (#5822) --- .github/renovate.json5 | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 907e9954c17..e634d4aae8c 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -56,6 +56,11 @@ matchPackagePrefixes: ['@types/jest'], groupName: 'jest', }, + { + matchPackagePrefixes: ['@rollup', 'rollup-'], + matchPackageNames: ['rollup'], + groupName: 'rollup', + }, ], postUpdateOptions: [ // run yarn dedupe to cleanup the lockfile after updates From 76993796e33f0b97403ba5fca6528a5aac9fe710 Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Fri, 14 Oct 2022 20:38:59 -0700 Subject: [PATCH 054/193] chore: remove deprecated `set-output` from actions (#5823) --- .github/actions/prepare-install/action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/prepare-install/action.yml b/.github/actions/prepare-install/action.yml index 6dc7dd9d57b..266140a0788 100644 --- a/.github/actions/prepare-install/action.yml +++ b/.github/actions/prepare-install/action.yml @@ -26,13 +26,13 @@ runs: - name: Get yarn cache directory path shell: bash id: yarn-cache-dir-path - run: echo "::set-output name=dir::$(yarn cache dir)" + run: echo "yarn_cache_dir=$(yarn cache dir)" >> $GITHUB_ENV - uses: actions/cache@v3 id: yarn-cache with: path: | - ${{ steps.yarn-cache-dir-path.outputs.dir }} + ${{ env.yarn_cache_dir }} key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- From da597c7177ae2692c0e1a4c61f2498b5871d4d09 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sun, 16 Oct 2022 04:40:02 +0200 Subject: [PATCH 055/193] chore: add test coverage data to nx test caches (#5828) * chore: add coverage/ directories to nx cache * Update nx.json --- nx.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nx.json b/nx.json index 0d30e822c59..d5b11cdfb5a 100644 --- a/nx.json +++ b/nx.json @@ -30,6 +30,9 @@ "targetDefaults": { "build": { "dependsOn": ["^build"] + }, + "test": { + "outputs": ["{projectRoot}/coverage"] } } } From 0be356bae50156ba159c70d570b030e6d94afcb1 Mon Sep 17 00:00:00 2001 From: "typescript-eslint[bot]" Date: Mon, 17 Oct 2022 17:43:05 +0000 Subject: [PATCH 056/193] chore: publish v5.40.1 --- CHANGELOG.md | 3391 +++++++----------- lerna.json | 2 +- packages/ast-spec/CHANGELOG.md | 411 +-- packages/ast-spec/package.json | 2 +- packages/eslint-plugin-internal/CHANGELOG.md | 1052 ++---- packages/eslint-plugin-internal/package.json | 6 +- packages/eslint-plugin-tslint/CHANGELOG.md | 1165 ++---- packages/eslint-plugin-tslint/package.json | 6 +- packages/eslint-plugin/CHANGELOG.md | 2983 ++++++--------- packages/eslint-plugin/package.json | 8 +- packages/experimental-utils/CHANGELOG.md | 1443 ++------ packages/experimental-utils/package.json | 4 +- packages/parser/CHANGELOG.md | 1348 ++----- packages/parser/package.json | 8 +- packages/scope-manager/CHANGELOG.md | 1049 ++---- packages/scope-manager/package.json | 8 +- packages/shared-fixtures/CHANGELOG.md | 1386 ++----- packages/shared-fixtures/package.json | 2 +- packages/type-utils/CHANGELOG.md | 226 +- packages/type-utils/package.json | 8 +- packages/types/CHANGELOG.md | 896 +---- packages/types/package.json | 2 +- packages/typescript-estree/CHANGELOG.md | 1654 +++------ packages/typescript-estree/package.json | 8 +- packages/utils/CHANGELOG.md | 225 +- packages/utils/package.json | 10 +- packages/visitor-keys/CHANGELOG.md | 951 ++--- packages/visitor-keys/package.json | 4 +- packages/website-eslint/CHANGELOG.md | 220 +- packages/website-eslint/package.json | 16 +- packages/website/CHANGELOG.md | 268 +- packages/website/package.json | 8 +- 32 files changed, 4746 insertions(+), 14024 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a3071f366c4..ba013f3d3a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,3117 +3,2136 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [5.40.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.39.0...v5.40.0) (2022-10-10) - +## [5.40.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.0...v5.40.1) (2022-10-17) ### Bug Fixes -* **eslint-plugin:** [consistent-indexed-object-style] handle interface generic ([#5746](https://github.com/typescript-eslint/typescript-eslint/issues/5746)) ([7a8a0a3](https://github.com/typescript-eslint/typescript-eslint/commit/7a8a0a3c500ca726d2ab3bee0ae9f3fb9d8d39b8)) -* **eslint-plugin:** [no-unnecessary-condition] handle void ([#5766](https://github.com/typescript-eslint/typescript-eslint/issues/5766)) ([ac8f06b](https://github.com/typescript-eslint/typescript-eslint/commit/ac8f06b68dca7666bfb78fb38d6ccc07f676e435)) - - -### Features +- **eslint-plugin:** Skip missing 'rest' tuple type arguments in no-misused-promises ([#5809](https://github.com/typescript-eslint/typescript-eslint/issues/5809)) ([c5beaa2](https://github.com/typescript-eslint/typescript-eslint/commit/c5beaa2ea340985211ca5c12821842c54f5170f0)), closes [#5807](https://github.com/typescript-eslint/typescript-eslint/issues/5807) +- **utils:** add missing dependency on `@types/semver` ([#5825](https://github.com/typescript-eslint/typescript-eslint/issues/5825)) ([17b8879](https://github.com/typescript-eslint/typescript-eslint/commit/17b887933a0640d6fe843622e0520c0315144bb7)) -* **eslint-plugin:** Check 'rest' parameters in no-misused-promises ([#5731](https://github.com/typescript-eslint/typescript-eslint/issues/5731)) ([6477f38](https://github.com/typescript-eslint/typescript-eslint/commit/6477f3855627cc257edc021b859711d4a5847a12)), closes [#4015](https://github.com/typescript-eslint/typescript-eslint/issues/4015) -* **utils:** add dependency constraint filtering for `RuleTester` ([#5750](https://github.com/typescript-eslint/typescript-eslint/issues/5750)) ([121f4c0](https://github.com/typescript-eslint/typescript-eslint/commit/121f4c0e7252def95d917e4734e933e53e29d501)) -* **website:** store options TypeScript, Enable jsx and AST Viewer in browser's local storage ([#5769](https://github.com/typescript-eslint/typescript-eslint/issues/5769)) ([77d2336](https://github.com/typescript-eslint/typescript-eslint/commit/77d2336594ca10b47c0f7978ae64f87d24a25d33)) +# [5.40.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.39.0...v5.40.0) (2022-10-10) +### Bug Fixes +- **eslint-plugin:** [consistent-indexed-object-style] handle interface generic ([#5746](https://github.com/typescript-eslint/typescript-eslint/issues/5746)) ([7a8a0a3](https://github.com/typescript-eslint/typescript-eslint/commit/7a8a0a3c500ca726d2ab3bee0ae9f3fb9d8d39b8)) +- **eslint-plugin:** [no-unnecessary-condition] handle void ([#5766](https://github.com/typescript-eslint/typescript-eslint/issues/5766)) ([ac8f06b](https://github.com/typescript-eslint/typescript-eslint/commit/ac8f06b68dca7666bfb78fb38d6ccc07f676e435)) +### Features +- **eslint-plugin:** Check 'rest' parameters in no-misused-promises ([#5731](https://github.com/typescript-eslint/typescript-eslint/issues/5731)) ([6477f38](https://github.com/typescript-eslint/typescript-eslint/commit/6477f3855627cc257edc021b859711d4a5847a12)), closes [#4015](https://github.com/typescript-eslint/typescript-eslint/issues/4015) +- **utils:** add dependency constraint filtering for `RuleTester` ([#5750](https://github.com/typescript-eslint/typescript-eslint/issues/5750)) ([121f4c0](https://github.com/typescript-eslint/typescript-eslint/commit/121f4c0e7252def95d917e4734e933e53e29d501)) +- **website:** store options TypeScript, Enable jsx and AST Viewer in browser's local storage ([#5769](https://github.com/typescript-eslint/typescript-eslint/issues/5769)) ([77d2336](https://github.com/typescript-eslint/typescript-eslint/commit/77d2336594ca10b47c0f7978ae64f87d24a25d33)) # [5.39.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.38.1...v5.39.0) (2022-10-03) - ### Features -* **eslint-plugin:** allow using void as a default type for a generic argument if allowInGenericTypeArguments is specified ([#5671](https://github.com/typescript-eslint/typescript-eslint/issues/5671)) ([bb46ef0](https://github.com/typescript-eslint/typescript-eslint/commit/bb46ef0817fe03ef71f8e0f3df0cf96bc355e068)) - - - - +- **eslint-plugin:** allow using void as a default type for a generic argument if allowInGenericTypeArguments is specified ([#5671](https://github.com/typescript-eslint/typescript-eslint/issues/5671)) ([bb46ef0](https://github.com/typescript-eslint/typescript-eslint/commit/bb46ef0817fe03ef71f8e0f3df0cf96bc355e068)) ## [5.38.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.38.0...v5.38.1) (2022-09-26) **Note:** Version bump only for package @typescript-eslint/typescript-eslint - - - - # [5.38.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.37.0...v5.38.0) (2022-09-19) - ### Features -* **website:** add warning on top of formatting rule docs pages ([#5598](https://github.com/typescript-eslint/typescript-eslint/issues/5598)) ([5dfa2e9](https://github.com/typescript-eslint/typescript-eslint/commit/5dfa2e9a33491905e99d8940dbdac0b31ada4858)) - - - - +- **website:** add warning on top of formatting rule docs pages ([#5598](https://github.com/typescript-eslint/typescript-eslint/issues/5598)) ([5dfa2e9](https://github.com/typescript-eslint/typescript-eslint/commit/5dfa2e9a33491905e99d8940dbdac0b31ada4858)) # [5.37.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.36.2...v5.37.0) (2022-09-12) - ### Bug Fixes -* **eslint-plugin:** [strict-boolean-expressions] check all conditions in a logical operator chain ([#5539](https://github.com/typescript-eslint/typescript-eslint/issues/5539)) ([77d76e2](https://github.com/typescript-eslint/typescript-eslint/commit/77d76e21cdc2e100c729c839c292e82ab7c554c5)) -* **website:** Use extended base rule name from file's meta ([#5621](https://github.com/typescript-eslint/typescript-eslint/issues/5621)) ([7fd2f89](https://github.com/typescript-eslint/typescript-eslint/commit/7fd2f89ae732ca12ec83fad278362032473ff3ca)) - +- **eslint-plugin:** [strict-boolean-expressions] check all conditions in a logical operator chain ([#5539](https://github.com/typescript-eslint/typescript-eslint/issues/5539)) ([77d76e2](https://github.com/typescript-eslint/typescript-eslint/commit/77d76e21cdc2e100c729c839c292e82ab7c554c5)) +- **website:** Use extended base rule name from file's meta ([#5621](https://github.com/typescript-eslint/typescript-eslint/issues/5621)) ([7fd2f89](https://github.com/typescript-eslint/typescript-eslint/commit/7fd2f89ae732ca12ec83fad278362032473ff3ca)) ### Features -* **docs:** always expanding collapsible sidebar menus under docs ([#5608](https://github.com/typescript-eslint/typescript-eslint/issues/5608)) ([8176fb1](https://github.com/typescript-eslint/typescript-eslint/commit/8176fb15299943cbf20385eb0ea7ba877e193285)) - - - - +- **docs:** always expanding collapsible sidebar menus under docs ([#5608](https://github.com/typescript-eslint/typescript-eslint/issues/5608)) ([8176fb1](https://github.com/typescript-eslint/typescript-eslint/commit/8176fb15299943cbf20385eb0ea7ba877e193285)) ## [5.36.2](https://github.com/typescript-eslint/typescript-eslint/compare/v5.36.1...v5.36.2) (2022-09-05) - ### Bug Fixes -* **eslint-plugin:** [no-extra-parens] handle generic ts array type. ([#5550](https://github.com/typescript-eslint/typescript-eslint/issues/5550)) ([0d6a190](https://github.com/typescript-eslint/typescript-eslint/commit/0d6a190c56fb3489f9f554b9035a008e29cc08ec)) -* **scope-manager:** correct handling for class static blocks ([#5580](https://github.com/typescript-eslint/typescript-eslint/issues/5580)) ([35bb8dd](https://github.com/typescript-eslint/typescript-eslint/commit/35bb8ddac1b46397f6447c1a6e1e4e1774dd7957)) -* **typescript-estree:** don't double add decorators to a parameter property's parameter ([#5582](https://github.com/typescript-eslint/typescript-eslint/issues/5582)) ([863694c](https://github.com/typescript-eslint/typescript-eslint/commit/863694cbc71b5158ca6a018de8707c9f9fbc22c3)) - - - - +- **eslint-plugin:** [no-extra-parens] handle generic ts array type. ([#5550](https://github.com/typescript-eslint/typescript-eslint/issues/5550)) ([0d6a190](https://github.com/typescript-eslint/typescript-eslint/commit/0d6a190c56fb3489f9f554b9035a008e29cc08ec)) +- **scope-manager:** correct handling for class static blocks ([#5580](https://github.com/typescript-eslint/typescript-eslint/issues/5580)) ([35bb8dd](https://github.com/typescript-eslint/typescript-eslint/commit/35bb8ddac1b46397f6447c1a6e1e4e1774dd7957)) +- **typescript-estree:** don't double add decorators to a parameter property's parameter ([#5582](https://github.com/typescript-eslint/typescript-eslint/issues/5582)) ([863694c](https://github.com/typescript-eslint/typescript-eslint/commit/863694cbc71b5158ca6a018de8707c9f9fbc22c3)) ## [5.36.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.36.0...v5.36.1) (2022-08-30) - ### Bug Fixes -* **typescript-estree:** fix decorator regression for pre TS4.8 ([#5574](https://github.com/typescript-eslint/typescript-eslint/issues/5574)) ([a603015](https://github.com/typescript-eslint/typescript-eslint/commit/a603015c93a6ea96d500c57bec1e284340141b1f)) - - - - +- **typescript-estree:** fix decorator regression for pre TS4.8 ([#5574](https://github.com/typescript-eslint/typescript-eslint/issues/5574)) ([a603015](https://github.com/typescript-eslint/typescript-eslint/commit/a603015c93a6ea96d500c57bec1e284340141b1f)) # [5.36.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.35.1...v5.36.0) (2022-08-30) - ### Bug Fixes -* **eslint-plugin:** revert [#5266](https://github.com/typescript-eslint/typescript-eslint/issues/5266) ([#5564](https://github.com/typescript-eslint/typescript-eslint/issues/5564)) ([7a8afe2](https://github.com/typescript-eslint/typescript-eslint/commit/7a8afe29039c6c80fe584acaf5d933424a4452a9)) - +- **eslint-plugin:** revert [#5266](https://github.com/typescript-eslint/typescript-eslint/issues/5266) ([#5564](https://github.com/typescript-eslint/typescript-eslint/issues/5564)) ([7a8afe2](https://github.com/typescript-eslint/typescript-eslint/commit/7a8afe29039c6c80fe584acaf5d933424a4452a9)) ### Features -* support TypeScript 4.8 ([#5551](https://github.com/typescript-eslint/typescript-eslint/issues/5551)) ([81450ed](https://github.com/typescript-eslint/typescript-eslint/commit/81450ed7eaede74b384e9a91a84e9b4d34513866)) - - - - +- support TypeScript 4.8 ([#5551](https://github.com/typescript-eslint/typescript-eslint/issues/5551)) ([81450ed](https://github.com/typescript-eslint/typescript-eslint/commit/81450ed7eaede74b384e9a91a84e9b4d34513866)) ## [5.35.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.35.0...v5.35.1) (2022-08-24) - ### Bug Fixes -* **eslint-plugin:** correct rule schemas to pass ajv validation ([#5531](https://github.com/typescript-eslint/typescript-eslint/issues/5531)) ([dbf8b56](https://github.com/typescript-eslint/typescript-eslint/commit/dbf8b569dbada29e4a295d6c265976e55de1b2aa)) - - - - +- **eslint-plugin:** correct rule schemas to pass ajv validation ([#5531](https://github.com/typescript-eslint/typescript-eslint/issues/5531)) ([dbf8b56](https://github.com/typescript-eslint/typescript-eslint/commit/dbf8b569dbada29e4a295d6c265976e55de1b2aa)) # [5.35.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.34.0...v5.35.0) (2022-08-24) - ### Features -* **eslint-plugin:** [explicit-member-accessibility] suggest adding explicit accessibility specifiers ([#5492](https://github.com/typescript-eslint/typescript-eslint/issues/5492)) ([0edb94a](https://github.com/typescript-eslint/typescript-eslint/commit/0edb94aee55e1ec6afa7f46f99a9b308bbb66301)) - - - - +- **eslint-plugin:** [explicit-member-accessibility] suggest adding explicit accessibility specifiers ([#5492](https://github.com/typescript-eslint/typescript-eslint/issues/5492)) ([0edb94a](https://github.com/typescript-eslint/typescript-eslint/commit/0edb94aee55e1ec6afa7f46f99a9b308bbb66301)) # [5.34.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.33.1...v5.34.0) (2022-08-22) - ### Bug Fixes -* **ast-spec:** NewExpression argument can be SpreadElement now ([#5422](https://github.com/typescript-eslint/typescript-eslint/issues/5422)) ([3ced62f](https://github.com/typescript-eslint/typescript-eslint/commit/3ced62fb8474ed377c1336ac3e855f0270ce9beb)) -* **eslint-plugin:** [no-useless-constructor] handle parameter decorator ([#5450](https://github.com/typescript-eslint/typescript-eslint/issues/5450)) ([864dbcf](https://github.com/typescript-eslint/typescript-eslint/commit/864dbcfccba274fe1b26eac8aeeaf2a2355b5969)) -* **scope-manager:** visit static blocks ([#5489](https://github.com/typescript-eslint/typescript-eslint/issues/5489)) ([78745c2](https://github.com/typescript-eslint/typescript-eslint/commit/78745c2092064446837b5683892001030a8bb4e2)) - +- **ast-spec:** NewExpression argument can be SpreadElement now ([#5422](https://github.com/typescript-eslint/typescript-eslint/issues/5422)) ([3ced62f](https://github.com/typescript-eslint/typescript-eslint/commit/3ced62fb8474ed377c1336ac3e855f0270ce9beb)) +- **eslint-plugin:** [no-useless-constructor] handle parameter decorator ([#5450](https://github.com/typescript-eslint/typescript-eslint/issues/5450)) ([864dbcf](https://github.com/typescript-eslint/typescript-eslint/commit/864dbcfccba274fe1b26eac8aeeaf2a2355b5969)) +- **scope-manager:** visit static blocks ([#5489](https://github.com/typescript-eslint/typescript-eslint/issues/5489)) ([78745c2](https://github.com/typescript-eslint/typescript-eslint/commit/78745c2092064446837b5683892001030a8bb4e2)) ### Features -* **eslint-plugin:** [prefer-optional-chain] support suggesting `!foo || !foo.bar` as a valid match for the rule ([#5266](https://github.com/typescript-eslint/typescript-eslint/issues/5266)) ([aca935c](https://github.com/typescript-eslint/typescript-eslint/commit/aca935c9696712d4aff18144c4690db4d6ba9bf9)) -* **types:** add unbound property in parser options ([#5419](https://github.com/typescript-eslint/typescript-eslint/issues/5419)) ([e08a9dd](https://github.com/typescript-eslint/typescript-eslint/commit/e08a9dd79365c1b1f5d0145ab69377f7d45f8a4f)) - - - - +- **eslint-plugin:** [prefer-optional-chain] support suggesting `!foo || !foo.bar` as a valid match for the rule ([#5266](https://github.com/typescript-eslint/typescript-eslint/issues/5266)) ([aca935c](https://github.com/typescript-eslint/typescript-eslint/commit/aca935c9696712d4aff18144c4690db4d6ba9bf9)) +- **types:** add unbound property in parser options ([#5419](https://github.com/typescript-eslint/typescript-eslint/issues/5419)) ([e08a9dd](https://github.com/typescript-eslint/typescript-eslint/commit/e08a9dd79365c1b1f5d0145ab69377f7d45f8a4f)) ## [5.33.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.33.0...v5.33.1) (2022-08-15) - ### Bug Fixes -* missing placeholders in violation messages for `no-unnecessary-type-constraint` and `no-unsafe-argument` (and enable `eslint-plugin/recommended` rules internally) ([#5453](https://github.com/typescript-eslint/typescript-eslint/issues/5453)) ([d023910](https://github.com/typescript-eslint/typescript-eslint/commit/d0239104f4dbffd2b5ecdb19e520c7d4b71962e0)) - - - - +- missing placeholders in violation messages for `no-unnecessary-type-constraint` and `no-unsafe-argument` (and enable `eslint-plugin/recommended` rules internally) ([#5453](https://github.com/typescript-eslint/typescript-eslint/issues/5453)) ([d023910](https://github.com/typescript-eslint/typescript-eslint/commit/d0239104f4dbffd2b5ecdb19e520c7d4b71962e0)) # [5.33.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.32.0...v5.33.0) (2022-08-08) - ### Bug Fixes -* **eslint-plugin:** [no-extra-parens] handle await with type assertion ([#5428](https://github.com/typescript-eslint/typescript-eslint/issues/5428)) ([e03826f](https://github.com/typescript-eslint/typescript-eslint/commit/e03826f08ce8bfdd6d6702025d975cfb7d867097)) -* **website:** add explicit frontmatter description to rule docs ([#5429](https://github.com/typescript-eslint/typescript-eslint/issues/5429)) ([63cba5f](https://github.com/typescript-eslint/typescript-eslint/commit/63cba5f4c1884e102927b3b14b18a00e96ac63a1)) - +- **eslint-plugin:** [no-extra-parens] handle await with type assertion ([#5428](https://github.com/typescript-eslint/typescript-eslint/issues/5428)) ([e03826f](https://github.com/typescript-eslint/typescript-eslint/commit/e03826f08ce8bfdd6d6702025d975cfb7d867097)) +- **website:** add explicit frontmatter description to rule docs ([#5429](https://github.com/typescript-eslint/typescript-eslint/issues/5429)) ([63cba5f](https://github.com/typescript-eslint/typescript-eslint/commit/63cba5f4c1884e102927b3b14b18a00e96ac63a1)) ### Features -* **eslint-plugin:** [member-ordering] support static blocks ([#5417](https://github.com/typescript-eslint/typescript-eslint/issues/5417)) ([5983e5a](https://github.com/typescript-eslint/typescript-eslint/commit/5983e5ab3bfb94fec782bea54a37457fe31db545)) -* **eslint-plugin:** [prefer-as-const] adds support for class properties ([#5413](https://github.com/typescript-eslint/typescript-eslint/issues/5413)) ([d2394f8](https://github.com/typescript-eslint/typescript-eslint/commit/d2394f810960fda07b9c8affd47b769d16f4b8cb)) - - - - +- **eslint-plugin:** [member-ordering] support static blocks ([#5417](https://github.com/typescript-eslint/typescript-eslint/issues/5417)) ([5983e5a](https://github.com/typescript-eslint/typescript-eslint/commit/5983e5ab3bfb94fec782bea54a37457fe31db545)) +- **eslint-plugin:** [prefer-as-const] adds support for class properties ([#5413](https://github.com/typescript-eslint/typescript-eslint/issues/5413)) ([d2394f8](https://github.com/typescript-eslint/typescript-eslint/commit/d2394f810960fda07b9c8affd47b769d16f4b8cb)) # [5.32.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.31.0...v5.32.0) (2022-08-01) - ### Features -* **eslint-plugin:** [no-use-before-define] add "allowNamedExports" option ([#5397](https://github.com/typescript-eslint/typescript-eslint/issues/5397)) ([ad412cd](https://github.com/typescript-eslint/typescript-eslint/commit/ad412cdd74dc5619fbe4bf27c0a5eb5c5a4b65ca)) - - - - +- **eslint-plugin:** [no-use-before-define] add "allowNamedExports" option ([#5397](https://github.com/typescript-eslint/typescript-eslint/issues/5397)) ([ad412cd](https://github.com/typescript-eslint/typescript-eslint/commit/ad412cdd74dc5619fbe4bf27c0a5eb5c5a4b65ca)) # [5.31.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.7...v5.31.0) (2022-07-25) - ### Bug Fixes -* **eslint-plugin:** [typedef] Support nested array destructuring with type annotation ([#5311](https://github.com/typescript-eslint/typescript-eslint/issues/5311)) ([6d19efe](https://github.com/typescript-eslint/typescript-eslint/commit/6d19efed16d1cf0357ad363b6373d2021c49a8c8)) -* **scope-manager:** handle typeParameters of TSInstantiationExpression ([#5355](https://github.com/typescript-eslint/typescript-eslint/issues/5355)) ([2595ccf](https://github.com/typescript-eslint/typescript-eslint/commit/2595ccf67cd5158edbd6bebd9ac2dbd8bbd8b99c)) - +- **eslint-plugin:** [typedef] Support nested array destructuring with type annotation ([#5311](https://github.com/typescript-eslint/typescript-eslint/issues/5311)) ([6d19efe](https://github.com/typescript-eslint/typescript-eslint/commit/6d19efed16d1cf0357ad363b6373d2021c49a8c8)) +- **scope-manager:** handle typeParameters of TSInstantiationExpression ([#5355](https://github.com/typescript-eslint/typescript-eslint/issues/5355)) ([2595ccf](https://github.com/typescript-eslint/typescript-eslint/commit/2595ccf67cd5158edbd6bebd9ac2dbd8bbd8b99c)) ### Features -* **eslint-plugin:** [consistent-generic-ctors] check class field declaration ([#5288](https://github.com/typescript-eslint/typescript-eslint/issues/5288)) ([48f996e](https://github.com/typescript-eslint/typescript-eslint/commit/48f996e8dda79c9c865e8ca6552069902836648b)) -* **eslint-plugin:** [prefer-nullish-coalescing] add ignoreTernaryTests option ([#4965](https://github.com/typescript-eslint/typescript-eslint/issues/4965)) ([f82727f](https://github.com/typescript-eslint/typescript-eslint/commit/f82727ffeb97475c07773ca1d1e5b9609fcc5e68)) - - - - +- **eslint-plugin:** [consistent-generic-ctors] check class field declaration ([#5288](https://github.com/typescript-eslint/typescript-eslint/issues/5288)) ([48f996e](https://github.com/typescript-eslint/typescript-eslint/commit/48f996e8dda79c9c865e8ca6552069902836648b)) +- **eslint-plugin:** [prefer-nullish-coalescing] add ignoreTernaryTests option ([#4965](https://github.com/typescript-eslint/typescript-eslint/issues/4965)) ([f82727f](https://github.com/typescript-eslint/typescript-eslint/commit/f82727ffeb97475c07773ca1d1e5b9609fcc5e68)) ## [5.30.7](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.6...v5.30.7) (2022-07-18) - ### Bug Fixes -* **eslint-plugin:** [no-inferrable] fix optional param to valid code ([#5342](https://github.com/typescript-eslint/typescript-eslint/issues/5342)) ([98f6d5e](https://github.com/typescript-eslint/typescript-eslint/commit/98f6d5e6d08d1eb9789da52a15f337f5f53438bd)) -* **eslint-plugin:** [no-unused-vars] highlight last write reference ([#5267](https://github.com/typescript-eslint/typescript-eslint/issues/5267)) ([c3f199a](https://github.com/typescript-eslint/typescript-eslint/commit/c3f199a65a16aa72f5bb83e81a1ce0ffb5f69772)) -* expose types supporting old versions of typescript ([#5339](https://github.com/typescript-eslint/typescript-eslint/issues/5339)) ([4ba9bdb](https://github.com/typescript-eslint/typescript-eslint/commit/4ba9bdb93f87e6bc370f13aa1de48f435abe3f88)) -* **scope-manager:** allow visiting of constraint in infer type ([#5331](https://github.com/typescript-eslint/typescript-eslint/issues/5331)) ([b2846a1](https://github.com/typescript-eslint/typescript-eslint/commit/b2846a16777a3aea7b1e6ac9d81b9b6dce0bb874)) - - - - +- **eslint-plugin:** [no-inferrable] fix optional param to valid code ([#5342](https://github.com/typescript-eslint/typescript-eslint/issues/5342)) ([98f6d5e](https://github.com/typescript-eslint/typescript-eslint/commit/98f6d5e6d08d1eb9789da52a15f337f5f53438bd)) +- **eslint-plugin:** [no-unused-vars] highlight last write reference ([#5267](https://github.com/typescript-eslint/typescript-eslint/issues/5267)) ([c3f199a](https://github.com/typescript-eslint/typescript-eslint/commit/c3f199a65a16aa72f5bb83e81a1ce0ffb5f69772)) +- expose types supporting old versions of typescript ([#5339](https://github.com/typescript-eslint/typescript-eslint/issues/5339)) ([4ba9bdb](https://github.com/typescript-eslint/typescript-eslint/commit/4ba9bdb93f87e6bc370f13aa1de48f435abe3f88)) +- **scope-manager:** allow visiting of constraint in infer type ([#5331](https://github.com/typescript-eslint/typescript-eslint/issues/5331)) ([b2846a1](https://github.com/typescript-eslint/typescript-eslint/commit/b2846a16777a3aea7b1e6ac9d81b9b6dce0bb874)) ## [5.30.6](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.5...v5.30.6) (2022-07-11) **Note:** Version bump only for package @typescript-eslint/typescript-eslint - - - - ## [5.30.5](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.4...v5.30.5) (2022-07-04) - ### Bug Fixes -* **eslint-plugin:** [consistent-indexed-object-style] fix record mode fixer for generics with a default value ([#5280](https://github.com/typescript-eslint/typescript-eslint/issues/5280)) ([57f032c](https://github.com/typescript-eslint/typescript-eslint/commit/57f032c2e6a822c049177713778d0077ee138d9a)) - - - - +- **eslint-plugin:** [consistent-indexed-object-style] fix record mode fixer for generics with a default value ([#5280](https://github.com/typescript-eslint/typescript-eslint/issues/5280)) ([57f032c](https://github.com/typescript-eslint/typescript-eslint/commit/57f032c2e6a822c049177713778d0077ee138d9a)) ## [5.30.4](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.3...v5.30.4) (2022-07-03) **Note:** Version bump only for package @typescript-eslint/typescript-eslint - - - - ## [5.30.3](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.2...v5.30.3) (2022-07-01) **Note:** Version bump only for package @typescript-eslint/typescript-eslint - - - - ## [5.30.2](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.1...v5.30.2) (2022-07-01) **Note:** Version bump only for package @typescript-eslint/typescript-eslint - - - - ## [5.30.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.0...v5.30.1) (2022-07-01) - -### Bug Fixes - -* **eslint-plugin:** [no-base-to-string] add missing apostrophe to message ([#5270](https://github.com/typescript-eslint/typescript-eslint/issues/5270)) ([d320174](https://github.com/typescript-eslint/typescript-eslint/commit/58034e343a167ca7751b54d2b2a0e7d3852aabec)) - - - - - -# [5.30.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.29.0...v5.30.0) (2022-06-27) - - -### Features - -* **eslint-plugin:** [no-shadow] add shadowed variable location to the error message ([#5183](https://github.com/typescript-eslint/typescript-eslint/issues/5183)) ([8ca08e9](https://github.com/typescript-eslint/typescript-eslint/commit/8ca08e9f18d59b29715c667fbb7d237f6e9a96ba)) -* treat `this` in `typeof this` as a `ThisExpression` ([#4382](https://github.com/typescript-eslint/typescript-eslint/issues/4382)) ([b04b2ce](https://github.com/typescript-eslint/typescript-eslint/commit/b04b2ce1ba90d94718891f2562dd210a6d7b8609)) - - - - - -# [5.29.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.28.0...v5.29.0) (2022-06-20) - - -### Features - -* **website:** open issue with rule name if only one rule is enabled ([#5190](https://github.com/typescript-eslint/typescript-eslint/issues/5190)) ([b229ee4](https://github.com/typescript-eslint/typescript-eslint/commit/b229ee4ace1417d2d4f7d6cafa039f073e845c3a)) - - - - - -# [5.28.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.27.1...v5.28.0) (2022-06-13) - - -### Bug Fixes - -* [TS4.7] allow visiting of typeParameters in TSTypeQuery ([#5166](https://github.com/typescript-eslint/typescript-eslint/issues/5166)) ([dc1f930](https://github.com/typescript-eslint/typescript-eslint/commit/dc1f9309cf04aa7314e758980ac687558482f47f)) -* **eslint-plugin:** [space-infix-ops] support for optional property without type ([#5155](https://github.com/typescript-eslint/typescript-eslint/issues/5155)) ([1f25daf](https://github.com/typescript-eslint/typescript-eslint/commit/1f25daf74e5d45077199f9ee9fa9bf31107f4089)) - - -### Features - -* **ast-spec:** extract `AssignmentOperatorToText` ([#3570](https://github.com/typescript-eslint/typescript-eslint/issues/3570)) ([45f75e6](https://github.com/typescript-eslint/typescript-eslint/commit/45f75e6b869f4160a45a6890d794aba004356ad7)) -* **eslint-plugin:** [consistent-generic-constructors] add rule ([#4924](https://github.com/typescript-eslint/typescript-eslint/issues/4924)) ([921cdf1](https://github.com/typescript-eslint/typescript-eslint/commit/921cdf17e548845311d0591249616ec844503926)) - - - - - -## [5.27.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.27.0...v5.27.1) (2022-06-06) - - -### Bug Fixes - -* **eslint-plugin:** [space-infix-ops] correct PropertyDefinition with typeAnnotation ([#5113](https://github.com/typescript-eslint/typescript-eslint/issues/5113)) ([d320174](https://github.com/typescript-eslint/typescript-eslint/commit/d320174f40a74b34e6b6e4c88128ef6e736311d8)) -* **eslint-plugin:** [space-infix-ops] regression fix for conditional types ([#5135](https://github.com/typescript-eslint/typescript-eslint/issues/5135)) ([e5238c8](https://github.com/typescript-eslint/typescript-eslint/commit/e5238c84e56e7c34174b2c6f1e3ea59456797c2f)) -* **eslint-plugin:** [space-infix-ops] regression fix for type aliases ([#5138](https://github.com/typescript-eslint/typescript-eslint/issues/5138)) ([4e13deb](https://github.com/typescript-eslint/typescript-eslint/commit/4e13deb05fbd8724996156b15b65f6a66794a7cc)) - - - - - -# [5.27.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.26.0...v5.27.0) (2022-05-30) - - -### Bug Fixes - -* **eslint-plugin:** [no-type-alias] handle Template Literal Types ([#5092](https://github.com/typescript-eslint/typescript-eslint/issues/5092)) ([8febf11](https://github.com/typescript-eslint/typescript-eslint/commit/8febf11a9296d1c0d7ccdf91ef9ab92ec8dfc39c)) -* **types:** remove leftovers from removal of useJSXTextNode ([#5091](https://github.com/typescript-eslint/typescript-eslint/issues/5091)) ([f9c3647](https://github.com/typescript-eslint/typescript-eslint/commit/f9c3647cb637c8d1ee461b471da9d817ccbde77c)) - - -### Features - -* [4.7] support new extensions ([#5027](https://github.com/typescript-eslint/typescript-eslint/issues/5027)) ([efc147b](https://github.com/typescript-eslint/typescript-eslint/commit/efc147b04dce52ab17415b6a4ae4076b944b9036)) -* [TS4.7] support type parameters for `typeof` ([#5067](https://github.com/typescript-eslint/typescript-eslint/issues/5067)) ([836de79](https://github.com/typescript-eslint/typescript-eslint/commit/836de79e8d1bff43149168cc913a4c2b60e79bf6)) -* bump dependency ranges to TypeScript 4.7 ([#5082](https://github.com/typescript-eslint/typescript-eslint/issues/5082)) ([c4310b1](https://github.com/typescript-eslint/typescript-eslint/commit/c4310b1aac35c7d31b826f0602eca6a5900a09ee)) -* **eslint-plugin:** [ban-ts-comment] add descriptionFormat option ([#5026](https://github.com/typescript-eslint/typescript-eslint/issues/5026)) ([1fb31a4](https://github.com/typescript-eslint/typescript-eslint/commit/1fb31a4b3e05734f801ade0450fea33494e4d5e6)) -* **eslint-plugin:** [no-misused-promises] warn when spreading promises ([#5053](https://github.com/typescript-eslint/typescript-eslint/issues/5053)) ([61ffa9e](https://github.com/typescript-eslint/typescript-eslint/commit/61ffa9ed70e3cac6eca50a6c3cc5a0f1e7dec11c)) -* **eslint-plugin:** [space-infix-ops] missing error report for conditional types ([#5041](https://github.com/typescript-eslint/typescript-eslint/issues/5041)) ([0bfab6c](https://github.com/typescript-eslint/typescript-eslint/commit/0bfab6c9f5c5e243268200cf9368acf39ea099f8)) - - - - - -# [5.26.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.25.0...v5.26.0) (2022-05-23) - - -### Bug Fixes - -* **ast-spec:** add `SpreadElement` to `ArrayExpression.elements` ([#5025](https://github.com/typescript-eslint/typescript-eslint/issues/5025)) ([9f3121b](https://github.com/typescript-eslint/typescript-eslint/commit/9f3121b228b9c066bff7a6011aecf269ac55f17c)) -* **eslint-plugin:** [member-delimiter-style] autofixer result is not as expected when comments after the delimiter with option `delimiter: 'none'` ([#5029](https://github.com/typescript-eslint/typescript-eslint/issues/5029)) ([ed7b5f6](https://github.com/typescript-eslint/typescript-eslint/commit/ed7b5f61d93799fec3e38a87935ab9caa3abe279)) -* **eslint-plugin:** [member-delimiter-style] autofixer result is not as expected with option `delimiter: 'none'` ([#5023](https://github.com/typescript-eslint/typescript-eslint/issues/5023)) ([9e97a11](https://github.com/typescript-eslint/typescript-eslint/commit/9e97a11ecd80be5c63c980bfe8d8e57400221cec)) -* **eslint-plugin:** [prefer-readonly] correct issue with anonymus functions ([#4974](https://github.com/typescript-eslint/typescript-eslint/issues/4974)) ([952e2f0](https://github.com/typescript-eslint/typescript-eslint/commit/952e2f068862dde089ec03d3eb5452d1ee3e9271)), closes [#2590](https://github.com/typescript-eslint/typescript-eslint/issues/2590) - - -### Features - -* [4.7] support instantiation expressions ([#4938](https://github.com/typescript-eslint/typescript-eslint/issues/4938)) ([79fbc77](https://github.com/typescript-eslint/typescript-eslint/commit/79fbc7743ae5dce3190f8168776e0204755390ad)) -* [4.7] support optional variance annotation ([#4831](https://github.com/typescript-eslint/typescript-eslint/issues/4831)) ([7e7b24c](https://github.com/typescript-eslint/typescript-eslint/commit/7e7b24c196e6d968e48f97f46feae5e7027e22d2)) -* **typescript-estree:** `extends` constraints for `infer` ([#4830](https://github.com/typescript-eslint/typescript-eslint/issues/4830)) ([8cbbcc3](https://github.com/typescript-eslint/typescript-eslint/commit/8cbbcc3d317779e0dcba15d3835137f38383de34)) - - - - - -# [5.25.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.24.0...v5.25.0) (2022-05-17) - - -### Bug Fixes - -* **eslint-plugin:** [typedef] stop enforcing rule for assignment expressions ([#4958](https://github.com/typescript-eslint/typescript-eslint/issues/4958)) ([04a216c](https://github.com/typescript-eslint/typescript-eslint/commit/04a216c39c02085fe5d555ce81bdced0e563a7c4)) -* **eslint-plugin:** strict config should not extend recommended ([#5005](https://github.com/typescript-eslint/typescript-eslint/issues/5005)) ([05d71c2](https://github.com/typescript-eslint/typescript-eslint/commit/05d71c2ebd8e072aa4e8ee3ea8521de00e47d4ca)) -* **website:** correct Presets link to be Configs ([#5004](https://github.com/typescript-eslint/typescript-eslint/issues/5004)) ([e18e91c](https://github.com/typescript-eslint/typescript-eslint/commit/e18e91c6cfb1ee93bfff3770ea4d8f807d5ced0b)) - - -### Features - -* **eslint-plugin:** [no-empty-function] new allow option overrideMethods ([#4923](https://github.com/typescript-eslint/typescript-eslint/issues/4923)) ([13c05ae](https://github.com/typescript-eslint/typescript-eslint/commit/13c05aefb0e6531d320629e04b7207a3baebacb0)) -* **eslint-plugin:** deprecate `no-duplicate-imports` in favour of `import/no-duplicates` ([#4973](https://github.com/typescript-eslint/typescript-eslint/issues/4973)) ([1d2e41a](https://github.com/typescript-eslint/typescript-eslint/commit/1d2e41ada1979c081130d19b229c82bf1a69b7b4)) -* update to TypeScript 4.7-rc ([#4829](https://github.com/typescript-eslint/typescript-eslint/issues/4829)) ([6fe783c](https://github.com/typescript-eslint/typescript-eslint/commit/6fe783c20aebe26ef42b526e4a59a9be84dd5643)) - - - - - -# [5.24.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.23.0...v5.24.0) (2022-05-16) - - -### Bug Fixes - -* **eslint-plugin:** [array-type] in fixer add missing parens for constructor types [#4756](https://github.com/typescript-eslint/typescript-eslint/issues/4756) ([#4971](https://github.com/typescript-eslint/typescript-eslint/issues/4971)) ([0377070](https://github.com/typescript-eslint/typescript-eslint/commit/03770708900da663eb64c19465b3f937bab55b3d)) -* **website:** missing colon before tip notes in configs.md ([#4982](https://github.com/typescript-eslint/typescript-eslint/issues/4982)) ([f3a1aba](https://github.com/typescript-eslint/typescript-eslint/commit/f3a1aba6704c5978c9f6002d6b1fc076421103d1)) - - -### Features - -* **eslint-plugin:** Add BigInt object type to default ban-types list ([#4970](https://github.com/typescript-eslint/typescript-eslint/issues/4970)) ([1867728](https://github.com/typescript-eslint/typescript-eslint/commit/1867728ba104a6a21941ed300828110964a43b96)) -* **eslint-plugin:** add new 'strict' config ([#4706](https://github.com/typescript-eslint/typescript-eslint/issues/4706)) ([4a500b2](https://github.com/typescript-eslint/typescript-eslint/commit/4a500b2d92a91873dbb729793d1ee1c36ef06ed8)) - - - - - -# [5.23.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.22.0...v5.23.0) (2022-05-09) - - -### Bug Fixes - -* **ast-spec:** correct `AwaitExpression.argument` type ([#4880](https://github.com/typescript-eslint/typescript-eslint/issues/4880)) ([3ec5f53](https://github.com/typescript-eslint/typescript-eslint/commit/3ec5f53bad79b133ef5dee71c402160b3acf13cf)) -* **eslint-plugin:** [no-restricted-imports] allow type import as long as there's one matching pattern ([#4898](https://github.com/typescript-eslint/typescript-eslint/issues/4898)) ([0419d28](https://github.com/typescript-eslint/typescript-eslint/commit/0419d287b637e805c33036a45760badc2498e19b)) -* **eslint-plugin:** [no-unnecessary-type-constraint] change to suggestion fix, fix multiple trailing comma failures ([#4901](https://github.com/typescript-eslint/typescript-eslint/issues/4901)) ([4507ac8](https://github.com/typescript-eslint/typescript-eslint/commit/4507ac84c76da0ced43b6679305afe1891e7afca)) - - -### Features - -* **utils:** update eslint types ([#4896](https://github.com/typescript-eslint/typescript-eslint/issues/4896)) ([da48527](https://github.com/typescript-eslint/typescript-eslint/commit/da485279f13cb95db1ee131a4f9c5367d54020fe)) - - - - - -# [5.22.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.21.0...v5.22.0) (2022-05-02) - - -### Bug Fixes - -* add rule to vscode settings ([#4881](https://github.com/typescript-eslint/typescript-eslint/issues/4881)) ([3eab889](https://github.com/typescript-eslint/typescript-eslint/commit/3eab889022c9d1617f275017d6951f663ea57f24)) -* **eslint-plugin:** [comma-spacing] verify `nextToken` exists ([#4868](https://github.com/typescript-eslint/typescript-eslint/issues/4868)) ([23746f8](https://github.com/typescript-eslint/typescript-eslint/commit/23746f8babace7c2354368d6fb0881be26e19c41)) - - -### Features - -* **ast-spec:** add fixture test framework and some initial fixtures ([#3258](https://github.com/typescript-eslint/typescript-eslint/issues/3258)) ([f3cf87b](https://github.com/typescript-eslint/typescript-eslint/commit/f3cf87bf20fd0542f92a96a318aa9ee5bf23c1f6)) -* **eslint-plugin:** [no-duplicate-enum-values] add rule ([#4833](https://github.com/typescript-eslint/typescript-eslint/issues/4833)) ([5899164](https://github.com/typescript-eslint/typescript-eslint/commit/5899164b35d91106512a2720b23ba92e1893132f)) - - - - - -# [5.21.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.20.0...v5.21.0) (2022-04-25) - - -### Bug Fixes - -* **eslint-plugin:** [no-misused-promises] prioritize false returns when checking whether a function returns only void ([#4841](https://github.com/typescript-eslint/typescript-eslint/issues/4841)) ([ccadb60](https://github.com/typescript-eslint/typescript-eslint/commit/ccadb6075d6977c4921ffc09fa40f515f4d497c5)) -* **eslint-plugin:** [no-namespace] fix false positive for exported namespaces when allowDeclarations=true ([#4844](https://github.com/typescript-eslint/typescript-eslint/issues/4844)) ([4e7c9be](https://github.com/typescript-eslint/typescript-eslint/commit/4e7c9be6ff7e2448f4151563d7921cd285c2e349)) -* **eslint-plugin:** [space-infix-ops] fix no error when right type is function ([#4848](https://github.com/typescript-eslint/typescript-eslint/issues/4848)) ([d74d559](https://github.com/typescript-eslint/typescript-eslint/commit/d74d559c25e336c3ebe917bf5c43e14ffa2de694)) - - -### Features - -* **eslint-plugin:** [parameter-properties] add rule to replace `no-parameter-properties` ([#4622](https://github.com/typescript-eslint/typescript-eslint/issues/4622)) ([88ed9ec](https://github.com/typescript-eslint/typescript-eslint/commit/88ed9ec9d6b971a9533565920fdcd6890ea941e9)) - - - - - -# [5.20.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.19.0...v5.20.0) (2022-04-18) - - -### Features - -* **eslint-plugin:** [no-magic-numbers] ignoreTypeIndexes option ([#4789](https://github.com/typescript-eslint/typescript-eslint/issues/4789)) ([5e79451](https://github.com/typescript-eslint/typescript-eslint/commit/5e794512bf124c39de76d4e2cf8a3d6cfb08f1a8)) - - - - - -# [5.19.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.18.0...v5.19.0) (2022-04-11) - - -### Bug Fixes - -* **eslint-plugin:** update code to use estree range instead of ts pos/end [#4723](https://github.com/typescript-eslint/typescript-eslint/issues/4723) ([#4790](https://github.com/typescript-eslint/typescript-eslint/issues/4790)) ([a1e9fc4](https://github.com/typescript-eslint/typescript-eslint/commit/a1e9fc4cb19e7655613ebe6f4dd911b5427b0367)) - - -### Features - -* **eslint-plugin:** [unified-signatures] add `ignoreDifferentlyNamedParameters` option ([#4659](https://github.com/typescript-eslint/typescript-eslint/issues/4659)) ([fdf95e0](https://github.com/typescript-eslint/typescript-eslint/commit/fdf95e02c45e137325c9ddd9d30e7f6b404f4514)) -* **eslint-plugin:** add support for valid number and bigint intersections in restrict-plus-operands rule ([#4795](https://github.com/typescript-eslint/typescript-eslint/issues/4795)) ([19c600a](https://github.com/typescript-eslint/typescript-eslint/commit/19c600a3dd485669cb87ae8f81b010e65eee1df8)) - - - - - -# [5.18.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.17.0...v5.18.0) (2022-04-04) - - -### Bug Fixes - -* **eslint-plugin:** method-signature-style respect getter signature ([#4777](https://github.com/typescript-eslint/typescript-eslint/issues/4777)) ([12dd670](https://github.com/typescript-eslint/typescript-eslint/commit/12dd670bc8621867c5105d8892dba9f9550a2f35)) -* **visitor-keys:** add missing visitor keys ([#4731](https://github.com/typescript-eslint/typescript-eslint/issues/4731)) ([bb575a0](https://github.com/typescript-eslint/typescript-eslint/commit/bb575a0763f39b9b988a7c20afee7b5eeb64cba7)) - - -### Features - -* **eslint-plugin:** [no-shadow] ignoreOnInitialization option ([#4603](https://github.com/typescript-eslint/typescript-eslint/issues/4603)) ([068ea9b](https://github.com/typescript-eslint/typescript-eslint/commit/068ea9b8eb3072fb46a6035f29c68ce96a69008d)) -* **eslint-plugin:** [no-this-alias] report on assignment expressions ([#4718](https://github.com/typescript-eslint/typescript-eslint/issues/4718)) ([8329498](https://github.com/typescript-eslint/typescript-eslint/commit/83294989dad543351a26e95be8d11a91d348679a)) - - - - - -# [5.17.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.16.0...v5.17.0) (2022-03-28) - - -### Bug Fixes - -* code container hiding navigation menu ([#4707](https://github.com/typescript-eslint/typescript-eslint/issues/4707)) ([96bc69a](https://github.com/typescript-eslint/typescript-eslint/commit/96bc69a652c7f6f474a39f1e9783e7fbd446696a)) -* revert "chore: Bump cypress from 8.3.0 to 9.5.2", and ignore cypress for now ([#4740](https://github.com/typescript-eslint/typescript-eslint/issues/4740)) ([cf5f5c4](https://github.com/typescript-eslint/typescript-eslint/commit/cf5f5c441ab0c4fb056bd688795ffc55e026627a)), closes [#4710](https://github.com/typescript-eslint/typescript-eslint/issues/4710) - - -### Features - -* **eslint-plugin:** [no-unused-vars] add destructuredArrayIgnorePattern options ([#4748](https://github.com/typescript-eslint/typescript-eslint/issues/4748)) ([6f8db8b](https://github.com/typescript-eslint/typescript-eslint/commit/6f8db8b64821d280fff408c1704a9adde682ed69)) - - - - - -# [5.16.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.15.0...v5.16.0) (2022-03-21) - - -### Bug Fixes - -* **eslint-plugin:** [consistent-type-assertions] enforce assertionStyle for `const` assertions ([#4685](https://github.com/typescript-eslint/typescript-eslint/issues/4685)) ([8ec05be](https://github.com/typescript-eslint/typescript-eslint/commit/8ec05bed0fed0dcd48b087acd5ab5a6132bf3b09)) -* **scope-manager:** incorrect reference for this within a jsx identifier ([#4535](https://github.com/typescript-eslint/typescript-eslint/issues/4535)) ([dd49280](https://github.com/typescript-eslint/typescript-eslint/commit/dd49280e50cb2f5bd26dc07210551bc1fda120af)) -* **utils:** RuleTester: Only call afterAll if defined ([#4656](https://github.com/typescript-eslint/typescript-eslint/issues/4656)) ([0fe0683](https://github.com/typescript-eslint/typescript-eslint/commit/0fe0683effe4c7390806a72c6aa7795445a67929)) - - -### Features - -* **eslint-plugin:** [prefer-optional-chain] support logical with empty object ([#4430](https://github.com/typescript-eslint/typescript-eslint/issues/4430)) ([d21cfe0](https://github.com/typescript-eslint/typescript-eslint/commit/d21cfe0f4b7d3041948b1b6e0cd56c5ec34b2b3f)) - - - - - -# [5.15.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.14.0...v5.15.0) (2022-03-14) - - -### Features - -* **parser:** add `parserOptions.emitDecoratorMetadata` ([#4646](https://github.com/typescript-eslint/typescript-eslint/issues/4646)) ([e3dd343](https://github.com/typescript-eslint/typescript-eslint/commit/e3dd343e51e3b7772e825a609735a04c921c1ec5)) - - - - - -# [5.14.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.13.0...v5.14.0) (2022-03-07) - - -### Bug Fixes - -* **eslint-plugin:** [naming-convention] cover case that requires quotes ([#4582](https://github.com/typescript-eslint/typescript-eslint/issues/4582)) ([3ea0947](https://github.com/typescript-eslint/typescript-eslint/commit/3ea09477debec9f1593e4d3857e153570b488f4d)) -* **eslint-plugin:** [no-misused-promises] factor thenable returning function overload signatures ([#4620](https://github.com/typescript-eslint/typescript-eslint/issues/4620)) ([56a09e9](https://github.com/typescript-eslint/typescript-eslint/commit/56a09e98f171662d25ae2692be703a8bbbd3a3a5)) -* **eslint-plugin:** [prefer-readonly-parameter-types] handle class sharp private field and member without throwing error ([#4343](https://github.com/typescript-eslint/typescript-eslint/issues/4343)) ([a65713a](https://github.com/typescript-eslint/typescript-eslint/commit/a65713ae138e56555d01a9e8e5179221a2f39e75)) -* **eslint-plugin:** [return-await] correct autofixer in binary expression ([#4401](https://github.com/typescript-eslint/typescript-eslint/issues/4401)) ([5fa2fad](https://github.com/typescript-eslint/typescript-eslint/commit/5fa2fade385cc526a962212b94410c58e4c31078)) - - -### Features - -* **eslint-plugin:** [no-misused-promises] add granular options within `checksVoidReturns` ([#4623](https://github.com/typescript-eslint/typescript-eslint/issues/4623)) ([1085177](https://github.com/typescript-eslint/typescript-eslint/commit/10851772696f982b585e0dade728f7980fdc6cc0)) -* TypeScript 4.6 ([#4615](https://github.com/typescript-eslint/typescript-eslint/issues/4615)) ([a02c63a](https://github.com/typescript-eslint/typescript-eslint/commit/a02c63a264e5a6c3557468a8eff48d34ca2b718a)) - - - - - -# [5.13.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.12.1...v5.13.0) (2022-02-28) - - -### Bug Fixes - -* **eslint-plugin:** [sort-type-union-intersection-members] Wrap the constructorType in parentheses ([#4590](https://github.com/typescript-eslint/typescript-eslint/issues/4590)) ([851bb90](https://github.com/typescript-eslint/typescript-eslint/commit/851bb90216e20b7679efc891dc445e6152d4837f)) - - -### Features - -* **eslint-plugin:** [no-misused-promises] check more places for checksVoidReturn ([#4541](https://github.com/typescript-eslint/typescript-eslint/issues/4541)) ([052cf51](https://github.com/typescript-eslint/typescript-eslint/commit/052cf51fe663283afe89dc7bf97c947e750df095)) -* **eslint-plugin:** add `no-redundant-type-constituents` rule ([#4378](https://github.com/typescript-eslint/typescript-eslint/issues/4378)) ([63d051e](https://github.com/typescript-eslint/typescript-eslint/commit/63d051eed29dcf71015a23992feac0a8f92717a0)) -* **eslint-plugin:** add `no-useless-empty-export` rule ([#4380](https://github.com/typescript-eslint/typescript-eslint/issues/4380)) ([823b945](https://github.com/typescript-eslint/typescript-eslint/commit/823b945c8f9e83d0246a2a5d07519f01e1a64518)) -* **eslint-plugin:** add extension rule `space-before-blocks` ([#1606](https://github.com/typescript-eslint/typescript-eslint/issues/1606)) ([#4184](https://github.com/typescript-eslint/typescript-eslint/issues/4184)) ([208b6d0](https://github.com/typescript-eslint/typescript-eslint/commit/208b6d02252dff2bf272329d3e4a4a82e56c52c0)) -* **eslint-plugin:** added member group support to member-ordering rule ([#4538](https://github.com/typescript-eslint/typescript-eslint/issues/4538)) ([6afcaea](https://github.com/typescript-eslint/typescript-eslint/commit/6afcaea0160a1ccd1c6483ca677c544ca1b8cb4f)) -* **utils:** expose `ast-utils`' helpers ([#4503](https://github.com/typescript-eslint/typescript-eslint/issues/4503)) ([f106e4b](https://github.com/typescript-eslint/typescript-eslint/commit/f106e4b95e824ebb68141bce3d3207448d50c860)) -* **utils:** extract `isNotTokenOfTypeWithConditions` out of `ast-utils`' `predicates` ([#4502](https://github.com/typescript-eslint/typescript-eslint/issues/4502)) ([66501d6](https://github.com/typescript-eslint/typescript-eslint/commit/66501d6dd7e97c22c671efaa6d1ba8237907e417)) - - - - - -## [5.12.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.12.0...v5.12.1) (2022-02-21) - - -### Bug Fixes - -* **eslint-plugin:** [no-unnecessary-type-arguments] fix comparison of types ([#4555](https://github.com/typescript-eslint/typescript-eslint/issues/4555)) ([fc3936e](https://github.com/typescript-eslint/typescript-eslint/commit/fc3936e99712374a707ce9e0101bc641807b9ea6)) - - - - - -# [5.12.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.11.0...v5.12.0) (2022-02-14) - - -### Bug Fixes - -* **eslint-plugin:** [init-declarations] fix nested namespace ([#4544](https://github.com/typescript-eslint/typescript-eslint/issues/4544)) ([fe910e6](https://github.com/typescript-eslint/typescript-eslint/commit/fe910e61ca4bb42be3be9acb8ddcec73206754c2)) -* **eslint-plugin:** [no-unnecessary-type-arguments] Use Symbol to check if it's the same type ([#4543](https://github.com/typescript-eslint/typescript-eslint/issues/4543)) ([5b7d8df](https://github.com/typescript-eslint/typescript-eslint/commit/5b7d8df149be6554c863cdd5b73c0b0b0a7960db)) -* support nested object deconstructuring with type annotation ([#4548](https://github.com/typescript-eslint/typescript-eslint/issues/4548)) ([4da9278](https://github.com/typescript-eslint/typescript-eslint/commit/4da9278c80706f420d4c15a71c11c7b11d935643)) - - -### Features - -* add checking property definition for allowNames option ([#4542](https://github.com/typescript-eslint/typescript-eslint/issues/4542)) ([e32bef6](https://github.com/typescript-eslint/typescript-eslint/commit/e32bef6f6b74228c95e54a5cba1cde53d5e40623)) - - - - - -# [5.11.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.10.2...v5.11.0) (2022-02-07) - - -### Bug Fixes - -* **eslint-plugin:** [no-magic-numbers] fix invalid schema merging ([#4517](https://github.com/typescript-eslint/typescript-eslint/issues/4517)) ([b95f796](https://github.com/typescript-eslint/typescript-eslint/commit/b95f79697acdd16347dc102bcb8311fe83746779)) -* **eslint-plugin:** [non-nullable-type-assertion-style] fix false positive when asserting to a generic type that might be nullish ([#4509](https://github.com/typescript-eslint/typescript-eslint/issues/4509)) ([4209362](https://github.com/typescript-eslint/typescript-eslint/commit/420936274603d8fee0631cdb3b58874cb3cc59d7)) - - -### Features - -* **eslint-plugin:** [explicit-function-return-type] add allowedNames ([#4440](https://github.com/typescript-eslint/typescript-eslint/issues/4440)) ([936e252](https://github.com/typescript-eslint/typescript-eslint/commit/936e252e30cfcebdaf971cf0f66a3031e236a41c)) - - - - - -## [5.10.2](https://github.com/typescript-eslint/typescript-eslint/compare/v5.10.1...v5.10.2) (2022-01-31) - - -### Bug Fixes - -* **eslint-plugin:** [no-restricted-imports] allow relative type imports with patterns configured ([#4494](https://github.com/typescript-eslint/typescript-eslint/issues/4494)) ([4a6d217](https://github.com/typescript-eslint/typescript-eslint/commit/4a6d217ae8a8f5fa1dd4bd3e3e66ba7519b4a287)) - - - - - -## [5.10.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.10.0...v5.10.1) (2022-01-24) - -**Note:** Version bump only for package @typescript-eslint/typescript-eslint - - - - - -# [5.10.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.9.1...v5.10.0) (2022-01-17) - - -### Bug Fixes - -* **eslint-plugin:** [explicit-function-return-type] support AllowTypedFunctionExpression within AllowHigherOrderFunction ([#4250](https://github.com/typescript-eslint/typescript-eslint/issues/4250)) ([d053cde](https://github.com/typescript-eslint/typescript-eslint/commit/d053cde3e8b5bf9ba1c22fd64a7456d672ef77ca)) -* **eslint-plugin:** [no-extra-semi] false negatives when used with eslint 8.3.0 ([#4458](https://github.com/typescript-eslint/typescript-eslint/issues/4458)) ([f4016c2](https://github.com/typescript-eslint/typescript-eslint/commit/f4016c24f9023e8a42def9501b68c4a908cbfede)) -* **eslint-plugin:** [no-invalid-this] crash when used with eslint 8.7.0 ([#4448](https://github.com/typescript-eslint/typescript-eslint/issues/4448)) ([e56f1e5](https://github.com/typescript-eslint/typescript-eslint/commit/e56f1e5d52fcbf3caae43034872e0b3181871689)) -* **eslint-plugin:** [no-magic-numbers] handle bigint in class props ([#4411](https://github.com/typescript-eslint/typescript-eslint/issues/4411)) ([c8e650f](https://github.com/typescript-eslint/typescript-eslint/commit/c8e650f0c124d24b24beaeb376eaf61ee8d9e6fb)) -* **type-utils:** check IndexSignature internals when checking isTypeReadonly ([#4417](https://github.com/typescript-eslint/typescript-eslint/issues/4417)) ([ef3147c](https://github.com/typescript-eslint/typescript-eslint/commit/ef3147cf73767ddece91ce57f6028a83ce074b60)), closes [#4410](https://github.com/typescript-eslint/typescript-eslint/issues/4410) [#3714](https://github.com/typescript-eslint/typescript-eslint/issues/3714) -* **type-utils:** intersection types involving readonly arrays are now handled in most cases ([#4429](https://github.com/typescript-eslint/typescript-eslint/issues/4429)) ([5046882](https://github.com/typescript-eslint/typescript-eslint/commit/5046882025e3bc8cb122ecef703aebd0b5e79017)) -* **type-utils:** isTypeReadonly now handles conditional types ([#4421](https://github.com/typescript-eslint/typescript-eslint/issues/4421)) ([39a6806](https://github.com/typescript-eslint/typescript-eslint/commit/39a6806c61a48bbca93f9ffb965dd8b3fe0575b3)) -* **type-utils:** union types always being marked as readonly ([#4419](https://github.com/typescript-eslint/typescript-eslint/issues/4419)) ([99ab193](https://github.com/typescript-eslint/typescript-eslint/commit/99ab193bb02f181bed4ed917b1d121ed189d3fe4)) - - -### Features - -* rename `experimental-utils` to `utils` and make `experimental-utils` an alias to the new package ([#4172](https://github.com/typescript-eslint/typescript-eslint/issues/4172)) ([1d55a75](https://github.com/typescript-eslint/typescript-eslint/commit/1d55a7511b38d8e2b2eabe59f639e0a865e6c93f)) -* **type-utils:** make isTypeReadonly's options param optional ([#4415](https://github.com/typescript-eslint/typescript-eslint/issues/4415)) ([3a07a56](https://github.com/typescript-eslint/typescript-eslint/commit/3a07a563c987ff25f6cd8925eeeb2ede47cc19e8)) - - - - - -## [5.9.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.9.0...v5.9.1) (2022-01-10) - -**Note:** Version bump only for package @typescript-eslint/typescript-eslint - - - - - -# [5.9.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.8.1...v5.9.0) (2022-01-03) - - -### Features - -* **experimental-utils:** move isTypeReadonly from eslint-plugin to experimental-utils ([#3658](https://github.com/typescript-eslint/typescript-eslint/issues/3658)) ([a9eb0b9](https://github.com/typescript-eslint/typescript-eslint/commit/a9eb0b9eb2db291ea36065ec34f84bf5c5504b43)) - - - - - -## [5.8.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.8.0...v5.8.1) (2021-12-27) - - -### Bug Fixes - -* **eslint-plugin:** [consistent-indexed-object-style] do not report for circular references ([#4347](https://github.com/typescript-eslint/typescript-eslint/issues/4347)) ([6edebcd](https://github.com/typescript-eslint/typescript-eslint/commit/6edebcda00053eecf7b3e55eeb3fe5d7fb9e7db7)) -* **eslint-plugin:** [consistent-type-definitions] correct fixer with declare keyword ([#4334](https://github.com/typescript-eslint/typescript-eslint/issues/4334)) ([0cd911a](https://github.com/typescript-eslint/typescript-eslint/commit/0cd911a916805d3b1f8043584e4685f3edd5c427)) -* **eslint-plugin:** [padding-line-between-statements] make function overloading is also processed ([#4345](https://github.com/typescript-eslint/typescript-eslint/issues/4345)) ([d31ec26](https://github.com/typescript-eslint/typescript-eslint/commit/d31ec264fe5f5cd27e8f522a485e106889f2d380)) - - - - - -# [5.8.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.7.0...v5.8.0) (2021-12-20) - - -### Bug Fixes - -* **eslint-plugin:** [no-implied-eval] improve performance ([#4313](https://github.com/typescript-eslint/typescript-eslint/issues/4313)) ([e344596](https://github.com/typescript-eslint/typescript-eslint/commit/e3445967de6ed73e6b2334380236aed8a0ee6e4f)) -* **eslint-plugin:** [padding-line-between-statements] `type` StatementTypes can't differenciate from variable ([#4270](https://github.com/typescript-eslint/typescript-eslint/issues/4270)) ([bfc4324](https://github.com/typescript-eslint/typescript-eslint/commit/bfc4324f4cda24e30b2d39d5b70f7554f2b6bf81)) -* **eslint-plugin:** [strict-boolean-expression] false positive for truthy boolean ([#4275](https://github.com/typescript-eslint/typescript-eslint/issues/4275)) ([72c2e41](https://github.com/typescript-eslint/typescript-eslint/commit/72c2e418a4180f6db5795ebb42cbc095f5c53c37)) -* **eslint-plugin:** `array-type` mark `AST_NODE_TYPES.TSBigIntKeyword` as simple ([#4274](https://github.com/typescript-eslint/typescript-eslint/issues/4274)) ([74e544e](https://github.com/typescript-eslint/typescript-eslint/commit/74e544e487328e56fcb7aef048a78beaad593ea0)) -* **eslint-plugin:** handle method overloading in `semi` ([#4318](https://github.com/typescript-eslint/typescript-eslint/issues/4318)) ([3b87b49](https://github.com/typescript-eslint/typescript-eslint/commit/3b87b49ea8d62c2f4f3bee7494500b5ad44fcbc1)) -* **experimental-utils:** support immutable members ([#3844](https://github.com/typescript-eslint/typescript-eslint/issues/3844)) ([3d33a77](https://github.com/typescript-eslint/typescript-eslint/commit/3d33a77c57e5b752edf6f35ed152038bdb230b79)) - - -### Features - -* **eslint-plugin:** [no-throw-literal] add options to to disallow `any`/`unknown` ([#4207](https://github.com/typescript-eslint/typescript-eslint/issues/4207)) ([ff0adf9](https://github.com/typescript-eslint/typescript-eslint/commit/ff0adf9e0bfbf71667c51de0a84038586e4cbfd1)) -* **eslint-plugin:** [restrict-plus-operand] add allowAny option ([#4260](https://github.com/typescript-eslint/typescript-eslint/issues/4260)) ([2788545](https://github.com/typescript-eslint/typescript-eslint/commit/27885456c577dfada52d298857f406f0f332c405)) - - - - - -# [5.7.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.6.0...v5.7.0) (2021-12-13) - - -### Bug Fixes - -* **typescript-estree:** type-only regression for consumers not yet on TS 4.5 ([#4272](https://github.com/typescript-eslint/typescript-eslint/issues/4272)) ([550b61e](https://github.com/typescript-eslint/typescript-eslint/commit/550b61ee1096113b234bf035dd267ba385809961)) - - -### Features - -* **eslint-plugin:** [consistent-type-exports] support TS4.5 inline export specifiers ([#4236](https://github.com/typescript-eslint/typescript-eslint/issues/4236)) ([be4d976](https://github.com/typescript-eslint/typescript-eslint/commit/be4d976215614cc032730ae596d2f6e47df67730)) -* **eslint-plugin:** [consistent-type-imports] support TS4.5 inline import specifiers ([#4237](https://github.com/typescript-eslint/typescript-eslint/issues/4237)) ([f61af7c](https://github.com/typescript-eslint/typescript-eslint/commit/f61af7c53cca52f81e77b4334c7d6ad100609af6)) -* **eslint-plugin:** [no-shadow] support TS4.5 inline import specifiers ([#4239](https://github.com/typescript-eslint/typescript-eslint/issues/4239)) ([96b7e8e](https://github.com/typescript-eslint/typescript-eslint/commit/96b7e8ee0f5280cab50a7205ae592e1d983a111a)) - - - - - -# [5.6.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.5.0...v5.6.0) (2021-12-06) - - -### Features - -* **scope-manager:** support TS4.5 import/export specifier kind ([#4234](https://github.com/typescript-eslint/typescript-eslint/issues/4234)) ([833f822](https://github.com/typescript-eslint/typescript-eslint/commit/833f8221ce00aecb7d08c519bab9568353850f48)) -* **scope-manager:** update lib types ([#4240](https://github.com/typescript-eslint/typescript-eslint/issues/4240)) ([8377e6e](https://github.com/typescript-eslint/typescript-eslint/commit/8377e6ea422ee2d52455da8955ff055e09c238d3)) - - - - - -# [5.5.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.4.0...v5.5.0) (2021-11-29) - - -### Bug Fixes - -* **eslint-plugin:** [member-ordering] order literal names correctly in ([#4054](https://github.com/typescript-eslint/typescript-eslint/issues/4054)) ([d57141a](https://github.com/typescript-eslint/typescript-eslint/commit/d57141a3d13fad30a93ed99a6a15f4b0b369246a)) -* **eslint-plugin:** [no-duplicate-imports] remove unnecessary type checking for `node.source` ([#4196](https://github.com/typescript-eslint/typescript-eslint/issues/4196)) ([637722a](https://github.com/typescript-eslint/typescript-eslint/commit/637722a77667f6ed1e0cf1f0e752d61622ae8546)) -* **eslint-plugin:** [no-var-requires] do not report require created from createRequire ([#4221](https://github.com/typescript-eslint/typescript-eslint/issues/4221)) ([0040186](https://github.com/typescript-eslint/typescript-eslint/commit/0040186aa23692724986df22a71926e8a7ff9e02)) -* **eslint-plugin:** [prefer-for-of] do nor error when iterating over this ([#4176](https://github.com/typescript-eslint/typescript-eslint/issues/4176)) ([258ddb0](https://github.com/typescript-eslint/typescript-eslint/commit/258ddb0708b7a44959bd3ac399cbde912c8021c8)) -* **eslint-plugin:** [require-await] treat yield* asynciterable as an await ([#4125](https://github.com/typescript-eslint/typescript-eslint/issues/4125)) ([5a4ce6a](https://github.com/typescript-eslint/typescript-eslint/commit/5a4ce6a241b1d6c6caad87cad85c3741f0953e39)) -* **eslint-plugin:** remove all whitespaces in comparison [#4220](https://github.com/typescript-eslint/typescript-eslint/issues/4220) ([#4223](https://github.com/typescript-eslint/typescript-eslint/issues/4223)) ([853d799](https://github.com/typescript-eslint/typescript-eslint/commit/853d799428a061d9bf6a2e74b01dc49a1e4f3134)) -* **experimental-utils:** export RuleCreator interfaces ([#4199](https://github.com/typescript-eslint/typescript-eslint/issues/4199)) ([7821e4c](https://github.com/typescript-eslint/typescript-eslint/commit/7821e4c515ca2f11a14dcfa94dc77370da0287c5)) -* **experimental-utils:** fix types for eslint-utils ([#4173](https://github.com/typescript-eslint/typescript-eslint/issues/4173)) ([7079de2](https://github.com/typescript-eslint/typescript-eslint/commit/7079de26877a2313a7019845d4c33d0fc4d4b4a9)) -* **scope-manager:** support static class blocks ([#4211](https://github.com/typescript-eslint/typescript-eslint/issues/4211)) ([f8e9125](https://github.com/typescript-eslint/typescript-eslint/commit/f8e91256e0a721aaa906a5c40a92784da9433b53)) -* **visitor-keys:** add missing import assertion keys ([#4178](https://github.com/typescript-eslint/typescript-eslint/issues/4178)) ([9c38b7f](https://github.com/typescript-eslint/typescript-eslint/commit/9c38b7f7fc3ce471a8f720c4a2fbce01f3ee12a4)) - - -### Features - -* **eslint-plugin:** [member-ordering] add option to sort case insensitive ([#3896](https://github.com/typescript-eslint/typescript-eslint/issues/3896)) ([e3533d5](https://github.com/typescript-eslint/typescript-eslint/commit/e3533d5a6293a358b5eb0a6ed17da961a09b0ed3)) -* **eslint-plugin:** `array-type` distinguish whether readonly or not ([#4066](https://github.com/typescript-eslint/typescript-eslint/issues/4066)) ([314af44](https://github.com/typescript-eslint/typescript-eslint/commit/314af44bde3ccbebc620625b2931d77688525976)) - - - - - -# [5.4.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.3.1...v5.4.0) (2021-11-15) - - -### Bug Fixes - -* correct issues with circular imports ([#4140](https://github.com/typescript-eslint/typescript-eslint/issues/4140)) ([4c87b24](https://github.com/typescript-eslint/typescript-eslint/commit/4c87b2486a9c90794d972a4d093c1dc22ffb418b)) -* **eslint-plugin:** [explicit-member-accessibility] private fields cannot have accessibility modifiers ([#4117](https://github.com/typescript-eslint/typescript-eslint/issues/4117)) ([81b25c1](https://github.com/typescript-eslint/typescript-eslint/commit/81b25c12eceae89e181a7bdb3c8298d820cfe3e3)) -* **eslint-plugin:** [no-implied-eval] ignore locally declared functions ([#4049](https://github.com/typescript-eslint/typescript-eslint/issues/4049)) ([d97140e](https://github.com/typescript-eslint/typescript-eslint/commit/d97140ecf4aeb0a1f8b391f46a31881f21ad93c3)) -* **eslint-plugin:** check optional chaining for floating promises ([#4096](https://github.com/typescript-eslint/typescript-eslint/issues/4096)) ([d724777](https://github.com/typescript-eslint/typescript-eslint/commit/d7247770886c619263482c3e083bed9f97b22688)) -* landing page title duplication ([#4123](https://github.com/typescript-eslint/typescript-eslint/issues/4123)) ([844c25e](https://github.com/typescript-eslint/typescript-eslint/commit/844c25e7b6ef9d79aec99d538252e82557f012d3)) - - -### Features - -* add RuleCreator.withoutDocs ([#4136](https://github.com/typescript-eslint/typescript-eslint/issues/4136)) ([87cfc6a](https://github.com/typescript-eslint/typescript-eslint/commit/87cfc6ad3e3312d7b6f98a592fb37e69d5d6880a)) -* **experimental-utils:** add default [] for RuleModule TOptions generic ([#4135](https://github.com/typescript-eslint/typescript-eslint/issues/4135)) ([62b8098](https://github.com/typescript-eslint/typescript-eslint/commit/62b8098fa7d361954c170ee6c190e47e95194b13)) -* **typescript-estree:** support Import Assertions ([#4074](https://github.com/typescript-eslint/typescript-eslint/issues/4074)) ([ae0fb5a](https://github.com/typescript-eslint/typescript-eslint/commit/ae0fb5a591958216b7df656e66b1dfe464898167)) -* **typescript-estree:** support private fields in-in syntax ([#4075](https://github.com/typescript-eslint/typescript-eslint/issues/4075)) ([939d8ea](https://github.com/typescript-eslint/typescript-eslint/commit/939d8eac547fb1734aa00f1ea01cc6eae0b4280a)) -* **typescript-estree:** support type-only module specifiers ([#4076](https://github.com/typescript-eslint/typescript-eslint/issues/4076)) ([77baa92](https://github.com/typescript-eslint/typescript-eslint/commit/77baa9203638e888a76e21003a278a8da386e133)) - - - - - -## [5.3.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.3.0...v5.3.1) (2021-11-08) - -**Note:** Version bump only for package @typescript-eslint/typescript-eslint - - - - - -# [5.3.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.2.0...v5.3.0) (2021-11-01) - - -### Bug Fixes - -* **eslint-plugin:** ignore private identifiers in explicit-module-boundary-types ([#4046](https://github.com/typescript-eslint/typescript-eslint/issues/4046)) ([80b853d](https://github.com/typescript-eslint/typescript-eslint/commit/80b853db90ae3d4e32c4b7ec9d45a5c41dc459c9)) -* **eslint-plugin:** skip seenTypes for unions in isTypeReadonly ([#4043](https://github.com/typescript-eslint/typescript-eslint/issues/4043)) ([6af7ca7](https://github.com/typescript-eslint/typescript-eslint/commit/6af7ca7d9fde230342d27ad5a75a09a58c022974)) -* **experimental-utils:** add `name` property to test case interface ([#4067](https://github.com/typescript-eslint/typescript-eslint/issues/4067)) ([f3021c9](https://github.com/typescript-eslint/typescript-eslint/commit/f3021c94460e8d06e4169335bcc1a23854531f2a)) - - -### Features - -* **eslint-plugin:** [no-shadow] exclude external type declaration merging ([#3959](https://github.com/typescript-eslint/typescript-eslint/issues/3959)) ([a93cebf](https://github.com/typescript-eslint/typescript-eslint/commit/a93cebfc0f2026c50972bcb110bcd3295ba9a44d)) -* **experimental-utils:** extract `isTokenOfTypeWithConditions` out of `ast-utils`' `predicates` ([#3977](https://github.com/typescript-eslint/typescript-eslint/issues/3977)) ([5229597](https://github.com/typescript-eslint/typescript-eslint/commit/5229597d9bfc998852c4b4fb421859e8f3d3d688)) - - - - - -# [5.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.1.0...v5.2.0) (2021-10-25) - - -### Bug Fixes - -* **eslint-plugin:** [typedef] fix regression with class properties ([#4034](https://github.com/typescript-eslint/typescript-eslint/issues/4034)) ([fe53d22](https://github.com/typescript-eslint/typescript-eslint/commit/fe53d22f57ad418397fb31fa89c97db0ab4cd6c0)), closes [#4033](https://github.com/typescript-eslint/typescript-eslint/issues/4033) - - -### Features - -* **eslint-plugin:** adding `consistent-type-exports` rule ([#3936](https://github.com/typescript-eslint/typescript-eslint/issues/3936)) ([1971a3f](https://github.com/typescript-eslint/typescript-eslint/commit/1971a3f8027416cd1fb33b1d50faa035599917de)) - - - - - -# [5.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.0.0...v5.1.0) (2021-10-18) - - -### Bug Fixes - -* **eslint-plugin:** [no-restricted-imports]: report type-only imports properly ([#3996](https://github.com/typescript-eslint/typescript-eslint/issues/3996)) ([283cdf2](https://github.com/typescript-eslint/typescript-eslint/commit/283cdf26e6b32985531ff6416cd13ef4cb0a3c8c)) -* **eslint-plugin:** [strict-bool-expr] treat unconstrained generic as any ([#3981](https://github.com/typescript-eslint/typescript-eslint/issues/3981)) ([9b29ca7](https://github.com/typescript-eslint/typescript-eslint/commit/9b29ca751f496c25240c0c14b8fa432bf4443d39)) -* **typescript-estree:** support private optional property definition ([#3997](https://github.com/typescript-eslint/typescript-eslint/issues/3997)) ([8605e08](https://github.com/typescript-eslint/typescript-eslint/commit/8605e080a4dac4a277e6108cd9ed1e5a707302fa)) - - -### Features - -* **experimental-utils:** extract `ast-utils`' `predicates`' helpers ([#3976](https://github.com/typescript-eslint/typescript-eslint/issues/3976)) ([154ec9a](https://github.com/typescript-eslint/typescript-eslint/commit/154ec9aea8e81732cafe36af97c4822f1591b077)) - - - - - -# [5.0.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.33.0...v5.0.0) (2021-10-11) - - -### Bug Fixes - -* **eslint-plugin:** [explicit-member-accessibility] report `TSAbstractPropertyDefinition` and `TSAbstractMethodDefinition` properly ([#3901](https://github.com/typescript-eslint/typescript-eslint/issues/3901)) ([82016f9](https://github.com/typescript-eslint/typescript-eslint/commit/82016f99b14825c9c60e1f7eb3b4efcc492bba86)) -* **eslint-plugin:** update new rules from master ([#3840](https://github.com/typescript-eslint/typescript-eslint/issues/3840)) ([d88a6b4](https://github.com/typescript-eslint/typescript-eslint/commit/d88a6b44eedcf9dd59569160570aa118851aa86b)) -* update new rules from master ([b34fb7e](https://github.com/typescript-eslint/typescript-eslint/commit/b34fb7eb3102ea603bb4aef0dbbf9885b3d47557)) -* **eslint-plugin:** crash in no-dupe-class-members (v5) ([#3813](https://github.com/typescript-eslint/typescript-eslint/issues/3813)) ([4b09644](https://github.com/typescript-eslint/typescript-eslint/commit/4b096442f731c0a60926ac0391a4f2c4208aa8d4)) -* **experimental-utils:** fix `isSetter`'s return type ([#3975](https://github.com/typescript-eslint/typescript-eslint/issues/3975)) ([d256856](https://github.com/typescript-eslint/typescript-eslint/commit/d2568561d0417fdfbdfd964ad942f9d00434af73)) -* **typescript-estree:** change `source` of ExportNamedDeclaration to Literal from Expression ([#3763](https://github.com/typescript-eslint/typescript-eslint/issues/3763)) ([dc5a0f5](https://github.com/typescript-eslint/typescript-eslint/commit/dc5a0f5104b400f4422b8d67ecfc6cc7a32613a2)) - - -### Features - -* **ast-spec:** bring `Node` objects in line with ESTree ([#3771](https://github.com/typescript-eslint/typescript-eslint/issues/3771)) ([dd14064](https://github.com/typescript-eslint/typescript-eslint/commit/dd140643b457aa515cc21fcda2b3cd4acc2a1c5c)) -* **eslint-plugin:** remove `object` from `ban-types`' default types ([#3818](https://github.com/typescript-eslint/typescript-eslint/issues/3818)) ([ae3fa90](https://github.com/typescript-eslint/typescript-eslint/commit/ae3fa900d5b4e1f557a52ca58d35a7d098d9efaf)) -* **eslint-plugin:** removed value from abstract property nodes ([#3765](https://github.com/typescript-eslint/typescript-eslint/issues/3765)) ([5823524](https://github.com/typescript-eslint/typescript-eslint/commit/58235241714596b641a1e8b39c569e561e0039b4)), closes [#3748](https://github.com/typescript-eslint/typescript-eslint/issues/3748) -* **eslint-plugin:** update recommended configs ([#3809](https://github.com/typescript-eslint/typescript-eslint/issues/3809)) ([deeb7bb](https://github.com/typescript-eslint/typescript-eslint/commit/deeb7bb9334d301c6af56aefd37d318231af11ef)) -* align class property representation with ESTree ([#3806](https://github.com/typescript-eslint/typescript-eslint/issues/3806)) ([22fa5c0](https://github.com/typescript-eslint/typescript-eslint/commit/22fa5c0c4705ed2898f00b7cacc5dd642d859275)), closes [#3430](https://github.com/typescript-eslint/typescript-eslint/issues/3430) [#3077](https://github.com/typescript-eslint/typescript-eslint/issues/3077) -* remove `meta.docs.category` from rules ([#3800](https://github.com/typescript-eslint/typescript-eslint/issues/3800)) ([71c9370](https://github.com/typescript-eslint/typescript-eslint/commit/71c93706e55f5f92a1285102b93c6ab1950c6df4)) -* remove `TSParenthesizedType` ([#3340](https://github.com/typescript-eslint/typescript-eslint/issues/3340)) ([c8ee432](https://github.com/typescript-eslint/typescript-eslint/commit/c8ee43269faea4c04ec02eaa2b81a0aa6eec5d3e)), closes [#3136](https://github.com/typescript-eslint/typescript-eslint/issues/3136) -* support `PrivateIdentifier` ([#3808](https://github.com/typescript-eslint/typescript-eslint/issues/3808)) ([0eefe5e](https://github.com/typescript-eslint/typescript-eslint/commit/0eefe5e49d21af3f1e3e2d9a90c2e49929863ac2)), closes [#3430](https://github.com/typescript-eslint/typescript-eslint/issues/3430) [#2933](https://github.com/typescript-eslint/typescript-eslint/issues/2933) -* **eslint-plugin:** [comma-dangle] align schema with ESLint v8 ([#3768](https://github.com/typescript-eslint/typescript-eslint/issues/3768)) ([0acfafc](https://github.com/typescript-eslint/typescript-eslint/commit/0acfafcc655e28dcfc05a5caa567c0d0217ee7ad)) -* **eslint-plugin:** [member-ordering] add support for getters and setters ([#3611](https://github.com/typescript-eslint/typescript-eslint/issues/3611)) ([e264124](https://github.com/typescript-eslint/typescript-eslint/commit/e2641246571b69df36cde5cb7bce7c4fffc43f98)) -* **eslint-plugin:** remove `no-unused-vars-experimental` ([79ae03b](https://github.com/typescript-eslint/typescript-eslint/commit/79ae03b8adbae2b0a86276711a9c834af01bbb61)) -* **experimental-utils:** extract `isNodeOfTypes` out of `ast-utils`' `predicates` ([#3836](https://github.com/typescript-eslint/typescript-eslint/issues/3836)) ([0cc509b](https://github.com/typescript-eslint/typescript-eslint/commit/0cc509b61df248cfb4b42fe64ec800f3cac69c69)) -* **typescript-estree:** remove legacy `useJSXTextNode` option ([#3109](https://github.com/typescript-eslint/typescript-eslint/issues/3109)) ([5b84b98](https://github.com/typescript-eslint/typescript-eslint/commit/5b84b98fb3cf68d944b7d4e970f39f4e88f0b2d5)) -* support ESLint v8 ([#3737](https://github.com/typescript-eslint/typescript-eslint/issues/3737)) ([4ca62ae](https://github.com/typescript-eslint/typescript-eslint/commit/4ca62aee6681d706e762a8db727541ca204364f2)) -* **experimental-utils:** remove `getComments` from `ESLint` `SourceCode` types ([#3766](https://github.com/typescript-eslint/typescript-eslint/issues/3766)) ([165a507](https://github.com/typescript-eslint/typescript-eslint/commit/165a507970d8e4a0ed12abdd5f0d892f7de83ffe)) - - -### BREAKING CHANGES - -* **eslint-plugin:** `ban-types` no longer reports `object` by default - - - - - -# [4.33.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.32.0...v4.33.0) (2021-10-04) - - -### Bug Fixes - -* **eslint-plugin:** [lines-between-class-members] fix `exceptAfterOverload` for abstract methods ([#3943](https://github.com/typescript-eslint/typescript-eslint/issues/3943)) ([240fc65](https://github.com/typescript-eslint/typescript-eslint/commit/240fc65c307769eae9b35e611fca74ba4c35a025)) -* **eslint-plugin:** [no-confusing-void-expression] support optional chaining ([#3937](https://github.com/typescript-eslint/typescript-eslint/issues/3937)) ([c40dd13](https://github.com/typescript-eslint/typescript-eslint/commit/c40dd13df76b77052c85254622df5533307dc07e)) -* **eslint-plugin:** [no-restricted-imports] fix crash when no options given ([#3947](https://github.com/typescript-eslint/typescript-eslint/issues/3947)) ([edaa3c1](https://github.com/typescript-eslint/typescript-eslint/commit/edaa3c10eb67bb89f9c6a78bd1ed593925c33f16)) -* **eslint-plugin:** [non-nullable-type-assertion-style] false-positive with non-nullish `as` assertions and types ([#3940](https://github.com/typescript-eslint/typescript-eslint/issues/3940)) ([40760f9](https://github.com/typescript-eslint/typescript-eslint/commit/40760f98da0d23c7bce3da04cf37a56c10447bde)) -* **eslint-plugin:** [padding-line-between-statements] TSModuleBlock should change scope ([#3944](https://github.com/typescript-eslint/typescript-eslint/issues/3944)) ([f8f534e](https://github.com/typescript-eslint/typescript-eslint/commit/f8f534e42b0ec517274442422c37ab019cf3c200)) -* **eslint-plugin:** [prefer-regexp-exec] check `RegExp` without flags ([#3946](https://github.com/typescript-eslint/typescript-eslint/issues/3946)) ([0868725](https://github.com/typescript-eslint/typescript-eslint/commit/0868725713e8102e8932303d4c680340688e1fa9)) -* **experimental-utils:** add `getPhysicalFilename()` to `RuleContext` ([#3934](https://github.com/typescript-eslint/typescript-eslint/issues/3934)) ([ee5dfd4](https://github.com/typescript-eslint/typescript-eslint/commit/ee5dfd4989ab465d65ba3424e36b7f0964558191)) -* **experimental-utils:** require fix in suggestions ([#3949](https://github.com/typescript-eslint/typescript-eslint/issues/3949)) ([f022fb1](https://github.com/typescript-eslint/typescript-eslint/commit/f022fb14c71dad25be2314252eb751964f34fcb8)) - - -### Features - -* **experimental-utils:** extract `isNodeOfTypeWithConditions` out of `ast-utils`' `predicates` ([#3837](https://github.com/typescript-eslint/typescript-eslint/issues/3837)) ([214f898](https://github.com/typescript-eslint/typescript-eslint/commit/214f898178ba593146d06a444487d32ec3363854)) - - - - - -# [4.32.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.31.2...v4.32.0) (2021-09-27) - - -### Bug Fixes - -* **eslint-plugin:** [consistent-type-definitions] correct fix for `export default` ([#3899](https://github.com/typescript-eslint/typescript-eslint/issues/3899)) ([ebb33ed](https://github.com/typescript-eslint/typescript-eslint/commit/ebb33ed8bc29f69ca2a657ec5b31857c0aeb4b56)) -* **eslint-plugin:** [no-require-imports] report only global `require` ([#3871](https://github.com/typescript-eslint/typescript-eslint/issues/3871)) ([8aa87a1](https://github.com/typescript-eslint/typescript-eslint/commit/8aa87a136e7cd7b40fbf09fcfa26bf04d1c6d5fe)) -* **eslint-plugin:** [no-shadow] ignore type-only imports properly ([#3868](https://github.com/typescript-eslint/typescript-eslint/issues/3868)) ([dda9cee](https://github.com/typescript-eslint/typescript-eslint/commit/dda9cee68a5cd78b358a854027999c739ac623e9)) -* **eslint-plugin:** [no-var-requires] report problems within `NewExpression` ([#3884](https://github.com/typescript-eslint/typescript-eslint/issues/3884)) ([ed5e459](https://github.com/typescript-eslint/typescript-eslint/commit/ed5e45983fa052accf3a7b5fcdbfcb15ed09490f)) -* **eslint-plugin:** [padding-line-between-statements] problems within namespaces not being reported ([#3869](https://github.com/typescript-eslint/typescript-eslint/issues/3869)) ([1861356](https://github.com/typescript-eslint/typescript-eslint/commit/186135698b40b510ffff6a2402aa34f2726596ea)) -* **eslint-plugin:** [prefer-regexp-exec] respect flags when using `RegExp` ([#3855](https://github.com/typescript-eslint/typescript-eslint/issues/3855)) ([ffdb5ff](https://github.com/typescript-eslint/typescript-eslint/commit/ffdb5ff9900e07374a2f3686447e3e2c78fbc38a)) -* **eslint-plugin:** [prefer-return-this-type] handle generics properly in fixer ([#3852](https://github.com/typescript-eslint/typescript-eslint/issues/3852)) ([9e98b8f](https://github.com/typescript-eslint/typescript-eslint/commit/9e98b8f43ca6aadc9758a4e9a0d1d3c250af6cca)) -* **eslint-plugin:** false-positive/negative with array index in no-unnecessary-condition ([#3805](https://github.com/typescript-eslint/typescript-eslint/issues/3805)) ([bdb8f0b](https://github.com/typescript-eslint/typescript-eslint/commit/bdb8f0be1466e4a4b713e91199be91030650ed01)) -* **experimental-utils:** add missing signature for `isParenthesized` ([#3887](https://github.com/typescript-eslint/typescript-eslint/issues/3887)) ([806eaac](https://github.com/typescript-eslint/typescript-eslint/commit/806eaac6af5325664634690e9ebd7ffaed276549)) - - -### Features - -* **eslint-plugin:** [no-type-alias]: add allowGenerics option ([#3865](https://github.com/typescript-eslint/typescript-eslint/issues/3865)) ([4195919](https://github.com/typescript-eslint/typescript-eslint/commit/41959199735a6d4fe3ae7825f3087e8fb249be9f)) -* **eslint-plugin:** add `no-non-null-asserted-nullish-coalescing` rule ([#3349](https://github.com/typescript-eslint/typescript-eslint/issues/3349)) ([4e99961](https://github.com/typescript-eslint/typescript-eslint/commit/4e999614e9761f6dc7e5aa0c5bad76ab164ab3fb)) -* **eslint-plugin:** add new extended rule `no-restricted-imports` ([#3775](https://github.com/typescript-eslint/typescript-eslint/issues/3775)) ([ec5d506](https://github.com/typescript-eslint/typescript-eslint/commit/ec5d50696b249a207d322e4a2fc66582122eb010)) -* **eslint-plugin-internal:** [prefer-ast-types-enum] add `DefinitionType` enum ([#3916](https://github.com/typescript-eslint/typescript-eslint/issues/3916)) ([13b7de5](https://github.com/typescript-eslint/typescript-eslint/commit/13b7de508e0f8eac492879ff9ab99acd8d3e977e)) -* Support `'latest'` as `ecmaVersion` ([#3873](https://github.com/typescript-eslint/typescript-eslint/issues/3873)) ([25a42c0](https://github.com/typescript-eslint/typescript-eslint/commit/25a42c0bbe92d1ecbc2e8ff9ef3a3ef413f728b0)) - - - - - -## [4.31.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.31.1...v4.31.2) (2021-09-20) - -**Note:** Version bump only for package @typescript-eslint/typescript-eslint - - - - - -## [4.31.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.31.0...v4.31.1) (2021-09-13) - -**Note:** Version bump only for package @typescript-eslint/typescript-eslint - - - - - -# [4.31.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.30.0...v4.31.0) (2021-09-06) - - -### Bug Fixes - -* **ast-spec:** remove duplicate union types from `Expression` ([#3770](https://github.com/typescript-eslint/typescript-eslint/issues/3770)) ([463e768](https://github.com/typescript-eslint/typescript-eslint/commit/463e768978731d019345f6552d7fd7a073a80192)) -* **utils:** support immutable arrays in `ReportFixFunction` ([#3830](https://github.com/typescript-eslint/typescript-eslint/issues/3830)) ([8218055](https://github.com/typescript-eslint/typescript-eslint/commit/8218055d6dfd94c9e6c8645848f981d9d51ce08c)) - - -### Features - -* **eslint-plugin:** [prefer-readonly-parameter-types] add option treatMethodsAsReadonly ([#3733](https://github.com/typescript-eslint/typescript-eslint/issues/3733)) ([a46e318](https://github.com/typescript-eslint/typescript-eslint/commit/a46e3182c8a0b07c914605d6d9fe28ef36a7c32a)) -* **eslint-plugin:** [restrict-template-expressions] add option to allow RegExp ([#3709](https://github.com/typescript-eslint/typescript-eslint/issues/3709)) ([363b3dc](https://github.com/typescript-eslint/typescript-eslint/commit/363b3dc4dd0dc343311c729d75935b10f9d2fd5e)) -* **eslint-plugin:** add `no-meaningless-void-operator` rule ([#3641](https://github.com/typescript-eslint/typescript-eslint/issues/3641)) ([ea40ab6](https://github.com/typescript-eslint/typescript-eslint/commit/ea40ab659351ae7cf7235ea063d42ac155b11e5f)) -* **eslint-plugin:** add extension rule `padding-line-between-statements` ([#3418](https://github.com/typescript-eslint/typescript-eslint/issues/3418)) ([f79ae9b](https://github.com/typescript-eslint/typescript-eslint/commit/f79ae9b58e82f4fddef640a34a1d7ff92b763e65)) -* **experimental-utils:** extract `isNodeOfType` out of `ast-utils`' `predicates` ([#3677](https://github.com/typescript-eslint/typescript-eslint/issues/3677)) ([4bfa437](https://github.com/typescript-eslint/typescript-eslint/commit/4bfa4375aff8f65057d4aa116e435803cbc6b464)) - - - - - -# [4.30.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.29.3...v4.30.0) (2021-08-30) - - -### Bug Fixes - -* **eslint-plugin:** [dot-notation] false positive with optional chaining ([#3711](https://github.com/typescript-eslint/typescript-eslint/issues/3711)) ([c19fc6e](https://github.com/typescript-eslint/typescript-eslint/commit/c19fc6e03072ed549bc9b35ebe6961e10f8f9b43)), closes [#3510](https://github.com/typescript-eslint/typescript-eslint/issues/3510) -* **eslint-plugin:** [prefer-reduce-type-parameter] handle already existing type params ([#3706](https://github.com/typescript-eslint/typescript-eslint/issues/3706)) ([71dd273](https://github.com/typescript-eslint/typescript-eslint/commit/71dd27361a1bc93b5d5eb2279d805922b10002fd)) -* **eslint-plugin:** isTypeReadonly error with unknown ([#2371](https://github.com/typescript-eslint/typescript-eslint/issues/2371)) ([e7528e6](https://github.com/typescript-eslint/typescript-eslint/commit/e7528e686f5fe5cce8504fc15d3cd06b8733712e)) -* **typescript-estree:** support TSv4 labelled tuple members ([#2378](https://github.com/typescript-eslint/typescript-eslint/issues/2378)) ([00d84ff](https://github.com/typescript-eslint/typescript-eslint/commit/00d84ffbcbe9d0ec98bdb2f2ce59959a27ce4dbe)) - - - +- **ast-spec:** bring `Node` objects in line with ESTree ([#3771](https://github.com/typescript-eslint/typescript-eslint/issues/3771)) ([dd14064](https://github.com/typescript-eslint/typescript-eslint/commit/dd140643b457aa515cc21fcda2b3cd4acc2a1c5c)) +- **eslint-plugin:** remove `object` from `ban-types`' default types ([#3818](https://github.com/typescript-eslint/typescript-eslint/issues/3818)) ([ae3fa90](https://github.com/typescript-eslint/typescript-eslint/commit/ae3fa900d5b4e1f557a52ca58d35a7d098d9efaf)) +- **eslint-plugin:** removed value from abstract property nodes ([#3765](https://github.com/typescript-eslint/typescript-eslint/issues/3765)) ([5823524](https://github.com/typescript-eslint/typescript-eslint/commit/58235241714596b641a1e8b39c569e561e0039b4)), closes [#3748](https://github.com/typescript-eslint/typescript-eslint/issues/3748) +- **eslint-plugin:** update recommended configs ([#3809](https://github.com/typescript-eslint/typescript-eslint/issues/3809)) ([deeb7bb](https://github.com/typescript-eslint/typescript-eslint/commit/deeb7bb9334d301c6af56aefd37d318231af11ef)) +- align class property representation with ESTree ([#3806](https://github.com/typescript-eslint/typescript-eslint/issues/3806)) ([22fa5c0](https://github.com/typescript-eslint/typescript-eslint/commit/22fa5c0c4705ed2898f00b7cacc5dd642d859275)), closes [#3430](https://github.com/typescript-eslint/typescript-eslint/issues/3430) [#3077](https://github.com/typescript-eslint/typescript-eslint/issues/3077) +- remove `meta.docs.category` from rules ([#3800](https://github.com/typescript-eslint/typescript-eslint/issues/3800)) ([71c9370](https://github.com/typescript-eslint/typescript-eslint/commit/71c93706e55f5f92a1285102b93c6ab1950c6df4)) +- remove `TSParenthesizedType` ([#3340](https://github.com/typescript-eslint/typescript-eslint/issues/3340)) ([c8ee432](https://github.com/typescript-eslint/typescript-eslint/commit/c8ee43269faea4c04ec02eaa2b81a0aa6eec5d3e)), closes [#3136](https://github.com/typescript-eslint/typescript-eslint/issues/3136) +- support `PrivateIdentifier` ([#3808](https://github.com/typescript-eslint/typescript-eslint/issues/3808)) ([0eefe5e](https://github.com/typescript-eslint/typescript-eslint/commit/0eefe5e49d21af3f1e3e2d9a90c2e49929863ac2)), closes [#3430](https://github.com/typescript-eslint/typescript-eslint/issues/3430) [#2933](https://github.com/typescript-eslint/typescript-eslint/issues/2933) +- **eslint-plugin:** [comma-dangle] align schema with ESLint v8 ([#3768](https://github.com/typescript-eslint/typescript-eslint/issues/3768)) ([0acfafc](https://github.com/typescript-eslint/typescript-eslint/commit/0acfafcc655e28dcfc05a5caa567c0d0217ee7ad)) +- **eslint-plugin:** [member-ordering] add support for getters and setters ([#3611](https://github.com/typescript-eslint/typescript-eslint/issues/3611)) ([e264124](https://github.com/typescript-eslint/typescript-eslint/commit/e2641246571b69df36cde5cb7bce7c4fffc43f98)) +- **eslint-plugin:** remove `no-unused-vars-experimental` ([79ae03b](https://github.com/typescript-eslint/typescript-eslint/commit/79ae03b8adbae2b0a86276711a9c834af01bbb61)) +- **experimental-utils:** extract `isNodeOfTypes` out of `ast-utils`' `predicates` ([#3836](https://github.com/typescript-eslint/typescript-eslint/issues/3836)) ([0cc509b](https://github.com/typescript-eslint/typescript-eslint/commit/0cc509b61df248cfb4b42fe64ec800f3cac69c69)) +- **typescript-estree:** remove legacy `useJSXTextNode` option ([#3109](https://github.com/typescript-eslint/typescript-eslint/issues/3109)) ([5b84b98](https://github.com/typescript-eslint/typescript-eslint/commit/5b84b98fb3cf68d944b7d4e970f39f4e88f0b2d5)) +- support ESLint v8 ([#3737](https://github.com/typescript-eslint/typescript-eslint/issues/3737)) ([4ca62ae](https://github.com/typescript-eslint/typescript-eslint/commit/4ca62aee6681d706e762a8db727541ca204364f2)) +- **experimental-utils:** remove `getComments` from `ESLint` `SourceCode` types ([#3766](https://github.com/typescript-eslint/typescript-eslint/issues/3766)) ([165a507](https://github.com/typescript-eslint/typescript-eslint/commit/165a507970d8e4a0ed12abdd5f0d892f7de83ffe)) +### BREAKING CHANGES -# [3.8.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.7.1...v3.8.0) (2020-08-03) +- **eslint-plugin:** `ban-types` no longer reports `object` by default +# [4.33.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.32.0...v4.33.0) (2021-10-04) ### Bug Fixes -* **eslint-plugin:** [no-implied-eval] don't report when `Function` is imported ([#2348](https://github.com/typescript-eslint/typescript-eslint/issues/2348)) ([fa169e7](https://github.com/typescript-eslint/typescript-eslint/commit/fa169e79661821f0e0e64a56d6db9da42c3c8654)) -* **eslint-plugin:** [no-unsafe-assignment] fix typo in message ([#2347](https://github.com/typescript-eslint/typescript-eslint/issues/2347)) ([2027bb1](https://github.com/typescript-eslint/typescript-eslint/commit/2027bb11689b76c297f93ba8a918b35fe68e5b9d)) - +- **eslint-plugin:** [lines-between-class-members] fix `exceptAfterOverload` for abstract methods ([#3943](https://github.com/typescript-eslint/typescript-eslint/issues/3943)) ([240fc65](https://github.com/typescript-eslint/typescript-eslint/commit/240fc65c307769eae9b35e611fca74ba4c35a025)) +- **eslint-plugin:** [no-confusing-void-expression] support optional chaining ([#3937](https://github.com/typescript-eslint/typescript-eslint/issues/3937)) ([c40dd13](https://github.com/typescript-eslint/typescript-eslint/commit/c40dd13df76b77052c85254622df5533307dc07e)) +- **eslint-plugin:** [no-restricted-imports] fix crash when no options given ([#3947](https://github.com/typescript-eslint/typescript-eslint/issues/3947)) ([edaa3c1](https://github.com/typescript-eslint/typescript-eslint/commit/edaa3c10eb67bb89f9c6a78bd1ed593925c33f16)) +- **eslint-plugin:** [non-nullable-type-assertion-style] false-positive with non-nullish `as` assertions and types ([#3940](https://github.com/typescript-eslint/typescript-eslint/issues/3940)) ([40760f9](https://github.com/typescript-eslint/typescript-eslint/commit/40760f98da0d23c7bce3da04cf37a56c10447bde)) +- **eslint-plugin:** [padding-line-between-statements] TSModuleBlock should change scope ([#3944](https://github.com/typescript-eslint/typescript-eslint/issues/3944)) ([f8f534e](https://github.com/typescript-eslint/typescript-eslint/commit/f8f534e42b0ec517274442422c37ab019cf3c200)) +- **eslint-plugin:** [prefer-regexp-exec] check `RegExp` without flags ([#3946](https://github.com/typescript-eslint/typescript-eslint/issues/3946)) ([0868725](https://github.com/typescript-eslint/typescript-eslint/commit/0868725713e8102e8932303d4c680340688e1fa9)) +- **experimental-utils:** add `getPhysicalFilename()` to `RuleContext` ([#3934](https://github.com/typescript-eslint/typescript-eslint/issues/3934)) ([ee5dfd4](https://github.com/typescript-eslint/typescript-eslint/commit/ee5dfd4989ab465d65ba3424e36b7f0964558191)) +- **experimental-utils:** require fix in suggestions ([#3949](https://github.com/typescript-eslint/typescript-eslint/issues/3949)) ([f022fb1](https://github.com/typescript-eslint/typescript-eslint/commit/f022fb14c71dad25be2314252eb751964f34fcb8)) ### Features -* **eslint-plugin:** [naming-convention] allow specifying an array of selectors ([#2335](https://github.com/typescript-eslint/typescript-eslint/issues/2335)) ([3ef6bd5](https://github.com/typescript-eslint/typescript-eslint/commit/3ef6bd5cadc225e42ef1330d15919a39f53f2a2b)) -* **eslint-plugin:** add `prefer-enum-initializers` rule ([#2326](https://github.com/typescript-eslint/typescript-eslint/issues/2326)) ([4f38ea3](https://github.com/typescript-eslint/typescript-eslint/commit/4f38ea39c97289db11501d6368d01db8c5787257)) +- **experimental-utils:** extract `isNodeOfTypeWithConditions` out of `ast-utils`' `predicates` ([#3837](https://github.com/typescript-eslint/typescript-eslint/issues/3837)) ([214f898](https://github.com/typescript-eslint/typescript-eslint/commit/214f898178ba593146d06a444487d32ec3363854)) +# [4.32.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.31.2...v4.32.0) (2021-09-27) +### Bug Fixes +- **eslint-plugin:** [consistent-type-definitions] correct fix for `export default` ([#3899](https://github.com/typescript-eslint/typescript-eslint/issues/3899)) ([ebb33ed](https://github.com/typescript-eslint/typescript-eslint/commit/ebb33ed8bc29f69ca2a657ec5b31857c0aeb4b56)) +- **eslint-plugin:** [no-require-imports] report only global `require` ([#3871](https://github.com/typescript-eslint/typescript-eslint/issues/3871)) ([8aa87a1](https://github.com/typescript-eslint/typescript-eslint/commit/8aa87a136e7cd7b40fbf09fcfa26bf04d1c6d5fe)) +- **eslint-plugin:** [no-shadow] ignore type-only imports properly ([#3868](https://github.com/typescript-eslint/typescript-eslint/issues/3868)) ([dda9cee](https://github.com/typescript-eslint/typescript-eslint/commit/dda9cee68a5cd78b358a854027999c739ac623e9)) +- **eslint-plugin:** [no-var-requires] report problems within `NewExpression` ([#3884](https://github.com/typescript-eslint/typescript-eslint/issues/3884)) ([ed5e459](https://github.com/typescript-eslint/typescript-eslint/commit/ed5e45983fa052accf3a7b5fcdbfcb15ed09490f)) +- **eslint-plugin:** [padding-line-between-statements] problems within namespaces not being reported ([#3869](https://github.com/typescript-eslint/typescript-eslint/issues/3869)) ([1861356](https://github.com/typescript-eslint/typescript-eslint/commit/186135698b40b510ffff6a2402aa34f2726596ea)) +- **eslint-plugin:** [prefer-regexp-exec] respect flags when using `RegExp` ([#3855](https://github.com/typescript-eslint/typescript-eslint/issues/3855)) ([ffdb5ff](https://github.com/typescript-eslint/typescript-eslint/commit/ffdb5ff9900e07374a2f3686447e3e2c78fbc38a)) +- **eslint-plugin:** [prefer-return-this-type] handle generics properly in fixer ([#3852](https://github.com/typescript-eslint/typescript-eslint/issues/3852)) ([9e98b8f](https://github.com/typescript-eslint/typescript-eslint/commit/9e98b8f43ca6aadc9758a4e9a0d1d3c250af6cca)) +- **eslint-plugin:** false-positive/negative with array index in no-unnecessary-condition ([#3805](https://github.com/typescript-eslint/typescript-eslint/issues/3805)) ([bdb8f0b](https://github.com/typescript-eslint/typescript-eslint/commit/bdb8f0be1466e4a4b713e91199be91030650ed01)) +- **experimental-utils:** add missing signature for `isParenthesized` ([#3887](https://github.com/typescript-eslint/typescript-eslint/issues/3887)) ([806eaac](https://github.com/typescript-eslint/typescript-eslint/commit/806eaac6af5325664634690e9ebd7ffaed276549)) +### Features -## [3.7.1](https://github.com/typescript-eslint/typescript-eslint/compare/v3.7.0...v3.7.1) (2020-07-27) +- **eslint-plugin:** [no-type-alias]: add allowGenerics option ([#3865](https://github.com/typescript-eslint/typescript-eslint/issues/3865)) ([4195919](https://github.com/typescript-eslint/typescript-eslint/commit/41959199735a6d4fe3ae7825f3087e8fb249be9f)) +- **eslint-plugin:** add `no-non-null-asserted-nullish-coalescing` rule ([#3349](https://github.com/typescript-eslint/typescript-eslint/issues/3349)) ([4e99961](https://github.com/typescript-eslint/typescript-eslint/commit/4e999614e9761f6dc7e5aa0c5bad76ab164ab3fb)) +- **eslint-plugin:** add new extended rule `no-restricted-imports` ([#3775](https://github.com/typescript-eslint/typescript-eslint/issues/3775)) ([ec5d506](https://github.com/typescript-eslint/typescript-eslint/commit/ec5d50696b249a207d322e4a2fc66582122eb010)) +- **eslint-plugin-internal:** [prefer-ast-types-enum] add `DefinitionType` enum ([#3916](https://github.com/typescript-eslint/typescript-eslint/issues/3916)) ([13b7de5](https://github.com/typescript-eslint/typescript-eslint/commit/13b7de508e0f8eac492879ff9ab99acd8d3e977e)) +- Support `'latest'` as `ecmaVersion` ([#3873](https://github.com/typescript-eslint/typescript-eslint/issues/3873)) ([25a42c0](https://github.com/typescript-eslint/typescript-eslint/commit/25a42c0bbe92d1ecbc2e8ff9ef3a3ef413f728b0)) +## [4.31.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.31.1...v4.31.2) (2021-09-20) -### Bug Fixes +**Note:** Version bump only for package @typescript-eslint/typescript-eslint -* **eslint-plugin:** [adjacent-overload-signatures] fix false positive on call signatures and a method named `call` ([#2313](https://github.com/typescript-eslint/typescript-eslint/issues/2313)) ([30fafb0](https://github.com/typescript-eslint/typescript-eslint/commit/30fafb09422b3aca881f4785d89b0536092d4952)) -* **eslint-plugin:** [no-extra-parens] stop reporting on calling generic functions with one argument and type parameters containing parentheses ([#2319](https://github.com/typescript-eslint/typescript-eslint/issues/2319)) ([616a841](https://github.com/typescript-eslint/typescript-eslint/commit/616a841032bec310d9f31f1c987888273df27008)) -* **typescript-estree:** correct AST regression introduced by TS4.0 upgrade ([#2316](https://github.com/typescript-eslint/typescript-eslint/issues/2316)) ([d7fefba](https://github.com/typescript-eslint/typescript-eslint/commit/d7fefba3741a526ff2b58dd713995c3ee5603962)) +## [4.31.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.31.0...v4.31.1) (2021-09-13) +**Note:** Version bump only for package @typescript-eslint/typescript-eslint +# [4.31.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.30.0...v4.31.0) (2021-09-06) +### Bug Fixes +- **ast-spec:** remove duplicate union types from `Expression` ([#3770](https://github.com/typescript-eslint/typescript-eslint/issues/3770)) ([463e768](https://github.com/typescript-eslint/typescript-eslint/commit/463e768978731d019345f6552d7fd7a073a80192)) +- **utils:** support immutable arrays in `ReportFixFunction` ([#3830](https://github.com/typescript-eslint/typescript-eslint/issues/3830)) ([8218055](https://github.com/typescript-eslint/typescript-eslint/commit/8218055d6dfd94c9e6c8645848f981d9d51ce08c)) -# [3.7.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.6.1...v3.7.0) (2020-07-20) +### Features +- **eslint-plugin:** [prefer-readonly-parameter-types] add option treatMethodsAsReadonly ([#3733](https://github.com/typescript-eslint/typescript-eslint/issues/3733)) ([a46e318](https://github.com/typescript-eslint/typescript-eslint/commit/a46e3182c8a0b07c914605d6d9fe28ef36a7c32a)) +- **eslint-plugin:** [restrict-template-expressions] add option to allow RegExp ([#3709](https://github.com/typescript-eslint/typescript-eslint/issues/3709)) ([363b3dc](https://github.com/typescript-eslint/typescript-eslint/commit/363b3dc4dd0dc343311c729d75935b10f9d2fd5e)) +- **eslint-plugin:** add `no-meaningless-void-operator` rule ([#3641](https://github.com/typescript-eslint/typescript-eslint/issues/3641)) ([ea40ab6](https://github.com/typescript-eslint/typescript-eslint/commit/ea40ab659351ae7cf7235ea063d42ac155b11e5f)) +- **eslint-plugin:** add extension rule `padding-line-between-statements` ([#3418](https://github.com/typescript-eslint/typescript-eslint/issues/3418)) ([f79ae9b](https://github.com/typescript-eslint/typescript-eslint/commit/f79ae9b58e82f4fddef640a34a1d7ff92b763e65)) +- **experimental-utils:** extract `isNodeOfType` out of `ast-utils`' `predicates` ([#3677](https://github.com/typescript-eslint/typescript-eslint/issues/3677)) ([4bfa437](https://github.com/typescript-eslint/typescript-eslint/commit/4bfa4375aff8f65057d4aa116e435803cbc6b464)) -### Features +# [4.30.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.29.3...v4.30.0) (2021-08-30) -* **eslint-plugin:** [naming-convention] allow selecting only `const` variables ([#2291](https://github.com/typescript-eslint/typescript-eslint/issues/2291)) ([156d058](https://github.com/typescript-eslint/typescript-eslint/commit/156d058fee835fdf1ed827a5ad4a80d57190cc54)) -* **eslint-plugin:** [no-empty-function] add `decoratedFunctions` option ([#2295](https://github.com/typescript-eslint/typescript-eslint/issues/2295)) ([88f08f4](https://github.com/typescript-eslint/typescript-eslint/commit/88f08f410760f58fdc2de58ecd9dab9610821642)) -* **typescript-estree:** support short-circuiting assignment operators ([#2307](https://github.com/typescript-eslint/typescript-eslint/issues/2307)) ([2c90d9f](https://github.com/typescript-eslint/typescript-eslint/commit/2c90d9fa3aa5ebd7db697dddb7762bca2dd0e06b)) -* **typescript-estree:** support type annotations on catch clauses ([#2306](https://github.com/typescript-eslint/typescript-eslint/issues/2306)) ([b5afe9c](https://github.com/typescript-eslint/typescript-eslint/commit/b5afe9c560b9f38c8dffc312a600db30944129c8)) +### Bug Fixes +- **eslint-plugin:** [dot-notation] false positive with optional chaining ([#3711](https://github.com/typescript-eslint/typescript-eslint/issues/3711)) ([c19fc6e](https://github.com/typescript-eslint/typescript-eslint/commit/c19fc6e03072ed549bc9b35ebe6961e10f8f9b43)), closes [#3510](https://github.com/typescript-eslint/typescript-eslint/issues/3510) +- **eslint-plugin:** [prefer-reduce-type-parameter] handle already existing type params ([#3706](https://github.com/typescript-eslint/typescript-eslint/issues/3706)) ([71dd273](https://github.com/typescript-eslint/typescript-eslint/commit/71dd27361a1bc93b5d5eb2279d805922b10002fd)) +- **eslint-plugin:** isTypeReadonly error with unknown ([#2371](https://github.com/typescript-eslint/typescript-eslint/issues/2371)) ([e7528e6](https://github.com/typescript-eslint/typescript-eslint/commit/e7528e686f5fe5cce8504fc15d3cd06b8733712e)) +- **typescript-estree:** support TSv4 labelled tuple members ([#2378](https://github.com/typescript-eslint/typescript-eslint/issues/2378)) ([00d84ff](https://github.com/typescript-eslint/typescript-eslint/commit/00d84ffbcbe9d0ec98bdb2f2ce59959a27ce4dbe)) +# [3.8.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.7.1...v3.8.0) (2020-08-03) +### Bug Fixes +- **eslint-plugin:** [no-implied-eval] don't report when `Function` is imported ([#2348](https://github.com/typescript-eslint/typescript-eslint/issues/2348)) ([fa169e7](https://github.com/typescript-eslint/typescript-eslint/commit/fa169e79661821f0e0e64a56d6db9da42c3c8654)) +- **eslint-plugin:** [no-unsafe-assignment] fix typo in message ([#2347](https://github.com/typescript-eslint/typescript-eslint/issues/2347)) ([2027bb1](https://github.com/typescript-eslint/typescript-eslint/commit/2027bb11689b76c297f93ba8a918b35fe68e5b9d)) +### Features -# [2.21.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.20.0...v2.21.0) (2020-02-24) +- **eslint-plugin:** [naming-convention] allow specifying an array of selectors ([#2335](https://github.com/typescript-eslint/typescript-eslint/issues/2335)) ([3ef6bd5](https://github.com/typescript-eslint/typescript-eslint/commit/3ef6bd5cadc225e42ef1330d15919a39f53f2a2b)) +- **eslint-plugin:** add `prefer-enum-initializers` rule ([#2326](https://github.com/typescript-eslint/typescript-eslint/issues/2326)) ([4f38ea3](https://github.com/typescript-eslint/typescript-eslint/commit/4f38ea39c97289db11501d6368d01db8c5787257)) +## [3.7.1](https://github.com/typescript-eslint/typescript-eslint/compare/v3.7.0...v3.7.1) (2020-07-27) ### Bug Fixes -* **eslint-plugin:** [embt] ignore JSX callbacks ([#1630](https://github.com/typescript-eslint/typescript-eslint/issues/1630)) ([4d45b33](https://github.com/typescript-eslint/typescript-eslint/commit/4d45b331b920113c97a90df7dc703f8dfbcc04f3)) -* **eslint-plugin:** [no-floating-promises] handle finally callback ([#1620](https://github.com/typescript-eslint/typescript-eslint/issues/1620)) ([1aa7135](https://github.com/typescript-eslint/typescript-eslint/commit/1aa7135bbfbf55cec52925fc0224188cd3c319e7)) -* **eslint-plugin:** [typedef] allow array/object destructuring in for/of ([#1570](https://github.com/typescript-eslint/typescript-eslint/issues/1570)) ([660bace](https://github.com/typescript-eslint/typescript-eslint/commit/660bace4c3da569d71cf1e296ac4f6ed35bdfc44)) -* **typescript-estree:** process.stdout can be undefined ([#1619](https://github.com/typescript-eslint/typescript-eslint/issues/1619)) ([0d8e87e](https://github.com/typescript-eslint/typescript-eslint/commit/0d8e87e09704588273bc94a740279b3e8af7474f)) +- **eslint-plugin:** [adjacent-overload-signatures] fix false positive on call signatures and a method named `call` ([#2313](https://github.com/typescript-eslint/typescript-eslint/issues/2313)) ([30fafb0](https://github.com/typescript-eslint/typescript-eslint/commit/30fafb09422b3aca881f4785d89b0536092d4952)) +- **eslint-plugin:** [no-extra-parens] stop reporting on calling generic functions with one argument and type parameters containing parentheses ([#2319](https://github.com/typescript-eslint/typescript-eslint/issues/2319)) ([616a841](https://github.com/typescript-eslint/typescript-eslint/commit/616a841032bec310d9f31f1c987888273df27008)) +- **typescript-estree:** correct AST regression introduced by TS4.0 upgrade ([#2316](https://github.com/typescript-eslint/typescript-eslint/issues/2316)) ([d7fefba](https://github.com/typescript-eslint/typescript-eslint/commit/d7fefba3741a526ff2b58dd713995c3ee5603962)) +# [3.7.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.6.1...v3.7.0) (2020-07-20) ### Features -* **eslint-plugin:** [require-await] add --fix support ([#1561](https://github.com/typescript-eslint/typescript-eslint/issues/1561)) ([9edd863](https://github.com/typescript-eslint/typescript-eslint/commit/9edd863b2a66ee44bd4a439903973e6c207480aa)) +- **eslint-plugin:** [naming-convention] allow selecting only `const` variables ([#2291](https://github.com/typescript-eslint/typescript-eslint/issues/2291)) ([156d058](https://github.com/typescript-eslint/typescript-eslint/commit/156d058fee835fdf1ed827a5ad4a80d57190cc54)) +- **eslint-plugin:** [no-empty-function] add `decoratedFunctions` option ([#2295](https://github.com/typescript-eslint/typescript-eslint/issues/2295)) ([88f08f4](https://github.com/typescript-eslint/typescript-eslint/commit/88f08f410760f58fdc2de58ecd9dab9610821642)) +- **typescript-estree:** support short-circuiting assignment operators ([#2307](https://github.com/typescript-eslint/typescript-eslint/issues/2307)) ([2c90d9f](https://github.com/typescript-eslint/typescript-eslint/commit/2c90d9fa3aa5ebd7db697dddb7762bca2dd0e06b)) +- **typescript-estree:** support type annotations on catch clauses ([#2306](https://github.com/typescript-eslint/typescript-eslint/issues/2306)) ([b5afe9c](https://github.com/typescript-eslint/typescript-eslint/commit/b5afe9c560b9f38c8dffc312a600db30944129c8)) +## [3.6.1](https://github.com/typescript-eslint/typescript-eslint/compare/v3.6.0...v3.6.1) (2020-07-13) +### Bug Fixes +- **eslint-plugin:** [no-unnecessary-condition] handle computed member access ([#2288](https://github.com/typescript-eslint/typescript-eslint/issues/2288)) ([3a187ca](https://github.com/typescript-eslint/typescript-eslint/commit/3a187cafb7302a3c05de0e6a236dd142a5e2d741)) +- **eslint-plugin:** [prefer-literal-enum-member] allow negative numbers ([#2277](https://github.com/typescript-eslint/typescript-eslint/issues/2277)) ([00ac9c3](https://github.com/typescript-eslint/typescript-eslint/commit/00ac9c3ccaad27bab08ec3c3a104f612bb593df5)) +- **eslint-plugin:** [space-before-function-paren] incorrect handling of abstract methods ([#2275](https://github.com/typescript-eslint/typescript-eslint/issues/2275)) ([ced6591](https://github.com/typescript-eslint/typescript-eslint/commit/ced65918b16f46c383496a9b4bd43eca8a76baf6)), closes [#2274](https://github.com/typescript-eslint/typescript-eslint/issues/2274) +- **eslint-plugin:** [switch-exhaustiveness-check] handle special characters in enum keys ([#2207](https://github.com/typescript-eslint/typescript-eslint/issues/2207)) ([98ab010](https://github.com/typescript-eslint/typescript-eslint/commit/98ab010fb7fca884984bb4200fd806ecee8071b6)) +# [3.6.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.5.0...v3.6.0) (2020-07-06) -# [2.20.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.19.2...v2.20.0) (2020-02-17) +### Bug Fixes +- **eslint-plugin:** [no-namespace] allow namespaces in nested declarations with `allowDeclarations` ([#2238](https://github.com/typescript-eslint/typescript-eslint/issues/2238)) ([c1df669](https://github.com/typescript-eslint/typescript-eslint/commit/c1df6694f7866d3ef7ede0b1c6c9dd6f3955e682)) +- **eslint-plugin:** [space-before-function-paren] handle abstract functions ([#2199](https://github.com/typescript-eslint/typescript-eslint/issues/2199)) ([88a3edf](https://github.com/typescript-eslint/typescript-eslint/commit/88a3edfce8349f871b7b660d2b76508b67c94eda)) ### Features -* **eslint-plugin:** [ban-types] allow banning null and undefined ([#821](https://github.com/typescript-eslint/typescript-eslint/issues/821)) ([0b2b887](https://github.com/typescript-eslint/typescript-eslint/commit/0b2b887c06f2582d812a45f7a8deb82f52d82a84)) -* **eslint-plugin:** [strict-boolean-expressions] refactor, add clearer error messages ([#1480](https://github.com/typescript-eslint/typescript-eslint/issues/1480)) ([db4b530](https://github.com/typescript-eslint/typescript-eslint/commit/db4b530f3f049267d679e89d9e75acfcb86faaf2)) - +- **eslint-plugin:** add rule `prefer-literal-enum-member` ([#1898](https://github.com/typescript-eslint/typescript-eslint/issues/1898)) ([fe2b2ec](https://github.com/typescript-eslint/typescript-eslint/commit/fe2b2ec39ef04ac8b73eef9d29d12fd1b24fa183)) +# [3.5.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.4.0...v3.5.0) (2020-06-29) +### Bug Fixes +- **eslint-plugin:** [naming-convention] support unicode in regex ([#2241](https://github.com/typescript-eslint/typescript-eslint/issues/2241)) ([5fdd21a](https://github.com/typescript-eslint/typescript-eslint/commit/5fdd21a1726fb6928098c4152aec55a30df960d4)) +- **typescript-estree:** forward compatibility for new compound assignment operators ([#2253](https://github.com/typescript-eslint/typescript-eslint/issues/2253)) ([ba41680](https://github.com/typescript-eslint/typescript-eslint/commit/ba41680f2a25b1aa4d05c2d4b132ac73a6faefbd)) -## [2.19.2](https://github.com/typescript-eslint/typescript-eslint/compare/v2.19.1...v2.19.2) (2020-02-10) +### Features -**Note:** Version bump only for package @typescript-eslint/typescript-eslint +- add package scope-manager ([#1939](https://github.com/typescript-eslint/typescript-eslint/issues/1939)) ([682eb7e](https://github.com/typescript-eslint/typescript-eslint/commit/682eb7e009c3f22a542882dfd3602196a60d2a1e)) +- split types into their own package ([#2229](https://github.com/typescript-eslint/typescript-eslint/issues/2229)) ([5f45918](https://github.com/typescript-eslint/typescript-eslint/commit/5f4591886f3438329fbf2229b03ac66174334a24)) +- split visitor keys into their own package ([#2230](https://github.com/typescript-eslint/typescript-eslint/issues/2230)) ([689dae3](https://github.com/typescript-eslint/typescript-eslint/commit/689dae37392d527c64ae83db2a4c3e6b7fecece7)) +# [3.4.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.3.0...v3.4.0) (2020-06-22) +### Bug Fixes +- **eslint-plugin:** [no-base-to-string] handle intersection types ([#2170](https://github.com/typescript-eslint/typescript-eslint/issues/2170)) ([9cca3a9](https://github.com/typescript-eslint/typescript-eslint/commit/9cca3a9584d5d5ef0536219c5a734f4e87efb543)) +- **eslint-plugin:** [unbound-method] handling destructuring ([#2228](https://github.com/typescript-eslint/typescript-eslint/issues/2228)) ([c3753c2](https://github.com/typescript-eslint/typescript-eslint/commit/c3753c21768d355ecdb9e7ae8e0bfdfbbc1d3bbe)) +- **experimental-utils:** correct types for TS versions older than 3.8 ([#2217](https://github.com/typescript-eslint/typescript-eslint/issues/2217)) ([5e4dda2](https://github.com/typescript-eslint/typescript-eslint/commit/5e4dda264a7d6a6a1626848e7599faea1ac34922)) +- **experimental-utils:** getParserServices takes a readonly context ([#2235](https://github.com/typescript-eslint/typescript-eslint/issues/2235)) ([26da8de](https://github.com/typescript-eslint/typescript-eslint/commit/26da8de7fcde9eddec63212d79af781c4bb22991)) +### Features -## [2.19.1](https://github.com/typescript-eslint/typescript-eslint/compare/v2.19.0...v2.19.1) (2020-02-10) +- **eslint-plugin:** [no-unnecessary-boolean-literal-compare] add option to check nullable booleans ([#1983](https://github.com/typescript-eslint/typescript-eslint/issues/1983)) ([c0b3057](https://github.com/typescript-eslint/typescript-eslint/commit/c0b3057b7f7d515891ad2efe32e4ef8c01e0478f)) +- **eslint-plugin:** add extension rule `no-loss-of-precision` ([#2196](https://github.com/typescript-eslint/typescript-eslint/issues/2196)) ([535b0f2](https://github.com/typescript-eslint/typescript-eslint/commit/535b0f2ddd82efa6a2c40307a61c480f4b3cdea3)) +# [3.3.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.2.0...v3.3.0) (2020-06-15) ### Bug Fixes -* **eslint-plugin:** [unbound-method] blacklist a few unbound natives ([#1562](https://github.com/typescript-eslint/typescript-eslint/issues/1562)) ([4670aab](https://github.com/typescript-eslint/typescript-eslint/commit/4670aabef31d9017ad302f206b9c2f18d53c8ee4)) -* **typescript-estree:** ts returning wrong file with project references ([#1575](https://github.com/typescript-eslint/typescript-eslint/issues/1575)) ([4c12dac](https://github.com/typescript-eslint/typescript-eslint/commit/4c12dac075f774801a145cd29c4c7eff64f98fdc)) - - - +- **eslint-plugin:** [no-unused-expressions] handle ternary and short-circuit options ([#2194](https://github.com/typescript-eslint/typescript-eslint/issues/2194)) ([ee9f100](https://github.com/typescript-eslint/typescript-eslint/commit/ee9f100a2f9a874c2b361482742686eeaa9bdac7)) +- **typescript-estree:** handle TS4.0 breaking change in TupleType ([#2197](https://github.com/typescript-eslint/typescript-eslint/issues/2197)) ([5d68129](https://github.com/typescript-eslint/typescript-eslint/commit/5d6812914831a386997b453b4db1e3283e26005d)) +### Features -# [2.19.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.18.0...v2.19.0) (2020-02-03) +- **eslint-plugin:** [naming-convention] better error message and docs for prefix/suffix ([#2195](https://github.com/typescript-eslint/typescript-eslint/issues/2195)) ([a2ffe55](https://github.com/typescript-eslint/typescript-eslint/commit/a2ffe5568df0f7224bfe9141d298e538383d5f09)) +# [3.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.1.0...v3.2.0) (2020-06-08) ### Bug Fixes -* **eslint-plugin:** [embt] fix allowTypedFunctionExpressions ([#1553](https://github.com/typescript-eslint/typescript-eslint/issues/1553)) ([9e7d161](https://github.com/typescript-eslint/typescript-eslint/commit/9e7d1616d78a0f94521f4e6d4b48344e5df2d9f7)) -* **eslint-plugin:** [require-await] improve performance ([#1536](https://github.com/typescript-eslint/typescript-eslint/issues/1536)) ([45ae0b9](https://github.com/typescript-eslint/typescript-eslint/commit/45ae0b9565ee6e9d01e82107d85ad7151a15af7b)) -* **typescript-estree:** fix regression introduced in [#1525](https://github.com/typescript-eslint/typescript-eslint/issues/1525) ([#1543](https://github.com/typescript-eslint/typescript-eslint/issues/1543)) ([bec4572](https://github.com/typescript-eslint/typescript-eslint/commit/bec45722dfed8aeb49189d151252b83d4a34239c)) -* **typescript-estree:** persisted parse and module none ([#1516](https://github.com/typescript-eslint/typescript-eslint/issues/1516)) ([7c70323](https://github.com/typescript-eslint/typescript-eslint/commit/7c7032322f55d9492e21d3bfa5da16da1f05cbce)) - +- **eslint-plugin:** [explicit-module-boundary-types] dont report return type errors on constructor overloads ([#2158](https://github.com/typescript-eslint/typescript-eslint/issues/2158)) ([53232d7](https://github.com/typescript-eslint/typescript-eslint/commit/53232d775ca0b808e2d75d9501f4411a868b2b48)) +- **eslint-plugin:** [explicit-module-boundary-types] handle bodyless arrow functions with explicit return types that return functions ([#2169](https://github.com/typescript-eslint/typescript-eslint/issues/2169)) ([58db655](https://github.com/typescript-eslint/typescript-eslint/commit/58db655133aaae006efe3e3ceee971cf88dc348f)) +- **eslint-plugin:** [explicit-module-boundary-types] handle nested functions and functions expressions in a typed variable declaration ([#2176](https://github.com/typescript-eslint/typescript-eslint/issues/2176)) ([6ff450d](https://github.com/typescript-eslint/typescript-eslint/commit/6ff450da3abec93223a33f6b52484c9ca99b7abe)) +- **eslint-plugin:** [no-extra-non-null-assertion] dont report for assertions not followed by the optional chain ([#2167](https://github.com/typescript-eslint/typescript-eslint/issues/2167)) ([e4c1834](https://github.com/typescript-eslint/typescript-eslint/commit/e4c1834c7c5934332dd1d58c09018453568c4889)) +- **eslint-plugin:** [no-unnecessary-conditionals] Handle comparison of generics and loose comparisons with undefined values ([#2152](https://github.com/typescript-eslint/typescript-eslint/issues/2152)) ([c86e2a2](https://github.com/typescript-eslint/typescript-eslint/commit/c86e2a235372149db9b1700d39c2145e0ce5221a)) +- **eslint-plugin:** [prefer-optional-chain] handling first member expression ([#2156](https://github.com/typescript-eslint/typescript-eslint/issues/2156)) ([de18660](https://github.com/typescript-eslint/typescript-eslint/commit/de18660a8cf8f7033798646d8c5b0938d1accb12)) +- **eslint-plugin:** [return-await] correct handling of ternaries ([#2168](https://github.com/typescript-eslint/typescript-eslint/issues/2168)) ([fe4c0bf](https://github.com/typescript-eslint/typescript-eslint/commit/fe4c0bf8c04f070d6642fbe86c5e5614bc88e8fd)) ### Features -* **eslint-plugin:** [no-extra-non-null-assert] add fixer ([#1468](https://github.com/typescript-eslint/typescript-eslint/issues/1468)) ([54201ab](https://github.com/typescript-eslint/typescript-eslint/commit/54201aba37b2865c0ba4981be79d1fd989806133)) -* **eslint-plugin:** [no-float-prom] fixer + msg for ignoreVoid ([#1473](https://github.com/typescript-eslint/typescript-eslint/issues/1473)) ([159b16e](https://github.com/typescript-eslint/typescript-eslint/commit/159b16ec3a66f05478080c397df5c3f6e29535e4)) -* **eslint-plugin:** [unbound-method] support bound builtins ([#1526](https://github.com/typescript-eslint/typescript-eslint/issues/1526)) ([0a110eb](https://github.com/typescript-eslint/typescript-eslint/commit/0a110eb680749c8c4a2a3dc1375c1a83056e4c14)) -* **eslint-plugin:** add extension [no-dupe-class-members] ([#1492](https://github.com/typescript-eslint/typescript-eslint/issues/1492)) ([b22424e](https://github.com/typescript-eslint/typescript-eslint/commit/b22424e7d4a16042a027557f44e9191e0722b38b)) -* **eslint-plugin:** add no-unnecessary-boolean-literal-compare ([#242](https://github.com/typescript-eslint/typescript-eslint/issues/242)) ([6bebb1d](https://github.com/typescript-eslint/typescript-eslint/commit/6bebb1dc47897ee0e1f075d7e5dd89d8b0590f31)) -* **eslint-plugin:** add switch-exhaustiveness-check rule ([#972](https://github.com/typescript-eslint/typescript-eslint/issues/972)) ([9e0f6dd](https://github.com/typescript-eslint/typescript-eslint/commit/9e0f6ddef7cd29f355f398c90f1986e51c4854f7)) -* **eslint-plugin:** support negative matches for `filter` ([#1517](https://github.com/typescript-eslint/typescript-eslint/issues/1517)) ([b24fbe8](https://github.com/typescript-eslint/typescript-eslint/commit/b24fbe8790b540998e4085174251fb4d61bf96b0)) +- **eslint-plugin:** [naming-convention] put identifiers in quotes in error messages ([#2182](https://github.com/typescript-eslint/typescript-eslint/issues/2182)) ([fc61932](https://github.com/typescript-eslint/typescript-eslint/commit/fc619326eedf7ef2efa51444ecdead81a36a204f)), closes [#2178](https://github.com/typescript-eslint/typescript-eslint/issues/2178) +- **eslint-plugin:** [require-array-sort-compare] add `ignoreStringArrays` option ([#1972](https://github.com/typescript-eslint/typescript-eslint/issues/1972)) ([6dee784](https://github.com/typescript-eslint/typescript-eslint/commit/6dee7840a3af1dfe4c38a128d1c4655bdac625df)) +- **eslint-plugin:** add rule `ban-tslint-comment` ([#2140](https://github.com/typescript-eslint/typescript-eslint/issues/2140)) ([43ee226](https://github.com/typescript-eslint/typescript-eslint/commit/43ee226ffbaaa3e7126081db9476c24b89ec16e9)) +- **eslint-plugin:** add rule `no-confusing-non-null-assertion` ([#1941](https://github.com/typescript-eslint/typescript-eslint/issues/1941)) ([9b51c44](https://github.com/typescript-eslint/typescript-eslint/commit/9b51c44f29d8b3e95a510985544e8ded8a14404d)) +# [3.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.0.2...v3.1.0) (2020-06-01) +### Bug Fixes +- **eslint-plugin:** [explicit-module-boundary-types] don't check returned functions if parent function has return type ([#2084](https://github.com/typescript-eslint/typescript-eslint/issues/2084)) ([d7d4eeb](https://github.com/typescript-eslint/typescript-eslint/commit/d7d4eeb03f2918d5d9e361fdb47c2d42e83bd593)) +- **eslint-plugin:** [no-unnecessary-condition] handle comparison of any, unknown and loose comparisons with nullish values ([#2123](https://github.com/typescript-eslint/typescript-eslint/issues/2123)) ([1ae1d01](https://github.com/typescript-eslint/typescript-eslint/commit/1ae1d01e5603ec7cef8051ed018c3c3c88b29867)) +- **eslint-plugin:** [no-unnecessary-condition] improve optional chain handling ([#2111](https://github.com/typescript-eslint/typescript-eslint/issues/2111)) ([9ee399b](https://github.com/typescript-eslint/typescript-eslint/commit/9ee399b5906e82f346ff89141207a6630786de54)) +- **eslint-plugin:** [no-unnecessary-condition] improve optional chain handling 2 - electric boogaloo ([#2138](https://github.com/typescript-eslint/typescript-eslint/issues/2138)) ([c87cfaf](https://github.com/typescript-eslint/typescript-eslint/commit/c87cfaf6746775bb8ad9eb45b0002f068a822dbe)) +- **eslint-plugin:** [no-unused-expressions] ignore import expressions ([#2130](https://github.com/typescript-eslint/typescript-eslint/issues/2130)) ([e383691](https://github.com/typescript-eslint/typescript-eslint/commit/e3836910efdafd9edf04daed149c9e839c08047e)) +- **eslint-plugin:** [no-var-requires] false negative for TSAsExpression and MemberExpression ([#2139](https://github.com/typescript-eslint/typescript-eslint/issues/2139)) ([df95338](https://github.com/typescript-eslint/typescript-eslint/commit/df953388913b22d45242e65ce231d92a8b8a0080)) +- **experimental-utils:** downlevel type declarations for versions older than 3.8 ([#2133](https://github.com/typescript-eslint/typescript-eslint/issues/2133)) ([7925823](https://github.com/typescript-eslint/typescript-eslint/commit/792582326a8065270b69a0ffcaad5a7b4b103ff3)) +### Features -# [2.18.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.17.0...v2.18.0) (2020-01-27) +- **eslint-plugin:** [ban-ts-comments] add "allow-with-description" option ([#2099](https://github.com/typescript-eslint/typescript-eslint/issues/2099)) ([8a0fd18](https://github.com/typescript-eslint/typescript-eslint/commit/8a0fd1899f544470a35afb3117f4c71aad7e4e42)) +- **eslint-plugin:** [ban-types] allow selective disable of default options with `false` value ([#2137](https://github.com/typescript-eslint/typescript-eslint/issues/2137)) ([1cb8ca4](https://github.com/typescript-eslint/typescript-eslint/commit/1cb8ca483d029935310e6904580df8501837084d)) +- **eslint-plugin:** [explicit-module-boundary-types] improve accuracy and coverage ([#2135](https://github.com/typescript-eslint/typescript-eslint/issues/2135)) ([caaa859](https://github.com/typescript-eslint/typescript-eslint/commit/caaa8599284d02ab3341e282cad35a52d0fb86c7)) +## [3.0.2](https://github.com/typescript-eslint/typescript-eslint/compare/v3.0.1...v3.0.2) (2020-05-27) ### Bug Fixes -* **eslint-plugin:** [explicit-module-boundary-types] false positive for returned fns ([#1490](https://github.com/typescript-eslint/typescript-eslint/issues/1490)) ([5562ad5](https://github.com/typescript-eslint/typescript-eslint/commit/5562ad5ed902102d7c09a7fd47ca4ea7e50d6654)) -* improve token types and add missing type guards ([#1497](https://github.com/typescript-eslint/typescript-eslint/issues/1497)) ([ce41d7d](https://github.com/typescript-eslint/typescript-eslint/commit/ce41d7de33bcb7ccf96c03ac1438304c5a49ff54)) -* **eslint-plugin:** [naming-convention] fix filter option ([#1482](https://github.com/typescript-eslint/typescript-eslint/issues/1482)) ([718cd88](https://github.com/typescript-eslint/typescript-eslint/commit/718cd889c155a75413c571ac006c33fbc271dcc5)) -* **eslint-plugin:** fix property access on undefined error ([#1507](https://github.com/typescript-eslint/typescript-eslint/issues/1507)) ([d89e8e8](https://github.com/typescript-eslint/typescript-eslint/commit/d89e8e8a1114989e2727351bee7aadb6579f312b)) -* **experimental-utils:** widen type of `settings` property ([#1527](https://github.com/typescript-eslint/typescript-eslint/issues/1527)) ([b515e47](https://github.com/typescript-eslint/typescript-eslint/commit/b515e47af2bc914c7ebcfa4be813409dcd86b1c3)) -* **typescript-estree:** error on unexpected jsdoc nodes ([#1525](https://github.com/typescript-eslint/typescript-eslint/issues/1525)) ([c8dfac3](https://github.com/typescript-eslint/typescript-eslint/commit/c8dfac3d2f066e50fa9d2b5a86beffdaafddb643)) -* **typescript-estree:** fix identifier tokens typed as `Keyword` ([#1487](https://github.com/typescript-eslint/typescript-eslint/issues/1487)) ([77a1caa](https://github.com/typescript-eslint/typescript-eslint/commit/77a1caa562638645b4717449800e410107d512c8)) - +- regression for eslint v6 ([#2105](https://github.com/typescript-eslint/typescript-eslint/issues/2105)) ([31fc503](https://github.com/typescript-eslint/typescript-eslint/commit/31fc5039ed919e1515fda673c186d5c83eb5beb3)) -### Features +## [3.0.1](https://github.com/typescript-eslint/typescript-eslint/compare/v3.0.0...v3.0.1) (2020-05-25) -* **eslint-plugin:** add comma-spacing ([#1495](https://github.com/typescript-eslint/typescript-eslint/issues/1495)) ([1fd86be](https://github.com/typescript-eslint/typescript-eslint/commit/1fd86befa6a940a0354c619dd2da08a5c5d69fb4)) -* **eslint-plugin:** add new rule prefer-as-const ([#1431](https://github.com/typescript-eslint/typescript-eslint/issues/1431)) ([420db96](https://github.com/typescript-eslint/typescript-eslint/commit/420db96921435e8bf7fb484ae74552a912a6adde)) -* **eslint-plugin:** create `ban-ts-comment` rule ([#1361](https://github.com/typescript-eslint/typescript-eslint/issues/1361)) ([2a83d13](https://github.com/typescript-eslint/typescript-eslint/commit/2a83d138a966cd5ce787d1eecf595b59b78232d4)) -* **eslint-plugin-internal:** add `prefer-ast-types-enum` ([#1508](https://github.com/typescript-eslint/typescript-eslint/issues/1508)) ([c3d0a3a](https://github.com/typescript-eslint/typescript-eslint/commit/c3d0a3a6bdff0cae226a279f0a0a9b00952ca925)) -* **experimental-utils:** make RuleMetaData.docs optional ([#1462](https://github.com/typescript-eslint/typescript-eslint/issues/1462)) ([cde97ac](https://github.com/typescript-eslint/typescript-eslint/commit/cde97aca24df5a0f28f37006ed130ebc217fb2ad)) -* **parser:** clean up scope-analysis types ([#1481](https://github.com/typescript-eslint/typescript-eslint/issues/1481)) ([4a727fa](https://github.com/typescript-eslint/typescript-eslint/commit/4a727fa083d749dba9eaf39322856f5f69c28cd8)) +### Bug Fixes +- **eslint-plugin:** [naming-convention] handle no options correctly ([#2095](https://github.com/typescript-eslint/typescript-eslint/issues/2095)) ([fd7d02b](https://github.com/typescript-eslint/typescript-eslint/commit/fd7d02b31ebd995b7fdd857d7c054042aa4f2001)) +- **eslint-plugin:** [no-throw-literal] handle intersection and union types ([#2085](https://github.com/typescript-eslint/typescript-eslint/issues/2085)) ([cae037f](https://github.com/typescript-eslint/typescript-eslint/commit/cae037ff9b20363b970cc600a09505b98bf10a14)) +- **eslint-plugin:** [unbound-method] fix crash due to missing `Intl` ([#2090](https://github.com/typescript-eslint/typescript-eslint/issues/2090)) ([f2fa82c](https://github.com/typescript-eslint/typescript-eslint/commit/f2fa82c532ae858ccfb064268cfcc9df657a54be)) +- **experimental-utils:** export `CLIEngine` & `ESLint` ([#2083](https://github.com/typescript-eslint/typescript-eslint/issues/2083)) ([014341b](https://github.com/typescript-eslint/typescript-eslint/commit/014341bb23261f609fc2a6fe7fece191466a084a)) +- **typescript-estree:** handle `BigInt` with `_` numeric separator ([#2067](https://github.com/typescript-eslint/typescript-eslint/issues/2067)) ([66f1627](https://github.com/typescript-eslint/typescript-eslint/commit/66f1627b11a566d5b925a577e800f99d5c808be2)) +- **typescript-estree:** mark TS 3.8 and 3.9 as "supported" ([#2057](https://github.com/typescript-eslint/typescript-eslint/issues/2057)) ([5eedbff](https://github.com/typescript-eslint/typescript-eslint/commit/5eedbff01178ea33b98ab22e556df4c1a195f839)), closes [#1436](https://github.com/typescript-eslint/typescript-eslint/issues/1436) [#1436](https://github.com/typescript-eslint/typescript-eslint/issues/1436) +# [3.0.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.34.0...v3.0.0) (2020-05-21) +## [Please see the release notes for v3.0.0](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v3.0.0) +### Bug Fixes -# [2.17.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.16.0...v2.17.0) (2020-01-20) +- **eslint-plugin:** [dot-notation] fix typo in schema ([#2040](https://github.com/typescript-eslint/typescript-eslint/issues/2040)) ([242328f](https://github.com/typescript-eslint/typescript-eslint/commit/242328fa749ee4c72af93433a9bef95f329ac62f)) +- **eslint-plugin:** correct parser peerDep version ([fe59f69](https://github.com/typescript-eslint/typescript-eslint/commit/fe59f69381a0915a4f5135e2e88637a5eea246ba)) +- **experimental-utils:** add back SourceCode.isSpaceBetweenTokens ([ae82ea4](https://github.com/typescript-eslint/typescript-eslint/commit/ae82ea4a85a4ca332ebe6104e96c59dba30411be)) +- **typescript-estree:** remove now defunct `Import` node type ([f199cbd](https://github.com/typescript-eslint/typescript-eslint/commit/f199cbdbbd892b5ba03bfff66f463f3d9c92ee9b)) +- **typescript-estree:** use `TSEmptyBodyFunctionExpression` for body-less nodes ([#1289](https://github.com/typescript-eslint/typescript-eslint/issues/1289)) ([82e7163](https://github.com/typescript-eslint/typescript-eslint/commit/82e7163214b56ccde93ba97807b161669a50a60b)) + +### Features + +- add index files to parser and typescript-estree ([3dfc46d](https://github.com/typescript-eslint/typescript-eslint/commit/3dfc46dccbbd28eed2d74c7b6cacddf1a0848598)) +- **eslint-plugin:** [no-floating-promises] ignore void operator by default ([#2003](https://github.com/typescript-eslint/typescript-eslint/issues/2003)) ([3626a67](https://github.com/typescript-eslint/typescript-eslint/commit/3626a673cf8117cc995245cd86e466e2553e9b0e)) +- **eslint-plugin:** [no-unnecessary-condition] remove `checkArrayPredicates` and always check it ([#1579](https://github.com/typescript-eslint/typescript-eslint/issues/1579)) ([bfd9b60](https://github.com/typescript-eslint/typescript-eslint/commit/bfd9b606d17d30d5694967a1f01e0e1501ba1022)) +- **eslint-plugin:** [no-unnecessary-condition] report when non-nullish is compared to `null`/`undefined` ([#1659](https://github.com/typescript-eslint/typescript-eslint/issues/1659)) ([7fa9060](https://github.com/typescript-eslint/typescript-eslint/commit/7fa906073903c5eb70609c25f1a91ada14dcdc71)) +- **eslint-plugin:** [prefer-nullish-coalescing][prefer-optional-chain] remove unsafe fixers ([52b6085](https://github.com/typescript-eslint/typescript-eslint/commit/52b60852d0ba6bb6abe519c9d3ec1b231793e91d)) +- **eslint-plugin:** [restrict-template-expressions] `allowNumber: true` by default ([#2005](https://github.com/typescript-eslint/typescript-eslint/issues/2005)) ([643ec24](https://github.com/typescript-eslint/typescript-eslint/commit/643ec240bd901295d9e9ea5c43fc20109c33e982)) +- **eslint-plugin:** [restrict-template-expressions] rename `allowNullable` to `allowNullish` ([#2006](https://github.com/typescript-eslint/typescript-eslint/issues/2006)) ([264b017](https://github.com/typescript-eslint/typescript-eslint/commit/264b017c11c2ab132fcbad18b42a9a0fe639386e)) +- **experimental-utils:** upgrade eslint types for v7 ([#2023](https://github.com/typescript-eslint/typescript-eslint/issues/2023)) ([06869c9](https://github.com/typescript-eslint/typescript-eslint/commit/06869c9656fa37936126666845aee40aad546ebd)) +- bump minimum required TS version ([#2004](https://github.com/typescript-eslint/typescript-eslint/issues/2004)) ([7ad4d7c](https://github.com/typescript-eslint/typescript-eslint/commit/7ad4d7c2db088b6f779b9d883a4acad13eee3775)) +- upgrade to ESLint v7 ([#2022](https://github.com/typescript-eslint/typescript-eslint/issues/2022)) ([208de71](https://github.com/typescript-eslint/typescript-eslint/commit/208de71059746bf38e94bd460346ffb2698a3e12)) +- **eslint-plugin:** [ban-types] rework default options ([#848](https://github.com/typescript-eslint/typescript-eslint/issues/848)) ([8e31d5d](https://github.com/typescript-eslint/typescript-eslint/commit/8e31d5dbe9fe5227fdbefcecfd50ce5dd51360c3)) +- **eslint-plugin:** [no-unnecessary-condition] remove option `ignoreRHS` ([#1163](https://github.com/typescript-eslint/typescript-eslint/issues/1163)) ([ee8dd8f](https://github.com/typescript-eslint/typescript-eslint/commit/ee8dd8f8a9e6c25ac426ce9bb71c5f012c51f264)) +- **eslint-plugin:** [strict-boolean-expression] rework options ([#1631](https://github.com/typescript-eslint/typescript-eslint/issues/1631)) ([cd14482](https://github.com/typescript-eslint/typescript-eslint/commit/cd1448240dca11762fcb9c10e18bb6541a840485)) +- **eslint-plugin:** delete deprecated rules ([#2002](https://github.com/typescript-eslint/typescript-eslint/issues/2002)) ([da0aec2](https://github.com/typescript-eslint/typescript-eslint/commit/da0aec2cfa27902aae7c438a2fe91343c822e4ae)) +- **eslint-plugin:** eslint-recommended: disable no-func-assign ([#984](https://github.com/typescript-eslint/typescript-eslint/issues/984)) ([ae9b8a9](https://github.com/typescript-eslint/typescript-eslint/commit/ae9b8a9c73c0328287de956466257d8bbfbdb20f)) +- **eslint-plugin:** eslint-recommended: disable no-obj-calls ([#1000](https://github.com/typescript-eslint/typescript-eslint/issues/1000)) ([b9ca14c](https://github.com/typescript-eslint/typescript-eslint/commit/b9ca14c5f5ec28a3fde1a9b2d2f6a4dc74d903e4)) +- **eslint-plugin:** update `eslint-recommended` set ([#1996](https://github.com/typescript-eslint/typescript-eslint/issues/1996)) ([9a96e18](https://github.com/typescript-eslint/typescript-eslint/commit/9a96e18400e0a0d738d159d9d01faf41d3586249)) +- **eslint-plugin:** update recommended sets ([#2001](https://github.com/typescript-eslint/typescript-eslint/issues/2001)) ([0126b4f](https://github.com/typescript-eslint/typescript-eslint/commit/0126b4f56f9197d561e90b09962ccceb4f88bc41)) +- **typescript-estree:** align nodes with estree 2020 ([#1389](https://github.com/typescript-eslint/typescript-eslint/issues/1389)) ([aff5b62](https://github.com/typescript-eslint/typescript-eslint/commit/aff5b62044f9b93f2087a1d261e9be3f8d6fd54d)) +- **typescript-estree:** align optional fields ([#1429](https://github.com/typescript-eslint/typescript-eslint/issues/1429)) ([0e0010f](https://github.com/typescript-eslint/typescript-eslint/commit/0e0010f82952f9beeeb84136eea00cc5eecc9db6)) +- drop support for node v8 ([#1997](https://github.com/typescript-eslint/typescript-eslint/issues/1997)) ([b6c3b7b](https://github.com/typescript-eslint/typescript-eslint/commit/b6c3b7b84b8d199fa75a46432febd4a364a63217)) +- **typescript-estree:** always return parserServices ([#716](https://github.com/typescript-eslint/typescript-eslint/issues/716)) ([5b23443](https://github.com/typescript-eslint/typescript-eslint/commit/5b23443c48f3f62424db3e742243f3568080b946)) +- **typescript-estree:** handle 3.9's non-null assertion changes ([#2036](https://github.com/typescript-eslint/typescript-eslint/issues/2036)) ([06bec63](https://github.com/typescript-eslint/typescript-eslint/commit/06bec63c56536db070608ab136d2ad57083f0c6a)) +# [2.34.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.33.0...v2.34.0) (2020-05-18) ### Bug Fixes -* **eslint-plugin:** [naming-convention] handle empty array-pattern ([#1450](https://github.com/typescript-eslint/typescript-eslint/issues/1450)) ([4726605](https://github.com/typescript-eslint/typescript-eslint/commit/4726605)) -* **eslint-plugin:** [unbound-method] handling of logical expr ([#1440](https://github.com/typescript-eslint/typescript-eslint/issues/1440)) ([9c5b857](https://github.com/typescript-eslint/typescript-eslint/commit/9c5b857)) -* **eslint-plugin:** set default-param-last as an extension rule ([#1445](https://github.com/typescript-eslint/typescript-eslint/issues/1445)) ([b5ef704](https://github.com/typescript-eslint/typescript-eslint/commit/b5ef704)) -* **typescript-estree:** correct type of `ArrayPattern.elements` ([#1451](https://github.com/typescript-eslint/typescript-eslint/issues/1451)) ([62e4ca0](https://github.com/typescript-eslint/typescript-eslint/commit/62e4ca0)) - +- **typescript-estree:** fix handling of range/loc removal ([#2028](https://github.com/typescript-eslint/typescript-eslint/issues/2028)) ([ce344d9](https://github.com/typescript-eslint/typescript-eslint/commit/ce344d90e7c78b0c4b4b823494a3e78190f45c64)) ### Features -* **eslint-plugin:** [naming-convention] allow not check format ([#1455](https://github.com/typescript-eslint/typescript-eslint/issues/1455)) ([61eb434](https://github.com/typescript-eslint/typescript-eslint/commit/61eb434)) -* **eslint-plugin:** [naming-convention] correct example ([#1455](https://github.com/typescript-eslint/typescript-eslint/issues/1455)) ([60683d7](https://github.com/typescript-eslint/typescript-eslint/commit/60683d7)) -* **eslint-plugin:** [no-extra-!-assert] flag ?. after !-assert ([#1460](https://github.com/typescript-eslint/typescript-eslint/issues/1460)) ([58c7c25](https://github.com/typescript-eslint/typescript-eslint/commit/58c7c25)) -* **eslint-plugin:** add explicit-module-boundary-types rule ([#1020](https://github.com/typescript-eslint/typescript-eslint/issues/1020)) ([bb0a846](https://github.com/typescript-eslint/typescript-eslint/commit/bb0a846)) -* **eslint-plugin:** add no-non-null-asserted-optional-chain ([#1469](https://github.com/typescript-eslint/typescript-eslint/issues/1469)) ([498aa24](https://github.com/typescript-eslint/typescript-eslint/commit/498aa24)) -* **experimental-utils:** expose getParserServices from utils ([#1448](https://github.com/typescript-eslint/typescript-eslint/issues/1448)) ([982c8bc](https://github.com/typescript-eslint/typescript-eslint/commit/982c8bc)) +- **eslint-plugin:** [no-invalid-void-type] allow union of void and `allowInGenericTypeArguments` ([#1960](https://github.com/typescript-eslint/typescript-eslint/issues/1960)) ([1bc105a](https://github.com/typescript-eslint/typescript-eslint/commit/1bc105a2c6ae3fde9596f0419fed0de699dc57c7)) +- **eslint-plugin:** [restrict-template-expressions] improve error message ([#1926](https://github.com/typescript-eslint/typescript-eslint/issues/1926)) ([1af59ba](https://github.com/typescript-eslint/typescript-eslint/commit/1af59ba8ac0ceabb008d9c61556acf7db0a1d352)) +- **experimental-utils:** add `suggestion` property for rule modules ([#2033](https://github.com/typescript-eslint/typescript-eslint/issues/2033)) ([f42a5b0](https://github.com/typescript-eslint/typescript-eslint/commit/f42a5b09ebfa173f418a99c552b0cbe221567194)) +# [2.33.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.32.0...v2.33.0) (2020-05-12) +### Bug Fixes +- **experimental-utils:** remove accidental dep on json-schema ([#2010](https://github.com/typescript-eslint/typescript-eslint/issues/2010)) ([1875fba](https://github.com/typescript-eslint/typescript-eslint/commit/1875fbad41f2a3dda8f610f5dcd180c6205b73d3)) +### Features -# [2.16.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.15.0...v2.16.0) (2020-01-13) +- **eslint-plugin:** add extension rule `lines-between-class-members` ([#1684](https://github.com/typescript-eslint/typescript-eslint/issues/1684)) ([08f93e6](https://github.com/typescript-eslint/typescript-eslint/commit/08f93e69347a8e7f3a7e8a1455bb5d069c2faeef)) +# [2.32.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.31.0...v2.32.0) (2020-05-11) ### Bug Fixes -* **eslint-plugin:** [no-magic-numbers] handle UnaryExpression for enums ([#1415](https://github.com/typescript-eslint/typescript-eslint/issues/1415)) ([852fc31](https://github.com/typescript-eslint/typescript-eslint/commit/852fc31)) -* **eslint-plugin:** [no-unnec-type-assert] handle JSX attributes ([#1002](https://github.com/typescript-eslint/typescript-eslint/issues/1002)) ([3c5659b](https://github.com/typescript-eslint/typescript-eslint/commit/3c5659b)) -* **eslint-plugin:** handle error classes using generics ([#1428](https://github.com/typescript-eslint/typescript-eslint/issues/1428)) ([b139540](https://github.com/typescript-eslint/typescript-eslint/commit/b139540)) -* **typescript-estree:** fix persisted parse for relative paths ([#1424](https://github.com/typescript-eslint/typescript-eslint/issues/1424)) ([9720d2c](https://github.com/typescript-eslint/typescript-eslint/commit/9720d2c)) -* **typescript-estree:** parsing of deeply nested new files in new folder ([#1412](https://github.com/typescript-eslint/typescript-eslint/issues/1412)) ([206c94b](https://github.com/typescript-eslint/typescript-eslint/commit/206c94b)) -* **typescript-estree:** resolve path relative to tsconfigRootDir ([#1439](https://github.com/typescript-eslint/typescript-eslint/issues/1439)) ([c709056](https://github.com/typescript-eslint/typescript-eslint/commit/c709056)) - +- **eslint-plugin:** [no-base-to-string] support boolean in unions ([#1979](https://github.com/typescript-eslint/typescript-eslint/issues/1979)) ([6987ecc](https://github.com/typescript-eslint/typescript-eslint/commit/6987ecc1dacfb45c0f8ed3e81d08aa708eb96ad1)) +- **eslint-plugin:** [no-type-alias] handle readonly types in aliases ([#1990](https://github.com/typescript-eslint/typescript-eslint/issues/1990)) ([56d9870](https://github.com/typescript-eslint/typescript-eslint/commit/56d987070f83d1b6410b04750b20a761fd793073)) +- **eslint-plugin:** [no-unused-expressions] inherit `messages` from base rule ([#1992](https://github.com/typescript-eslint/typescript-eslint/issues/1992)) ([51ca404](https://github.com/typescript-eslint/typescript-eslint/commit/51ca404af645eed194269ab7f8f67b97bd52e32d)) ### Features -* **eslint-plugin:** [no-unnec-cond] array predicate callbacks ([#1206](https://github.com/typescript-eslint/typescript-eslint/issues/1206)) ([f7ad716](https://github.com/typescript-eslint/typescript-eslint/commit/f7ad716)) -* **eslint-plugin:** add default-param-last rule ([#1418](https://github.com/typescript-eslint/typescript-eslint/issues/1418)) ([a37ff9f](https://github.com/typescript-eslint/typescript-eslint/commit/a37ff9f)) -* **eslint-plugin:** add rule naming-conventions ([#1318](https://github.com/typescript-eslint/typescript-eslint/issues/1318)) ([9eab26f](https://github.com/typescript-eslint/typescript-eslint/commit/9eab26f)) -* **typescript-estree:** add parserOption to turn on debug logs ([#1413](https://github.com/typescript-eslint/typescript-eslint/issues/1413)) ([25092fd](https://github.com/typescript-eslint/typescript-eslint/commit/25092fd)) -* **typescript-estree:** add strict type mapping to esTreeNodeToTSNodeMap ([#1382](https://github.com/typescript-eslint/typescript-eslint/issues/1382)) ([d3d70a3](https://github.com/typescript-eslint/typescript-eslint/commit/d3d70a3)) +- bump dependencies and align AST ([#2007](https://github.com/typescript-eslint/typescript-eslint/issues/2007)) ([18668b7](https://github.com/typescript-eslint/typescript-eslint/commit/18668b78fd7d1e5281af7fc26c76e0ca53297f69)) +# [2.31.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.30.0...v2.31.0) (2020-05-04) +### Bug Fixes +- **eslint-plugin:** [dot-notation] handle missing declarations ([#1947](https://github.com/typescript-eslint/typescript-eslint/issues/1947)) ([383f931](https://github.com/typescript-eslint/typescript-eslint/commit/383f93182599c00e231a0f0d36575ca0e19369a6)) +- **eslint-plugin:** [method-signature-style] fix overloaded methods to an intersection type ([#1966](https://github.com/typescript-eslint/typescript-eslint/issues/1966)) ([7f3fba3](https://github.com/typescript-eslint/typescript-eslint/commit/7f3fba348d432d7637e1c737df943ee1f9105062)) +- **eslint-plugin:** [return-await] await in a normal function ([#1962](https://github.com/typescript-eslint/typescript-eslint/issues/1962)) ([f82fd7b](https://github.com/typescript-eslint/typescript-eslint/commit/f82fd7bb81f986c4861d0b4e2ecdb0c496d7a602)) +- **eslint-plugin:** [unbound-method] false positives for unary expressions ([#1964](https://github.com/typescript-eslint/typescript-eslint/issues/1964)) ([b35070e](https://github.com/typescript-eslint/typescript-eslint/commit/b35070ec6f84ad5ce606386cdb6eeb91488dfdd7)) +- **eslint-plugin:** no-base-to-string boolean expression detect ([#1969](https://github.com/typescript-eslint/typescript-eslint/issues/1969)) ([f78f13a](https://github.com/typescript-eslint/typescript-eslint/commit/f78f13aedd59d5b5880903d48c779a6c50fd937e)) +### Features -# [2.15.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.14.0...v2.15.0) (2020-01-06) +- **eslint-plugin:** [member-ordering] add decorators support ([#1870](https://github.com/typescript-eslint/typescript-eslint/issues/1870)) ([f7ec192](https://github.com/typescript-eslint/typescript-eslint/commit/f7ec1920607cb8eec8020b08cd7247de0bf19ce1)) +- **eslint-plugin:** [prefer-optional-chain] added option to convert to suggestion fixer ([#1965](https://github.com/typescript-eslint/typescript-eslint/issues/1965)) ([2f0824b](https://github.com/typescript-eslint/typescript-eslint/commit/2f0824b0a41f3043b6242fc1d49faae540abaf22)) +- **eslint-plugin:** new extended rule 'no-invalid-this' ([#1823](https://github.com/typescript-eslint/typescript-eslint/issues/1823)) ([b18bc35](https://github.com/typescript-eslint/typescript-eslint/commit/b18bc357507337b9725f8d9c1b549513075a0da5)) +- **eslint-plugin-internal:** add rule no-poorly-typed-ts-props ([#1949](https://github.com/typescript-eslint/typescript-eslint/issues/1949)) ([56ea7c9](https://github.com/typescript-eslint/typescript-eslint/commit/56ea7c9581c0c99fe394bbcfc4128e8054c88ab2)) +- **experimental-utils:** expose our RuleTester extension ([#1948](https://github.com/typescript-eslint/typescript-eslint/issues/1948)) ([2dd1638](https://github.com/typescript-eslint/typescript-eslint/commit/2dd1638aaa2658ba99b2341861146b586f489121)) +# [2.30.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.29.0...v2.30.0) (2020-04-27) ### Bug Fixes -* **eslint-plugin:** crash in no-unnecessary-type-arguments ([#1401](https://github.com/typescript-eslint/typescript-eslint/issues/1401)) ([01c939f](https://github.com/typescript-eslint/typescript-eslint/commit/01c939f)) -* **typescript-estree:** correct persisted parse for windows ([#1406](https://github.com/typescript-eslint/typescript-eslint/issues/1406)) ([1a42f3d](https://github.com/typescript-eslint/typescript-eslint/commit/1a42f3d)) - +- **eslint-plugin:** [prefer-string-starts-ends-with] check for negative start index in slice ([#1920](https://github.com/typescript-eslint/typescript-eslint/issues/1920)) ([ed2bd60](https://github.com/typescript-eslint/typescript-eslint/commit/ed2bd6067f74ae33e36a084719bb91efedfba599)) +- **eslint-plugin:** fix no-base-to-string boolean literal check ([#1850](https://github.com/typescript-eslint/typescript-eslint/issues/1850)) ([2f45e99](https://github.com/typescript-eslint/typescript-eslint/commit/2f45e9992a8f12b6233716e77a6159f9cea2c879)) ### Features -* **eslint-plugin:** [strict-bool-expr] add allowSafe option ([#1385](https://github.com/typescript-eslint/typescript-eslint/issues/1385)) ([9344233](https://github.com/typescript-eslint/typescript-eslint/commit/9344233)) -* **eslint-plugin:** add no-implied-eval ([#1375](https://github.com/typescript-eslint/typescript-eslint/issues/1375)) ([254d276](https://github.com/typescript-eslint/typescript-eslint/commit/254d276)) +- **eslint-plugin:** add extension rule `dot-notation` ([#1867](https://github.com/typescript-eslint/typescript-eslint/issues/1867)) ([a85c3e1](https://github.com/typescript-eslint/typescript-eslint/commit/a85c3e1515d735b6c245cc658cdaec6deb05d630)) +- **eslint-plugin:** create `no-invalid-void-type` rule ([#1847](https://github.com/typescript-eslint/typescript-eslint/issues/1847)) ([f667ff1](https://github.com/typescript-eslint/typescript-eslint/commit/f667ff1708d4ed28b7ea5beea742889da69a76d9)) +- **experimental-utils:** allow rule options to be a readonly tuple ([#1924](https://github.com/typescript-eslint/typescript-eslint/issues/1924)) ([4ef6788](https://github.com/typescript-eslint/typescript-eslint/commit/4ef67884962b6aac61cc895aaa3ba16aa892ecf4)) +# [2.29.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.28.0...v2.29.0) (2020-04-20) +### Bug Fixes +- **eslint-plugin:** [no-base-to-string] soft remove `ignoreTaggedTemplateExpressions` option ([#1916](https://github.com/typescript-eslint/typescript-eslint/issues/1916)) ([369978e](https://github.com/typescript-eslint/typescript-eslint/commit/369978e9685bacb3e3882b0510ff06eaf8df4ca1)) +### Features -# [2.14.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.13.0...v2.14.0) (2019-12-30) +- **eslint-plugin:** [no-floating-promise] add option to ignore IIFEs ([#1799](https://github.com/typescript-eslint/typescript-eslint/issues/1799)) ([cea51bf](https://github.com/typescript-eslint/typescript-eslint/commit/cea51bf130d6d3c2935f5e2dcc468196f2ad9d00)) +- **eslint-plugin:** [restrict-template-expressions] add support for intersection types ([#1803](https://github.com/typescript-eslint/typescript-eslint/issues/1803)) ([cc70e4f](https://github.com/typescript-eslint/typescript-eslint/commit/cc70e4fbadd0b15fd6af913a2e1e2ddd346fa558)) +- **eslint-plugin:** add extension rule `init-declarations` ([#1814](https://github.com/typescript-eslint/typescript-eslint/issues/1814)) ([b01f5e7](https://github.com/typescript-eslint/typescript-eslint/commit/b01f5e778ac28e0797a3734fc58d025bb224f418)) +- **eslint-plugin:** add extension rule `keyword-spacing` ([#1739](https://github.com/typescript-eslint/typescript-eslint/issues/1739)) ([c5106dd](https://github.com/typescript-eslint/typescript-eslint/commit/c5106dd4bf2bc8846cc39aa8bb50c33bec026d4d)) +# [2.28.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.27.0...v2.28.0) (2020-04-13) ### Bug Fixes -* **eslint-plugin:** type assertion in rule no-extra-parens ([#1376](https://github.com/typescript-eslint/typescript-eslint/issues/1376)) ([f40639e](https://github.com/typescript-eslint/typescript-eslint/commit/f40639e)) -* **typescript-estree:** visit typeParameters in OptionalCallExpr ([#1377](https://github.com/typescript-eslint/typescript-eslint/issues/1377)) ([cba6a2a](https://github.com/typescript-eslint/typescript-eslint/commit/cba6a2a)) - +- **eslint-plugin:** [method-signature-style] handle multiline params ([#1861](https://github.com/typescript-eslint/typescript-eslint/issues/1861)) ([5832a86](https://github.com/typescript-eslint/typescript-eslint/commit/5832a8643bbe174ec02df5966bb333e506e45f5d)) +- **eslint-plugin:** [no-empty-interface] use suggestion fixer for ambient contexts ([#1880](https://github.com/typescript-eslint/typescript-eslint/issues/1880)) ([62b2278](https://github.com/typescript-eslint/typescript-eslint/commit/62b2278aec0011c93eae17bed8b278114d3379a2)) +- **eslint-plugin:** [unbound-method] false positive on property function initializer ([#1890](https://github.com/typescript-eslint/typescript-eslint/issues/1890)) ([f1c3b18](https://github.com/typescript-eslint/typescript-eslint/commit/f1c3b18f7aadc81f7dca7aa32aa1a8fe424e04e7)) +- **eslint-plugin:** [unbound-method] ignore assignments _to_ methods ([#1736](https://github.com/typescript-eslint/typescript-eslint/issues/1736)) ([6b4680b](https://github.com/typescript-eslint/typescript-eslint/commit/6b4680b6e7343d9d98fa1de170f387a36d98b73e)) +- **eslint-plugin:** no-empty-interface autofix ([#1865](https://github.com/typescript-eslint/typescript-eslint/issues/1865)) ([829a2f7](https://github.com/typescript-eslint/typescript-eslint/commit/829a2f728f876d356908e2338c2d6620e58f9943)), closes [#1864](https://github.com/typescript-eslint/typescript-eslint/issues/1864) +- **eslint-plugin:** use `isTypeArrayTypeOrUnionOfArrayTypes` util for checking if type is array ([#1728](https://github.com/typescript-eslint/typescript-eslint/issues/1728)) ([05030f8](https://github.com/typescript-eslint/typescript-eslint/commit/05030f8d2bd5a50e95053bc61380891da71cc567)) ### Features -* add internal eslint plugin for repo-specific lint rules ([#1373](https://github.com/typescript-eslint/typescript-eslint/issues/1373)) ([3a15413](https://github.com/typescript-eslint/typescript-eslint/commit/3a15413)) +- **eslint-plugin:** [ban-ts-comment] support `ts-expect-error` ([#1706](https://github.com/typescript-eslint/typescript-eslint/issues/1706)) ([469cff3](https://github.com/typescript-eslint/typescript-eslint/commit/469cff332c041f38f60de052769287342455cff1)) +- **eslint-plugin:** [consistent-type-assertions] always allow `const` assertions ([#1713](https://github.com/typescript-eslint/typescript-eslint/issues/1713)) ([af2c00d](https://github.com/typescript-eslint/typescript-eslint/commit/af2c00de62f7e31eaeb88996ebf3f330cc8473b9)) +- **eslint-plugin:** [explicit-function-return-type] add option to allow concise arrows that start with void ([#1732](https://github.com/typescript-eslint/typescript-eslint/issues/1732)) ([2e9c202](https://github.com/typescript-eslint/typescript-eslint/commit/2e9c2028a8a0b226e0f87d4bcc997fa259ca3ebd)) +- **eslint-plugin:** [explicit-module-boundary-types] add optio… ([#1778](https://github.com/typescript-eslint/typescript-eslint/issues/1778)) ([3eee804](https://github.com/typescript-eslint/typescript-eslint/commit/3eee804461d017ea6189cd7f64fcd473623684b4)) +- **eslint-plugin:** [no-base-to-string] add option to ignore tagged templates ([#1763](https://github.com/typescript-eslint/typescript-eslint/issues/1763)) ([f5edb99](https://github.com/typescript-eslint/typescript-eslint/commit/f5edb9938c33f8b68f026eba00db3abe9359ced3)) +- **eslint-plugin:** [restrict-template-expressions] add option `allowAny` ([#1762](https://github.com/typescript-eslint/typescript-eslint/issues/1762)) ([d44c0f9](https://github.com/typescript-eslint/typescript-eslint/commit/d44c0f9bed2404ca00b020b35fd825929e213398)) +- **eslint-plugin:** add rule `prefer-reduce-type-parameter` ([#1707](https://github.com/typescript-eslint/typescript-eslint/issues/1707)) ([c92d240](https://github.com/typescript-eslint/typescript-eslint/commit/c92d240e49113779053eac32038382b282812afc)) +- **eslint-plugin:** add rule `prefer-ts-expect-error` ([#1705](https://github.com/typescript-eslint/typescript-eslint/issues/1705)) ([7021f21](https://github.com/typescript-eslint/typescript-eslint/commit/7021f2151a25db2a8edf17e06cd6f21e90761ec8)) +- **eslint-plugin:** add rule no-unsafe-assignment ([#1694](https://github.com/typescript-eslint/typescript-eslint/issues/1694)) ([a49b860](https://github.com/typescript-eslint/typescript-eslint/commit/a49b860cbbb2c7d718b99f561e2fb6eaadf16f17)) +# [2.27.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.26.0...v2.27.0) (2020-04-06) +### Bug Fixes +- **eslint-plugin:** [no-throw-literal] fix crash caused by getBaseTypes ([#1830](https://github.com/typescript-eslint/typescript-eslint/issues/1830)) ([9d53c76](https://github.com/typescript-eslint/typescript-eslint/commit/9d53c761983dd964109b9f13eb9bfe20caf9defb)) +- **eslint-plugin:** [no-unsafe-call] fix incorrect selector ([#1826](https://github.com/typescript-eslint/typescript-eslint/issues/1826)) ([8ec53a3](https://github.com/typescript-eslint/typescript-eslint/commit/8ec53a3579fcb59cdffea0c60fbb755d056f4c8a)) +- **eslint-plugin:** [require-await] handle async generators ([#1782](https://github.com/typescript-eslint/typescript-eslint/issues/1782)) ([9642d9d](https://github.com/typescript-eslint/typescript-eslint/commit/9642d9dce693befac89a4e9d8bf8dd18f4361e2a)) +- **eslint-plugin:** no-explicit-any constructor functions (& mo… ([#1711](https://github.com/typescript-eslint/typescript-eslint/issues/1711)) ([ab8572e](https://github.com/typescript-eslint/typescript-eslint/commit/ab8572e30e14ebda91c8437be5ee35e7dc9add2e)) +- **typescript-estree:** add support for TS3.9 extra file extensions ([#1833](https://github.com/typescript-eslint/typescript-eslint/issues/1833)) ([1f0ff41](https://github.com/typescript-eslint/typescript-eslint/commit/1f0ff41aa1bc3b7c5330b2f5fe22e24bf578a6b2)) +### Features -# [2.13.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.12.0...v2.13.0) (2019-12-23) +- **eslint-plugin:** new rule method-signature-style ([#1685](https://github.com/typescript-eslint/typescript-eslint/issues/1685)) ([c49d771](https://github.com/typescript-eslint/typescript-eslint/commit/c49d771ba62f1a21d3c1aec106341daddfcd3c9a)) +- **eslint-plugin:** sort members alphabetically ([#263](https://github.com/typescript-eslint/typescript-eslint/issues/263)) ([485e902](https://github.com/typescript-eslint/typescript-eslint/commit/485e90213a0f8baac0587f7d56925448883fc5bd)) +- **eslint-plugin-internal:** add plugin-test-formatting rule ([#1821](https://github.com/typescript-eslint/typescript-eslint/issues/1821)) ([9b0023a](https://github.com/typescript-eslint/typescript-eslint/commit/9b0023a4996ecdd7dfcb30abd1678091a78f3064)) +- **experimental-utils:** add types for suggestions from CLIEngine ([#1844](https://github.com/typescript-eslint/typescript-eslint/issues/1844)) ([7c11bd6](https://github.com/typescript-eslint/typescript-eslint/commit/7c11bd66f2d0e5ea9d3943e6b8c66e6ddff50862)) +- **experimental-utils:** update eslint types to match v6.8 ([#1846](https://github.com/typescript-eslint/typescript-eslint/issues/1846)) ([16ce74d](https://github.com/typescript-eslint/typescript-eslint/commit/16ce74d247781ac890dc0baa30c384f97e581b6b)) +# [2.26.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.25.0...v2.26.0) (2020-03-30) ### Bug Fixes -* **eslint-plugin:** [quotes] ignore backticks for Enum members ([#1355](https://github.com/typescript-eslint/typescript-eslint/issues/1355)) ([e51048c](https://github.com/typescript-eslint/typescript-eslint/commit/e51048c)) -* **eslint-plugin:** [type-annotation-spacing] typo in messages ([#1354](https://github.com/typescript-eslint/typescript-eslint/issues/1354)) ([82e0dbc](https://github.com/typescript-eslint/typescript-eslint/commit/82e0dbc)) -* **eslint-plugin:** add isTypeAssertion utility function ([#1369](https://github.com/typescript-eslint/typescript-eslint/issues/1369)) ([bb1671e](https://github.com/typescript-eslint/typescript-eslint/commit/bb1671e)) -* **eslint-plugin:** use AST_NODE_TYPES enum instead of strings ([#1366](https://github.com/typescript-eslint/typescript-eslint/issues/1366)) ([bd0276b](https://github.com/typescript-eslint/typescript-eslint/commit/bd0276b)) -* **typescript-estree:** correct type of key for base nodes ([#1367](https://github.com/typescript-eslint/typescript-eslint/issues/1367)) ([099225a](https://github.com/typescript-eslint/typescript-eslint/commit/099225a)) - +- **eslint-plugin:** [no-explicit-any] error with ignoreRestArgs ([#1796](https://github.com/typescript-eslint/typescript-eslint/issues/1796)) ([638d84d](https://github.com/typescript-eslint/typescript-eslint/commit/638d84ddd77d07117b3ec7c5431f3b0e44b1995d)) +- **eslint-plugin:** [no-unsafe-call] allow import expressions ([#1800](https://github.com/typescript-eslint/typescript-eslint/issues/1800)) ([4fa7107](https://github.com/typescript-eslint/typescript-eslint/commit/4fa710754ecc412b65ac3864fe0c7857c254ac1b)) +- **eslint-plugin:** [no-unsafe-return] error with unknown ([#2371](https://github.com/typescript-eslint/typescript-eslint/issues/2371)) ([e7528e6](https://github.com/typescript-eslint/typescript-eslint/commit/e7528e686f5fe5cce8504fc15d3cd06b8733712e)) -* **typescript-estree:** support TSv4 labelled tuple members ([#2378](https://github.com/typescript-eslint/typescript-eslint/issues/2378)) ([00d84ff](https://github.com/typescript-eslint/typescript-eslint/commit/00d84ffbcbe9d0ec98bdb2f2ce59959a27ce4dbe)) +- **ast-spec:** bring `Node` objects in line with ESTree ([#3771](https://github.com/typescript-eslint/typescript-eslint/issues/3771)) ([dd14064](https://github.com/typescript-eslint/typescript-eslint/commit/dd140643b457aa515cc21fcda2b3cd4acc2a1c5c)) +- **eslint-plugin:** remove `object` from `ban-types`' default types ([#3818](https://github.com/typescript-eslint/typescript-eslint/issues/3818)) ([ae3fa90](https://github.com/typescript-eslint/typescript-eslint/commit/ae3fa900d5b4e1f557a52ca58d35a7d098d9efaf)) +- **eslint-plugin:** removed value from abstract property nodes ([#3765](https://github.com/typescript-eslint/typescript-eslint/issues/3765)) ([5823524](https://github.com/typescript-eslint/typescript-eslint/commit/58235241714596b641a1e8b39c569e561e0039b4)), closes [#3748](https://github.com/typescript-eslint/typescript-eslint/issues/3748) +- **eslint-plugin:** update recommended configs ([#3809](https://github.com/typescript-eslint/typescript-eslint/issues/3809)) ([deeb7bb](https://github.com/typescript-eslint/typescript-eslint/commit/deeb7bb9334d301c6af56aefd37d318231af11ef)) +- align class property representation with ESTree ([#3806](https://github.com/typescript-eslint/typescript-eslint/issues/3806)) ([22fa5c0](https://github.com/typescript-eslint/typescript-eslint/commit/22fa5c0c4705ed2898f00b7cacc5dd642d859275)), closes [#3430](https://github.com/typescript-eslint/typescript-eslint/issues/3430) [#3077](https://github.com/typescript-eslint/typescript-eslint/issues/3077) +- remove `meta.docs.category` from rules ([#3800](https://github.com/typescript-eslint/typescript-eslint/issues/3800)) ([71c9370](https://github.com/typescript-eslint/typescript-eslint/commit/71c93706e55f5f92a1285102b93c6ab1950c6df4)) +- remove `TSParenthesizedType` ([#3340](https://github.com/typescript-eslint/typescript-eslint/issues/3340)) ([c8ee432](https://github.com/typescript-eslint/typescript-eslint/commit/c8ee43269faea4c04ec02eaa2b81a0aa6eec5d3e)), closes [#3136](https://github.com/typescript-eslint/typescript-eslint/issues/3136) +- support `PrivateIdentifier` ([#3808](https://github.com/typescript-eslint/typescript-eslint/issues/3808)) ([0eefe5e](https://github.com/typescript-eslint/typescript-eslint/commit/0eefe5e49d21af3f1e3e2d9a90c2e49929863ac2)), closes [#3430](https://github.com/typescript-eslint/typescript-eslint/issues/3430) [#2933](https://github.com/typescript-eslint/typescript-eslint/issues/2933) +- **eslint-plugin:** [comma-dangle] align schema with ESLint v8 ([#3768](https://github.com/typescript-eslint/typescript-eslint/issues/3768)) ([0acfafc](https://github.com/typescript-eslint/typescript-eslint/commit/0acfafcc655e28dcfc05a5caa567c0d0217ee7ad)) +- **eslint-plugin:** [member-ordering] add support for getters and setters ([#3611](https://github.com/typescript-eslint/typescript-eslint/issues/3611)) ([e264124](https://github.com/typescript-eslint/typescript-eslint/commit/e2641246571b69df36cde5cb7bce7c4fffc43f98)) +- **eslint-plugin:** remove `no-unused-vars-experimental` ([79ae03b](https://github.com/typescript-eslint/typescript-eslint/commit/79ae03b8adbae2b0a86276711a9c834af01bbb61)) +- support ESLint v8 ([#3737](https://github.com/typescript-eslint/typescript-eslint/issues/3737)) ([4ca62ae](https://github.com/typescript-eslint/typescript-eslint/commit/4ca62aee6681d706e762a8db727541ca204364f2)) +### BREAKING CHANGES +- **eslint-plugin:** `ban-types` no longer reports `object` by default +# [4.33.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.32.0...v4.33.0) (2021-10-04) +### Bug Fixes -# [3.8.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.7.1...v3.8.0) (2020-08-03) +- **eslint-plugin:** [lines-between-class-members] fix `exceptAfterOverload` for abstract methods ([#3943](https://github.com/typescript-eslint/typescript-eslint/issues/3943)) ([240fc65](https://github.com/typescript-eslint/typescript-eslint/commit/240fc65c307769eae9b35e611fca74ba4c35a025)) +- **eslint-plugin:** [no-confusing-void-expression] support optional chaining ([#3937](https://github.com/typescript-eslint/typescript-eslint/issues/3937)) ([c40dd13](https://github.com/typescript-eslint/typescript-eslint/commit/c40dd13df76b77052c85254622df5533307dc07e)) +- **eslint-plugin:** [no-restricted-imports] fix crash when no options given ([#3947](https://github.com/typescript-eslint/typescript-eslint/issues/3947)) ([edaa3c1](https://github.com/typescript-eslint/typescript-eslint/commit/edaa3c10eb67bb89f9c6a78bd1ed593925c33f16)) +- **eslint-plugin:** [non-nullable-type-assertion-style] false-positive with non-nullish `as` assertions and types ([#3940](https://github.com/typescript-eslint/typescript-eslint/issues/3940)) ([40760f9](https://github.com/typescript-eslint/typescript-eslint/commit/40760f98da0d23c7bce3da04cf37a56c10447bde)) +- **eslint-plugin:** [padding-line-between-statements] TSModuleBlock should change scope ([#3944](https://github.com/typescript-eslint/typescript-eslint/issues/3944)) ([f8f534e](https://github.com/typescript-eslint/typescript-eslint/commit/f8f534e42b0ec517274442422c37ab019cf3c200)) +- **eslint-plugin:** [prefer-regexp-exec] check `RegExp` without flags ([#3946](https://github.com/typescript-eslint/typescript-eslint/issues/3946)) ([0868725](https://github.com/typescript-eslint/typescript-eslint/commit/0868725713e8102e8932303d4c680340688e1fa9)) +# [4.32.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.31.2...v4.32.0) (2021-09-27) ### Bug Fixes -* **eslint-plugin:** [no-implied-eval] don't report when `Function` is imported ([#2348](https://github.com/typescript-eslint/typescript-eslint/issues/2348)) ([fa169e7](https://github.com/typescript-eslint/typescript-eslint/commit/fa169e79661821f0e0e64a56d6db9da42c3c8654)) -* **eslint-plugin:** [no-unsafe-assignment] fix typo in message ([#2347](https://github.com/typescript-eslint/typescript-eslint/issues/2347)) ([2027bb1](https://github.com/typescript-eslint/typescript-eslint/commit/2027bb11689b76c297f93ba8a918b35fe68e5b9d)) - +- **eslint-plugin:** [consistent-type-definitions] correct fix for `export default` ([#3899](https://github.com/typescript-eslint/typescript-eslint/issues/3899)) ([ebb33ed](https://github.com/typescript-eslint/typescript-eslint/commit/ebb33ed8bc29f69ca2a657ec5b31857c0aeb4b56)) +- **eslint-plugin:** [no-require-imports] report only global `require` ([#3871](https://github.com/typescript-eslint/typescript-eslint/issues/3871)) ([8aa87a1](https://github.com/typescript-eslint/typescript-eslint/commit/8aa87a136e7cd7b40fbf09fcfa26bf04d1c6d5fe)) +- **eslint-plugin:** [no-shadow] ignore type-only imports properly ([#3868](https://github.com/typescript-eslint/typescript-eslint/issues/3868)) ([dda9cee](https://github.com/typescript-eslint/typescript-eslint/commit/dda9cee68a5cd78b358a854027999c739ac623e9)) +- **eslint-plugin:** [no-var-requires] report problems within `NewExpression` ([#3884](https://github.com/typescript-eslint/typescript-eslint/issues/3884)) ([ed5e459](https://github.com/typescript-eslint/typescript-eslint/commit/ed5e45983fa052accf3a7b5fcdbfcb15ed09490f)) +- **eslint-plugin:** [padding-line-between-statements] problems within namespaces not being reported ([#3869](https://github.com/typescript-eslint/typescript-eslint/issues/3869)) ([1861356](https://github.com/typescript-eslint/typescript-eslint/commit/186135698b40b510ffff6a2402aa34f2726596ea)) +- **eslint-plugin:** [prefer-regexp-exec] respect flags when using `RegExp` ([#3855](https://github.com/typescript-eslint/typescript-eslint/issues/3855)) ([ffdb5ff](https://github.com/typescript-eslint/typescript-eslint/commit/ffdb5ff9900e07374a2f3686447e3e2c78fbc38a)) +- **eslint-plugin:** [prefer-return-this-type] handle generics properly in fixer ([#3852](https://github.com/typescript-eslint/typescript-eslint/issues/3852)) ([9e98b8f](https://github.com/typescript-eslint/typescript-eslint/commit/9e98b8f43ca6aadc9758a4e9a0d1d3c250af6cca)) +- **eslint-plugin:** false-positive/negative with array index in no-unnecessary-condition ([#3805](https://github.com/typescript-eslint/typescript-eslint/issues/3805)) ([bdb8f0b](https://github.com/typescript-eslint/typescript-eslint/commit/bdb8f0be1466e4a4b713e91199be91030650ed01)) ### Features -* **eslint-plugin:** [naming-convention] allow specifying an array of selectors ([#2335](https://github.com/typescript-eslint/typescript-eslint/issues/2335)) ([3ef6bd5](https://github.com/typescript-eslint/typescript-eslint/commit/3ef6bd5cadc225e42ef1330d15919a39f53f2a2b)) -* **eslint-plugin:** add `prefer-enum-initializers` rule ([#2326](https://github.com/typescript-eslint/typescript-eslint/issues/2326)) ([4f38ea3](https://github.com/typescript-eslint/typescript-eslint/commit/4f38ea39c97289db11501d6368d01db8c5787257)) - +- **eslint-plugin:** [no-type-alias]: add allowGenerics option ([#3865](https://github.com/typescript-eslint/typescript-eslint/issues/3865)) ([4195919](https://github.com/typescript-eslint/typescript-eslint/commit/41959199735a6d4fe3ae7825f3087e8fb249be9f)) +- **eslint-plugin:** add `no-non-null-asserted-nullish-coalescing` rule ([#3349](https://github.com/typescript-eslint/typescript-eslint/issues/3349)) ([4e99961](https://github.com/typescript-eslint/typescript-eslint/commit/4e999614e9761f6dc7e5aa0c5bad76ab164ab3fb)) +- **eslint-plugin:** add new extended rule `no-restricted-imports` ([#3775](https://github.com/typescript-eslint/typescript-eslint/issues/3775)) ([ec5d506](https://github.com/typescript-eslint/typescript-eslint/commit/ec5d50696b249a207d322e4a2fc66582122eb010)) +- **eslint-plugin-internal:** [prefer-ast-types-enum] add `DefinitionType` enum ([#3916](https://github.com/typescript-eslint/typescript-eslint/issues/3916)) ([13b7de5](https://github.com/typescript-eslint/typescript-eslint/commit/13b7de508e0f8eac492879ff9ab99acd8d3e977e)) +## [4.31.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.31.1...v4.31.2) (2021-09-20) +**Note:** Version bump only for package @typescript-eslint/eslint-plugin +## [4.31.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.31.0...v4.31.1) (2021-09-13) -## [3.7.1](https://github.com/typescript-eslint/typescript-eslint/compare/v3.7.0...v3.7.1) (2020-07-27) +**Note:** Version bump only for package @typescript-eslint/eslint-plugin +# [4.31.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.30.0...v4.31.0) (2021-09-06) ### Bug Fixes -* **eslint-plugin:** [adjacent-overload-signatures] fix false positive on call signatures and a method named `call` ([#2313](https://github.com/typescript-eslint/typescript-eslint/issues/2313)) ([30fafb0](https://github.com/typescript-eslint/typescript-eslint/commit/30fafb09422b3aca881f4785d89b0536092d4952)) -* **eslint-plugin:** [no-extra-parens] stop reporting on calling generic functions with one argument and type parameters containing parentheses ([#2319](https://github.com/typescript-eslint/typescript-eslint/issues/2319)) ([616a841](https://github.com/typescript-eslint/typescript-eslint/commit/616a841032bec310d9f31f1c987888273df27008)) - +- **utils:** support immutable arrays in `ReportFixFunction` ([#3830](https://github.com/typescript-eslint/typescript-eslint/issues/3830)) ([8218055](https://github.com/typescript-eslint/typescript-eslint/commit/8218055d6dfd94c9e6c8645848f981d9d51ce08c)) +### Features +- **eslint-plugin:** [prefer-readonly-parameter-types] add option treatMethodsAsReadonly ([#3733](https://github.com/typescript-eslint/typescript-eslint/issues/3733)) ([a46e318](https://github.com/typescript-eslint/typescript-eslint/commit/a46e3182c8a0b07c914605d6d9fe28ef36a7c32a)) +- **eslint-plugin:** [restrict-template-expressions] add option to allow RegExp ([#3709](https://github.com/typescript-eslint/typescript-eslint/issues/3709)) ([363b3dc](https://github.com/typescript-eslint/typescript-eslint/commit/363b3dc4dd0dc343311c729d75935b10f9d2fd5e)) +- **eslint-plugin:** add `no-meaningless-void-operator` rule ([#3641](https://github.com/typescript-eslint/typescript-eslint/issues/3641)) ([ea40ab6](https://github.com/typescript-eslint/typescript-eslint/commit/ea40ab659351ae7cf7235ea063d42ac155b11e5f)) +- **eslint-plugin:** add extension rule `padding-line-between-statements` ([#3418](https://github.com/typescript-eslint/typescript-eslint/issues/3418)) ([f79ae9b](https://github.com/typescript-eslint/typescript-eslint/commit/f79ae9b58e82f4fddef640a34a1d7ff92b763e65)) +# [4.30.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.29.3...v4.30.0) (2021-08-30) -# [3.7.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.6.1...v3.7.0) (2020-07-20) +### Bug Fixes +- **eslint-plugin:** [dot-notation] false positive with optional chaining ([#3711](https://github.com/typescript-eslint/typescript-eslint/issues/3711)) ([c19fc6e](https://github.com/typescript-eslint/typescript-eslint/commit/c19fc6e03072ed549bc9b35ebe6961e10f8f9b43)), closes [#3510](https://github.com/typescript-eslint/typescript-eslint/issues/3510) +- **eslint-plugin:** [prefer-reduce-type-parameter] handle already existing type params ([#3706](https://github.com/typescript-eslint/typescript-eslint/issues/3706)) ([71dd273](https://github.com/typescript-eslint/typescript-eslint/commit/71dd27361a1bc93b5d5eb2279d805922b10002fd)) +- **eslint-plugin:** isTypeReadonly error with unknown ([#2371](https://github.com/typescript-eslint/typescript-eslint/issues/2371)) ([e7528e6](https://github.com/typescript-eslint/typescript-eslint/commit/e7528e686f5fe5cce8504fc15d3cd06b8733712e)) +- **typescript-estree:** support TSv4 labelled tuple members ([#2378](https://github.com/typescript-eslint/typescript-eslint/issues/2378)) ([00d84ff](https://github.com/typescript-eslint/typescript-eslint/commit/00d84ffbcbe9d0ec98bdb2f2ce59959a27ce4dbe)) +# [3.8.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.7.1...v3.8.0) (2020-08-03) +### Bug Fixes +- **eslint-plugin:** [no-implied-eval] don't report when `Function` is imported ([#2348](https://github.com/typescript-eslint/typescript-eslint/issues/2348)) ([fa169e7](https://github.com/typescript-eslint/typescript-eslint/commit/fa169e79661821f0e0e64a56d6db9da42c3c8654)) +- **eslint-plugin:** [no-unsafe-assignment] fix typo in message ([#2347](https://github.com/typescript-eslint/typescript-eslint/issues/2347)) ([2027bb1](https://github.com/typescript-eslint/typescript-eslint/commit/2027bb11689b76c297f93ba8a918b35fe68e5b9d)) +### Features -## [2.19.2](https://github.com/typescript-eslint/typescript-eslint/compare/v2.19.1...v2.19.2) (2020-02-10) +- **eslint-plugin:** [naming-convention] allow specifying an array of selectors ([#2335](https://github.com/typescript-eslint/typescript-eslint/issues/2335)) ([3ef6bd5](https://github.com/typescript-eslint/typescript-eslint/commit/3ef6bd5cadc225e42ef1330d15919a39f53f2a2b)) +- **eslint-plugin:** add `prefer-enum-initializers` rule ([#2326](https://github.com/typescript-eslint/typescript-eslint/issues/2326)) ([4f38ea3](https://github.com/typescript-eslint/typescript-eslint/commit/4f38ea39c97289db11501d6368d01db8c5787257)) -**Note:** Version bump only for package @typescript-eslint/eslint-plugin +## [3.7.1](https://github.com/typescript-eslint/typescript-eslint/compare/v3.7.0...v3.7.1) (2020-07-27) +### Bug Fixes +- **eslint-plugin:** [adjacent-overload-signatures] fix false positive on call signatures and a method named `call` ([#2313](https://github.com/typescript-eslint/typescript-eslint/issues/2313)) ([30fafb0](https://github.com/typescript-eslint/typescript-eslint/commit/30fafb09422b3aca881f4785d89b0536092d4952)) +- **eslint-plugin:** [no-extra-parens] stop reporting on calling generic functions with one argument and type parameters containing parentheses ([#2319](https://github.com/typescript-eslint/typescript-eslint/issues/2319)) ([616a841](https://github.com/typescript-eslint/typescript-eslint/commit/616a841032bec310d9f31f1c987888273df27008)) +# [3.7.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.6.1...v3.7.0) (2020-07-20) +### Features -## [2.19.1](https://github.com/typescript-eslint/typescript-eslint/compare/v2.19.0...v2.19.1) (2020-02-10) +- **eslint-plugin:** [naming-convention] allow selecting only `const` variables ([#2291](https://github.com/typescript-eslint/typescript-eslint/issues/2291)) ([156d058](https://github.com/typescript-eslint/typescript-eslint/commit/156d058fee835fdf1ed827a5ad4a80d57190cc54)) +- **eslint-plugin:** [no-empty-function] add `decoratedFunctions` option ([#2295](https://github.com/typescript-eslint/typescript-eslint/issues/2295)) ([88f08f4](https://github.com/typescript-eslint/typescript-eslint/commit/88f08f410760f58fdc2de58ecd9dab9610821642)) +## [3.6.1](https://github.com/typescript-eslint/typescript-eslint/compare/v3.6.0...v3.6.1) (2020-07-13) ### Bug Fixes -* **eslint-plugin:** [unbound-method] blacklist a few unbound natives ([#1562](https://github.com/typescript-eslint/typescript-eslint/issues/1562)) ([4670aab](https://github.com/typescript-eslint/typescript-eslint/commit/4670aabef31d9017ad302f206b9c2f18d53c8ee4)) +- **eslint-plugin:** [no-unnecessary-condition] handle computed member access ([#2288](https://github.com/typescript-eslint/typescript-eslint/issues/2288)) ([3a187ca](https://github.com/typescript-eslint/typescript-eslint/commit/3a187cafb7302a3c05de0e6a236dd142a5e2d741)) +- **eslint-plugin:** [prefer-literal-enum-member] allow negative numbers ([#2277](https://github.com/typescript-eslint/typescript-eslint/issues/2277)) ([00ac9c3](https://github.com/typescript-eslint/typescript-eslint/commit/00ac9c3ccaad27bab08ec3c3a104f612bb593df5)) +- **eslint-plugin:** [space-before-function-paren] incorrect handling of abstract methods ([#2275](https://github.com/typescript-eslint/typescript-eslint/issues/2275)) ([ced6591](https://github.com/typescript-eslint/typescript-eslint/commit/ced65918b16f46c383496a9b4bd43eca8a76baf6)), closes [#2274](https://github.com/typescript-eslint/typescript-eslint/issues/2274) +- **eslint-plugin:** [switch-exhaustiveness-check] handle special characters in enum keys ([#2207](https://github.com/typescript-eslint/typescript-eslint/issues/2207)) ([98ab010](https://github.com/typescript-eslint/typescript-eslint/commit/98ab010fb7fca884984bb4200fd806ecee8071b6)) +# [3.6.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.5.0...v3.6.0) (2020-07-06) +### Bug Fixes +- **eslint-plugin:** [no-namespace] allow namespaces in nested declarations with `allowDeclarations` ([#2238](https://github.com/typescript-eslint/typescript-eslint/issues/2238)) ([c1df669](https://github.com/typescript-eslint/typescript-eslint/commit/c1df6694f7866d3ef7ede0b1c6c9dd6f3955e682)) +- **eslint-plugin:** [space-before-function-paren] handle abstract functions ([#2199](https://github.com/typescript-eslint/typescript-eslint/issues/2199)) ([88a3edf](https://github.com/typescript-eslint/typescript-eslint/commit/88a3edfce8349f871b7b660d2b76508b67c94eda)) +### Features -# [2.19.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.18.0...v2.19.0) (2020-02-03) +- **eslint-plugin:** add rule `prefer-literal-enum-member` ([#1898](https://github.com/typescript-eslint/typescript-eslint/issues/1898)) ([fe2b2ec](https://github.com/typescript-eslint/typescript-eslint/commit/fe2b2ec39ef04ac8b73eef9d29d12fd1b24fa183)) +# [3.5.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.4.0...v3.5.0) (2020-06-29) ### Bug Fixes -* **eslint-plugin:** [embt] fix allowTypedFunctionExpressions ([#1553](https://github.com/typescript-eslint/typescript-eslint/issues/1553)) ([9e7d161](https://github.com/typescript-eslint/typescript-eslint/commit/9e7d1616d78a0f94521f4e6d4b48344e5df2d9f7)) -* **eslint-plugin:** [require-await] improve performance ([#1536](https://github.com/typescript-eslint/typescript-eslint/issues/1536)) ([45ae0b9](https://github.com/typescript-eslint/typescript-eslint/commit/45ae0b9565ee6e9d01e82107d85ad7151a15af7b)) - +- **eslint-plugin:** [naming-convention] support unicode in regex ([#2241](https://github.com/typescript-eslint/typescript-eslint/issues/2241)) ([5fdd21a](https://github.com/typescript-eslint/typescript-eslint/commit/5fdd21a1726fb6928098c4152aec55a30df960d4)) ### Features -* **eslint-plugin:** [no-extra-non-null-assert] add fixer ([#1468](https://github.com/typescript-eslint/typescript-eslint/issues/1468)) ([54201ab](https://github.com/typescript-eslint/typescript-eslint/commit/54201aba37b2865c0ba4981be79d1fd989806133)) -* **eslint-plugin:** [no-float-prom] fixer + msg for ignoreVoid ([#1473](https://github.com/typescript-eslint/typescript-eslint/issues/1473)) ([159b16e](https://github.com/typescript-eslint/typescript-eslint/commit/159b16ec3a66f05478080c397df5c3f6e29535e4)) -* **eslint-plugin:** [unbound-method] support bound builtins ([#1526](https://github.com/typescript-eslint/typescript-eslint/issues/1526)) ([0a110eb](https://github.com/typescript-eslint/typescript-eslint/commit/0a110eb680749c8c4a2a3dc1375c1a83056e4c14)) -* **eslint-plugin:** add extension [no-dupe-class-members] ([#1492](https://github.com/typescript-eslint/typescript-eslint/issues/1492)) ([b22424e](https://github.com/typescript-eslint/typescript-eslint/commit/b22424e7d4a16042a027557f44e9191e0722b38b)) -* **eslint-plugin:** add no-unnecessary-boolean-literal-compare ([#242](https://github.com/typescript-eslint/typescript-eslint/issues/242)) ([6bebb1d](https://github.com/typescript-eslint/typescript-eslint/commit/6bebb1dc47897ee0e1f075d7e5dd89d8b0590f31)) -* **eslint-plugin:** add switch-exhaustiveness-check rule ([#972](https://github.com/typescript-eslint/typescript-eslint/issues/972)) ([9e0f6dd](https://github.com/typescript-eslint/typescript-eslint/commit/9e0f6ddef7cd29f355f398c90f1986e51c4854f7)) -* **eslint-plugin:** support negative matches for `filter` ([#1517](https://github.com/typescript-eslint/typescript-eslint/issues/1517)) ([b24fbe8](https://github.com/typescript-eslint/typescript-eslint/commit/b24fbe8790b540998e4085174251fb4d61bf96b0)) +- add package scope-manager ([#1939](https://github.com/typescript-eslint/typescript-eslint/issues/1939)) ([682eb7e](https://github.com/typescript-eslint/typescript-eslint/commit/682eb7e009c3f22a542882dfd3602196a60d2a1e)) +# [3.4.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.3.0...v3.4.0) (2020-06-22) +### Bug Fixes +- **eslint-plugin:** [no-base-to-string] handle intersection types ([#2170](https://github.com/typescript-eslint/typescript-eslint/issues/2170)) ([9cca3a9](https://github.com/typescript-eslint/typescript-eslint/commit/9cca3a9584d5d5ef0536219c5a734f4e87efb543)) +- **eslint-plugin:** [unbound-method] handling destructuring ([#2228](https://github.com/typescript-eslint/typescript-eslint/issues/2228)) ([c3753c2](https://github.com/typescript-eslint/typescript-eslint/commit/c3753c21768d355ecdb9e7ae8e0bfdfbbc1d3bbe)) +### Features -# [2.18.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.17.0...v2.18.0) (2020-01-27) +- **eslint-plugin:** [no-unnecessary-boolean-literal-compare] add option to check nullable booleans ([#1983](https://github.com/typescript-eslint/typescript-eslint/issues/1983)) ([c0b3057](https://github.com/typescript-eslint/typescript-eslint/commit/c0b3057b7f7d515891ad2efe32e4ef8c01e0478f)) +- **eslint-plugin:** add extension rule `no-loss-of-precision` ([#2196](https://github.com/typescript-eslint/typescript-eslint/issues/2196)) ([535b0f2](https://github.com/typescript-eslint/typescript-eslint/commit/535b0f2ddd82efa6a2c40307a61c480f4b3cdea3)) +# [3.3.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.2.0...v3.3.0) (2020-06-15) ### Bug Fixes -* **eslint-plugin:** [explicit-module-boundary-types] false positive for returned fns ([#1490](https://github.com/typescript-eslint/typescript-eslint/issues/1490)) ([5562ad5](https://github.com/typescript-eslint/typescript-eslint/commit/5562ad5ed902102d7c09a7fd47ca4ea7e50d6654)) -* improve token types and add missing type guards ([#1497](https://github.com/typescript-eslint/typescript-eslint/issues/1497)) ([ce41d7d](https://github.com/typescript-eslint/typescript-eslint/commit/ce41d7de33bcb7ccf96c03ac1438304c5a49ff54)) -* **eslint-plugin:** [naming-convention] fix filter option ([#1482](https://github.com/typescript-eslint/typescript-eslint/issues/1482)) ([718cd88](https://github.com/typescript-eslint/typescript-eslint/commit/718cd889c155a75413c571ac006c33fbc271dcc5)) -* **eslint-plugin:** fix property access on undefined error ([#1507](https://github.com/typescript-eslint/typescript-eslint/issues/1507)) ([d89e8e8](https://github.com/typescript-eslint/typescript-eslint/commit/d89e8e8a1114989e2727351bee7aadb6579f312b)) - +- **eslint-plugin:** [no-unused-expressions] handle ternary and short-circuit options ([#2194](https://github.com/typescript-eslint/typescript-eslint/issues/2194)) ([ee9f100](https://github.com/typescript-eslint/typescript-eslint/commit/ee9f100a2f9a874c2b361482742686eeaa9bdac7)) ### Features -* **eslint-plugin:** add comma-spacing ([#1495](https://github.com/typescript-eslint/typescript-eslint/issues/1495)) ([1fd86be](https://github.com/typescript-eslint/typescript-eslint/commit/1fd86befa6a940a0354c619dd2da08a5c5d69fb4)) -* **eslint-plugin:** add new rule prefer-as-const ([#1431](https://github.com/typescript-eslint/typescript-eslint/issues/1431)) ([420db96](https://github.com/typescript-eslint/typescript-eslint/commit/420db96921435e8bf7fb484ae74552a912a6adde)) -* **eslint-plugin:** create `ban-ts-comment` rule ([#1361](https://github.com/typescript-eslint/typescript-eslint/issues/1361)) ([2a83d13](https://github.com/typescript-eslint/typescript-eslint/commit/2a83d138a966cd5ce787d1eecf595b59b78232d4)) -* **experimental-utils:** make RuleMetaData.docs optional ([#1462](https://github.com/typescript-eslint/typescript-eslint/issues/1462)) ([cde97ac](https://github.com/typescript-eslint/typescript-eslint/commit/cde97aca24df5a0f28f37006ed130ebc217fb2ad)) +- **eslint-plugin:** [naming-convention] better error message and docs for prefix/suffix ([#2195](https://github.com/typescript-eslint/typescript-eslint/issues/2195)) ([a2ffe55](https://github.com/typescript-eslint/typescript-eslint/commit/a2ffe5568df0f7224bfe9141d298e538383d5f09)) +# [3.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.1.0...v3.2.0) (2020-06-08) +### Bug Fixes +- **eslint-plugin:** [explicit-module-boundary-types] dont report return type errors on constructor overloads ([#2158](https://github.com/typescript-eslint/typescript-eslint/issues/2158)) ([53232d7](https://github.com/typescript-eslint/typescript-eslint/commit/53232d775ca0b808e2d75d9501f4411a868b2b48)) +- **eslint-plugin:** [explicit-module-boundary-types] handle bodyless arrow functions with explicit return types that return functions ([#2169](https://github.com/typescript-eslint/typescript-eslint/issues/2169)) ([58db655](https://github.com/typescript-eslint/typescript-eslint/commit/58db655133aaae006efe3e3ceee971cf88dc348f)) +- **eslint-plugin:** [explicit-module-boundary-types] handle nested functions and functions expressions in a typed variable declaration ([#2176](https://github.com/typescript-eslint/typescript-eslint/issues/2176)) ([6ff450d](https://github.com/typescript-eslint/typescript-eslint/commit/6ff450da3abec93223a33f6b52484c9ca99b7abe)) +- **eslint-plugin:** [no-extra-non-null-assertion] dont report for assertions not followed by the optional chain ([#2167](https://github.com/typescript-eslint/typescript-eslint/issues/2167)) ([e4c1834](https://github.com/typescript-eslint/typescript-eslint/commit/e4c1834c7c5934332dd1d58c09018453568c4889)) +- **eslint-plugin:** [no-unnecessary-conditionals] Handle comparison of generics and loose comparisons with undefined values ([#2152](https://github.com/typescript-eslint/typescript-eslint/issues/2152)) ([c86e2a2](https://github.com/typescript-eslint/typescript-eslint/commit/c86e2a235372149db9b1700d39c2145e0ce5221a)) +- **eslint-plugin:** [prefer-optional-chain] handling first member expression ([#2156](https://github.com/typescript-eslint/typescript-eslint/issues/2156)) ([de18660](https://github.com/typescript-eslint/typescript-eslint/commit/de18660a8cf8f7033798646d8c5b0938d1accb12)) +- **eslint-plugin:** [return-await] correct handling of ternaries ([#2168](https://github.com/typescript-eslint/typescript-eslint/issues/2168)) ([fe4c0bf](https://github.com/typescript-eslint/typescript-eslint/commit/fe4c0bf8c04f070d6642fbe86c5e5614bc88e8fd)) +### Features -# [2.17.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.16.0...v2.17.0) (2020-01-20) +- **eslint-plugin:** [naming-convention] put identifiers in quotes in error messages ([#2182](https://github.com/typescript-eslint/typescript-eslint/issues/2182)) ([fc61932](https://github.com/typescript-eslint/typescript-eslint/commit/fc619326eedf7ef2efa51444ecdead81a36a204f)), closes [#2178](https://github.com/typescript-eslint/typescript-eslint/issues/2178) +- **eslint-plugin:** [require-array-sort-compare] add `ignoreStringArrays` option ([#1972](https://github.com/typescript-eslint/typescript-eslint/issues/1972)) ([6dee784](https://github.com/typescript-eslint/typescript-eslint/commit/6dee7840a3af1dfe4c38a128d1c4655bdac625df)) +- **eslint-plugin:** add rule `ban-tslint-comment` ([#2140](https://github.com/typescript-eslint/typescript-eslint/issues/2140)) ([43ee226](https://github.com/typescript-eslint/typescript-eslint/commit/43ee226ffbaaa3e7126081db9476c24b89ec16e9)) +- **eslint-plugin:** add rule `no-confusing-non-null-assertion` ([#1941](https://github.com/typescript-eslint/typescript-eslint/issues/1941)) ([9b51c44](https://github.com/typescript-eslint/typescript-eslint/commit/9b51c44f29d8b3e95a510985544e8ded8a14404d)) +# [3.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.0.2...v3.1.0) (2020-06-01) ### Bug Fixes -* **eslint-plugin:** [naming-convention] handle empty array-pattern ([#1450](https://github.com/typescript-eslint/typescript-eslint/issues/1450)) ([4726605](https://github.com/typescript-eslint/typescript-eslint/commit/4726605)) -* **eslint-plugin:** [unbound-method] handling of logical expr ([#1440](https://github.com/typescript-eslint/typescript-eslint/issues/1440)) ([9c5b857](https://github.com/typescript-eslint/typescript-eslint/commit/9c5b857)) -* **eslint-plugin:** set default-param-last as an extension rule ([#1445](https://github.com/typescript-eslint/typescript-eslint/issues/1445)) ([b5ef704](https://github.com/typescript-eslint/typescript-eslint/commit/b5ef704)) -* **typescript-estree:** correct type of `ArrayPattern.elements` ([#1451](https://github.com/typescript-eslint/typescript-eslint/issues/1451)) ([62e4ca0](https://github.com/typescript-eslint/typescript-eslint/commit/62e4ca0)) - +- **eslint-plugin:** [explicit-module-boundary-types] don't check returned functions if parent function has return type ([#2084](https://github.com/typescript-eslint/typescript-eslint/issues/2084)) ([d7d4eeb](https://github.com/typescript-eslint/typescript-eslint/commit/d7d4eeb03f2918d5d9e361fdb47c2d42e83bd593)) +- **eslint-plugin:** [no-unnecessary-condition] handle comparison of any, unknown and loose comparisons with nullish values ([#2123](https://github.com/typescript-eslint/typescript-eslint/issues/2123)) ([1ae1d01](https://github.com/typescript-eslint/typescript-eslint/commit/1ae1d01e5603ec7cef8051ed018c3c3c88b29867)) +- **eslint-plugin:** [no-unnecessary-condition] improve optional chain handling ([#2111](https://github.com/typescript-eslint/typescript-eslint/issues/2111)) ([9ee399b](https://github.com/typescript-eslint/typescript-eslint/commit/9ee399b5906e82f346ff89141207a6630786de54)) +- **eslint-plugin:** [no-unnecessary-condition] improve optional chain handling 2 - electric boogaloo ([#2138](https://github.com/typescript-eslint/typescript-eslint/issues/2138)) ([c87cfaf](https://github.com/typescript-eslint/typescript-eslint/commit/c87cfaf6746775bb8ad9eb45b0002f068a822dbe)) +- **eslint-plugin:** [no-unused-expressions] ignore import expressions ([#2130](https://github.com/typescript-eslint/typescript-eslint/issues/2130)) ([e383691](https://github.com/typescript-eslint/typescript-eslint/commit/e3836910efdafd9edf04daed149c9e839c08047e)) +- **eslint-plugin:** [no-var-requires] false negative for TSAsExpression and MemberExpression ([#2139](https://github.com/typescript-eslint/typescript-eslint/issues/2139)) ([df95338](https://github.com/typescript-eslint/typescript-eslint/commit/df953388913b22d45242e65ce231d92a8b8a0080)) +- **experimental-utils:** downlevel type declarations for versions older than 3.8 ([#2133](https://github.com/typescript-eslint/typescript-eslint/issues/2133)) ([7925823](https://github.com/typescript-eslint/typescript-eslint/commit/792582326a8065270b69a0ffcaad5a7b4b103ff3)) ### Features -* **eslint-plugin:** [naming-convention] allow not check format ([#1455](https://github.com/typescript-eslint/typescript-eslint/issues/1455)) ([61eb434](https://github.com/typescript-eslint/typescript-eslint/commit/61eb434)) -* **eslint-plugin:** [naming-convention] correct example ([#1455](https://github.com/typescript-eslint/typescript-eslint/issues/1455)) ([60683d7](https://github.com/typescript-eslint/typescript-eslint/commit/60683d7)) -* **eslint-plugin:** [no-extra-!-assert] flag ?. after !-assert ([#1460](https://github.com/typescript-eslint/typescript-eslint/issues/1460)) ([58c7c25](https://github.com/typescript-eslint/typescript-eslint/commit/58c7c25)) -* **eslint-plugin:** add explicit-module-boundary-types rule ([#1020](https://github.com/typescript-eslint/typescript-eslint/issues/1020)) ([bb0a846](https://github.com/typescript-eslint/typescript-eslint/commit/bb0a846)) -* **eslint-plugin:** add no-non-null-asserted-optional-chain ([#1469](https://github.com/typescript-eslint/typescript-eslint/issues/1469)) ([498aa24](https://github.com/typescript-eslint/typescript-eslint/commit/498aa24)) -* **experimental-utils:** expose getParserServices from utils ([#1448](https://github.com/typescript-eslint/typescript-eslint/issues/1448)) ([982c8bc](https://github.com/typescript-eslint/typescript-eslint/commit/982c8bc)) +- **eslint-plugin:** [ban-ts-comments] add "allow-with-description" option ([#2099](https://github.com/typescript-eslint/typescript-eslint/issues/2099)) ([8a0fd18](https://github.com/typescript-eslint/typescript-eslint/commit/8a0fd1899f544470a35afb3117f4c71aad7e4e42)) +- **eslint-plugin:** [ban-types] allow selective disable of default options with `false` value ([#2137](https://github.com/typescript-eslint/typescript-eslint/issues/2137)) ([1cb8ca4](https://github.com/typescript-eslint/typescript-eslint/commit/1cb8ca483d029935310e6904580df8501837084d)) +- **eslint-plugin:** [explicit-module-boundary-types] improve accuracy and coverage ([#2135](https://github.com/typescript-eslint/typescript-eslint/issues/2135)) ([caaa859](https://github.com/typescript-eslint/typescript-eslint/commit/caaa8599284d02ab3341e282cad35a52d0fb86c7)) + +## [3.0.2](https://github.com/typescript-eslint/typescript-eslint/compare/v3.0.1...v3.0.2) (2020-05-27) +**Note:** Version bump only for package @typescript-eslint/eslint-plugin +## [3.0.1](https://github.com/typescript-eslint/typescript-eslint/compare/v3.0.0...v3.0.1) (2020-05-25) +### Bug Fixes +- **eslint-plugin:** [naming-convention] handle no options correctly ([#2095](https://github.com/typescript-eslint/typescript-eslint/issues/2095)) ([fd7d02b](https://github.com/typescript-eslint/typescript-eslint/commit/fd7d02b31ebd995b7fdd857d7c054042aa4f2001)) +- **eslint-plugin:** [no-throw-literal] handle intersection and union types ([#2085](https://github.com/typescript-eslint/typescript-eslint/issues/2085)) ([cae037f](https://github.com/typescript-eslint/typescript-eslint/commit/cae037ff9b20363b970cc600a09505b98bf10a14)) +- **eslint-plugin:** [unbound-method] fix crash due to missing `Intl` ([#2090](https://github.com/typescript-eslint/typescript-eslint/issues/2090)) ([f2fa82c](https://github.com/typescript-eslint/typescript-eslint/commit/f2fa82c532ae858ccfb064268cfcc9df657a54be)) -# [2.16.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.15.0...v2.16.0) (2020-01-13) +# [3.0.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.34.0...v3.0.0) (2020-05-21) +## [Please see the release notes for v3.0.0](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v3.0.0) ### Bug Fixes -* **eslint-plugin:** [no-magic-numbers] handle UnaryExpression for enums ([#1415](https://github.com/typescript-eslint/typescript-eslint/issues/1415)) ([852fc31](https://github.com/typescript-eslint/typescript-eslint/commit/852fc31)) -* **eslint-plugin:** [no-unnec-type-assert] handle JSX attributes ([#1002](https://github.com/typescript-eslint/typescript-eslint/issues/1002)) ([3c5659b](https://github.com/typescript-eslint/typescript-eslint/commit/3c5659b)) -* **eslint-plugin:** handle error classes using generics ([#1428](https://github.com/typescript-eslint/typescript-eslint/issues/1428)) ([b139540](https://github.com/typescript-eslint/typescript-eslint/commit/b139540)) -* **typescript-estree:** resolve path relative to tsconfigRootDir ([#1439](https://github.com/typescript-eslint/typescript-eslint/issues/1439)) ([c709056](https://github.com/typescript-eslint/typescript-eslint/commit/c709056)) +- **eslint-plugin:** [dot-notation] fix typo in schema ([#2040](https://github.com/typescript-eslint/typescript-eslint/issues/2040)) ([242328f](https://github.com/typescript-eslint/typescript-eslint/commit/242328fa749ee4c72af93433a9bef95f329ac62f)) +- **eslint-plugin:** correct parser peerDep version ([fe59f69](https://github.com/typescript-eslint/typescript-eslint/commit/fe59f69381a0915a4f5135e2e88637a5eea246ba)) +- **experimental-utils:** add back SourceCode.isSpaceBetweenTokens ([ae82ea4](https://github.com/typescript-eslint/typescript-eslint/commit/ae82ea4a85a4ca332ebe6104e96c59dba30411be)) +- **typescript-estree:** remove now defunct `Import` node type ([f199cbd](https://github.com/typescript-eslint/typescript-eslint/commit/f199cbdbbd892b5ba03bfff66f463f3d9c92ee9b)) +- **typescript-estree:** use `TSEmptyBodyFunctionExpression` for body-less nodes ([#1289](https://github.com/typescript-eslint/typescript-eslint/issues/1289)) ([82e7163](https://github.com/typescript-eslint/typescript-eslint/commit/82e7163214b56ccde93ba97807b161669a50a60b)) + +### Features + +- **eslint-plugin:** [ban-types] rework default options ([#848](https://github.com/typescript-eslint/typescript-eslint/issues/848)) ([8e31d5d](https://github.com/typescript-eslint/typescript-eslint/commit/8e31d5dbe9fe5227fdbefcecfd50ce5dd51360c3)) +- **eslint-plugin:** [no-floating-promises] ignore void operator by default ([#2003](https://github.com/typescript-eslint/typescript-eslint/issues/2003)) ([3626a67](https://github.com/typescript-eslint/typescript-eslint/commit/3626a673cf8117cc995245cd86e466e2553e9b0e)) +- **eslint-plugin:** [prefer-nullish-coalescing][prefer-optional-chain] remove unsafe fixers ([52b6085](https://github.com/typescript-eslint/typescript-eslint/commit/52b60852d0ba6bb6abe519c9d3ec1b231793e91d)) +- **experimental-utils:** upgrade eslint types for v7 ([#2023](https://github.com/typescript-eslint/typescript-eslint/issues/2023)) ([06869c9](https://github.com/typescript-eslint/typescript-eslint/commit/06869c9656fa37936126666845aee40aad546ebd)) +- upgrade to ESLint v7 ([#2022](https://github.com/typescript-eslint/typescript-eslint/issues/2022)) ([208de71](https://github.com/typescript-eslint/typescript-eslint/commit/208de71059746bf38e94bd460346ffb2698a3e12)) +- **eslint-plugin:** [no-unnecessary-condition] remove `checkArrayPredicates` and always check it ([#1579](https://github.com/typescript-eslint/typescript-eslint/issues/1579)) ([bfd9b60](https://github.com/typescript-eslint/typescript-eslint/commit/bfd9b606d17d30d5694967a1f01e0e1501ba1022)) +- **eslint-plugin:** [no-unnecessary-condition] remove option `ignoreRHS` ([#1163](https://github.com/typescript-eslint/typescript-eslint/issues/1163)) ([ee8dd8f](https://github.com/typescript-eslint/typescript-eslint/commit/ee8dd8f8a9e6c25ac426ce9bb71c5f012c51f264)) +- **eslint-plugin:** [no-unnecessary-condition] report when non-nullish is compared to `null`/`undefined` ([#1659](https://github.com/typescript-eslint/typescript-eslint/issues/1659)) ([7fa9060](https://github.com/typescript-eslint/typescript-eslint/commit/7fa906073903c5eb70609c25f1a91ada14dcdc71)) +- **eslint-plugin:** [restrict-template-expressions] `allowNumber: true` by default ([#2005](https://github.com/typescript-eslint/typescript-eslint/issues/2005)) ([643ec24](https://github.com/typescript-eslint/typescript-eslint/commit/643ec240bd901295d9e9ea5c43fc20109c33e982)) +- **eslint-plugin:** [restrict-template-expressions] rename `allowNullable` to `allowNullish` ([#2006](https://github.com/typescript-eslint/typescript-eslint/issues/2006)) ([264b017](https://github.com/typescript-eslint/typescript-eslint/commit/264b017c11c2ab132fcbad18b42a9a0fe639386e)) +- **eslint-plugin:** [strict-boolean-expression] rework options ([#1631](https://github.com/typescript-eslint/typescript-eslint/issues/1631)) ([cd14482](https://github.com/typescript-eslint/typescript-eslint/commit/cd1448240dca11762fcb9c10e18bb6541a840485)) +- **eslint-plugin:** delete deprecated rules ([#2002](https://github.com/typescript-eslint/typescript-eslint/issues/2002)) ([da0aec2](https://github.com/typescript-eslint/typescript-eslint/commit/da0aec2cfa27902aae7c438a2fe91343c822e4ae)) +- **eslint-plugin:** eslint-recommended: disable no-func-assign ([#984](https://github.com/typescript-eslint/typescript-eslint/issues/984)) ([ae9b8a9](https://github.com/typescript-eslint/typescript-eslint/commit/ae9b8a9c73c0328287de956466257d8bbfbdb20f)) +- **eslint-plugin:** eslint-recommended: disable no-obj-calls ([#1000](https://github.com/typescript-eslint/typescript-eslint/issues/1000)) ([b9ca14c](https://github.com/typescript-eslint/typescript-eslint/commit/b9ca14c5f5ec28a3fde1a9b2d2f6a4dc74d903e4)) +- **eslint-plugin:** update `eslint-recommended` set ([#1996](https://github.com/typescript-eslint/typescript-eslint/issues/1996)) ([9a96e18](https://github.com/typescript-eslint/typescript-eslint/commit/9a96e18400e0a0d738d159d9d01faf41d3586249)) +- **eslint-plugin:** update recommended sets ([#2001](https://github.com/typescript-eslint/typescript-eslint/issues/2001)) ([0126b4f](https://github.com/typescript-eslint/typescript-eslint/commit/0126b4f56f9197d561e90b09962ccceb4f88bc41)) +- **typescript-estree:** align nodes with estree 2020 ([#1389](https://github.com/typescript-eslint/typescript-eslint/issues/1389)) ([aff5b62](https://github.com/typescript-eslint/typescript-eslint/commit/aff5b62044f9b93f2087a1d261e9be3f8d6fd54d)) +- drop support for node v8 ([#1997](https://github.com/typescript-eslint/typescript-eslint/issues/1997)) ([b6c3b7b](https://github.com/typescript-eslint/typescript-eslint/commit/b6c3b7b84b8d199fa75a46432febd4a364a63217)) +- **typescript-estree:** always return parserServices ([#716](https://github.com/typescript-eslint/typescript-eslint/issues/716)) ([5b23443](https://github.com/typescript-eslint/typescript-eslint/commit/5b23443c48f3f62424db3e742243f3568080b946)) +- **typescript-estree:** handle 3.9's non-null assertion changes ([#2036](https://github.com/typescript-eslint/typescript-eslint/issues/2036)) ([06bec63](https://github.com/typescript-eslint/typescript-eslint/commit/06bec63c56536db070608ab136d2ad57083f0c6a)) +# [2.34.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.33.0...v2.34.0) (2020-05-18) ### Features -* **eslint-plugin:** [no-unnec-cond] array predicate callbacks ([#1206](https://github.com/typescript-eslint/typescript-eslint/issues/1206)) ([f7ad716](https://github.com/typescript-eslint/typescript-eslint/commit/f7ad716)) -* **eslint-plugin:** add default-param-last rule ([#1418](https://github.com/typescript-eslint/typescript-eslint/issues/1418)) ([a37ff9f](https://github.com/typescript-eslint/typescript-eslint/commit/a37ff9f)) -* **eslint-plugin:** add rule naming-conventions ([#1318](https://github.com/typescript-eslint/typescript-eslint/issues/1318)) ([9eab26f](https://github.com/typescript-eslint/typescript-eslint/commit/9eab26f)) -* **typescript-estree:** add strict type mapping to esTreeNodeToTSNodeMap ([#1382](https://github.com/typescript-eslint/typescript-eslint/issues/1382)) ([d3d70a3](https://github.com/typescript-eslint/typescript-eslint/commit/d3d70a3)) - - +- **eslint-plugin:** [no-invalid-void-type] allow union of void and `allowInGenericTypeArguments` ([#1960](https://github.com/typescript-eslint/typescript-eslint/issues/1960)) ([1bc105a](https://github.com/typescript-eslint/typescript-eslint/commit/1bc105a2c6ae3fde9596f0419fed0de699dc57c7)) +- **eslint-plugin:** [restrict-template-expressions] improve error message ([#1926](https://github.com/typescript-eslint/typescript-eslint/issues/1926)) ([1af59ba](https://github.com/typescript-eslint/typescript-eslint/commit/1af59ba8ac0ceabb008d9c61556acf7db0a1d352)) +- **experimental-utils:** add `suggestion` property for rule modules ([#2033](https://github.com/typescript-eslint/typescript-eslint/issues/2033)) ([f42a5b0](https://github.com/typescript-eslint/typescript-eslint/commit/f42a5b09ebfa173f418a99c552b0cbe221567194)) +# [2.33.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.32.0...v2.33.0) (2020-05-12) +### Features -# [2.15.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.14.0...v2.15.0) (2020-01-06) +- **eslint-plugin:** add extension rule `lines-between-class-members` ([#1684](https://github.com/typescript-eslint/typescript-eslint/issues/1684)) ([08f93e6](https://github.com/typescript-eslint/typescript-eslint/commit/08f93e69347a8e7f3a7e8a1455bb5d069c2faeef)) +# [2.32.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.31.0...v2.32.0) (2020-05-11) ### Bug Fixes -* **eslint-plugin:** crash in no-unnecessary-type-arguments ([#1401](https://github.com/typescript-eslint/typescript-eslint/issues/1401)) ([01c939f](https://github.com/typescript-eslint/typescript-eslint/commit/01c939f)) - +- **eslint-plugin:** [no-base-to-string] support boolean in unions ([#1979](https://github.com/typescript-eslint/typescript-eslint/issues/1979)) ([6987ecc](https://github.com/typescript-eslint/typescript-eslint/commit/6987ecc1dacfb45c0f8ed3e81d08aa708eb96ad1)) +- **eslint-plugin:** [no-type-alias] handle readonly types in aliases ([#1990](https://github.com/typescript-eslint/typescript-eslint/issues/1990)) ([56d9870](https://github.com/typescript-eslint/typescript-eslint/commit/56d987070f83d1b6410b04750b20a761fd793073)) +- **eslint-plugin:** [no-unused-expressions] inherit `messages` from base rule ([#1992](https://github.com/typescript-eslint/typescript-eslint/issues/1992)) ([51ca404](https://github.com/typescript-eslint/typescript-eslint/commit/51ca404af645eed194269ab7f8f67b97bd52e32d)) ### Features -* **eslint-plugin:** [strict-bool-expr] add allowSafe option ([#1385](https://github.com/typescript-eslint/typescript-eslint/issues/1385)) ([9344233](https://github.com/typescript-eslint/typescript-eslint/commit/9344233)) -* **eslint-plugin:** add no-implied-eval ([#1375](https://github.com/typescript-eslint/typescript-eslint/issues/1375)) ([254d276](https://github.com/typescript-eslint/typescript-eslint/commit/254d276)) +- bump dependencies and align AST ([#2007](https://github.com/typescript-eslint/typescript-eslint/issues/2007)) ([18668b7](https://github.com/typescript-eslint/typescript-eslint/commit/18668b78fd7d1e5281af7fc26c76e0ca53297f69)) +# [2.31.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.30.0...v2.31.0) (2020-05-04) +### Bug Fixes +- **eslint-plugin:** [dot-notation] handle missing declarations ([#1947](https://github.com/typescript-eslint/typescript-eslint/issues/1947)) ([383f931](https://github.com/typescript-eslint/typescript-eslint/commit/383f93182599c00e231a0f0d36575ca0e19369a6)) +- **eslint-plugin:** [method-signature-style] fix overloaded methods to an intersection type ([#1966](https://github.com/typescript-eslint/typescript-eslint/issues/1966)) ([7f3fba3](https://github.com/typescript-eslint/typescript-eslint/commit/7f3fba348d432d7637e1c737df943ee1f9105062)) +- **eslint-plugin:** [return-await] await in a normal function ([#1962](https://github.com/typescript-eslint/typescript-eslint/issues/1962)) ([f82fd7b](https://github.com/typescript-eslint/typescript-eslint/commit/f82fd7bb81f986c4861d0b4e2ecdb0c496d7a602)) +- **eslint-plugin:** [unbound-method] false positives for unary expressions ([#1964](https://github.com/typescript-eslint/typescript-eslint/issues/1964)) ([b35070e](https://github.com/typescript-eslint/typescript-eslint/commit/b35070ec6f84ad5ce606386cdb6eeb91488dfdd7)) +- **eslint-plugin:** no-base-to-string boolean expression detect ([#1969](https://github.com/typescript-eslint/typescript-eslint/issues/1969)) ([f78f13a](https://github.com/typescript-eslint/typescript-eslint/commit/f78f13aedd59d5b5880903d48c779a6c50fd937e)) +### Features -# [2.14.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.13.0...v2.14.0) (2019-12-30) +- **eslint-plugin:** [member-ordering] add decorators support ([#1870](https://github.com/typescript-eslint/typescript-eslint/issues/1870)) ([f7ec192](https://github.com/typescript-eslint/typescript-eslint/commit/f7ec1920607cb8eec8020b08cd7247de0bf19ce1)) +- **eslint-plugin:** [prefer-optional-chain] added option to convert to suggestion fixer ([#1965](https://github.com/typescript-eslint/typescript-eslint/issues/1965)) ([2f0824b](https://github.com/typescript-eslint/typescript-eslint/commit/2f0824b0a41f3043b6242fc1d49faae540abaf22)) +- **eslint-plugin:** new extended rule 'no-invalid-this' ([#1823](https://github.com/typescript-eslint/typescript-eslint/issues/1823)) ([b18bc35](https://github.com/typescript-eslint/typescript-eslint/commit/b18bc357507337b9725f8d9c1b549513075a0da5)) +- **experimental-utils:** expose our RuleTester extension ([#1948](https://github.com/typescript-eslint/typescript-eslint/issues/1948)) ([2dd1638](https://github.com/typescript-eslint/typescript-eslint/commit/2dd1638aaa2658ba99b2341861146b586f489121)) +# [2.30.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.29.0...v2.30.0) (2020-04-27) ### Bug Fixes -* **eslint-plugin:** type assertion in rule no-extra-parens ([#1376](https://github.com/typescript-eslint/typescript-eslint/issues/1376)) ([f40639e](https://github.com/typescript-eslint/typescript-eslint/commit/f40639e)) - +- **eslint-plugin:** [prefer-string-starts-ends-with] check for negative start index in slice ([#1920](https://github.com/typescript-eslint/typescript-eslint/issues/1920)) ([ed2bd60](https://github.com/typescript-eslint/typescript-eslint/commit/ed2bd6067f74ae33e36a084719bb91efedfba599)) +- **eslint-plugin:** fix no-base-to-string boolean literal check ([#1850](https://github.com/typescript-eslint/typescript-eslint/issues/1850)) ([2f45e99](https://github.com/typescript-eslint/typescript-eslint/commit/2f45e9992a8f12b6233716e77a6159f9cea2c879)) ### Features -* add internal eslint plugin for repo-specific lint rules ([#1373](https://github.com/typescript-eslint/typescript-eslint/issues/1373)) ([3a15413](https://github.com/typescript-eslint/typescript-eslint/commit/3a15413)) +- **eslint-plugin:** add extension rule `dot-notation` ([#1867](https://github.com/typescript-eslint/typescript-eslint/issues/1867)) ([a85c3e1](https://github.com/typescript-eslint/typescript-eslint/commit/a85c3e1515d735b6c245cc658cdaec6deb05d630)) +- **eslint-plugin:** create `no-invalid-void-type` rule ([#1847](https://github.com/typescript-eslint/typescript-eslint/issues/1847)) ([f667ff1](https://github.com/typescript-eslint/typescript-eslint/commit/f667ff1708d4ed28b7ea5beea742889da69a76d9)) +# [2.29.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.28.0...v2.29.0) (2020-04-20) +### Bug Fixes +- **eslint-plugin:** [no-base-to-string] soft remove `ignoreTaggedTemplateExpressions` option ([#1916](https://github.com/typescript-eslint/typescript-eslint/issues/1916)) ([369978e](https://github.com/typescript-eslint/typescript-eslint/commit/369978e9685bacb3e3882b0510ff06eaf8df4ca1)) +### Features -# [2.13.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.12.0...v2.13.0) (2019-12-23) +- **eslint-plugin:** [no-floating-promise] add option to ignore IIFEs ([#1799](https://github.com/typescript-eslint/typescript-eslint/issues/1799)) ([cea51bf](https://github.com/typescript-eslint/typescript-eslint/commit/cea51bf130d6d3c2935f5e2dcc468196f2ad9d00)) +- **eslint-plugin:** [restrict-template-expressions] add support for intersection types ([#1803](https://github.com/typescript-eslint/typescript-eslint/issues/1803)) ([cc70e4f](https://github.com/typescript-eslint/typescript-eslint/commit/cc70e4fbadd0b15fd6af913a2e1e2ddd346fa558)) +- **eslint-plugin:** add extension rule `init-declarations` ([#1814](https://github.com/typescript-eslint/typescript-eslint/issues/1814)) ([b01f5e7](https://github.com/typescript-eslint/typescript-eslint/commit/b01f5e778ac28e0797a3734fc58d025bb224f418)) +- **eslint-plugin:** add extension rule `keyword-spacing` ([#1739](https://github.com/typescript-eslint/typescript-eslint/issues/1739)) ([c5106dd](https://github.com/typescript-eslint/typescript-eslint/commit/c5106dd4bf2bc8846cc39aa8bb50c33bec026d4d)) +# [2.28.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.27.0...v2.28.0) (2020-04-13) ### Bug Fixes -* **eslint-plugin:** [quotes] ignore backticks for Enum members ([#1355](https://github.com/typescript-eslint/typescript-eslint/issues/1355)) ([e51048c](https://github.com/typescript-eslint/typescript-eslint/commit/e51048c)) -* **eslint-plugin:** [type-annotation-spacing] typo in messages ([#1354](https://github.com/typescript-eslint/typescript-eslint/issues/1354)) ([82e0dbc](https://github.com/typescript-eslint/typescript-eslint/commit/82e0dbc)) -* **eslint-plugin:** add isTypeAssertion utility function ([#1369](https://github.com/typescript-eslint/typescript-eslint/issues/1369)) ([bb1671e](https://github.com/typescript-eslint/typescript-eslint/commit/bb1671e)) -* **eslint-plugin:** use AST_NODE_TYPES enum instead of strings ([#1366](https://github.com/typescript-eslint/typescript-eslint/issues/1366)) ([bd0276b](https://github.com/typescript-eslint/typescript-eslint/commit/bd0276b)) - +- **eslint-plugin:** [method-signature-style] handle multiline params ([#1861](https://github.com/typescript-eslint/typescript-eslint/issues/1861)) ([5832a86](https://github.com/typescript-eslint/typescript-eslint/commit/5832a8643bbe174ec02df5966bb333e506e45f5d)) +- **eslint-plugin:** [no-empty-interface] use suggestion fixer for ambient contexts ([#1880](https://github.com/typescript-eslint/typescript-eslint/issues/1880)) ([62b2278](https://github.com/typescript-eslint/typescript-eslint/commit/62b2278aec0011c93eae17bed8b278114d3379a2)) +- **eslint-plugin:** [unbound-method] false positive on property function initializer ([#1890](https://github.com/typescript-eslint/typescript-eslint/issues/1890)) ([f1c3b18](https://github.com/typescript-eslint/typescript-eslint/commit/f1c3b18f7aadc81f7dca7aa32aa1a8fe424e04e7)) +- **eslint-plugin:** [unbound-method] ignore assignments _to_ methods ([#1736](https://github.com/typescript-eslint/typescript-eslint/issues/1736)) ([6b4680b](https://github.com/typescript-eslint/typescript-eslint/commit/6b4680b6e7343d9d98fa1de170f387a36d98b73e)) +- **eslint-plugin:** no-empty-interface autofix ([#1865](https://github.com/typescript-eslint/typescript-eslint/issues/1865)) ([829a2f7](https://github.com/typescript-eslint/typescript-eslint/commit/829a2f728f876d356908e2338c2d6620e58f9943)), closes [#1864](https://github.com/typescript-eslint/typescript-eslint/issues/1864) +- **eslint-plugin:** use `isTypeArrayTypeOrUnionOfArrayTypes` util for checking if type is array ([#1728](https://github.com/typescript-eslint/typescript-eslint/issues/1728)) ([05030f8](https://github.com/typescript-eslint/typescript-eslint/commit/05030f8d2bd5a50e95053bc61380891da71cc567)) ### Features -* **eslint-plugin:** [ban-types] handle empty type literal {} ([#1348](https://github.com/typescript-eslint/typescript-eslint/issues/1348)) ([1c0ce9b](https://github.com/typescript-eslint/typescript-eslint/commit/1c0ce9b)) -* **eslint-plugin:** [no-use-before-define] opt to ignore enum ([#1242](https://github.com/typescript-eslint/typescript-eslint/issues/1242)) ([6edd911](https://github.com/typescript-eslint/typescript-eslint/commit/6edd911)) -* **eslint-plugin:** [pref-str-starts/ends-with] optional chain… ([#1357](https://github.com/typescript-eslint/typescript-eslint/issues/1357)) ([fd37bc3](https://github.com/typescript-eslint/typescript-eslint/commit/fd37bc3)) -* **eslint-plugin:** add no-extra-semi [extension] ([#1237](https://github.com/typescript-eslint/typescript-eslint/issues/1237)) ([425f65c](https://github.com/typescript-eslint/typescript-eslint/commit/425f65c)) -* **eslint-plugin:** add no-throw-literal [extension] ([#1331](https://github.com/typescript-eslint/typescript-eslint/issues/1331)) ([2aa696c](https://github.com/typescript-eslint/typescript-eslint/commit/2aa696c)) -* **eslint-plugin:** more optional chain support in rules ([#1363](https://github.com/typescript-eslint/typescript-eslint/issues/1363)) ([3dd1b02](https://github.com/typescript-eslint/typescript-eslint/commit/3dd1b02)) -* **typescript-estree:** computed members discriminated unions ([#1349](https://github.com/typescript-eslint/typescript-eslint/issues/1349)) ([013df9a](https://github.com/typescript-eslint/typescript-eslint/commit/013df9a)) -* **typescript-estree:** tighten prop name and destructure types ([#1346](https://github.com/typescript-eslint/typescript-eslint/issues/1346)) ([f335c50](https://github.com/typescript-eslint/typescript-eslint/commit/f335c50)) +- **eslint-plugin:** [ban-ts-comment] support `ts-expect-error` ([#1706](https://github.com/typescript-eslint/typescript-eslint/issues/1706)) ([469cff3](https://github.com/typescript-eslint/typescript-eslint/commit/469cff332c041f38f60de052769287342455cff1)) +- **eslint-plugin:** [consistent-type-assertions] always allow `const` assertions ([#1713](https://github.com/typescript-eslint/typescript-eslint/issues/1713)) ([af2c00d](https://github.com/typescript-eslint/typescript-eslint/commit/af2c00de62f7e31eaeb88996ebf3f330cc8473b9)) +- **eslint-plugin:** [explicit-function-return-type] add option to allow concise arrows that start with void ([#1732](https://github.com/typescript-eslint/typescript-eslint/issues/1732)) ([2e9c202](https://github.com/typescript-eslint/typescript-eslint/commit/2e9c2028a8a0b226e0f87d4bcc997fa259ca3ebd)) +- **eslint-plugin:** [explicit-module-boundary-types] add optio… ([#1778](https://github.com/typescript-eslint/typescript-eslint/issues/1778)) ([3eee804](https://github.com/typescript-eslint/typescript-eslint/commit/3eee804461d017ea6189cd7f64fcd473623684b4)) +- **eslint-plugin:** [no-base-to-string] add option to ignore tagged templates ([#1763](https://github.com/typescript-eslint/typescript-eslint/issues/1763)) ([f5edb99](https://github.com/typescript-eslint/typescript-eslint/commit/f5edb9938c33f8b68f026eba00db3abe9359ced3)) +- **eslint-plugin:** [restrict-template-expressions] add option `allowAny` ([#1762](https://github.com/typescript-eslint/typescript-eslint/issues/1762)) ([d44c0f9](https://github.com/typescript-eslint/typescript-eslint/commit/d44c0f9bed2404ca00b020b35fd825929e213398)) +- **eslint-plugin:** add rule `prefer-reduce-type-parameter` ([#1707](https://github.com/typescript-eslint/typescript-eslint/issues/1707)) ([c92d240](https://github.com/typescript-eslint/typescript-eslint/commit/c92d240e49113779053eac32038382b282812afc)) +- **eslint-plugin:** add rule `prefer-ts-expect-error` ([#1705](https://github.com/typescript-eslint/typescript-eslint/issues/1705)) ([7021f21](https://github.com/typescript-eslint/typescript-eslint/commit/7021f2151a25db2a8edf17e06cd6f21e90761ec8)) +- **eslint-plugin:** add rule no-unsafe-assignment ([#1694](https://github.com/typescript-eslint/typescript-eslint/issues/1694)) ([a49b860](https://github.com/typescript-eslint/typescript-eslint/commit/a49b860cbbb2c7d718b99f561e2fb6eaadf16f17)) +# [2.27.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.26.0...v2.27.0) (2020-04-06) +### Bug Fixes +- **eslint-plugin:** [no-throw-literal] fix crash caused by getBaseTypes ([#1830](https://github.com/typescript-eslint/typescript-eslint/issues/1830)) ([9d53c76](https://github.com/typescript-eslint/typescript-eslint/commit/9d53c761983dd964109b9f13eb9bfe20caf9defb)) +- **eslint-plugin:** [no-unsafe-call] fix incorrect selector ([#1826](https://github.com/typescript-eslint/typescript-eslint/issues/1826)) ([8ec53a3](https://github.com/typescript-eslint/typescript-eslint/commit/8ec53a3579fcb59cdffea0c60fbb755d056f4c8a)) +- **eslint-plugin:** [require-await] handle async generators ([#1782](https://github.com/typescript-eslint/typescript-eslint/issues/1782)) ([9642d9d](https://github.com/typescript-eslint/typescript-eslint/commit/9642d9dce693befac89a4e9d8bf8dd18f4361e2a)) +- **eslint-plugin:** no-explicit-any constructor functions (& mo… ([#1711](https://github.com/typescript-eslint/typescript-eslint/issues/1711)) ([ab8572e](https://github.com/typescript-eslint/typescript-eslint/commit/ab8572e30e14ebda91c8437be5ee35e7dc9add2e)) +### Features -# [2.12.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.11.0...v2.12.0) (2019-12-16) +- **eslint-plugin:** new rule method-signature-style ([#1685](https://github.com/typescript-eslint/typescript-eslint/issues/1685)) ([c49d771](https://github.com/typescript-eslint/typescript-eslint/commit/c49d771ba62f1a21d3c1aec106341daddfcd3c9a)) +- **eslint-plugin:** sort members alphabetically ([#263](https://github.com/typescript-eslint/typescript-eslint/issues/263)) ([485e902](https://github.com/typescript-eslint/typescript-eslint/commit/485e90213a0f8baac0587f7d56925448883fc5bd)) +- **eslint-plugin-internal:** add plugin-test-formatting rule ([#1821](https://github.com/typescript-eslint/typescript-eslint/issues/1821)) ([9b0023a](https://github.com/typescript-eslint/typescript-eslint/commit/9b0023a4996ecdd7dfcb30abd1678091a78f3064)) +# [2.26.0](https://github.com/typescript-eslint/typescript-eslint/compare/v2.25.0...v2.26.0) (2020-03-30) ### Bug Fixes -* **eslint-plugin:** [prefer-null-coal] fixer w/ mixed logicals ([#1326](https://github.com/typescript-eslint/typescript-eslint/issues/1326)) ([f9a9fbf](https://github.com/typescript-eslint/typescript-eslint/commit/f9a9fbf)) -* **eslint-plugin:** [quotes] ignore backticks for interface properties ([#1311](https://github.com/typescript-eslint/typescript-eslint/issues/1311)) ([3923a09](https://github.com/typescript-eslint/typescript-eslint/commit/3923a09)) - +- **eslint-plugin:** [no-explicit-any] error with ignoreRestArgs ([#1796](https://github.com/typescript-eslint/typescript-eslint/issues/1796)) ([638d84d](https://github.com/typescript-eslint/typescript-eslint/commit/638d84ddd77d07117b3ec7c5431f3b0e44b1995d)) +- **eslint-plugin:** [no-unsafe-call] allow import expressions ([#1800](https://github.com/typescript-eslint/typescript-eslint/issues/1800)) ([4fa7107](https://github.com/typescript-eslint/typescript-eslint/commit/4fa710754ecc412b65ac3864fe0c7857c254ac1b)) +- **eslint-plugin:** [no-unsafe-return] error with =3.2.1 <3.5.0 ([#399](https://github.com/typescript-eslint/typescript-eslint/issues/399)) ([a4f95d3](https://github.com/typescript-eslint/typescript-eslint/commit/a4f95d3)) - - - - +- change TypeScript version range to >=3.2.1 <3.5.0 ([#399](https://github.com/typescript-eslint/typescript-eslint/issues/399)) ([a4f95d3](https://github.com/typescript-eslint/typescript-eslint/commit/a4f95d3)) # [1.5.0](https://github.com/typescript-eslint/typescript-eslint/compare/v1.4.2...v1.5.0) (2019-03-20) **Note:** Version bump only for package @typescript-eslint/shared-fixtures - - - - ## [1.4.2](https://github.com/typescript-eslint/typescript-eslint/compare/v1.4.1...v1.4.2) (2019-02-25) **Note:** Version bump only for package @typescript-eslint/shared-fixtures - - - - ## [1.4.1](https://github.com/typescript-eslint/typescript-eslint/compare/v1.4.0...v1.4.1) (2019-02-23) **Note:** Version bump only for package @typescript-eslint/shared-fixtures - - - - # [1.4.0](https://github.com/typescript-eslint/typescript-eslint/compare/v1.3.0...v1.4.0) (2019-02-19) - ### Features -* **ts-estree:** fix parsing nested sequence expressions ([#286](https://github.com/typescript-eslint/typescript-eslint/issues/286)) ([ecc9631](https://github.com/typescript-eslint/typescript-eslint/commit/ecc9631)) - - - - +- **ts-estree:** fix parsing nested sequence expressions ([#286](https://github.com/typescript-eslint/typescript-eslint/issues/286)) ([ecc9631](https://github.com/typescript-eslint/typescript-eslint/commit/ecc9631)) # [1.3.0](https://github.com/typescript-eslint/typescript-eslint/compare/v1.2.0...v1.3.0) (2019-02-07) - ### Bug Fixes -* **ts-estree:** align typeArguments and typeParameters across nodes ([#223](https://github.com/typescript-eslint/typescript-eslint/issues/223)) ([3306198](https://github.com/typescript-eslint/typescript-eslint/commit/3306198)) - +- **ts-estree:** align typeArguments and typeParameters across nodes ([#223](https://github.com/typescript-eslint/typescript-eslint/issues/223)) ([3306198](https://github.com/typescript-eslint/typescript-eslint/commit/3306198)) ### Features -* **ts-estree:** enable errors 1098 and 1099 ([#219](https://github.com/typescript-eslint/typescript-eslint/issues/219)) ([fc50167](https://github.com/typescript-eslint/typescript-eslint/commit/fc50167)) - - - - +- **ts-estree:** enable errors 1098 and 1099 ([#219](https://github.com/typescript-eslint/typescript-eslint/issues/219)) ([fc50167](https://github.com/typescript-eslint/typescript-eslint/commit/fc50167)) # [1.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v1.1.1...v1.2.0) (2019-02-01) **Note:** Version bump only for package @typescript-eslint/shared-fixtures - - - - ## [1.1.1](https://github.com/typescript-eslint/typescript-eslint/compare/v1.1.0...v1.1.1) (2019-01-29) **Note:** Version bump only for package @typescript-eslint/shared-fixtures - - - - # [1.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v1.0.0...v1.1.0) (2019-01-23) - ### Bug Fixes -* **typescript-estree:** correct range of parameters with comments ([#128](https://github.com/typescript-eslint/typescript-eslint/issues/128)) ([91eedf2](https://github.com/typescript-eslint/typescript-eslint/commit/91eedf2)) - - - - +- **typescript-estree:** correct range of parameters with comments ([#128](https://github.com/typescript-eslint/typescript-eslint/issues/128)) ([91eedf2](https://github.com/typescript-eslint/typescript-eslint/commit/91eedf2)) # [1.0.0](https://github.com/typescript-eslint/typescript-eslint/compare/v0.2.1...v1.0.0) (2019-01-20) **Note:** Version bump only for package @typescript-eslint/shared-fixtures - - - - ## [0.2.1](https://github.com/typescript-eslint/typescript-eslint/compare/v0.2.0...v0.2.1) (2019-01-20) **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 1968f55a9bd..c25cf06a643 100644 --- a/packages/shared-fixtures/package.json +++ b/packages/shared-fixtures/package.json @@ -1,5 +1,5 @@ { "name": "@typescript-eslint/shared-fixtures", - "version": "5.40.0", + "version": "5.40.1", "private": true } diff --git a/packages/type-utils/CHANGELOG.md b/packages/type-utils/CHANGELOG.md index cee3ff87465..766f6cc8a9f 100644 --- a/packages/type-utils/CHANGELOG.md +++ b/packages/type-utils/CHANGELOG.md @@ -3,420 +3,224 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [5.40.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.39.0...v5.40.0) (2022-10-10) +## [5.40.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.0...v5.40.1) (2022-10-17) **Note:** Version bump only for package @typescript-eslint/type-utils +# [5.40.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.39.0...v5.40.0) (2022-10-10) - - +**Note:** Version bump only for package @typescript-eslint/type-utils # [5.39.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.38.1...v5.39.0) (2022-10-03) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - ## [5.38.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.38.0...v5.38.1) (2022-09-26) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.38.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.37.0...v5.38.0) (2022-09-19) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.37.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.36.2...v5.37.0) (2022-09-12) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - ## [5.36.2](https://github.com/typescript-eslint/typescript-eslint/compare/v5.36.1...v5.36.2) (2022-09-05) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - ## [5.36.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.36.0...v5.36.1) (2022-08-30) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.36.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.35.1...v5.36.0) (2022-08-30) - ### Features -* support TypeScript 4.8 ([#5551](https://github.com/typescript-eslint/typescript-eslint/issues/5551)) ([81450ed](https://github.com/typescript-eslint/typescript-eslint/commit/81450ed7eaede74b384e9a91a84e9b4d34513866)) - - - - +- support TypeScript 4.8 ([#5551](https://github.com/typescript-eslint/typescript-eslint/issues/5551)) ([81450ed](https://github.com/typescript-eslint/typescript-eslint/commit/81450ed7eaede74b384e9a91a84e9b4d34513866)) ## [5.35.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.35.0...v5.35.1) (2022-08-24) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.35.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.34.0...v5.35.0) (2022-08-24) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.34.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.33.1...v5.34.0) (2022-08-22) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - ## [5.33.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.33.0...v5.33.1) (2022-08-15) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.33.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.32.0...v5.33.0) (2022-08-08) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.32.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.31.0...v5.32.0) (2022-08-01) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.31.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.7...v5.31.0) (2022-07-25) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - ## [5.30.7](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.6...v5.30.7) (2022-07-18) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - ## [5.30.6](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.5...v5.30.6) (2022-07-11) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - ## [5.30.5](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.4...v5.30.5) (2022-07-04) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - ## [5.30.4](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.3...v5.30.4) (2022-07-03) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - ## [5.30.3](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.2...v5.30.3) (2022-07-01) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - ## [5.30.2](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.1...v5.30.2) (2022-07-01) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - ## 5.30.1 (2022-07-01) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.30.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.29.0...v5.30.0) (2022-06-27) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.29.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.28.0...v5.29.0) (2022-06-20) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.28.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.27.1...v5.28.0) (2022-06-13) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - ## [5.27.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.27.0...v5.27.1) (2022-06-06) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.27.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.26.0...v5.27.0) (2022-05-30) - ### Features -* [4.7] support new extensions ([#5027](https://github.com/typescript-eslint/typescript-eslint/issues/5027)) ([efc147b](https://github.com/typescript-eslint/typescript-eslint/commit/efc147b04dce52ab17415b6a4ae4076b944b9036)) - - - - +- [4.7] support new extensions ([#5027](https://github.com/typescript-eslint/typescript-eslint/issues/5027)) ([efc147b](https://github.com/typescript-eslint/typescript-eslint/commit/efc147b04dce52ab17415b6a4ae4076b944b9036)) # [5.26.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.25.0...v5.26.0) (2022-05-23) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.25.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.24.0...v5.25.0) (2022-05-17) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.24.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.23.0...v5.24.0) (2022-05-16) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.23.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.22.0...v5.23.0) (2022-05-09) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.22.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.21.0...v5.22.0) (2022-05-02) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.21.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.20.0...v5.21.0) (2022-04-25) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.20.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.19.0...v5.20.0) (2022-04-18) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.19.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.18.0...v5.19.0) (2022-04-11) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.18.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.17.0...v5.18.0) (2022-04-04) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.17.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.16.0...v5.17.0) (2022-03-28) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.16.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.15.0...v5.16.0) (2022-03-21) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.15.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.14.0...v5.15.0) (2022-03-14) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.14.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.13.0...v5.14.0) (2022-03-07) - ### Bug Fixes -* **eslint-plugin:** [prefer-readonly-parameter-types] handle class sharp private field and member without throwing error ([#4343](https://github.com/typescript-eslint/typescript-eslint/issues/4343)) ([a65713a](https://github.com/typescript-eslint/typescript-eslint/commit/a65713ae138e56555d01a9e8e5179221a2f39e75)) - - - - +- **eslint-plugin:** [prefer-readonly-parameter-types] handle class sharp private field and member without throwing error ([#4343](https://github.com/typescript-eslint/typescript-eslint/issues/4343)) ([a65713a](https://github.com/typescript-eslint/typescript-eslint/commit/a65713ae138e56555d01a9e8e5179221a2f39e75)) # [5.13.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.12.1...v5.13.0) (2022-02-28) - ### Features -* **eslint-plugin:** add `no-redundant-type-constituents` rule ([#4378](https://github.com/typescript-eslint/typescript-eslint/issues/4378)) ([63d051e](https://github.com/typescript-eslint/typescript-eslint/commit/63d051eed29dcf71015a23992feac0a8f92717a0)) - - - - +- **eslint-plugin:** add `no-redundant-type-constituents` rule ([#4378](https://github.com/typescript-eslint/typescript-eslint/issues/4378)) ([63d051e](https://github.com/typescript-eslint/typescript-eslint/commit/63d051eed29dcf71015a23992feac0a8f92717a0)) ## [5.12.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.12.0...v5.12.1) (2022-02-21) - ### Bug Fixes -* **eslint-plugin:** [no-unnecessary-type-arguments] fix comparison of types ([#4555](https://github.com/typescript-eslint/typescript-eslint/issues/4555)) ([fc3936e](https://github.com/typescript-eslint/typescript-eslint/commit/fc3936e99712374a707ce9e0101bc641807b9ea6)) - - - - +- **eslint-plugin:** [no-unnecessary-type-arguments] fix comparison of types ([#4555](https://github.com/typescript-eslint/typescript-eslint/issues/4555)) ([fc3936e](https://github.com/typescript-eslint/typescript-eslint/commit/fc3936e99712374a707ce9e0101bc641807b9ea6)) # [5.12.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.11.0...v5.12.0) (2022-02-14) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.11.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.10.2...v5.11.0) (2022-02-07) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - ## [5.10.2](https://github.com/typescript-eslint/typescript-eslint/compare/v5.10.1...v5.10.2) (2022-01-31) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - ## [5.10.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.10.0...v5.10.1) (2022-01-24) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.10.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.9.1...v5.10.0) (2022-01-17) - ### Bug Fixes -* **type-utils:** check IndexSignature internals when checking isTypeReadonly ([#4417](https://github.com/typescript-eslint/typescript-eslint/issues/4417)) ([ef3147c](https://github.com/typescript-eslint/typescript-eslint/commit/ef3147cf73767ddece91ce57f6028a83ce074b60)), closes [#4410](https://github.com/typescript-eslint/typescript-eslint/issues/4410) [#3714](https://github.com/typescript-eslint/typescript-eslint/issues/3714) -* **type-utils:** intersection types involving readonly arrays are now handled in most cases ([#4429](https://github.com/typescript-eslint/typescript-eslint/issues/4429)) ([5046882](https://github.com/typescript-eslint/typescript-eslint/commit/5046882025e3bc8cb122ecef703aebd0b5e79017)) -* **type-utils:** isTypeReadonly now handles conditional types ([#4421](https://github.com/typescript-eslint/typescript-eslint/issues/4421)) ([39a6806](https://github.com/typescript-eslint/typescript-eslint/commit/39a6806c61a48bbca93f9ffb965dd8b3fe0575b3)) -* **type-utils:** union types always being marked as readonly ([#4419](https://github.com/typescript-eslint/typescript-eslint/issues/4419)) ([99ab193](https://github.com/typescript-eslint/typescript-eslint/commit/99ab193bb02f181bed4ed917b1d121ed189d3fe4)) - +- **type-utils:** check IndexSignature internals when checking isTypeReadonly ([#4417](https://github.com/typescript-eslint/typescript-eslint/issues/4417)) ([ef3147c](https://github.com/typescript-eslint/typescript-eslint/commit/ef3147cf73767ddece91ce57f6028a83ce074b60)), closes [#4410](https://github.com/typescript-eslint/typescript-eslint/issues/4410) [#3714](https://github.com/typescript-eslint/typescript-eslint/issues/3714) +- **type-utils:** intersection types involving readonly arrays are now handled in most cases ([#4429](https://github.com/typescript-eslint/typescript-eslint/issues/4429)) ([5046882](https://github.com/typescript-eslint/typescript-eslint/commit/5046882025e3bc8cb122ecef703aebd0b5e79017)) +- **type-utils:** isTypeReadonly now handles conditional types ([#4421](https://github.com/typescript-eslint/typescript-eslint/issues/4421)) ([39a6806](https://github.com/typescript-eslint/typescript-eslint/commit/39a6806c61a48bbca93f9ffb965dd8b3fe0575b3)) +- **type-utils:** union types always being marked as readonly ([#4419](https://github.com/typescript-eslint/typescript-eslint/issues/4419)) ([99ab193](https://github.com/typescript-eslint/typescript-eslint/commit/99ab193bb02f181bed4ed917b1d121ed189d3fe4)) ### Features -* rename `experimental-utils` to `utils` and make `experimental-utils` an alias to the new package ([#4172](https://github.com/typescript-eslint/typescript-eslint/issues/4172)) ([1d55a75](https://github.com/typescript-eslint/typescript-eslint/commit/1d55a7511b38d8e2b2eabe59f639e0a865e6c93f)) -* **type-utils:** make isTypeReadonly's options param optional ([#4415](https://github.com/typescript-eslint/typescript-eslint/issues/4415)) ([3a07a56](https://github.com/typescript-eslint/typescript-eslint/commit/3a07a563c987ff25f6cd8925eeeb2ede47cc19e8)) - - - - +- rename `experimental-utils` to `utils` and make `experimental-utils` an alias to the new package ([#4172](https://github.com/typescript-eslint/typescript-eslint/issues/4172)) ([1d55a75](https://github.com/typescript-eslint/typescript-eslint/commit/1d55a7511b38d8e2b2eabe59f639e0a865e6c93f)) +- **type-utils:** make isTypeReadonly's options param optional ([#4415](https://github.com/typescript-eslint/typescript-eslint/issues/4415)) ([3a07a56](https://github.com/typescript-eslint/typescript-eslint/commit/3a07a563c987ff25f6cd8925eeeb2ede47cc19e8)) ## [5.9.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.9.0...v5.9.1) (2022-01-10) **Note:** Version bump only for package @typescript-eslint/type-utils - - - - # [5.9.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.8.1...v5.9.0) (2022-01-03) - ### Features -* **experimental-utils:** move isTypeReadonly from eslint-plugin to experimental-utils ([#3658](https://github.com/typescript-eslint/typescript-eslint/issues/3658)) ([a9eb0b9](https://github.com/typescript-eslint/typescript-eslint/commit/a9eb0b9eb2db291ea36065ec34f84bf5c5504b43)) +- **experimental-utils:** move isTypeReadonly from eslint-plugin to experimental-utils ([#3658](https://github.com/typescript-eslint/typescript-eslint/issues/3658)) ([a9eb0b9](https://github.com/typescript-eslint/typescript-eslint/commit/a9eb0b9eb2db291ea36065ec34f84bf5c5504b43)) diff --git a/packages/type-utils/package.json b/packages/type-utils/package.json index 1d812bf8867..e73a2ef9d7c 100644 --- a/packages/type-utils/package.json +++ b/packages/type-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/type-utils", - "version": "5.40.0", + "version": "5.40.1", "description": "Type utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -39,13 +39,13 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/typescript-estree": "5.40.0", - "@typescript-eslint/utils": "5.40.0", + "@typescript-eslint/typescript-estree": "5.40.1", + "@typescript-eslint/utils": "5.40.1", "debug": "^4.3.4", "tsutils": "^3.21.0" }, "devDependencies": { - "@typescript-eslint/parser": "5.40.0", + "@typescript-eslint/parser": "5.40.1", "typescript": "*" }, "peerDependencies": { diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index 402fc18bcf6..232e36980a9 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -3,1142 +3,604 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [5.40.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.39.0...v5.40.0) (2022-10-10) +## [5.40.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.0...v5.40.1) (2022-10-17) **Note:** Version bump only for package @typescript-eslint/types +# [5.40.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.39.0...v5.40.0) (2022-10-10) - - +**Note:** Version bump only for package @typescript-eslint/types # [5.39.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.38.1...v5.39.0) (2022-10-03) **Note:** Version bump only for package @typescript-eslint/types - - - - ## [5.38.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.38.0...v5.38.1) (2022-09-26) **Note:** Version bump only for package @typescript-eslint/types - - - - # [5.38.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.37.0...v5.38.0) (2022-09-19) **Note:** Version bump only for package @typescript-eslint/types - - - - # [5.37.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.36.2...v5.37.0) (2022-09-12) **Note:** Version bump only for package @typescript-eslint/types - - - - ## [5.36.2](https://github.com/typescript-eslint/typescript-eslint/compare/v5.36.1...v5.36.2) (2022-09-05) **Note:** Version bump only for package @typescript-eslint/types - - - - ## [5.36.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.36.0...v5.36.1) (2022-08-30) **Note:** Version bump only for package @typescript-eslint/types - - - - # [5.36.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.35.1...v5.36.0) (2022-08-30) - ### Features -* support TypeScript 4.8 ([#5551](https://github.com/typescript-eslint/typescript-eslint/issues/5551)) ([81450ed](https://github.com/typescript-eslint/typescript-eslint/commit/81450ed7eaede74b384e9a91a84e9b4d34513866)) - - - - +- support TypeScript 4.8 ([#5551](https://github.com/typescript-eslint/typescript-eslint/issues/5551)) ([81450ed](https://github.com/typescript-eslint/typescript-eslint/commit/81450ed7eaede74b384e9a91a84e9b4d34513866)) ## [5.35.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.35.0...v5.35.1) (2022-08-24) **Note:** Version bump only for package @typescript-eslint/types - - - - # [5.35.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.34.0...v5.35.0) (2022-08-24) **Note:** Version bump only for package @typescript-eslint/types - - - - # [5.34.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.33.1...v5.34.0) (2022-08-22) - ### Features -* **types:** add unbound property in parser options ([#5419](https://github.com/typescript-eslint/typescript-eslint/issues/5419)) ([e08a9dd](https://github.com/typescript-eslint/typescript-eslint/commit/e08a9dd79365c1b1f5d0145ab69377f7d45f8a4f)) - - - - +- **types:** add unbound property in parser options ([#5419](https://github.com/typescript-eslint/typescript-eslint/issues/5419)) ([e08a9dd](https://github.com/typescript-eslint/typescript-eslint/commit/e08a9dd79365c1b1f5d0145ab69377f7d45f8a4f)) ## [5.33.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.33.0...v5.33.1) (2022-08-15) **Note:** Version bump only for package @typescript-eslint/types - - - - # [5.33.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.32.0...v5.33.0) (2022-08-08) **Note:** Version bump only for package @typescript-eslint/types - - - - # [5.32.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.31.0...v5.32.0) (2022-08-01) **Note:** Version bump only for package @typescript-eslint/types - - - - # [5.31.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.7...v5.31.0) (2022-07-25) **Note:** Version bump only for package @typescript-eslint/types - - - - ## [5.30.7](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.6...v5.30.7) (2022-07-18) - ### Bug Fixes -* expose types supporting old versions of typescript ([#5339](https://github.com/typescript-eslint/typescript-eslint/issues/5339)) ([4ba9bdb](https://github.com/typescript-eslint/typescript-eslint/commit/4ba9bdb93f87e6bc370f13aa1de48f435abe3f88)) - - - - +- expose types supporting old versions of typescript ([#5339](https://github.com/typescript-eslint/typescript-eslint/issues/5339)) ([4ba9bdb](https://github.com/typescript-eslint/typescript-eslint/commit/4ba9bdb93f87e6bc370f13aa1de48f435abe3f88)) ## [5.30.6](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.5...v5.30.6) (2022-07-11) **Note:** Version bump only for package @typescript-eslint/types - - - - ## [5.30.5](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.4...v5.30.5) (2022-07-04) **Note:** Version bump only for package @typescript-eslint/types - - - - ## [5.30.4](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.3...v5.30.4) (2022-07-03) **Note:** Version bump only for package @typescript-eslint/types - - - - ## [5.30.3](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.2...v5.30.3) (2022-07-01) **Note:** Version bump only for package @typescript-eslint/types - - - - ## [5.30.2](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.1...v5.30.2) (2022-07-01) **Note:** Version bump only for package @typescript-eslint/types - - - - ## 5.30.1 (2022-07-01) **Note:** Version bump only for package @typescript-eslint/types - - - - # [5.30.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.29.0...v5.30.0) (2022-06-27) **Note:** Version bump only for package @typescript-eslint/types - - - - # [5.29.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.28.0...v5.29.0) (2022-06-20) **Note:** Version bump only for package @typescript-eslint/types - - - - # [5.28.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.27.1...v5.28.0) (2022-06-13) **Note:** Version bump only for package @typescript-eslint/types - - - - ## [5.27.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.27.0...v5.27.1) (2022-06-06) **Note:** Version bump only for package @typescript-eslint/types - - - - # [5.27.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.26.0...v5.27.0) (2022-05-30) - ### Bug Fixes -* **types:** remove leftovers from removal of useJSXTextNode ([#5091](https://github.com/typescript-eslint/typescript-eslint/issues/5091)) ([f9c3647](https://github.com/typescript-eslint/typescript-eslint/commit/f9c3647cb637c8d1ee461b471da9d817ccbde77c)) - +- **types:** remove leftovers from removal of useJSXTextNode ([#5091](https://github.com/typescript-eslint/typescript-eslint/issues/5091)) ([f9c3647](https://github.com/typescript-eslint/typescript-eslint/commit/f9c3647cb637c8d1ee461b471da9d817ccbde77c)) ### Features -* [4.7] support new extensions ([#5027](https://github.com/typescript-eslint/typescript-eslint/issues/5027)) ([efc147b](https://github.com/typescript-eslint/typescript-eslint/commit/efc147b04dce52ab17415b6a4ae4076b944b9036)) - - - - +- [4.7] support new extensions ([#5027](https://github.com/typescript-eslint/typescript-eslint/issues/5027)) ([efc147b](https://github.com/typescript-eslint/typescript-eslint/commit/efc147b04dce52ab17415b6a4ae4076b944b9036)) # [5.26.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.25.0...v5.26.0) (2022-05-23) **Note:** Version bump only for package @typescript-eslint/types - - - - # [5.25.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.24.0...v5.25.0) (2022-05-17) - ### Features -* update to TypeScript 4.7-rc ([#4829](https://github.com/typescript-eslint/typescript-eslint/issues/4829)) ([6fe783c](https://github.com/typescript-eslint/typescript-eslint/commit/6fe783c20aebe26ef42b526e4a59a9be84dd5643)) - - - - +- update to TypeScript 4.7-rc ([#4829](https://github.com/typescript-eslint/typescript-eslint/issues/4829)) ([6fe783c](https://github.com/typescript-eslint/typescript-eslint/commit/6fe783c20aebe26ef42b526e4a59a9be84dd5643)) # [5.24.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.23.0...v5.24.0) (2022-05-16) **Note:** Version bump only for package @typescript-eslint/types - - - - # [5.23.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.22.0...v5.23.0) (2022-05-09) **Note:** Version bump only for package @typescript-eslint/types - - - - # [5.22.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.21.0...v5.22.0) (2022-05-02) - ### Features -* **ast-spec:** add fixture test framework and some initial fixtures ([#3258](https://github.com/typescript-eslint/typescript-eslint/issues/3258)) ([f3cf87b](https://github.com/typescript-eslint/typescript-eslint/commit/f3cf87bf20fd0542f92a96a318aa9ee5bf23c1f6)) - - - - +- **ast-spec:** add fixture test framework and some initial fixtures ([#3258](https://github.com/typescript-eslint/typescript-eslint/issues/3258)) ([f3cf87b](https://github.com/typescript-eslint/typescript-eslint/commit/f3cf87bf20fd0542f92a96a318aa9ee5bf23c1f6)) # [5.21.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.20.0...v5.21.0) (2022-04-25) -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [5.20.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.19.0...v5.20.0) (2022-04-18) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [5.19.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.18.0...v5.19.0) (2022-04-11) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [5.18.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.17.0...v5.18.0) (2022-04-04) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [5.17.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.16.0...v5.17.0) (2022-03-28) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [5.16.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.15.0...v5.16.0) (2022-03-21) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [5.15.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.14.0...v5.15.0) (2022-03-14) - - -### Features - -* **parser:** add `parserOptions.emitDecoratorMetadata` ([#4646](https://github.com/typescript-eslint/typescript-eslint/issues/4646)) ([e3dd343](https://github.com/typescript-eslint/typescript-eslint/commit/e3dd343e51e3b7772e825a609735a04c921c1ec5)) - - - - - -# [5.14.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.13.0...v5.14.0) (2022-03-07) - - -### Features - -* TypeScript 4.6 ([#4615](https://github.com/typescript-eslint/typescript-eslint/issues/4615)) ([a02c63a](https://github.com/typescript-eslint/typescript-eslint/commit/a02c63a264e5a6c3557468a8eff48d34ca2b718a)) - - - - - -# [5.13.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.12.1...v5.13.0) (2022-02-28) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -## [5.12.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.12.0...v5.12.1) (2022-02-21) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [5.12.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.11.0...v5.12.0) (2022-02-14) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [5.11.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.10.2...v5.11.0) (2022-02-07) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -## [5.10.2](https://github.com/typescript-eslint/typescript-eslint/compare/v5.10.1...v5.10.2) (2022-01-31) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -## [5.10.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.10.0...v5.10.1) (2022-01-24) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [5.10.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.9.1...v5.10.0) (2022-01-17) - - -### Features - -* rename `experimental-utils` to `utils` and make `experimental-utils` an alias to the new package ([#4172](https://github.com/typescript-eslint/typescript-eslint/issues/4172)) ([1d55a75](https://github.com/typescript-eslint/typescript-eslint/commit/1d55a7511b38d8e2b2eabe59f639e0a865e6c93f)) - - - - - -## [5.9.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.9.0...v5.9.1) (2022-01-10) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [5.9.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.8.1...v5.9.0) (2022-01-03) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -## [5.8.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.8.0...v5.8.1) (2021-12-27) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [5.8.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.7.0...v5.8.0) (2021-12-20) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [5.7.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.6.0...v5.7.0) (2021-12-13) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [5.6.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.5.0...v5.6.0) (2021-12-06) - - -### Features - -* **scope-manager:** update lib types ([#4240](https://github.com/typescript-eslint/typescript-eslint/issues/4240)) ([8377e6e](https://github.com/typescript-eslint/typescript-eslint/commit/8377e6ea422ee2d52455da8955ff055e09c238d3)) - - - - - -# [5.5.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.4.0...v5.5.0) (2021-11-29) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [5.4.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.3.1...v5.4.0) (2021-11-15) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -## [5.3.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.3.0...v5.3.1) (2021-11-08) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [5.3.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.2.0...v5.3.0) (2021-11-01) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [5.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.1.0...v5.2.0) (2021-10-25) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [5.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.0.0...v5.1.0) (2021-10-18) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [5.0.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.33.0...v5.0.0) (2021-10-11) - - -### Features - -* support `PrivateIdentifier` ([#3808](https://github.com/typescript-eslint/typescript-eslint/issues/3808)) ([0eefe5e](https://github.com/typescript-eslint/typescript-eslint/commit/0eefe5e49d21af3f1e3e2d9a90c2e49929863ac2)), closes [#3430](https://github.com/typescript-eslint/typescript-eslint/issues/3430) [#2933](https://github.com/typescript-eslint/typescript-eslint/issues/2933) - - - - - -# [4.33.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.32.0...v4.33.0) (2021-10-04) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [4.32.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.31.2...v4.32.0) (2021-09-27) - - -### Features - -* Support `'latest'` as `ecmaVersion` ([#3873](https://github.com/typescript-eslint/typescript-eslint/issues/3873)) ([25a42c0](https://github.com/typescript-eslint/typescript-eslint/commit/25a42c0bbe92d1ecbc2e8ff9ef3a3ef413f728b0)) - - - - - -## [4.31.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.31.1...v4.31.2) (2021-09-20) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -## [4.31.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.31.0...v4.31.1) (2021-09-13) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [4.31.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.30.0...v4.31.0) (2021-09-06) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [4.30.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.29.3...v4.30.0) (2021-08-30) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -## [4.29.3](https://github.com/typescript-eslint/typescript-eslint/compare/v4.29.2...v4.29.3) (2021-08-23) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -## [4.29.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.29.1...v4.29.2) (2021-08-16) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -## [4.29.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.29.0...v4.29.1) (2021-08-09) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [4.29.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.28.5...v4.29.0) (2021-08-02) - - -### Features - -* **eslint-plugin:** Catch unused React import with new JSX transform ([#3577](https://github.com/typescript-eslint/typescript-eslint/issues/3577)) ([02998ea](https://github.com/typescript-eslint/typescript-eslint/commit/02998eac510665758b9a093d43afc310f3ac980d)) -* **typescript-estree:** add support for custom module resolution ([#3516](https://github.com/typescript-eslint/typescript-eslint/issues/3516)) ([d48429d](https://github.com/typescript-eslint/typescript-eslint/commit/d48429d97326545bb727f88ce9056270b1599a31)) - - - - - -## [4.28.5](https://github.com/typescript-eslint/typescript-eslint/compare/v4.28.4...v4.28.5) (2021-07-26) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -## [4.28.4](https://github.com/typescript-eslint/typescript-eslint/compare/v4.28.3...v4.28.4) (2021-07-19) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -## [4.28.3](https://github.com/typescript-eslint/typescript-eslint/compare/v4.28.2...v4.28.3) (2021-07-12) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -## [4.28.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.28.1...v4.28.2) (2021-07-05) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -## [4.28.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.28.0...v4.28.1) (2021-06-28) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [4.28.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.27.0...v4.28.0) (2021-06-21) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [4.27.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.26.1...v4.27.0) (2021-06-14) - - -### Features - -* allow user to provide TS program instance in parser options ([#3484](https://github.com/typescript-eslint/typescript-eslint/issues/3484)) ([e855b18](https://github.com/typescript-eslint/typescript-eslint/commit/e855b18b8feee0edb5c617c11006861426a6f530)) - - - - - -## [4.26.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.26.0...v4.26.1) (2021-06-07) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [4.26.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.25.0...v4.26.0) (2021-05-31) - - -### Bug Fixes - -* generate library types for TypeScript v4.3 ([#3460](https://github.com/typescript-eslint/typescript-eslint/issues/3460)) ([ed4776a](https://github.com/typescript-eslint/typescript-eslint/commit/ed4776afa1374279027b9b7d82aa4b453b334998)), closes [#3449](https://github.com/typescript-eslint/typescript-eslint/issues/3449) - - - - - -# [4.25.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.24.0...v4.25.0) (2021-05-24) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [4.24.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.23.0...v4.24.0) (2021-05-17) - -**Note:** Version bump only for package @typescript-eslint/types - - - - - -# [4.23.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.22.1...v4.23.0) (2021-05-10) - - -### Features - -* refactor to split AST specification out as its own module ([#2911](https://github.com/typescript-eslint/typescript-eslint/issues/2911)) ([25ea953](https://github.com/typescript-eslint/typescript-eslint/commit/25ea953cc60b118bd385c71e0a9b61c286c26fcf)) - - - - - -## [4.22.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.22.0...v4.22.1) (2021-05-04) - -**Note:** Version bump only for package @typescript-eslint/types - - - - +**Note:** Version bump only for package @typescript-eslint/types -# [4.22.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.21.0...v4.22.0) (2021-04-12) +# [5.20.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.19.0...v5.20.0) (2022-04-18) **Note:** Version bump only for package @typescript-eslint/types +# [5.19.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.18.0...v5.19.0) (2022-04-11) +**Note:** Version bump only for package @typescript-eslint/types +# [5.18.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.17.0...v5.18.0) (2022-04-04) +**Note:** Version bump only for package @typescript-eslint/types -# [4.21.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.20.0...v4.21.0) (2021-04-05) +# [5.17.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.16.0...v5.17.0) (2022-03-28) **Note:** Version bump only for package @typescript-eslint/types +# [5.16.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.15.0...v5.16.0) (2022-03-21) +**Note:** Version bump only for package @typescript-eslint/types +# [5.15.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.14.0...v5.15.0) (2022-03-14) +### Features -# [4.20.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.19.0...v4.20.0) (2021-03-29) +- **parser:** add `parserOptions.emitDecoratorMetadata` ([#4646](https://github.com/typescript-eslint/typescript-eslint/issues/4646)) ([e3dd343](https://github.com/typescript-eslint/typescript-eslint/commit/e3dd343e51e3b7772e825a609735a04c921c1ec5)) -**Note:** Version bump only for package @typescript-eslint/types +# [5.14.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.13.0...v5.14.0) (2022-03-07) +### Features +- TypeScript 4.6 ([#4615](https://github.com/typescript-eslint/typescript-eslint/issues/4615)) ([a02c63a](https://github.com/typescript-eslint/typescript-eslint/commit/a02c63a264e5a6c3557468a8eff48d34ca2b718a)) +# [5.13.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.12.1...v5.13.0) (2022-02-28) +**Note:** Version bump only for package @typescript-eslint/types -# [4.19.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.18.0...v4.19.0) (2021-03-22) +## [5.12.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.12.0...v5.12.1) (2022-02-21) +**Note:** Version bump only for package @typescript-eslint/types -### Bug Fixes +# [5.12.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.11.0...v5.12.0) (2022-02-14) -* **typescript-estree:** [ts 4.2] add support for import type equal declaration ([#3189](https://github.com/typescript-eslint/typescript-eslint/issues/3189)) ([6a25faf](https://github.com/typescript-eslint/typescript-eslint/commit/6a25faf5cfa4d21a7546d9866819f4e017308fb2)) +**Note:** Version bump only for package @typescript-eslint/types +# [5.11.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.10.2...v5.11.0) (2022-02-07) +**Note:** Version bump only for package @typescript-eslint/types +## [5.10.2](https://github.com/typescript-eslint/typescript-eslint/compare/v5.10.1...v5.10.2) (2022-01-31) +**Note:** Version bump only for package @typescript-eslint/types -# [4.18.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.17.0...v4.18.0) (2021-03-15) +## [5.10.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.10.0...v5.10.1) (2022-01-24) **Note:** Version bump only for package @typescript-eslint/types +# [5.10.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.9.1...v5.10.0) (2022-01-17) +### Features +- rename `experimental-utils` to `utils` and make `experimental-utils` an alias to the new package ([#4172](https://github.com/typescript-eslint/typescript-eslint/issues/4172)) ([1d55a75](https://github.com/typescript-eslint/typescript-eslint/commit/1d55a7511b38d8e2b2eabe59f639e0a865e6c93f)) - -# [4.17.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.16.1...v4.17.0) (2021-03-08) +## [5.9.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.9.0...v5.9.1) (2022-01-10) **Note:** Version bump only for package @typescript-eslint/types +# [5.9.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.8.1...v5.9.0) (2022-01-03) +**Note:** Version bump only for package @typescript-eslint/types +## [5.8.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.8.0...v5.8.1) (2021-12-27) +**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) +# [5.8.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.7.0...v5.8.0) (2021-12-20) **Note:** Version bump only for package @typescript-eslint/types +# [5.7.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.6.0...v5.7.0) (2021-12-13) +**Note:** Version bump only for package @typescript-eslint/types +# [5.6.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.5.0...v5.6.0) (2021-12-06) +### Features -# [4.16.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.2...v4.16.0) (2021-03-01) +- **scope-manager:** update lib types ([#4240](https://github.com/typescript-eslint/typescript-eslint/issues/4240)) ([8377e6e](https://github.com/typescript-eslint/typescript-eslint/commit/8377e6ea422ee2d52455da8955ff055e09c238d3)) +# [5.5.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.4.0...v5.5.0) (2021-11-29) -### Features +**Note:** Version bump only for package @typescript-eslint/types -* TypeScript 4.2 syntax support ([#3112](https://github.com/typescript-eslint/typescript-eslint/issues/3112)) ([2ebfb21](https://github.com/typescript-eslint/typescript-eslint/commit/2ebfb21ba6c88c793cfbd0e231e5803b2381694c)) +# [5.4.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.3.1...v5.4.0) (2021-11-15) +**Note:** Version bump only for package @typescript-eslint/types +## [5.3.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.3.0...v5.3.1) (2021-11-08) +**Note:** Version bump only for package @typescript-eslint/types +# [5.3.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.2.0...v5.3.0) (2021-11-01) -## [4.15.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.1...v4.15.2) (2021-02-22) +**Note:** Version bump only for package @typescript-eslint/types +# [5.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.1.0...v5.2.0) (2021-10-25) -### Bug Fixes +**Note:** Version bump only for package @typescript-eslint/types -* **typescript-estree:** correct issues in AST definition ([#3083](https://github.com/typescript-eslint/typescript-eslint/issues/3083)) ([509a117](https://github.com/typescript-eslint/typescript-eslint/commit/509a11749f85400a01e9fecfecd12871ce562d3d)) -* add missing intrinsic keyword node to AST ([#3081](https://github.com/typescript-eslint/typescript-eslint/issues/3081)) ([409bf0b](https://github.com/typescript-eslint/typescript-eslint/commit/409bf0bb3e2ac4d8782408d436ebdefb42dba38b)) +# [5.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.0.0...v5.1.0) (2021-10-18) +**Note:** Version bump only for package @typescript-eslint/types +# [5.0.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.33.0...v5.0.0) (2021-10-11) +### Features +- support `PrivateIdentifier` ([#3808](https://github.com/typescript-eslint/typescript-eslint/issues/3808)) ([0eefe5e](https://github.com/typescript-eslint/typescript-eslint/commit/0eefe5e49d21af3f1e3e2d9a90c2e49929863ac2)), closes [#3430](https://github.com/typescript-eslint/typescript-eslint/issues/3430) [#2933](https://github.com/typescript-eslint/typescript-eslint/issues/2933) -## [4.15.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.0...v4.15.1) (2021-02-15) +# [4.33.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.32.0...v4.33.0) (2021-10-04) **Note:** Version bump only for package @typescript-eslint/types +# [4.32.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.31.2...v4.32.0) (2021-09-27) +### Features +- Support `'latest'` as `ecmaVersion` ([#3873](https://github.com/typescript-eslint/typescript-eslint/issues/3873)) ([25a42c0](https://github.com/typescript-eslint/typescript-eslint/commit/25a42c0bbe92d1ecbc2e8ff9ef3a3ef413f728b0)) - -# [4.15.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.14.2...v4.15.0) (2021-02-08) +## [4.31.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.31.1...v4.31.2) (2021-09-20) **Note:** Version bump only for package @typescript-eslint/types +## [4.31.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.31.0...v4.31.1) (2021-09-13) +**Note:** Version bump only for package @typescript-eslint/types +# [4.31.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.30.0...v4.31.0) (2021-09-06) +**Note:** Version bump only for package @typescript-eslint/types -## [4.14.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.14.1...v4.14.2) (2021-02-01) +# [4.30.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.29.3...v4.30.0) (2021-08-30) **Note:** Version bump only for package @typescript-eslint/types +## [4.29.3](https://github.com/typescript-eslint/typescript-eslint/compare/v4.29.2...v4.29.3) (2021-08-23) +**Note:** Version bump only for package @typescript-eslint/types +## [4.29.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.29.1...v4.29.2) (2021-08-16) +**Note:** Version bump only for package @typescript-eslint/types -## [4.14.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.14.0...v4.14.1) (2021-01-25) +## [4.29.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.29.0...v4.29.1) (2021-08-09) **Note:** Version bump only for package @typescript-eslint/types +# [4.29.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.28.5...v4.29.0) (2021-08-02) +### Features +- **eslint-plugin:** Catch unused React import with new JSX transform ([#3577](https://github.com/typescript-eslint/typescript-eslint/issues/3577)) ([02998ea](https://github.com/typescript-eslint/typescript-eslint/commit/02998eac510665758b9a093d43afc310f3ac980d)) +- **typescript-estree:** add support for custom module resolution ([#3516](https://github.com/typescript-eslint/typescript-eslint/issues/3516)) ([d48429d](https://github.com/typescript-eslint/typescript-eslint/commit/d48429d97326545bb727f88ce9056270b1599a31)) +## [4.28.5](https://github.com/typescript-eslint/typescript-eslint/compare/v4.28.4...v4.28.5) (2021-07-26) -# [4.14.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.13.0...v4.14.0) (2021-01-18) +**Note:** Version bump only for package @typescript-eslint/types + +## [4.28.4](https://github.com/typescript-eslint/typescript-eslint/compare/v4.28.3...v4.28.4) (2021-07-19) **Note:** Version bump only for package @typescript-eslint/types +## [4.28.3](https://github.com/typescript-eslint/typescript-eslint/compare/v4.28.2...v4.28.3) (2021-07-12) +**Note:** Version bump only for package @typescript-eslint/types +## [4.28.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.28.1...v4.28.2) (2021-07-05) +**Note:** Version bump only for package @typescript-eslint/types -# [4.13.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.12.0...v4.13.0) (2021-01-11) +## [4.28.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.28.0...v4.28.1) (2021-06-28) **Note:** Version bump only for package @typescript-eslint/types +# [4.28.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.27.0...v4.28.0) (2021-06-21) + +**Note:** Version bump only for package @typescript-eslint/types +# [4.27.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.26.1...v4.27.0) (2021-06-14) +### Features +- allow user to provide TS program instance in parser options ([#3484](https://github.com/typescript-eslint/typescript-eslint/issues/3484)) ([e855b18](https://github.com/typescript-eslint/typescript-eslint/commit/e855b18b8feee0edb5c617c11006861426a6f530)) -# [4.12.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.11.1...v4.12.0) (2021-01-04) +## [4.26.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.26.0...v4.26.1) (2021-06-07) **Note:** Version bump only for package @typescript-eslint/types +# [4.26.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.25.0...v4.26.0) (2021-05-31) +### Bug Fixes +- generate library types for TypeScript v4.3 ([#3460](https://github.com/typescript-eslint/typescript-eslint/issues/3460)) ([ed4776a](https://github.com/typescript-eslint/typescript-eslint/commit/ed4776afa1374279027b9b7d82aa4b453b334998)), closes [#3449](https://github.com/typescript-eslint/typescript-eslint/issues/3449) - -## [4.11.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.11.0...v4.11.1) (2020-12-28) +# [4.25.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.24.0...v4.25.0) (2021-05-24) **Note:** Version bump only for package @typescript-eslint/types +# [4.24.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.23.0...v4.24.0) (2021-05-17) + +**Note:** Version bump only for package @typescript-eslint/types +# [4.23.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.22.1...v4.23.0) (2021-05-10) +### Features +- refactor to split AST specification out as its own module ([#2911](https://github.com/typescript-eslint/typescript-eslint/issues/2911)) ([25ea953](https://github.com/typescript-eslint/typescript-eslint/commit/25ea953cc60b118bd385c71e0a9b61c286c26fcf)) -# [4.11.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.10.0...v4.11.0) (2020-12-21) +## [4.22.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.22.0...v4.22.1) (2021-05-04) **Note:** Version bump only for package @typescript-eslint/types +# [4.22.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.21.0...v4.22.0) (2021-04-12) +**Note:** Version bump only for package @typescript-eslint/types +# [4.21.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.20.0...v4.21.0) (2021-04-05) +**Note:** Version bump only for package @typescript-eslint/types -# [4.10.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.9.1...v4.10.0) (2020-12-14) +# [4.20.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.19.0...v4.20.0) (2021-03-29) **Note:** Version bump only for package @typescript-eslint/types +# [4.19.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.18.0...v4.19.0) (2021-03-22) +### Bug Fixes +- **typescript-estree:** [ts 4.2] add support for import type equal declaration ([#3189](https://github.com/typescript-eslint/typescript-eslint/issues/3189)) ([6a25faf](https://github.com/typescript-eslint/typescript-eslint/commit/6a25faf5cfa4d21a7546d9866819f4e017308fb2)) - -## [4.9.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.9.0...v4.9.1) (2020-12-07) +# [4.18.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.17.0...v4.18.0) (2021-03-15) **Note:** Version bump only for package @typescript-eslint/types +# [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 -# [4.9.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.8.2...v4.9.0) (2020-11-30) - +# [4.16.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.2...v4.16.0) (2021-03-01) ### Features -* **eslint-plugin:** [no-unused-vars] fork the base rule ([#2768](https://github.com/typescript-eslint/typescript-eslint/issues/2768)) ([a8227a6](https://github.com/typescript-eslint/typescript-eslint/commit/a8227a6185dd24de4bfc7d766931643871155021)), closes [#2782](https://github.com/typescript-eslint/typescript-eslint/issues/2782) [#2714](https://github.com/typescript-eslint/typescript-eslint/issues/2714) [#2648](https://github.com/typescript-eslint/typescript-eslint/issues/2648) +- TypeScript 4.2 syntax support ([#3112](https://github.com/typescript-eslint/typescript-eslint/issues/3112)) ([2ebfb21](https://github.com/typescript-eslint/typescript-eslint/commit/2ebfb21ba6c88c793cfbd0e231e5803b2381694c)) + +## [4.15.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.1...v4.15.2) (2021-02-22) +### Bug Fixes +- **typescript-estree:** correct issues in AST definition ([#3083](https://github.com/typescript-eslint/typescript-eslint/issues/3083)) ([509a117](https://github.com/typescript-eslint/typescript-eslint/commit/509a11749f85400a01e9fecfecd12871ce562d3d)) +- add missing intrinsic keyword node to AST ([#3081](https://github.com/typescript-eslint/typescript-eslint/issues/3081)) ([409bf0b](https://github.com/typescript-eslint/typescript-eslint/commit/409bf0bb3e2ac4d8782408d436ebdefb42dba38b)) +## [4.15.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.0...v4.15.1) (2021-02-15) +**Note:** Version bump only for package @typescript-eslint/types -## [4.8.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.8.1...v4.8.2) (2020-11-23) +# [4.15.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.14.2...v4.15.0) (2021-02-08) **Note:** Version bump only for package @typescript-eslint/types +## [4.14.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.14.1...v4.14.2) (2021-02-01) +**Note:** Version bump only for package @typescript-eslint/types +## [4.14.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.14.0...v4.14.1) (2021-01-25) +**Note:** Version bump only for package @typescript-eslint/types -## [4.8.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.8.0...v4.8.1) (2020-11-17) +# [4.14.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.13.0...v4.14.0) (2021-01-18) **Note:** Version bump only for package @typescript-eslint/types +# [4.13.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.12.0...v4.13.0) (2021-01-11) +**Note:** Version bump only for package @typescript-eslint/types +# [4.12.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.11.1...v4.12.0) (2021-01-04) +**Note:** Version bump only for package @typescript-eslint/types -# [4.8.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.7.0...v4.8.0) (2020-11-16) +## [4.11.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.11.0...v4.11.1) (2020-12-28) **Note:** Version bump only for package @typescript-eslint/types +# [4.11.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.10.0...v4.11.0) (2020-12-21) + +**Note:** Version bump only for package @typescript-eslint/types +# [4.10.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.9.1...v4.10.0) (2020-12-14) +**Note:** Version bump only for package @typescript-eslint/types +## [4.9.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.9.0...v4.9.1) (2020-12-07) -# [4.7.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.6.1...v4.7.0) (2020-11-09) +**Note:** Version bump only for package @typescript-eslint/types +# [4.9.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.8.2...v4.9.0) (2020-11-30) ### Features -* support TS4.1 features ([#2748](https://github.com/typescript-eslint/typescript-eslint/issues/2748)) ([2be354b](https://github.com/typescript-eslint/typescript-eslint/commit/2be354bb15f9013a2da1b13a0c0836e9ef057e16)), closes [#2583](https://github.com/typescript-eslint/typescript-eslint/issues/2583) +- **eslint-plugin:** [no-unused-vars] fork the base rule ([#2768](https://github.com/typescript-eslint/typescript-eslint/issues/2768)) ([a8227a6](https://github.com/typescript-eslint/typescript-eslint/commit/a8227a6185dd24de4bfc7d766931643871155021)), closes [#2782](https://github.com/typescript-eslint/typescript-eslint/issues/2782) [#2714](https://github.com/typescript-eslint/typescript-eslint/issues/2714) [#2648](https://github.com/typescript-eslint/typescript-eslint/issues/2648) +## [4.8.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.8.1...v4.8.2) (2020-11-23) +**Note:** Version bump only for package @typescript-eslint/types +## [4.8.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.8.0...v4.8.1) (2020-11-17) +**Note:** Version bump only for package @typescript-eslint/types -## [4.6.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.6.0...v4.6.1) (2020-11-02) +# [4.8.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.7.0...v4.8.0) (2020-11-16) **Note:** Version bump only for package @typescript-eslint/types +# [4.7.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.6.1...v4.7.0) (2020-11-09) +### Features +- support TS4.1 features ([#2748](https://github.com/typescript-eslint/typescript-eslint/issues/2748)) ([2be354b](https://github.com/typescript-eslint/typescript-eslint/commit/2be354bb15f9013a2da1b13a0c0836e9ef057e16)), closes [#2583](https://github.com/typescript-eslint/typescript-eslint/issues/2583) - -# [4.6.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.5.0...v4.6.0) (2020-10-26) +## [4.6.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.6.0...v4.6.1) (2020-11-02) **Note:** Version bump only for package @typescript-eslint/types +# [4.6.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.5.0...v4.6.0) (2020-10-26) - - +**Note:** Version bump only for package @typescript-eslint/types # [4.5.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.4.1...v4.5.0) (2020-10-19) - ### Features -* **typescript-estree:** add flag EXPERIMENTAL_useSourceOfProjectReferenceRedirect ([#2669](https://github.com/typescript-eslint/typescript-eslint/issues/2669)) ([90a5878](https://github.com/typescript-eslint/typescript-eslint/commit/90a587845088da1b205e4d7d77dbc3f9447b1c5a)) - - - - +- **typescript-estree:** add flag EXPERIMENTAL_useSourceOfProjectReferenceRedirect ([#2669](https://github.com/typescript-eslint/typescript-eslint/issues/2669)) ([90a5878](https://github.com/typescript-eslint/typescript-eslint/commit/90a587845088da1b205e4d7d77dbc3f9447b1c5a)) ## [4.4.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.4.0...v4.4.1) (2020-10-12) **Note:** Version bump only for package @typescript-eslint/types - - - - # [4.4.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.3.0...v4.4.0) (2020-10-05) **Note:** Version bump only for package @typescript-eslint/types - - - - # [4.3.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.2.0...v4.3.0) (2020-09-28) **Note:** Version bump only for package @typescript-eslint/types - - - - # [4.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.1.1...v4.2.0) (2020-09-21) **Note:** Version bump only for package @typescript-eslint/types - - - - ## [4.1.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.1.0...v4.1.1) (2020-09-14) - ### Bug Fixes -* **types:** artificial fix needed to trigger release ([b577daf](https://github.com/typescript-eslint/typescript-eslint/commit/b577daf27cd87870b6e095e4e995519f96d321dd)) - - - - +- **types:** artificial fix needed to trigger release ([b577daf](https://github.com/typescript-eslint/typescript-eslint/commit/b577daf27cd87870b6e095e4e995519f96d321dd)) # [4.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.0.1...v4.1.0) (2020-09-07) - ### Bug Fixes -* **eslint-plugin:** [no-unused-vars] correct detection of unused vars in a declared module with `export =` ([#2505](https://github.com/typescript-eslint/typescript-eslint/issues/2505)) ([3d07a99](https://github.com/typescript-eslint/typescript-eslint/commit/3d07a99faa0a5fc1b44acdb43ddbfc90a5105833)) - +- **eslint-plugin:** [no-unused-vars] correct detection of unused vars in a declared module with `export =` ([#2505](https://github.com/typescript-eslint/typescript-eslint/issues/2505)) ([3d07a99](https://github.com/typescript-eslint/typescript-eslint/commit/3d07a99faa0a5fc1b44acdb43ddbfc90a5105833)) ### Features -* **scope-manager:** add support for JSX scope analysis ([#2498](https://github.com/typescript-eslint/typescript-eslint/issues/2498)) ([f887ab5](https://github.com/typescript-eslint/typescript-eslint/commit/f887ab51f58c1b3571f9a14832864bc0ca59623f)), closes [#2455](https://github.com/typescript-eslint/typescript-eslint/issues/2455) [#2477](https://github.com/typescript-eslint/typescript-eslint/issues/2477) - - - - +- **scope-manager:** add support for JSX scope analysis ([#2498](https://github.com/typescript-eslint/typescript-eslint/issues/2498)) ([f887ab5](https://github.com/typescript-eslint/typescript-eslint/commit/f887ab51f58c1b3571f9a14832864bc0ca59623f)), closes [#2455](https://github.com/typescript-eslint/typescript-eslint/issues/2455) [#2477](https://github.com/typescript-eslint/typescript-eslint/issues/2477) ## [4.0.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.0.0...v4.0.1) (2020-08-31) **Note:** Version bump only for package @typescript-eslint/types - - - - # [4.0.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.10.1...v4.0.0) (2020-08-31) ## [Please see the release notes for v4.0.0](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v4.0.0) ### Bug Fixes -* correct decorator traversal for AssignmentPattern ([#2375](https://github.com/typescript-eslint/typescript-eslint/issues/2375)) ([d738fa4](https://github.com/typescript-eslint/typescript-eslint/commit/d738fa4eff0a5c4cfc9b30b1c0502f8d1e78d7b6)) -* **typescript-estree:** correct ChainExpression interaction with parentheses and non-nulls ([#2380](https://github.com/typescript-eslint/typescript-eslint/issues/2380)) ([762bc99](https://github.com/typescript-eslint/typescript-eslint/commit/762bc99584ede4d0b8099a743991e957aec86aa8)) - +- correct decorator traversal for AssignmentPattern ([#2375](https://github.com/typescript-eslint/typescript-eslint/issues/2375)) ([d738fa4](https://github.com/typescript-eslint/typescript-eslint/commit/d738fa4eff0a5c4cfc9b30b1c0502f8d1e78d7b6)) +- **typescript-estree:** correct ChainExpression interaction with parentheses and non-nulls ([#2380](https://github.com/typescript-eslint/typescript-eslint/issues/2380)) ([762bc99](https://github.com/typescript-eslint/typescript-eslint/commit/762bc99584ede4d0b8099a743991e957aec86aa8)) ### Features -* consume new scope analysis package ([#2039](https://github.com/typescript-eslint/typescript-eslint/issues/2039)) ([3be125d](https://github.com/typescript-eslint/typescript-eslint/commit/3be125d9bdbee1984ac6037874edf619213bd3d0)) -* support ESTree optional chaining representation ([#2308](https://github.com/typescript-eslint/typescript-eslint/issues/2308)) ([e9d2ab6](https://github.com/typescript-eslint/typescript-eslint/commit/e9d2ab638b6767700b52797e74b814ea059beaae)) - +- consume new scope analysis package ([#2039](https://github.com/typescript-eslint/typescript-eslint/issues/2039)) ([3be125d](https://github.com/typescript-eslint/typescript-eslint/commit/3be125d9bdbee1984ac6037874edf619213bd3d0)) +- support ESTree optional chaining representation ([#2308](https://github.com/typescript-eslint/typescript-eslint/issues/2308)) ([e9d2ab6](https://github.com/typescript-eslint/typescript-eslint/commit/e9d2ab638b6767700b52797e74b814ea059beaae)) ### BREAKING CHANGES -* - Removed decorators property from several Nodes that could never semantically have them (FunctionDeclaration, TSEnumDeclaration, and TSInterfaceDeclaration) -- Removed AST_NODE_TYPES.Import. This is a minor breaking change as the node type that used this was removed ages ago. - - - +- - Removed decorators property from several Nodes that could never semantically have them (FunctionDeclaration, TSEnumDeclaration, and TSInterfaceDeclaration) +* Removed AST_NODE_TYPES.Import. This is a minor breaking change as the node type that used this was removed ages ago. ## [3.10.1](https://github.com/typescript-eslint/typescript-eslint/compare/v3.10.0...v3.10.1) (2020-08-25) **Note:** Version bump only for package @typescript-eslint/types - - - - # [3.10.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.9.1...v3.10.0) (2020-08-24) **Note:** Version bump only for package @typescript-eslint/types - - - - ## [3.9.1](https://github.com/typescript-eslint/typescript-eslint/compare/v3.9.0...v3.9.1) (2020-08-17) **Note:** Version bump only for package @typescript-eslint/types - - - - # [3.9.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.8.0...v3.9.0) (2020-08-10) - ### Features -* **typescript-estree:** support TSv4 labelled tuple members ([#2378](https://github.com/typescript-eslint/typescript-eslint/issues/2378)) ([00d84ff](https://github.com/typescript-eslint/typescript-eslint/commit/00d84ffbcbe9d0ec98bdb2f2ce59959a27ce4dbe)) - - - - +- **typescript-estree:** support TSv4 labelled tuple members ([#2378](https://github.com/typescript-eslint/typescript-eslint/issues/2378)) ([00d84ff](https://github.com/typescript-eslint/typescript-eslint/commit/00d84ffbcbe9d0ec98bdb2f2ce59959a27ce4dbe)) # [3.8.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.7.1...v3.8.0) (2020-08-03) **Note:** Version bump only for package @typescript-eslint/types - - - - ## [3.7.1](https://github.com/typescript-eslint/typescript-eslint/compare/v3.7.0...v3.7.1) (2020-07-27) **Note:** Version bump only for package @typescript-eslint/types - - - - # [3.7.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.6.1...v3.7.0) (2020-07-20) - ### Features -* **eslint-plugin:** [no-empty-function] add `decoratedFunctions` option ([#2295](https://github.com/typescript-eslint/typescript-eslint/issues/2295)) ([88f08f4](https://github.com/typescript-eslint/typescript-eslint/commit/88f08f410760f58fdc2de58ecd9dab9610821642)) -* **typescript-estree:** support short-circuiting assignment operators ([#2307](https://github.com/typescript-eslint/typescript-eslint/issues/2307)) ([2c90d9f](https://github.com/typescript-eslint/typescript-eslint/commit/2c90d9fa3aa5ebd7db697dddb7762bca2dd0e06b)) - - - - +- **eslint-plugin:** [no-empty-function] add `decoratedFunctions` option ([#2295](https://github.com/typescript-eslint/typescript-eslint/issues/2295)) ([88f08f4](https://github.com/typescript-eslint/typescript-eslint/commit/88f08f410760f58fdc2de58ecd9dab9610821642)) +- **typescript-estree:** support short-circuiting assignment operators ([#2307](https://github.com/typescript-eslint/typescript-eslint/issues/2307)) ([2c90d9f](https://github.com/typescript-eslint/typescript-eslint/commit/2c90d9fa3aa5ebd7db697dddb7762bca2dd0e06b)) ## [3.6.1](https://github.com/typescript-eslint/typescript-eslint/compare/v3.6.0...v3.6.1) (2020-07-13) **Note:** Version bump only for package @typescript-eslint/types - - - - # [3.6.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.5.0...v3.6.0) (2020-07-06) **Note:** Version bump only for package @typescript-eslint/types - - - - # [3.5.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.4.0...v3.5.0) (2020-06-29) - ### Features -* add package scope-manager ([#1939](https://github.com/typescript-eslint/typescript-eslint/issues/1939)) ([682eb7e](https://github.com/typescript-eslint/typescript-eslint/commit/682eb7e009c3f22a542882dfd3602196a60d2a1e)) -* split types into their own package ([#2229](https://github.com/typescript-eslint/typescript-eslint/issues/2229)) ([5f45918](https://github.com/typescript-eslint/typescript-eslint/commit/5f4591886f3438329fbf2229b03ac66174334a24)) +- add package scope-manager ([#1939](https://github.com/typescript-eslint/typescript-eslint/issues/1939)) ([682eb7e](https://github.com/typescript-eslint/typescript-eslint/commit/682eb7e009c3f22a542882dfd3602196a60d2a1e)) +- split types into their own package ([#2229](https://github.com/typescript-eslint/typescript-eslint/issues/2229)) ([5f45918](https://github.com/typescript-eslint/typescript-eslint/commit/5f4591886f3438329fbf2229b03ac66174334a24)) diff --git a/packages/types/package.json b/packages/types/package.json index 259a020c899..71916d87d30 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/types", - "version": "5.40.0", + "version": "5.40.1", "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 ddd52888198..27a60a57586 100644 --- a/packages/typescript-estree/CHANGELOG.md +++ b/packages/typescript-estree/CHANGELOG.md @@ -3,1861 +3,1047 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [5.40.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.39.0...v5.40.0) (2022-10-10) +## [5.40.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.0...v5.40.1) (2022-10-17) **Note:** Version bump only for package @typescript-eslint/typescript-estree +# [5.40.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.39.0...v5.40.0) (2022-10-10) - - +**Note:** Version bump only for package @typescript-eslint/typescript-estree # [5.39.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.38.1...v5.39.0) (2022-10-03) **Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - ## [5.38.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.38.0...v5.38.1) (2022-09-26) **Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - # [5.38.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.37.0...v5.38.0) (2022-09-19) **Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - # [5.37.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.36.2...v5.37.0) (2022-09-12) **Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - ## [5.36.2](https://github.com/typescript-eslint/typescript-eslint/compare/v5.36.1...v5.36.2) (2022-09-05) - ### Bug Fixes -* **typescript-estree:** don't double add decorators to a parameter property's parameter ([#5582](https://github.com/typescript-eslint/typescript-eslint/issues/5582)) ([863694c](https://github.com/typescript-eslint/typescript-eslint/commit/863694cbc71b5158ca6a018de8707c9f9fbc22c3)) - - - - +- **typescript-estree:** don't double add decorators to a parameter property's parameter ([#5582](https://github.com/typescript-eslint/typescript-eslint/issues/5582)) ([863694c](https://github.com/typescript-eslint/typescript-eslint/commit/863694cbc71b5158ca6a018de8707c9f9fbc22c3)) ## [5.36.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.36.0...v5.36.1) (2022-08-30) - ### Bug Fixes -* **typescript-estree:** fix decorator regression for pre TS4.8 ([#5574](https://github.com/typescript-eslint/typescript-eslint/issues/5574)) ([a603015](https://github.com/typescript-eslint/typescript-eslint/commit/a603015c93a6ea96d500c57bec1e284340141b1f)) - - - - +- **typescript-estree:** fix decorator regression for pre TS4.8 ([#5574](https://github.com/typescript-eslint/typescript-eslint/issues/5574)) ([a603015](https://github.com/typescript-eslint/typescript-eslint/commit/a603015c93a6ea96d500c57bec1e284340141b1f)) # [5.36.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.35.1...v5.36.0) (2022-08-30) - ### Features -* support TypeScript 4.8 ([#5551](https://github.com/typescript-eslint/typescript-eslint/issues/5551)) ([81450ed](https://github.com/typescript-eslint/typescript-eslint/commit/81450ed7eaede74b384e9a91a84e9b4d34513866)) - - - - +- support TypeScript 4.8 ([#5551](https://github.com/typescript-eslint/typescript-eslint/issues/5551)) ([81450ed](https://github.com/typescript-eslint/typescript-eslint/commit/81450ed7eaede74b384e9a91a84e9b4d34513866)) ## [5.35.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.35.0...v5.35.1) (2022-08-24) **Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - # [5.35.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.34.0...v5.35.0) (2022-08-24) **Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - # [5.34.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.33.1...v5.34.0) (2022-08-22) - ### Features -* **eslint-plugin:** [prefer-optional-chain] support suggesting `!foo || !foo.bar` as a valid match for the rule ([#5266](https://github.com/typescript-eslint/typescript-eslint/issues/5266)) ([aca935c](https://github.com/typescript-eslint/typescript-eslint/commit/aca935c9696712d4aff18144c4690db4d6ba9bf9)) - - - - +- **eslint-plugin:** [prefer-optional-chain] support suggesting `!foo || !foo.bar` as a valid match for the rule ([#5266](https://github.com/typescript-eslint/typescript-eslint/issues/5266)) ([aca935c](https://github.com/typescript-eslint/typescript-eslint/commit/aca935c9696712d4aff18144c4690db4d6ba9bf9)) ## [5.33.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.33.0...v5.33.1) (2022-08-15) **Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - # [5.33.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.32.0...v5.33.0) (2022-08-08) **Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - # [5.32.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.31.0...v5.32.0) (2022-08-01) **Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - # [5.31.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.7...v5.31.0) (2022-07-25) **Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - ## [5.30.7](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.6...v5.30.7) (2022-07-18) - ### Bug Fixes -* expose types supporting old versions of typescript ([#5339](https://github.com/typescript-eslint/typescript-eslint/issues/5339)) ([4ba9bdb](https://github.com/typescript-eslint/typescript-eslint/commit/4ba9bdb93f87e6bc370f13aa1de48f435abe3f88)) - - - - +- expose types supporting old versions of typescript ([#5339](https://github.com/typescript-eslint/typescript-eslint/issues/5339)) ([4ba9bdb](https://github.com/typescript-eslint/typescript-eslint/commit/4ba9bdb93f87e6bc370f13aa1de48f435abe3f88)) ## [5.30.6](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.5...v5.30.6) (2022-07-11) **Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - ## [5.30.5](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.4...v5.30.5) (2022-07-04) **Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - ## [5.30.4](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.3...v5.30.4) (2022-07-03) **Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - ## [5.30.3](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.2...v5.30.3) (2022-07-01) **Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - ## [5.30.2](https://github.com/typescript-eslint/typescript-eslint/compare/v5.30.1...v5.30.2) (2022-07-01) **Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - ## 5.30.1 (2022-07-01) **Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - # [5.30.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.29.0...v5.30.0) (2022-06-27) - ### Features -* treat `this` in `typeof this` as a `ThisExpression` ([#4382](https://github.com/typescript-eslint/typescript-eslint/issues/4382)) ([b04b2ce](https://github.com/typescript-eslint/typescript-eslint/commit/b04b2ce1ba90d94718891f2562dd210a6d7b8609)) - - - - +- treat `this` in `typeof this` as a `ThisExpression` ([#4382](https://github.com/typescript-eslint/typescript-eslint/issues/4382)) ([b04b2ce](https://github.com/typescript-eslint/typescript-eslint/commit/b04b2ce1ba90d94718891f2562dd210a6d7b8609)) # [5.29.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.28.0...v5.29.0) (2022-06-20) **Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - # [5.28.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.27.1...v5.28.0) (2022-06-13) **Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - ## [5.27.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.27.0...v5.27.1) (2022-06-06) **Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - # [5.27.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.26.0...v5.27.0) (2022-05-30) - ### Bug Fixes -* **types:** remove leftovers from removal of useJSXTextNode ([#5091](https://github.com/typescript-eslint/typescript-eslint/issues/5091)) ([f9c3647](https://github.com/typescript-eslint/typescript-eslint/commit/f9c3647cb637c8d1ee461b471da9d817ccbde77c)) - +- **types:** remove leftovers from removal of useJSXTextNode ([#5091](https://github.com/typescript-eslint/typescript-eslint/issues/5091)) ([f9c3647](https://github.com/typescript-eslint/typescript-eslint/commit/f9c3647cb637c8d1ee461b471da9d817ccbde77c)) ### Features -* [4.7] support new extensions ([#5027](https://github.com/typescript-eslint/typescript-eslint/issues/5027)) ([efc147b](https://github.com/typescript-eslint/typescript-eslint/commit/efc147b04dce52ab17415b6a4ae4076b944b9036)) -* [TS4.7] support type parameters for `typeof` ([#5067](https://github.com/typescript-eslint/typescript-eslint/issues/5067)) ([836de79](https://github.com/typescript-eslint/typescript-eslint/commit/836de79e8d1bff43149168cc913a4c2b60e79bf6)) -* bump dependency ranges to TypeScript 4.7 ([#5082](https://github.com/typescript-eslint/typescript-eslint/issues/5082)) ([c4310b1](https://github.com/typescript-eslint/typescript-eslint/commit/c4310b1aac35c7d31b826f0602eca6a5900a09ee)) - - - - +- [4.7] support new extensions ([#5027](https://github.com/typescript-eslint/typescript-eslint/issues/5027)) ([efc147b](https://github.com/typescript-eslint/typescript-eslint/commit/efc147b04dce52ab17415b6a4ae4076b944b9036)) +- [TS4.7] support type parameters for `typeof` ([#5067](https://github.com/typescript-eslint/typescript-eslint/issues/5067)) ([836de79](https://github.com/typescript-eslint/typescript-eslint/commit/836de79e8d1bff43149168cc913a4c2b60e79bf6)) +- bump dependency ranges to TypeScript 4.7 ([#5082](https://github.com/typescript-eslint/typescript-eslint/issues/5082)) ([c4310b1](https://github.com/typescript-eslint/typescript-eslint/commit/c4310b1aac35c7d31b826f0602eca6a5900a09ee)) # [5.26.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.25.0...v5.26.0) (2022-05-23) - ### Features -* [4.7] support instantiation expressions ([#4938](https://github.com/typescript-eslint/typescript-eslint/issues/4938)) ([79fbc77](https://github.com/typescript-eslint/typescript-eslint/commit/79fbc7743ae5dce3190f8168776e0204755390ad)) -* [4.7] support optional variance annotation ([#4831](https://github.com/typescript-eslint/typescript-eslint/issues/4831)) ([7e7b24c](https://github.com/typescript-eslint/typescript-eslint/commit/7e7b24c196e6d968e48f97f46feae5e7027e22d2)) -* **typescript-estree:** `extends` constraints for `infer` ([#4830](https://github.com/typescript-eslint/typescript-eslint/issues/4830)) ([8cbbcc3](https://github.com/typescript-eslint/typescript-eslint/commit/8cbbcc3d317779e0dcba15d3835137f38383de34)) - - - - +- [4.7] support instantiation expressions ([#4938](https://github.com/typescript-eslint/typescript-eslint/issues/4938)) ([79fbc77](https://github.com/typescript-eslint/typescript-eslint/commit/79fbc7743ae5dce3190f8168776e0204755390ad)) +- [4.7] support optional variance annotation ([#4831](https://github.com/typescript-eslint/typescript-eslint/issues/4831)) ([7e7b24c](https://github.com/typescript-eslint/typescript-eslint/commit/7e7b24c196e6d968e48f97f46feae5e7027e22d2)) +- **typescript-estree:** `extends` constraints for `infer` ([#4830](https://github.com/typescript-eslint/typescript-eslint/issues/4830)) ([8cbbcc3](https://github.com/typescript-eslint/typescript-eslint/commit/8cbbcc3d317779e0dcba15d3835137f38383de34)) # [5.25.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.24.0...v5.25.0) (2022-05-17) - ### Features -* update to TypeScript 4.7-rc ([#4829](https://github.com/typescript-eslint/typescript-eslint/issues/4829)) ([6fe783c](https://github.com/typescript-eslint/typescript-eslint/commit/6fe783c20aebe26ef42b526e4a59a9be84dd5643)) - - - - +- update to TypeScript 4.7-rc ([#4829](https://github.com/typescript-eslint/typescript-eslint/issues/4829)) ([6fe783c](https://github.com/typescript-eslint/typescript-eslint/commit/6fe783c20aebe26ef42b526e4a59a9be84dd5643)) # [5.24.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.23.0...v5.24.0) (2022-05-16) **Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - # [5.23.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.22.0...v5.23.0) (2022-05-09) **Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - # [5.22.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.21.0...v5.22.0) (2022-05-02) **Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - # [5.21.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.20.0...v5.21.0) (2022-04-25) **Note:** Version bump only for package @typescript-eslint/typescript-estree +# [5.20.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.19.0...v5.20.0) (2022-04-18) +**Note:** Version bump only for package @typescript-eslint/typescript-estree +# [5.19.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.18.0...v5.19.0) (2022-04-11) +**Note:** Version bump only for package @typescript-eslint/typescript-estree -# [5.20.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.19.0...v5.20.0) (2022-04-18) +# [5.18.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.17.0...v5.18.0) (2022-04-04) **Note:** Version bump only for package @typescript-eslint/typescript-estree +# [5.17.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.16.0...v5.17.0) (2022-03-28) +**Note:** Version bump only for package @typescript-eslint/typescript-estree +# [5.16.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.15.0...v5.16.0) (2022-03-21) +**Note:** Version bump only for package @typescript-eslint/typescript-estree -# [5.19.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.18.0...v5.19.0) (2022-04-11) +# [5.15.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.14.0...v5.15.0) (2022-03-14) **Note:** Version bump only for package @typescript-eslint/typescript-estree +# [5.14.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.13.0...v5.14.0) (2022-03-07) +### Features +- TypeScript 4.6 ([#4615](https://github.com/typescript-eslint/typescript-eslint/issues/4615)) ([a02c63a](https://github.com/typescript-eslint/typescript-eslint/commit/a02c63a264e5a6c3557468a8eff48d34ca2b718a)) - -# [5.18.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.17.0...v5.18.0) (2022-04-04) +# [5.13.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.12.1...v5.13.0) (2022-02-28) **Note:** Version bump only for package @typescript-eslint/typescript-estree +## [5.12.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.12.0...v5.12.1) (2022-02-21) +**Note:** Version bump only for package @typescript-eslint/typescript-estree +# [5.12.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.11.0...v5.12.0) (2022-02-14) +**Note:** Version bump only for package @typescript-eslint/typescript-estree -# [5.17.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.16.0...v5.17.0) (2022-03-28) +# [5.11.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.10.2...v5.11.0) (2022-02-07) **Note:** Version bump only for package @typescript-eslint/typescript-estree +## [5.10.2](https://github.com/typescript-eslint/typescript-eslint/compare/v5.10.1...v5.10.2) (2022-01-31) +**Note:** Version bump only for package @typescript-eslint/typescript-estree +## [5.10.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.10.0...v5.10.1) (2022-01-24) +**Note:** Version bump only for package @typescript-eslint/typescript-estree -# [5.16.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.15.0...v5.16.0) (2022-03-21) +# [5.10.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.9.1...v5.10.0) (2022-01-17) **Note:** Version bump only for package @typescript-eslint/typescript-estree +## [5.9.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.9.0...v5.9.1) (2022-01-10) +**Note:** Version bump only for package @typescript-eslint/typescript-estree +# [5.9.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.8.1...v5.9.0) (2022-01-03) +**Note:** Version bump only for package @typescript-eslint/typescript-estree -# [5.15.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.14.0...v5.15.0) (2022-03-14) +## [5.8.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.8.0...v5.8.1) (2021-12-27) **Note:** Version bump only for package @typescript-eslint/typescript-estree +# [5.8.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.7.0...v5.8.0) (2021-12-20) +**Note:** Version bump only for package @typescript-eslint/typescript-estree +# [5.7.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.6.0...v5.7.0) (2021-12-13) +### Bug Fixes -# [5.14.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.13.0...v5.14.0) (2022-03-07) +- **typescript-estree:** type-only regression for consumers not yet on TS 4.5 ([#4272](https://github.com/typescript-eslint/typescript-eslint/issues/4272)) ([550b61e](https://github.com/typescript-eslint/typescript-eslint/commit/550b61ee1096113b234bf035dd267ba385809961)) +# [5.6.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.5.0...v5.6.0) (2021-12-06) ### Features -* TypeScript 4.6 ([#4615](https://github.com/typescript-eslint/typescript-eslint/issues/4615)) ([a02c63a](https://github.com/typescript-eslint/typescript-eslint/commit/a02c63a264e5a6c3557468a8eff48d34ca2b718a)) - - - - +- **scope-manager:** update lib types ([#4240](https://github.com/typescript-eslint/typescript-eslint/issues/4240)) ([8377e6e](https://github.com/typescript-eslint/typescript-eslint/commit/8377e6ea422ee2d52455da8955ff055e09c238d3)) -# [5.13.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.12.1...v5.13.0) (2022-02-28) +# [5.5.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.4.0...v5.5.0) (2021-11-29) **Note:** Version bump only for package @typescript-eslint/typescript-estree +# [5.4.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.3.1...v5.4.0) (2021-11-15) +### Features +- **typescript-estree:** support Import Assertions ([#4074](https://github.com/typescript-eslint/typescript-eslint/issues/4074)) ([ae0fb5a](https://github.com/typescript-eslint/typescript-eslint/commit/ae0fb5a591958216b7df656e66b1dfe464898167)) +- **typescript-estree:** support private fields in-in syntax ([#4075](https://github.com/typescript-eslint/typescript-eslint/issues/4075)) ([939d8ea](https://github.com/typescript-eslint/typescript-eslint/commit/939d8eac547fb1734aa00f1ea01cc6eae0b4280a)) +- **typescript-estree:** support type-only module specifiers ([#4076](https://github.com/typescript-eslint/typescript-eslint/issues/4076)) ([77baa92](https://github.com/typescript-eslint/typescript-eslint/commit/77baa9203638e888a76e21003a278a8da386e133)) - -## [5.12.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.12.0...v5.12.1) (2022-02-21) +## [5.3.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.3.0...v5.3.1) (2021-11-08) **Note:** Version bump only for package @typescript-eslint/typescript-estree +# [5.3.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.2.0...v5.3.0) (2021-11-01) +**Note:** Version bump only for package @typescript-eslint/typescript-estree - - -# [5.12.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.11.0...v5.12.0) (2022-02-14) +# [5.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.1.0...v5.2.0) (2021-10-25) **Note:** Version bump only for package @typescript-eslint/typescript-estree +# [5.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.0.0...v5.1.0) (2021-10-18) +### Bug Fixes +- **typescript-estree:** support private optional property definition ([#3997](https://github.com/typescript-eslint/typescript-eslint/issues/3997)) ([8605e08](https://github.com/typescript-eslint/typescript-eslint/commit/8605e080a4dac4a277e6108cd9ed1e5a707302fa)) +# [5.0.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.33.0...v5.0.0) (2021-10-11) -# [5.11.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.10.2...v5.11.0) (2022-02-07) +### Bug Fixes -**Note:** Version bump only for package @typescript-eslint/typescript-estree +- **typescript-estree:** change `source` of ExportNamedDeclaration to Literal from Expression ([#3763](https://github.com/typescript-eslint/typescript-eslint/issues/3763)) ([dc5a0f5](https://github.com/typescript-eslint/typescript-eslint/commit/dc5a0f5104b400f4422b8d67ecfc6cc7a32613a2)) +### Features +- **ast-spec:** bring `Node` objects in line with ESTree ([#3771](https://github.com/typescript-eslint/typescript-eslint/issues/3771)) ([dd14064](https://github.com/typescript-eslint/typescript-eslint/commit/dd140643b457aa515cc21fcda2b3cd4acc2a1c5c)) +- **eslint-plugin:** update recommended configs ([#3809](https://github.com/typescript-eslint/typescript-eslint/issues/3809)) ([deeb7bb](https://github.com/typescript-eslint/typescript-eslint/commit/deeb7bb9334d301c6af56aefd37d318231af11ef)) +- align class property representation with ESTree ([#3806](https://github.com/typescript-eslint/typescript-eslint/issues/3806)) ([22fa5c0](https://github.com/typescript-eslint/typescript-eslint/commit/22fa5c0c4705ed2898f00b7cacc5dd642d859275)), closes [#3430](https://github.com/typescript-eslint/typescript-eslint/issues/3430) [#3077](https://github.com/typescript-eslint/typescript-eslint/issues/3077) +- remove `TSParenthesizedType` ([#3340](https://github.com/typescript-eslint/typescript-eslint/issues/3340)) ([c8ee432](https://github.com/typescript-eslint/typescript-eslint/commit/c8ee43269faea4c04ec02eaa2b81a0aa6eec5d3e)), closes [#3136](https://github.com/typescript-eslint/typescript-eslint/issues/3136) +- support `PrivateIdentifier` ([#3808](https://github.com/typescript-eslint/typescript-eslint/issues/3808)) ([0eefe5e](https://github.com/typescript-eslint/typescript-eslint/commit/0eefe5e49d21af3f1e3e2d9a90c2e49929863ac2)), closes [#3430](https://github.com/typescript-eslint/typescript-eslint/issues/3430) [#2933](https://github.com/typescript-eslint/typescript-eslint/issues/2933) +- **eslint-plugin:** removed value from abstract property nodes ([#3765](https://github.com/typescript-eslint/typescript-eslint/issues/3765)) ([5823524](https://github.com/typescript-eslint/typescript-eslint/commit/58235241714596b641a1e8b39c569e561e0039b4)), closes [#3748](https://github.com/typescript-eslint/typescript-eslint/issues/3748) +- **typescript-estree:** remove legacy `useJSXTextNode` option ([#3109](https://github.com/typescript-eslint/typescript-eslint/issues/3109)) ([5b84b98](https://github.com/typescript-eslint/typescript-eslint/commit/5b84b98fb3cf68d944b7d4e970f39f4e88f0b2d5)) +# [4.33.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.32.0...v4.33.0) (2021-10-04) +**Note:** Version bump only for package @typescript-eslint/typescript-estree -## [5.10.2](https://github.com/typescript-eslint/typescript-eslint/compare/v5.10.1...v5.10.2) (2022-01-31) +# [4.32.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.31.2...v4.32.0) (2021-09-27) **Note:** Version bump only for package @typescript-eslint/typescript-estree +## [4.31.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.31.1...v4.31.2) (2021-09-20) +**Note:** Version bump only for package @typescript-eslint/typescript-estree +## [4.31.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.31.0...v4.31.1) (2021-09-13) +**Note:** Version bump only for package @typescript-eslint/typescript-estree -## [5.10.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.10.0...v5.10.1) (2022-01-24) +# [4.31.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.30.0...v4.31.0) (2021-09-06) **Note:** Version bump only for package @typescript-eslint/typescript-estree +# [4.30.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.29.3...v4.30.0) (2021-08-30) +### Features +- **typescript-estree:** add support for class static blocks ([#3730](https://github.com/typescript-eslint/typescript-eslint/issues/3730)) ([f81831b](https://github.com/typescript-eslint/typescript-eslint/commit/f81831bd279a32da6dbab0f1c061053ea43965f6)) - -# [5.10.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.9.1...v5.10.0) (2022-01-17) +## [4.29.3](https://github.com/typescript-eslint/typescript-eslint/compare/v4.29.2...v4.29.3) (2021-08-23) **Note:** Version bump only for package @typescript-eslint/typescript-estree +## [4.29.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.29.1...v4.29.2) (2021-08-16) +**Note:** Version bump only for package @typescript-eslint/typescript-estree - - -## [5.9.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.9.0...v5.9.1) (2022-01-10) +## [4.29.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.29.0...v4.29.1) (2021-08-09) **Note:** Version bump only for package @typescript-eslint/typescript-estree +# [4.29.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.28.5...v4.29.0) (2021-08-02) + +### Bug Fixes +- **typescript-estree:** correct tty check ([#3635](https://github.com/typescript-eslint/typescript-eslint/issues/3635)) ([62bcc93](https://github.com/typescript-eslint/typescript-eslint/commit/62bcc937f08cd18296ffbe96a3551ec1fb87aecd)) +- **typescript-estree:** ensure --fix works with singleRun mode ([#3655](https://github.com/typescript-eslint/typescript-eslint/issues/3655)) ([99eca0d](https://github.com/typescript-eslint/typescript-eslint/commit/99eca0d428187d4c29ded9ddd1b57b40ab463c01)) +### Features +- **ast-spec:** make `BaseNode` & `BaseToken` more type-safe ([#3560](https://github.com/typescript-eslint/typescript-eslint/issues/3560)) ([a6c5604](https://github.com/typescript-eslint/typescript-eslint/commit/a6c5604b65b6330d047aa016fc46b8a597a6ae58)) +- **typescript-estree:** add support for custom module resolution ([#3516](https://github.com/typescript-eslint/typescript-eslint/issues/3516)) ([d48429d](https://github.com/typescript-eslint/typescript-eslint/commit/d48429d97326545bb727f88ce9056270b1599a31)) -# [5.9.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.8.1...v5.9.0) (2022-01-03) +## [4.28.5](https://github.com/typescript-eslint/typescript-eslint/compare/v4.28.4...v4.28.5) (2021-07-26) **Note:** Version bump only for package @typescript-eslint/typescript-estree +## [4.28.4](https://github.com/typescript-eslint/typescript-eslint/compare/v4.28.3...v4.28.4) (2021-07-19) +**Note:** Version bump only for package @typescript-eslint/typescript-estree +## [4.28.3](https://github.com/typescript-eslint/typescript-eslint/compare/v4.28.2...v4.28.3) (2021-07-12) +**Note:** Version bump only for package @typescript-eslint/typescript-estree -## [5.8.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.8.0...v5.8.1) (2021-12-27) +## [4.28.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.28.1...v4.28.2) (2021-07-05) **Note:** Version bump only for package @typescript-eslint/typescript-estree +## [4.28.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.28.0...v4.28.1) (2021-06-28) +**Note:** Version bump only for package @typescript-eslint/typescript-estree +# [4.28.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.27.0...v4.28.0) (2021-06-21) +**Note:** Version bump only for package @typescript-eslint/typescript-estree -# [5.8.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.7.0...v5.8.0) (2021-12-20) +# [4.27.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.26.1...v4.27.0) (2021-06-14) -**Note:** Version bump only for package @typescript-eslint/typescript-estree +### Bug Fixes +- **typescript-estree:** allow providing more one than one existing program in config ([#3508](https://github.com/typescript-eslint/typescript-eslint/issues/3508)) ([4f1806e](https://github.com/typescript-eslint/typescript-eslint/commit/4f1806e548affb7265da360d1fc8d033e25de325)) +- **typescript-estree:** support override modifier for parameter property ([#3485](https://github.com/typescript-eslint/typescript-eslint/issues/3485)) ([33b9f69](https://github.com/typescript-eslint/typescript-eslint/commit/33b9f69a681cd3219a2acca5b0b2fa67609f099e)) +### Features +- **ast-spec:** specify `PunctuatorToken`'s `value` type ([#3496](https://github.com/typescript-eslint/typescript-eslint/issues/3496)) ([fdb1d81](https://github.com/typescript-eslint/typescript-eslint/commit/fdb1d81f0fcf75a9216e6a90469f18c24c91f718)) +- **typescript-estree:** add opt-in inference for single runs and create programs for projects up front ([#3512](https://github.com/typescript-eslint/typescript-eslint/issues/3512)) ([06c2d9b](https://github.com/typescript-eslint/typescript-eslint/commit/06c2d9ba5442330f56637ecb14fae7e41696699c)) +- allow user to provide TS program instance in parser options ([#3484](https://github.com/typescript-eslint/typescript-eslint/issues/3484)) ([e855b18](https://github.com/typescript-eslint/typescript-eslint/commit/e855b18b8feee0edb5c617c11006861426a6f530)) +## [4.26.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.26.0...v4.26.1) (2021-06-07) -# [5.7.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.6.0...v5.7.0) (2021-12-13) +**Note:** Version bump only for package @typescript-eslint/typescript-estree +# [4.26.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.25.0...v4.26.0) (2021-05-31) ### Bug Fixes -* **typescript-estree:** type-only regression for consumers not yet on TS 4.5 ([#4272](https://github.com/typescript-eslint/typescript-eslint/issues/4272)) ([550b61e](https://github.com/typescript-eslint/typescript-eslint/commit/550b61ee1096113b234bf035dd267ba385809961)) +- generate library types for TypeScript v4.3 ([#3460](https://github.com/typescript-eslint/typescript-eslint/issues/3460)) ([ed4776a](https://github.com/typescript-eslint/typescript-eslint/commit/ed4776afa1374279027b9b7d82aa4b453b334998)), closes [#3449](https://github.com/typescript-eslint/typescript-eslint/issues/3449) +# [4.25.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.24.0...v4.25.0) (2021-05-24) +### Features +- **typescript-estree:** [TS4.3] support overrides on class members ([#3429](https://github.com/typescript-eslint/typescript-eslint/issues/3429)) ([21d1b62](https://github.com/typescript-eslint/typescript-eslint/commit/21d1b62a0b84b502d2cf12674b3d141994a3ffd4)) +- **typescript-estree:** add support for getter/setter signatures on types ([#3427](https://github.com/typescript-eslint/typescript-eslint/issues/3427)) ([b830b7f](https://github.com/typescript-eslint/typescript-eslint/commit/b830b7f4e8a99affc8af8b53cb83371ef81d7032)), closes [#3272](https://github.com/typescript-eslint/typescript-eslint/issues/3272) [#3272](https://github.com/typescript-eslint/typescript-eslint/issues/3272) +# [4.24.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.23.0...v4.24.0) (2021-05-17) -# [5.6.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.5.0...v5.6.0) (2021-12-06) +**Note:** Version bump only for package @typescript-eslint/typescript-estree +# [4.23.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.22.1...v4.23.0) (2021-05-10) ### Features -* **scope-manager:** update lib types ([#4240](https://github.com/typescript-eslint/typescript-eslint/issues/4240)) ([8377e6e](https://github.com/typescript-eslint/typescript-eslint/commit/8377e6ea422ee2d52455da8955ff055e09c238d3)) +- refactor to split AST specification out as its own module ([#2911](https://github.com/typescript-eslint/typescript-eslint/issues/2911)) ([25ea953](https://github.com/typescript-eslint/typescript-eslint/commit/25ea953cc60b118bd385c71e0a9b61c286c26fcf)) - - - - -# [5.5.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.4.0...v5.5.0) (2021-11-29) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [5.4.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.3.1...v5.4.0) (2021-11-15) - - -### Features - -* **typescript-estree:** support Import Assertions ([#4074](https://github.com/typescript-eslint/typescript-eslint/issues/4074)) ([ae0fb5a](https://github.com/typescript-eslint/typescript-eslint/commit/ae0fb5a591958216b7df656e66b1dfe464898167)) -* **typescript-estree:** support private fields in-in syntax ([#4075](https://github.com/typescript-eslint/typescript-eslint/issues/4075)) ([939d8ea](https://github.com/typescript-eslint/typescript-eslint/commit/939d8eac547fb1734aa00f1ea01cc6eae0b4280a)) -* **typescript-estree:** support type-only module specifiers ([#4076](https://github.com/typescript-eslint/typescript-eslint/issues/4076)) ([77baa92](https://github.com/typescript-eslint/typescript-eslint/commit/77baa9203638e888a76e21003a278a8da386e133)) - - - - - -## [5.3.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.3.0...v5.3.1) (2021-11-08) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [5.3.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.2.0...v5.3.0) (2021-11-01) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [5.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.1.0...v5.2.0) (2021-10-25) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [5.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.0.0...v5.1.0) (2021-10-18) - - -### Bug Fixes - -* **typescript-estree:** support private optional property definition ([#3997](https://github.com/typescript-eslint/typescript-eslint/issues/3997)) ([8605e08](https://github.com/typescript-eslint/typescript-eslint/commit/8605e080a4dac4a277e6108cd9ed1e5a707302fa)) - - - - - -# [5.0.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.33.0...v5.0.0) (2021-10-11) - - -### Bug Fixes - -* **typescript-estree:** change `source` of ExportNamedDeclaration to Literal from Expression ([#3763](https://github.com/typescript-eslint/typescript-eslint/issues/3763)) ([dc5a0f5](https://github.com/typescript-eslint/typescript-eslint/commit/dc5a0f5104b400f4422b8d67ecfc6cc7a32613a2)) - - -### Features - -* **ast-spec:** bring `Node` objects in line with ESTree ([#3771](https://github.com/typescript-eslint/typescript-eslint/issues/3771)) ([dd14064](https://github.com/typescript-eslint/typescript-eslint/commit/dd140643b457aa515cc21fcda2b3cd4acc2a1c5c)) -* **eslint-plugin:** update recommended configs ([#3809](https://github.com/typescript-eslint/typescript-eslint/issues/3809)) ([deeb7bb](https://github.com/typescript-eslint/typescript-eslint/commit/deeb7bb9334d301c6af56aefd37d318231af11ef)) -* align class property representation with ESTree ([#3806](https://github.com/typescript-eslint/typescript-eslint/issues/3806)) ([22fa5c0](https://github.com/typescript-eslint/typescript-eslint/commit/22fa5c0c4705ed2898f00b7cacc5dd642d859275)), closes [#3430](https://github.com/typescript-eslint/typescript-eslint/issues/3430) [#3077](https://github.com/typescript-eslint/typescript-eslint/issues/3077) -* remove `TSParenthesizedType` ([#3340](https://github.com/typescript-eslint/typescript-eslint/issues/3340)) ([c8ee432](https://github.com/typescript-eslint/typescript-eslint/commit/c8ee43269faea4c04ec02eaa2b81a0aa6eec5d3e)), closes [#3136](https://github.com/typescript-eslint/typescript-eslint/issues/3136) -* support `PrivateIdentifier` ([#3808](https://github.com/typescript-eslint/typescript-eslint/issues/3808)) ([0eefe5e](https://github.com/typescript-eslint/typescript-eslint/commit/0eefe5e49d21af3f1e3e2d9a90c2e49929863ac2)), closes [#3430](https://github.com/typescript-eslint/typescript-eslint/issues/3430) [#2933](https://github.com/typescript-eslint/typescript-eslint/issues/2933) -* **eslint-plugin:** removed value from abstract property nodes ([#3765](https://github.com/typescript-eslint/typescript-eslint/issues/3765)) ([5823524](https://github.com/typescript-eslint/typescript-eslint/commit/58235241714596b641a1e8b39c569e561e0039b4)), closes [#3748](https://github.com/typescript-eslint/typescript-eslint/issues/3748) -* **typescript-estree:** remove legacy `useJSXTextNode` option ([#3109](https://github.com/typescript-eslint/typescript-eslint/issues/3109)) ([5b84b98](https://github.com/typescript-eslint/typescript-eslint/commit/5b84b98fb3cf68d944b7d4e970f39f4e88f0b2d5)) - - - - - -# [4.33.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.32.0...v4.33.0) (2021-10-04) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.32.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.31.2...v4.32.0) (2021-09-27) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -## [4.31.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.31.1...v4.31.2) (2021-09-20) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -## [4.31.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.31.0...v4.31.1) (2021-09-13) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.31.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.30.0...v4.31.0) (2021-09-06) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.30.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.29.3...v4.30.0) (2021-08-30) - - -### Features - -* **typescript-estree:** add support for class static blocks ([#3730](https://github.com/typescript-eslint/typescript-eslint/issues/3730)) ([f81831b](https://github.com/typescript-eslint/typescript-eslint/commit/f81831bd279a32da6dbab0f1c061053ea43965f6)) - - - - - -## [4.29.3](https://github.com/typescript-eslint/typescript-eslint/compare/v4.29.2...v4.29.3) (2021-08-23) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -## [4.29.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.29.1...v4.29.2) (2021-08-16) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -## [4.29.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.29.0...v4.29.1) (2021-08-09) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.29.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.28.5...v4.29.0) (2021-08-02) - - -### Bug Fixes - -* **typescript-estree:** correct tty check ([#3635](https://github.com/typescript-eslint/typescript-eslint/issues/3635)) ([62bcc93](https://github.com/typescript-eslint/typescript-eslint/commit/62bcc937f08cd18296ffbe96a3551ec1fb87aecd)) -* **typescript-estree:** ensure --fix works with singleRun mode ([#3655](https://github.com/typescript-eslint/typescript-eslint/issues/3655)) ([99eca0d](https://github.com/typescript-eslint/typescript-eslint/commit/99eca0d428187d4c29ded9ddd1b57b40ab463c01)) - - -### Features - -* **ast-spec:** make `BaseNode` & `BaseToken` more type-safe ([#3560](https://github.com/typescript-eslint/typescript-eslint/issues/3560)) ([a6c5604](https://github.com/typescript-eslint/typescript-eslint/commit/a6c5604b65b6330d047aa016fc46b8a597a6ae58)) -* **typescript-estree:** add support for custom module resolution ([#3516](https://github.com/typescript-eslint/typescript-eslint/issues/3516)) ([d48429d](https://github.com/typescript-eslint/typescript-eslint/commit/d48429d97326545bb727f88ce9056270b1599a31)) - - - - - -## [4.28.5](https://github.com/typescript-eslint/typescript-eslint/compare/v4.28.4...v4.28.5) (2021-07-26) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -## [4.28.4](https://github.com/typescript-eslint/typescript-eslint/compare/v4.28.3...v4.28.4) (2021-07-19) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -## [4.28.3](https://github.com/typescript-eslint/typescript-eslint/compare/v4.28.2...v4.28.3) (2021-07-12) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -## [4.28.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.28.1...v4.28.2) (2021-07-05) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -## [4.28.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.28.0...v4.28.1) (2021-06-28) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.28.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.27.0...v4.28.0) (2021-06-21) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.27.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.26.1...v4.27.0) (2021-06-14) - - -### Bug Fixes - -* **typescript-estree:** allow providing more one than one existing program in config ([#3508](https://github.com/typescript-eslint/typescript-eslint/issues/3508)) ([4f1806e](https://github.com/typescript-eslint/typescript-eslint/commit/4f1806e548affb7265da360d1fc8d033e25de325)) -* **typescript-estree:** support override modifier for parameter property ([#3485](https://github.com/typescript-eslint/typescript-eslint/issues/3485)) ([33b9f69](https://github.com/typescript-eslint/typescript-eslint/commit/33b9f69a681cd3219a2acca5b0b2fa67609f099e)) - - -### Features - -* **ast-spec:** specify `PunctuatorToken`'s `value` type ([#3496](https://github.com/typescript-eslint/typescript-eslint/issues/3496)) ([fdb1d81](https://github.com/typescript-eslint/typescript-eslint/commit/fdb1d81f0fcf75a9216e6a90469f18c24c91f718)) -* **typescript-estree:** add opt-in inference for single runs and create programs for projects up front ([#3512](https://github.com/typescript-eslint/typescript-eslint/issues/3512)) ([06c2d9b](https://github.com/typescript-eslint/typescript-eslint/commit/06c2d9ba5442330f56637ecb14fae7e41696699c)) -* allow user to provide TS program instance in parser options ([#3484](https://github.com/typescript-eslint/typescript-eslint/issues/3484)) ([e855b18](https://github.com/typescript-eslint/typescript-eslint/commit/e855b18b8feee0edb5c617c11006861426a6f530)) - - - - - -## [4.26.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.26.0...v4.26.1) (2021-06-07) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.26.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.25.0...v4.26.0) (2021-05-31) - - -### Bug Fixes - -* generate library types for TypeScript v4.3 ([#3460](https://github.com/typescript-eslint/typescript-eslint/issues/3460)) ([ed4776a](https://github.com/typescript-eslint/typescript-eslint/commit/ed4776afa1374279027b9b7d82aa4b453b334998)), closes [#3449](https://github.com/typescript-eslint/typescript-eslint/issues/3449) - - - - - -# [4.25.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.24.0...v4.25.0) (2021-05-24) - - -### Features - -* **typescript-estree:** [TS4.3] support overrides on class members ([#3429](https://github.com/typescript-eslint/typescript-eslint/issues/3429)) ([21d1b62](https://github.com/typescript-eslint/typescript-eslint/commit/21d1b62a0b84b502d2cf12674b3d141994a3ffd4)) -* **typescript-estree:** add support for getter/setter signatures on types ([#3427](https://github.com/typescript-eslint/typescript-eslint/issues/3427)) ([b830b7f](https://github.com/typescript-eslint/typescript-eslint/commit/b830b7f4e8a99affc8af8b53cb83371ef81d7032)), closes [#3272](https://github.com/typescript-eslint/typescript-eslint/issues/3272) [#3272](https://github.com/typescript-eslint/typescript-eslint/issues/3272) - - - - - -# [4.24.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.23.0...v4.24.0) (2021-05-17) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.23.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.22.1...v4.23.0) (2021-05-10) - - -### Features - -* refactor to split AST specification out as its own module ([#2911](https://github.com/typescript-eslint/typescript-eslint/issues/2911)) ([25ea953](https://github.com/typescript-eslint/typescript-eslint/commit/25ea953cc60b118bd385c71e0a9b61c286c26fcf)) - - - - - -## [4.22.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.22.0...v4.22.1) (2021-05-04) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.22.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.21.0...v4.22.0) (2021-04-12) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.21.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.20.0...v4.21.0) (2021-04-05) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.20.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.19.0...v4.20.0) (2021-03-29) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.19.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.18.0...v4.19.0) (2021-03-22) - - -### Bug Fixes - -* **typescript-estree:** [ts 4.2] add support for import type equal declaration ([#3189](https://github.com/typescript-eslint/typescript-eslint/issues/3189)) ([6a25faf](https://github.com/typescript-eslint/typescript-eslint/commit/6a25faf5cfa4d21a7546d9866819f4e017308fb2)) - - - - - -# [4.18.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.17.0...v4.18.0) (2021-03-15) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [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) - - -### Bug Fixes - -* **typescript-estree:** update TS version range ([#3127](https://github.com/typescript-eslint/typescript-eslint/issues/3127)) ([0473674](https://github.com/typescript-eslint/typescript-eslint/commit/0473674c58df5039a2de3c63ad7494fc6be7487e)) - - - - - -# [4.16.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.2...v4.16.0) (2021-03-01) - - -### Features - -* TypeScript 4.2 syntax support ([#3112](https://github.com/typescript-eslint/typescript-eslint/issues/3112)) ([2ebfb21](https://github.com/typescript-eslint/typescript-eslint/commit/2ebfb21ba6c88c793cfbd0e231e5803b2381694c)) -* **typescript-estree:** throw custom error instead of plain object ([#3011](https://github.com/typescript-eslint/typescript-eslint/issues/3011)) ([ae14bf5](https://github.com/typescript-eslint/typescript-eslint/commit/ae14bf55fe31b0eb982ba17333e4aac550d10342)) - - - - - -## [4.15.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.1...v4.15.2) (2021-02-22) - - -### Bug Fixes - -* **typescript-estree:** correct issues in AST definition ([#3083](https://github.com/typescript-eslint/typescript-eslint/issues/3083)) ([509a117](https://github.com/typescript-eslint/typescript-eslint/commit/509a11749f85400a01e9fecfecd12871ce562d3d)) -* add missing intrinsic keyword node to AST ([#3081](https://github.com/typescript-eslint/typescript-eslint/issues/3081)) ([409bf0b](https://github.com/typescript-eslint/typescript-eslint/commit/409bf0bb3e2ac4d8782408d436ebdefb42dba38b)) -* correct test names on windows for semantic-diagnostics-enabled ([#3060](https://github.com/typescript-eslint/typescript-eslint/issues/3060)) ([885780d](https://github.com/typescript-eslint/typescript-eslint/commit/885780d4a2b07e418256b7323d76b18453c14a50)) - - - - - -## [4.15.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.15.0...v4.15.1) (2021-02-15) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.15.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.14.2...v4.15.0) (2021-02-08) - - -### Features - -* **typescript-estree:** improve logic used to escape string literals in jsx ([#2995](https://github.com/typescript-eslint/typescript-eslint/issues/2995)) ([3cb3aad](https://github.com/typescript-eslint/typescript-eslint/commit/3cb3aade2864bab15ed1ff8d7cd32766aa57152f)) - - - - - -## [4.14.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.14.1...v4.14.2) (2021-02-01) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -## [4.14.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.14.0...v4.14.1) (2021-01-25) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.14.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.13.0...v4.14.0) (2021-01-18) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.13.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.12.0...v4.13.0) (2021-01-11) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.12.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.11.1...v4.12.0) (2021-01-04) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -## [4.11.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.11.0...v4.11.1) (2020-12-28) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.11.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.10.0...v4.11.0) (2020-12-21) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.10.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.9.1...v4.10.0) (2020-12-14) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -## [4.9.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.9.0...v4.9.1) (2020-12-07) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.9.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.8.2...v4.9.0) (2020-11-30) - - -### Bug Fixes - -* **typescript-estree:** add default value for `parserOptions.projectFolderIgnoreList` and deduplicate resolved projects ([#2819](https://github.com/typescript-eslint/typescript-eslint/issues/2819)) ([bf904ec](https://github.com/typescript-eslint/typescript-eslint/commit/bf904ec72db57174fec531f61e9427230662553e)), closes [#2418](https://github.com/typescript-eslint/typescript-eslint/issues/2418) [#2814](https://github.com/typescript-eslint/typescript-eslint/issues/2814) - - - - - -## [4.8.2](https://github.com/typescript-eslint/typescript-eslint/compare/v4.8.1...v4.8.2) (2020-11-23) - - -### Bug Fixes - -* **typescript-estree:** fix type-only regression for consumers not yet on TS 4.1 ([#2789](https://github.com/typescript-eslint/typescript-eslint/issues/2789)) ([50a46c6](https://github.com/typescript-eslint/typescript-eslint/commit/50a46c60fb81d8434aa4268a13d17d8fcf499e21)) - - - - - -## [4.8.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.8.0...v4.8.1) (2020-11-17) - - -### Bug Fixes - -* **typescript-estree:** parseWithNodeMaps returning empty maps ([#2773](https://github.com/typescript-eslint/typescript-eslint/issues/2773)) ([3e4a0ed](https://github.com/typescript-eslint/typescript-eslint/commit/3e4a0ed0d615fd22a2f28c7c8af6179673e195f8)) - - - - - -# [4.8.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.7.0...v4.8.0) (2020-11-16) - - -### Features - -* **typescript-estree:** add `parseWithNodeMaps` API ([#2760](https://github.com/typescript-eslint/typescript-eslint/issues/2760)) ([9441d50](https://github.com/typescript-eslint/typescript-eslint/commit/9441d5030211f1c32f5ae8e61d5565cab8bb6823)), closes [#1852](https://github.com/typescript-eslint/typescript-eslint/issues/1852) - - - - - -# [4.7.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.6.1...v4.7.0) (2020-11-09) - - -### Features - -* support TS4.1 features ([#2748](https://github.com/typescript-eslint/typescript-eslint/issues/2748)) ([2be354b](https://github.com/typescript-eslint/typescript-eslint/commit/2be354bb15f9013a2da1b13a0c0836e9ef057e16)), closes [#2583](https://github.com/typescript-eslint/typescript-eslint/issues/2583) - - - - - -## [4.6.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.6.0...v4.6.1) (2020-11-02) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.6.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.5.0...v4.6.0) (2020-10-26) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.5.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.4.1...v4.5.0) (2020-10-19) - - -### Features - -* **typescript-estree:** add flag EXPERIMENTAL_useSourceOfProjectReferenceRedirect ([#2669](https://github.com/typescript-eslint/typescript-eslint/issues/2669)) ([90a5878](https://github.com/typescript-eslint/typescript-eslint/commit/90a587845088da1b205e4d7d77dbc3f9447b1c5a)) - - - - - -## [4.4.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.4.0...v4.4.1) (2020-10-12) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.4.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.3.0...v4.4.0) (2020-10-05) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.3.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.2.0...v4.3.0) (2020-09-28) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.1.1...v4.2.0) (2020-09-21) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -## [4.1.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.1.0...v4.1.1) (2020-09-14) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v4.0.1...v4.1.0) (2020-09-07) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -## [4.0.1](https://github.com/typescript-eslint/typescript-eslint/compare/v4.0.0...v4.0.1) (2020-08-31) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [4.0.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.10.1...v4.0.0) (2020-08-31) - - -### Bug Fixes - -* correct decorator traversal for AssignmentPattern ([#2375](https://github.com/typescript-eslint/typescript-eslint/issues/2375)) ([d738fa4](https://github.com/typescript-eslint/typescript-eslint/commit/d738fa4eff0a5c4cfc9b30b1c0502f8d1e78d7b6)) -* **typescript-estree:** correct ChainExpression interaction with parentheses and non-nulls ([#2380](https://github.com/typescript-eslint/typescript-eslint/issues/2380)) ([762bc99](https://github.com/typescript-eslint/typescript-eslint/commit/762bc99584ede4d0b8099a743991e957aec86aa8)) - - -### Features - -* support ESTree optional chaining representation ([#2308](https://github.com/typescript-eslint/typescript-eslint/issues/2308)) ([e9d2ab6](https://github.com/typescript-eslint/typescript-eslint/commit/e9d2ab638b6767700b52797e74b814ea059beaae)) -* **typescript-estree:** switch to globby ([#2418](https://github.com/typescript-eslint/typescript-eslint/issues/2418)) ([3a7ec9b](https://github.com/typescript-eslint/typescript-eslint/commit/3a7ec9bcf1873a99c6da2f19ade8ab4763b4793c)), closes [#2398](https://github.com/typescript-eslint/typescript-eslint/issues/2398) - - -### BREAKING CHANGES - -* **typescript-estree:** - removes the ability to supply a `RegExp` to `projectFolderIgnoreList`, and changes the meaning of the string value from a regex to a glob. -* - Removed decorators property from several Nodes that could never semantically have them (FunctionDeclaration, TSEnumDeclaration, and TSInterfaceDeclaration) -- Removed AST_NODE_TYPES.Import. This is a minor breaking change as the node type that used this was removed ages ago. - - - - - -## [3.10.1](https://github.com/typescript-eslint/typescript-eslint/compare/v3.10.0...v3.10.1) (2020-08-25) - -**Note:** Version bump only for package @typescript-eslint/typescript-estree - - - - - -# [3.10.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.9.1...v3.10.0) (2020-08-24) - - -### Bug Fixes - -* **typescript-estree:** ts.NamedTupleMember workaround for Date: Wed, 19 Oct 2022 12:10:10 +0900 Subject: [PATCH 057/193] feat(eslint-plugin): add no-unsafe-declaration-merging (#5840) * feat(eslint-plugin): add no-unsafe-declaration-merging * Apply reviews * fix * Apply suggestions from code review Co-authored-by: Josh Goldberg --- .../rules/no-unsafe-declaration-merging.md | 54 ++++++++ packages/eslint-plugin/src/configs/all.ts | 1 + packages/eslint-plugin/src/configs/strict.ts | 1 + packages/eslint-plugin/src/rules/index.ts | 2 + .../rules/no-unsafe-declaration-merging.ts | 52 ++++++++ .../no-unsafe-declaration-merging.test.ts | 124 ++++++++++++++++++ 6 files changed, 234 insertions(+) create mode 100644 packages/eslint-plugin/docs/rules/no-unsafe-declaration-merging.md create mode 100644 packages/eslint-plugin/src/rules/no-unsafe-declaration-merging.ts create mode 100644 packages/eslint-plugin/tests/rules/no-unsafe-declaration-merging.test.ts diff --git a/packages/eslint-plugin/docs/rules/no-unsafe-declaration-merging.md b/packages/eslint-plugin/docs/rules/no-unsafe-declaration-merging.md new file mode 100644 index 00000000000..9c917aa3ee0 --- /dev/null +++ b/packages/eslint-plugin/docs/rules/no-unsafe-declaration-merging.md @@ -0,0 +1,54 @@ +--- +description: 'Disallow unsafe declaration merging.' +--- + +> 🛑 This file is source code, not the primary documentation location! 🛑 +> +> See **https://typescript-eslint.io/rules/no-unsafe-declaration-merging** for documentation. + +TypeScript's "declaration merging" supports merging separate declarations with the same name. + +Declaration merging between classes and interfaces is unsafe. +The TypeScript compiler doesn't check whether properties are initialized, which can cause lead to TypeScript not detecting code that will cause runtime errors. + +```ts +interface Foo { + nums: number[]; +} + +class Foo {} + +const foo = new Foo(); + +foo.nums.push(1); // Runtime Error: Cannot read properties of undefined. +``` + +## Examples + + + +### ❌ Incorrect + +```ts +interface Foo {} + +class Foo {} +``` + +### ✅ Correct + +```ts +interface Foo {} +class Bar implements Foo {} + +namespace Baz {} +namespace Baz {} +enum Baz {} + +namespace Qux {} +function Qux() {} +``` + +## Further Reading + +- [Declaration Merging](https://www.typescriptlang.org/docs/handbook/declaration-merging.html) diff --git a/packages/eslint-plugin/src/configs/all.ts b/packages/eslint-plugin/src/configs/all.ts index 8742d36b208..1f6530ead3e 100644 --- a/packages/eslint-plugin/src/configs/all.ts +++ b/packages/eslint-plugin/src/configs/all.ts @@ -108,6 +108,7 @@ export = { '@typescript-eslint/no-unsafe-argument': 'error', '@typescript-eslint/no-unsafe-assignment': 'error', '@typescript-eslint/no-unsafe-call': 'error', + '@typescript-eslint/no-unsafe-declaration-merging': 'error', '@typescript-eslint/no-unsafe-member-access': 'error', '@typescript-eslint/no-unsafe-return': 'error', 'no-unused-expressions': 'off', diff --git a/packages/eslint-plugin/src/configs/strict.ts b/packages/eslint-plugin/src/configs/strict.ts index a9c91f7c1ca..ccd44b85a0a 100644 --- a/packages/eslint-plugin/src/configs/strict.ts +++ b/packages/eslint-plugin/src/configs/strict.ts @@ -27,6 +27,7 @@ export = { '@typescript-eslint/no-unnecessary-boolean-literal-compare': 'warn', '@typescript-eslint/no-unnecessary-condition': 'warn', '@typescript-eslint/no-unnecessary-type-arguments': 'warn', + '@typescript-eslint/no-unsafe-declaration-merging': 'warn', 'no-useless-constructor': 'off', '@typescript-eslint/no-useless-constructor': 'warn', '@typescript-eslint/non-nullable-type-assertion-style': 'warn', diff --git a/packages/eslint-plugin/src/rules/index.ts b/packages/eslint-plugin/src/rules/index.ts index 29a47ec2384..851661400fb 100644 --- a/packages/eslint-plugin/src/rules/index.ts +++ b/packages/eslint-plugin/src/rules/index.ts @@ -78,6 +78,7 @@ import noUnnecessaryTypeConstraint from './no-unnecessary-type-constraint'; import noUnsafeArgument from './no-unsafe-argument'; import noUnsafeAssignment from './no-unsafe-assignment'; import noUnsafeCall from './no-unsafe-call'; +import noUnsafeDeclarationMerging from './no-unsafe-declaration-merging'; import noUnsafeMemberAccess from './no-unsafe-member-access'; import noUnsafeReturn from './no-unsafe-return'; import noUnusedExpressions from './no-unused-expressions'; @@ -207,6 +208,7 @@ export default { 'no-unsafe-argument': noUnsafeArgument, 'no-unsafe-assignment': noUnsafeAssignment, 'no-unsafe-call': noUnsafeCall, + 'no-unsafe-declaration-merging': noUnsafeDeclarationMerging, 'no-unsafe-member-access': noUnsafeMemberAccess, 'no-unsafe-return': noUnsafeReturn, 'no-unused-expressions': noUnusedExpressions, diff --git a/packages/eslint-plugin/src/rules/no-unsafe-declaration-merging.ts b/packages/eslint-plugin/src/rules/no-unsafe-declaration-merging.ts new file mode 100644 index 00000000000..7982fe5c5f4 --- /dev/null +++ b/packages/eslint-plugin/src/rules/no-unsafe-declaration-merging.ts @@ -0,0 +1,52 @@ +import type { TSESTree } from '@typescript-eslint/utils'; +import * as ts from 'typescript'; + +import * as util from '../util'; + +export default util.createRule({ + name: 'no-unsafe-declaration-merging', + meta: { + type: 'problem', + docs: { + description: 'Disallow unsafe declaration merging', + recommended: 'strict', + requiresTypeChecking: true, + }, + messages: { + unsafeMerging: + 'Unsafe declaration merging between classes and interfaces.', + }, + schema: [], + }, + defaultOptions: [], + create(context) { + const parserServices = util.getParserServices(context); + const checker = parserServices.program.getTypeChecker(); + + function checkUnsafeDeclaration( + node: TSESTree.Identifier, + unsafeKind: ts.SyntaxKind, + ): void { + const tsNode = parserServices.esTreeNodeToTSNodeMap.get(node); + const type = checker.getTypeAtLocation(tsNode); + const symbol = type.getSymbol(); + if (symbol?.declarations?.some(decl => decl.kind === unsafeKind)) { + context.report({ + node, + messageId: 'unsafeMerging', + }); + } + } + + return { + ClassDeclaration(node): void { + if (node.id) { + checkUnsafeDeclaration(node.id, ts.SyntaxKind.InterfaceDeclaration); + } + }, + TSInterfaceDeclaration(node): void { + checkUnsafeDeclaration(node.id, ts.SyntaxKind.ClassDeclaration); + }, + }; + }, +}); diff --git a/packages/eslint-plugin/tests/rules/no-unsafe-declaration-merging.test.ts b/packages/eslint-plugin/tests/rules/no-unsafe-declaration-merging.test.ts new file mode 100644 index 00000000000..e92c1ed36e7 --- /dev/null +++ b/packages/eslint-plugin/tests/rules/no-unsafe-declaration-merging.test.ts @@ -0,0 +1,124 @@ +import rule from '../../src/rules/no-unsafe-declaration-merging'; +import { getFixturesRootDir, RuleTester } from '../RuleTester'; + +const rootPath = getFixturesRootDir(); + +const ruleTester = new RuleTester({ + parser: '@typescript-eslint/parser', + parserOptions: { + sourceType: 'module', + tsconfigRootDir: rootPath, + project: './tsconfig.json', + }, +}); + +ruleTester.run('no-unsafe-declaration-merging', rule, { + valid: [ + ` +interface Foo {} +class Bar implements Foo {} + `, + ` +namespace Foo {} +namespace Foo {} + `, + ` +enum Foo {} +namespace Foo {} + `, + ` +namespace Fooo {} +function Foo() {} + `, + ` +const Foo = class {}; + `, + ` +interface Foo { + props: string; +} + +function bar() { + return class Foo {}; +} + `, + ` +interface Foo { + props: string; +} + +(function bar() { + class Foo {} +})(); + `, + ` +declare global { + interface Foo {} +} + +class Foo {} + `, + ], + invalid: [ + { + code: ` +interface Foo {} +class Foo {} + `, + errors: [ + { + messageId: 'unsafeMerging', + line: 2, + column: 11, + }, + { + messageId: 'unsafeMerging', + line: 3, + column: 7, + }, + ], + }, + { + code: ` +namespace Foo { + export interface Bar {} +} +namespace Foo { + export class Bar {} +} + `, + errors: [ + { + messageId: 'unsafeMerging', + line: 3, + column: 20, + }, + { + messageId: 'unsafeMerging', + line: 6, + column: 16, + }, + ], + }, + { + code: ` +declare global { + interface Foo {} + class Foo {} +} + `, + errors: [ + { + messageId: 'unsafeMerging', + line: 3, + column: 13, + }, + { + messageId: 'unsafeMerging', + line: 4, + column: 9, + }, + ], + }, + ], +}); From 733b3598c17d3a712cf6f043115587f724dbe3ef Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Wed, 19 Oct 2022 05:12:03 -0700 Subject: [PATCH 058/193] chore: don't renovate `nx` or `@nrwl/workspace` for now (#5850) --- .github/renovate.json5 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index e634d4aae8c..f5d016eb6db 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -11,6 +11,8 @@ '@nrwl/jest', '@nrwl/nx-cloud', '@nrwl/tao', + '@nrwl/workspace', + 'nx', ], ignorePaths: [ // integration test package.json's should never be updated as they're purposely fixed tests From d14591ce36f62bb3f8ee4cc99849764fc8a38097 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 23 Oct 2022 03:05:07 +0400 Subject: [PATCH 059/193] chore(deps): update dependency lerna to v6 (#5831) --- package.json | 2 +- yarn.lock | 910 +++++++++++++++++++++++++-------------------------- 2 files changed, 453 insertions(+), 459 deletions(-) diff --git a/package.json b/package.json index dd56b2a66e9..77e222ad7a8 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "jest-diff": "^29.0.3", "jest-snapshot": "^29.0.3", "jest-specific-snapshot": "^5.0.0", - "lerna": "5.6.2", + "lerna": "6.0.1", "lint-staged": "^13.0.0", "make-dir": "^3.1.0", "markdownlint-cli": "^0.32.0", diff --git a/yarn.lock b/yarn.lock index 1d3f4d2ea73..2c88e05570a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2288,39 +2288,39 @@ resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== -"@lerna/add@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/add/-/add-5.6.2.tgz#d0e25fd4900b6f8a9548f940cc016ce8a3e2d2ba" - integrity sha512-NHrm7kYiqP+EviguY7/NltJ3G9vGmJW6v2BASUOhP9FZDhYbq3O+rCDlFdoVRNtcyrSg90rZFMOWHph4KOoCQQ== - dependencies: - "@lerna/bootstrap" "5.6.2" - "@lerna/command" "5.6.2" - "@lerna/filter-options" "5.6.2" - "@lerna/npm-conf" "5.6.2" - "@lerna/validation-error" "5.6.2" +"@lerna/add@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/add/-/add-6.0.1.tgz#6d71084fe7918c96c909bebdc5c27ed6006e09d6" + integrity sha512-cCQIlMODhi3KYyTDOp2WWL4Kj2dKK+MmCiaSf+USrbSWPVVXQGn5Eb11XOMUfYYq3Ula75sWL2urtYwuu8IbmA== + dependencies: + "@lerna/bootstrap" "6.0.1" + "@lerna/command" "6.0.1" + "@lerna/filter-options" "6.0.1" + "@lerna/npm-conf" "6.0.1" + "@lerna/validation-error" "6.0.1" dedent "^0.7.0" npm-package-arg "8.1.1" p-map "^4.0.0" pacote "^13.6.1" semver "^7.3.4" -"@lerna/bootstrap@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-5.6.2.tgz#a0f015ae7c30189a3064c0d5940134010ece635e" - integrity sha512-S2fMOEXbef7nrybQhzBywIGSLhuiQ5huPp1sU+v9Y6XEBsy/2IA+lb0gsZosvPqlRfMtiaFstL+QunaBhlWECA== - dependencies: - "@lerna/command" "5.6.2" - "@lerna/filter-options" "5.6.2" - "@lerna/has-npm-version" "5.6.2" - "@lerna/npm-install" "5.6.2" - "@lerna/package-graph" "5.6.2" - "@lerna/pulse-till-done" "5.6.2" - "@lerna/rimraf-dir" "5.6.2" - "@lerna/run-lifecycle" "5.6.2" - "@lerna/run-topologically" "5.6.2" - "@lerna/symlink-binary" "5.6.2" - "@lerna/symlink-dependencies" "5.6.2" - "@lerna/validation-error" "5.6.2" +"@lerna/bootstrap@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-6.0.1.tgz#2af0b790b9ce426b78f12543159c8506d77afc28" + integrity sha512-a3DWchHFOiRmDN24VTdmTxKvAqw6Msp8pDCWXq4rgOQSFxqyYECd8BYvmy8dTW6LcC4EG0HqTGRguuEaKCasOw== + dependencies: + "@lerna/command" "6.0.1" + "@lerna/filter-options" "6.0.1" + "@lerna/has-npm-version" "6.0.1" + "@lerna/npm-install" "6.0.1" + "@lerna/package-graph" "6.0.1" + "@lerna/pulse-till-done" "6.0.1" + "@lerna/rimraf-dir" "6.0.1" + "@lerna/run-lifecycle" "6.0.1" + "@lerna/run-topologically" "6.0.1" + "@lerna/symlink-binary" "6.0.1" + "@lerna/symlink-dependencies" "6.0.1" + "@lerna/validation-error" "6.0.1" "@npmcli/arborist" "5.3.0" dedent "^0.7.0" get-port "^5.1.1" @@ -2332,100 +2332,100 @@ p-waterfall "^2.1.1" semver "^7.3.4" -"@lerna/changed@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-5.6.2.tgz#96a647ed202d8146b2077bf13a682466e8607f9a" - integrity sha512-uUgrkdj1eYJHQGsXXlpH5oEAfu3x0qzeTjgvpdNrxHEdQWi7zWiW59hRadmiImc14uJJYIwVK5q/QLugrsdGFQ== +"@lerna/changed@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-6.0.1.tgz#58614a0c65bfab77fefd142d5edc8282e057ea83" + integrity sha512-b0KzqpNv25ZxH9M/7jtDQaXWUBhVzBVJ8DQ4PjjeoulOCQ+mA9tNQr8UVmeU1UZiaNtNz6Hcy55vyvVvNe07VA== dependencies: - "@lerna/collect-updates" "5.6.2" - "@lerna/command" "5.6.2" - "@lerna/listable" "5.6.2" - "@lerna/output" "5.6.2" + "@lerna/collect-updates" "6.0.1" + "@lerna/command" "6.0.1" + "@lerna/listable" "6.0.1" + "@lerna/output" "6.0.1" -"@lerna/check-working-tree@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-5.6.2.tgz#dd03b0c3fe9f141c31c0c47a9a0162ee9c0f6c28" - integrity sha512-6Vf3IB6p+iNIubwVgr8A/KOmGh5xb4SyRmhFtAVqe33yWl2p3yc+mU5nGoz4ET3JLF1T9MhsePj0hNt6qyOTLQ== +"@lerna/check-working-tree@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-6.0.1.tgz#ad71d53941b5c85523499b283e5f44b52eca6276" + integrity sha512-9Ti1EuE3IiJUvvAtFk+Xr9Uw6KehT78ghnI4f/hi4uew5q0Mf2+DMaBNexbhOTpRFBeIq4ucDFhiN091pNkUNw== dependencies: - "@lerna/collect-uncommitted" "5.6.2" - "@lerna/describe-ref" "5.6.2" - "@lerna/validation-error" "5.6.2" + "@lerna/collect-uncommitted" "6.0.1" + "@lerna/describe-ref" "6.0.1" + "@lerna/validation-error" "6.0.1" -"@lerna/child-process@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-5.6.2.tgz#4adbd09ff5a8e43b9471f1a987ae65a7d669421b" - integrity sha512-QIOQ3jIbWdduHd5892fbo3u7/dQgbhzEBB7cvf+Ys/iCPP8UQrBECi1lfRgA4kcTKC2MyMz0SoyXZz/lFcXc3A== +"@lerna/child-process@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-6.0.1.tgz#2141f643a4ed7d38fa9270a80403467a353a3b39" + integrity sha512-5smM8Or/RQkHysNFrUYdrCYlhpr3buNpCYU7T2DPYzOWRPm+X5rCvt/dDOcS3UgYT2jEyS86S5Y7pK2X7eXtmg== dependencies: chalk "^4.1.0" execa "^5.0.0" strong-log-transformer "^2.1.0" -"@lerna/clean@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-5.6.2.tgz#9611adf3e3035731af2b71aabeb850f7d16fc27d" - integrity sha512-A7j8r0Hk2pGyLUyaCmx4keNHen1L/KdcOjb4nR6X8GtTJR5AeA47a8rRKOCz9wwdyMPlo2Dau7d3RV9viv7a5g== - dependencies: - "@lerna/command" "5.6.2" - "@lerna/filter-options" "5.6.2" - "@lerna/prompt" "5.6.2" - "@lerna/pulse-till-done" "5.6.2" - "@lerna/rimraf-dir" "5.6.2" +"@lerna/clean@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-6.0.1.tgz#e59f94140e577cbb66f76f78794b97778f78a246" + integrity sha512-ZaWPzzYNkJM7Ib2GWPLSELVBf5nRCGOGBtR9DSLKAore0Me876JLgi4h2R+Y2PVyCvT1kmoQKAclnjxdZbCONA== + dependencies: + "@lerna/command" "6.0.1" + "@lerna/filter-options" "6.0.1" + "@lerna/prompt" "6.0.1" + "@lerna/pulse-till-done" "6.0.1" + "@lerna/rimraf-dir" "6.0.1" p-map "^4.0.0" p-map-series "^2.1.0" p-waterfall "^2.1.1" -"@lerna/cli@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-5.6.2.tgz#87a3dea0f066fa4b01c38ab191f316885dfe9fcd" - integrity sha512-w0NRIEqDOmYKlA5t0iyqx0hbY7zcozvApmfvwF0lhkuhf3k6LRAFSamtimGQWicC779a7J2NXw4ASuBV47Fs1Q== +"@lerna/cli@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-6.0.1.tgz#8a92386702cff815f36104792ad5dc14f11a61a8" + integrity sha512-AuAnUXkBGdts/rmHltrkZucYy11OwYPb/4HM3zxLeq4O30w2ocZIytkOtSkuVKOMPWBZR8b37fNuZBzvxe5OmA== dependencies: - "@lerna/global-options" "5.6.2" + "@lerna/global-options" "6.0.1" dedent "^0.7.0" npmlog "^6.0.2" yargs "^16.2.0" -"@lerna/collect-uncommitted@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-5.6.2.tgz#8f62d5a57c7800e9f5278897c7b254c1e3d425fe" - integrity sha512-i0jhxpypyOsW2PpPwIw4xg6EPh7/N3YuiI6P2yL7PynZ8nOv8DkIdoyMkhUP4gALjBfckH8Bj94eIaKMviqW4w== +"@lerna/collect-uncommitted@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-6.0.1.tgz#b93f5acfa9c63fffe41bfaaac02a0efad9180b00" + integrity sha512-qPqwmIlSlf8XBJnqMc+6pz6qXQ0Pfjil70FB2IPvoWbfrLvMI6K3I/AXeub9X5fj5HYqNs1XtwhWHJcMFpJddw== dependencies: - "@lerna/child-process" "5.6.2" + "@lerna/child-process" "6.0.1" chalk "^4.1.0" npmlog "^6.0.2" -"@lerna/collect-updates@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-5.6.2.tgz#7dc9df48183ef35a975154182d338c64de76104f" - integrity sha512-DdTK13X6PIsh9HINiMniFeiivAizR/1FBB+hDVe6tOhsXFBfjHMw1xZhXlE+mYIoFmDm1UFK7zvQSexoaxRqFA== +"@lerna/collect-updates@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-6.0.1.tgz#7b4be193ee51a72ccedc20acf845fe32fdee9ee2" + integrity sha512-OwRcLqD1N5znlZM/Ctf031RDkodHVO62byiD35AbHGoGM2EI2TSYyIbqnJ8QsQJMB05/KhIBndL8Mpcdle7/rg== dependencies: - "@lerna/child-process" "5.6.2" - "@lerna/describe-ref" "5.6.2" + "@lerna/child-process" "6.0.1" + "@lerna/describe-ref" "6.0.1" minimatch "^3.0.4" npmlog "^6.0.2" slash "^3.0.0" -"@lerna/command@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/command/-/command-5.6.2.tgz#6cbb42b63c40a33565a7d39302d0e171e8e0f5b6" - integrity sha512-eLVGI9TmxcaGt1M7TXGhhBZoeWOtOedMiH7NuCGHtL6TMJ9k+SCExyx+KpNmE6ImyNOzws6EvYLPLjftiqmoaA== - dependencies: - "@lerna/child-process" "5.6.2" - "@lerna/package-graph" "5.6.2" - "@lerna/project" "5.6.2" - "@lerna/validation-error" "5.6.2" - "@lerna/write-log-file" "5.6.2" +"@lerna/command@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/command/-/command-6.0.1.tgz#a429e724237bc3c4a735e8eaef9816f2203cb7dc" + integrity sha512-V9w8M7pMU7KztxaL0+fetTSQYTa12bhTl86ll9VjlgYZ5qUAXk9E42Y8hbVThyYtHEhkRnIMinkWsmH/9YKU/A== + dependencies: + "@lerna/child-process" "6.0.1" + "@lerna/package-graph" "6.0.1" + "@lerna/project" "6.0.1" + "@lerna/validation-error" "6.0.1" + "@lerna/write-log-file" "6.0.1" clone-deep "^4.0.1" dedent "^0.7.0" execa "^5.0.0" is-ci "^2.0.0" npmlog "^6.0.2" -"@lerna/conventional-commits@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-5.6.2.tgz#23f1a86ab79e48609c98a572eb59a705d7f0512f" - integrity sha512-fPrJpYJhxCgY2uyOCTcAAC6+T6lUAtpEGxLbjWHWTb13oKKEygp9THoFpe6SbAD0fYMb3jeZCZCqNofM62rmuA== +"@lerna/conventional-commits@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-6.0.1.tgz#72dd55aadc7c20eca5af3d03cdcfb613964dafc4" + integrity sha512-6oIGEZKy1GpooW28C0aEDkZ/rVkqpX44knP8Jyb5//1054QogqPhGC5q6J0lZxyhun8dQkpF6XTHlIintI8xow== dependencies: - "@lerna/validation-error" "5.6.2" + "@lerna/validation-error" "6.0.1" conventional-changelog-angular "^5.0.12" conventional-changelog-core "^4.2.4" conventional-recommended-bump "^6.1.0" @@ -2436,24 +2436,24 @@ pify "^5.0.0" semver "^7.3.4" -"@lerna/create-symlink@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-5.6.2.tgz#9bd327128e30a144ef50a45242433a2325081391" - integrity sha512-0WIs3P6ohPVh2+t5axrLZDE5Dt7fe3Kv0Auj0sBiBd6MmKZ2oS76apIl0Bspdbv8jX8+TRKGv6ib0280D0dtEw== +"@lerna/create-symlink@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-6.0.1.tgz#5a9f75f8e5c0d83c39d70240f51284cc5d6770ad" + integrity sha512-ZmLx9SP5De6u1xkD7Z6gMMFuyLKCb+2bodreFe7ryOVP3cOLbmNOmgMgj+gtUgIwIv7BDwX3qFWlPY6B3VW3hQ== dependencies: cmd-shim "^5.0.0" fs-extra "^9.1.0" npmlog "^6.0.2" -"@lerna/create@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/create/-/create-5.6.2.tgz#2c2e4b089cd8426cd256c6b0a0df5e676aa3503a" - integrity sha512-+Y5cMUxMNXjTTU9IHpgRYIwKo39w+blui1P+s+qYlZUSCUAew0xNpOBG8iN0Nc5X9op4U094oIdHxv7Dyz6tWQ== +"@lerna/create@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/create/-/create-6.0.1.tgz#7905cef9196cb6a1caff5d7cd78a46fc7ea635a9" + integrity sha512-VuTdvBJDzvAaMBYoKTRMBQC+nfwnihxdA/ekUqBD+W8MMsqPLCGCneyl7JK9RaSSib/10LyRDEmfo79UAndcgQ== dependencies: - "@lerna/child-process" "5.6.2" - "@lerna/command" "5.6.2" - "@lerna/npm-conf" "5.6.2" - "@lerna/validation-error" "5.6.2" + "@lerna/child-process" "6.0.1" + "@lerna/command" "6.0.1" + "@lerna/npm-conf" "6.0.1" + "@lerna/validation-error" "6.0.1" dedent "^0.7.0" fs-extra "^9.1.0" init-package-json "^3.0.2" @@ -2467,218 +2467,218 @@ validate-npm-package-name "^4.0.0" yargs-parser "20.2.4" -"@lerna/describe-ref@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-5.6.2.tgz#8beb9884b59c419c67cec935cd90c08704e4c9b0" - integrity sha512-UqU0N77aT1W8duYGir7R+Sk3jsY/c4lhcCEcnayMpFScMbAp0ETGsW04cYsHK29sgg+ZCc5zEwebBqabWhMhnA== +"@lerna/describe-ref@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-6.0.1.tgz#e9277bcc3c1c839fc7305b808f9dd02a5404aaf8" + integrity sha512-PcTVt4qgAXUPBtWHyqixtwE/eXe56+DFRnfTcJlb4x5F7LJ+7VNpdR/81qfP89Xj10U5IjELXbXmriz1KMwhfw== dependencies: - "@lerna/child-process" "5.6.2" + "@lerna/child-process" "6.0.1" npmlog "^6.0.2" -"@lerna/diff@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-5.6.2.tgz#059f62c95e08a506574e0e66044934a395e15b11" - integrity sha512-aHKzKvUvUI8vOcshC2Za/bdz+plM3r/ycqUrPqaERzp+kc1pYHyPeXezydVdEmgmmwmyKI5hx4+2QNnzOnun2A== +"@lerna/diff@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-6.0.1.tgz#e8c5d541d74a9aa13a4ac6745f2f0d9531207fd1" + integrity sha512-/pGXH9txA8wX1YJ/KOBXzx0Z2opADBW4HKPCxxHAu+6dTGMbKABDljVT5Np3UpfIrAGDE5fTuf0aGL4vkKUWrg== dependencies: - "@lerna/child-process" "5.6.2" - "@lerna/command" "5.6.2" - "@lerna/validation-error" "5.6.2" + "@lerna/child-process" "6.0.1" + "@lerna/command" "6.0.1" + "@lerna/validation-error" "6.0.1" npmlog "^6.0.2" -"@lerna/exec@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-5.6.2.tgz#b4edee66e26760de28bbf8472993ae8ad7508073" - integrity sha512-meZozok5stK7S0oAVn+kdbTmU+kHj9GTXjW7V8kgwG9ld+JJMTH3nKK1L3mEKyk9TFu9vFWyEOF7HNK6yEOoVg== - dependencies: - "@lerna/child-process" "5.6.2" - "@lerna/command" "5.6.2" - "@lerna/filter-options" "5.6.2" - "@lerna/profiler" "5.6.2" - "@lerna/run-topologically" "5.6.2" - "@lerna/validation-error" "5.6.2" +"@lerna/exec@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-6.0.1.tgz#d2d0785c46b7ceb3758fe75bb6d95d177a0a0ec3" + integrity sha512-x9puoI3091Alp45w7XOGRxThOw45p+tWGPR5TBCEQiiH7f8eF9Dc4WX5HXf31ooK6NmD40eKPYhBgy8oQnJY9w== + dependencies: + "@lerna/child-process" "6.0.1" + "@lerna/command" "6.0.1" + "@lerna/filter-options" "6.0.1" + "@lerna/profiler" "6.0.1" + "@lerna/run-topologically" "6.0.1" + "@lerna/validation-error" "6.0.1" p-map "^4.0.0" -"@lerna/filter-options@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-5.6.2.tgz#0201d3aaf71eb7d7f8b1d28193218710c3220aa0" - integrity sha512-4Z0HIhPak2TabTsUqEBQaQeOqgqEt0qyskvsY0oviYvqP/nrJfJBZh4H93jIiNQF59LJCn5Ce3KJJrLExxjlzw== +"@lerna/filter-options@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-6.0.1.tgz#4dbd29a31fb2ac228f72c51b223f17623d1f2c71" + integrity sha512-6KxbBI/2skRl/yQdjugQ1PWrSLq19650z8mltF0HT7B686fj7LlDNtESFOtY6iZ8IPqKBkIavOP0DPmJZd7Szw== dependencies: - "@lerna/collect-updates" "5.6.2" - "@lerna/filter-packages" "5.6.2" + "@lerna/collect-updates" "6.0.1" + "@lerna/filter-packages" "6.0.1" dedent "^0.7.0" npmlog "^6.0.2" -"@lerna/filter-packages@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-5.6.2.tgz#1118a9318f3e08f9e21fb03d23f91e1f77f4a72a" - integrity sha512-el9V2lTEG0Bbz+Omo45hATkRVnChCTJhcTpth19cMJ6mQ4M5H4IgbWCJdFMBi/RpTnOhz9BhJxDbj95kuIvvzw== +"@lerna/filter-packages@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-6.0.1.tgz#07f10dc78e852bbba44843b785ebc16f386cedaa" + integrity sha512-2bKhexeF07Urs2b0xYX2OgYUN0EzmS2FSgvw0KT6He48PGOkqgJjU7PIiWdPyOvZdukwm07qXTmJZulAHftceA== dependencies: - "@lerna/validation-error" "5.6.2" + "@lerna/validation-error" "6.0.1" multimatch "^5.0.0" npmlog "^6.0.2" -"@lerna/get-npm-exec-opts@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-5.6.2.tgz#a5e1a93f62eba817961210b7be148c0768ee4eee" - integrity sha512-0RbSDJ+QC9D5UWZJh3DN7mBIU1NhBmdHOE289oHSkjDY+uEjdzMPkEUy+wZ8fCzMLFnnNQkAEqNaOAzZ7dmFLA== +"@lerna/get-npm-exec-opts@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-6.0.1.tgz#c766588d030c0ec7170650808957998e8ad70831" + integrity sha512-y2T+ODP8HNzHQn1ldrrPW+n823fGsN2sY0r78yURFxYZnxA9ZINyQ6IAejo5LqHrYN8Qhr++0RHo2tUisIHdKg== dependencies: npmlog "^6.0.2" -"@lerna/get-packed@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-5.6.2.tgz#cc5008008442ae00cfa5ed9484e76a44d48e37b6" - integrity sha512-pp5nNDmtrtd21aKHjwwOY5CS7XNIHxINzGa+Jholn1jMDYUtdskpN++ZqYbATGpW831++NJuiuBVyqAWi9xbXg== +"@lerna/get-packed@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-6.0.1.tgz#d31c10ec10658eeee4306886c100cd9600d6dd78" + integrity sha512-Z/5J5vbjdeGqZcPvUSiszvyizHdsTRiFlpPORWK3YfIsHllUB7QZnVHLg92UnSJrpPE0O1gH+k6ByhhR+3qEdA== dependencies: fs-extra "^9.1.0" ssri "^9.0.1" tar "^6.1.0" -"@lerna/github-client@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-5.6.2.tgz#b40a71ddf5d40aefe178a48713aa107ef735f056" - integrity sha512-pjALazZoRZtKqfwLBwmW3HPptVhQm54PvA8s3qhCQ+3JkqrZiIFwkkxNZxs3jwzr+aaSOzfhSzCndg0urb0GXA== +"@lerna/github-client@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-6.0.1.tgz#081d13c2debf312d0e5a2bb2fad6e0c69e1501d6" + integrity sha512-UA7V3XUunJnrfCL2eyW9QsCjBWShv4dCRGUITXmpQJrNIMZIqVbBJzqN9LVHDNc/hEVZGt0EjtHWdpFCgD4ypg== dependencies: - "@lerna/child-process" "5.6.2" + "@lerna/child-process" "6.0.1" "@octokit/plugin-enterprise-rest" "^6.0.1" "@octokit/rest" "^19.0.3" git-url-parse "^13.1.0" npmlog "^6.0.2" -"@lerna/gitlab-client@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-5.6.2.tgz#3bb3c350d28f38f719ddbba083ca28dbd353494e" - integrity sha512-TInJmbrsmYIwUyrRxytjO82KjJbRwm67F7LoZs1shAq6rMvNqi4NxSY9j+hT/939alFmEq1zssoy/caeLXHRfQ== +"@lerna/gitlab-client@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-6.0.1.tgz#1863b621a1530bc482113cac8791247664dedb2a" + integrity sha512-yyaBKf/OqBAau6xDk1tnMjfkxRpC/j3OwUyXFFGfJFSulWRHpbHoFSfvIgOn/hkjAr9FfHC7TXItRg8qdm38Wg== dependencies: node-fetch "^2.6.1" npmlog "^6.0.2" -"@lerna/global-options@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-5.6.2.tgz#30bec81cdb4ac0bb47588e4a502ce908a982ff7c" - integrity sha512-kaKELURXTlczthNJskdOvh6GGMyt24qat0xMoJZ8plYMdofJfhz24h1OFcvB/EwCUwP/XV1+ohE5P+vdktbrEg== +"@lerna/global-options@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-6.0.1.tgz#83061d85759c105120ff55716959642ba6eb0eea" + integrity sha512-vzjDI3Bg2NR+cSgfjHWax2bF1HmQYjJF2tmZlT/hJbwhaVMIEnhzHnJ9Yycmm98cdV77xEMlbmk5YD7xgFdG2w== -"@lerna/has-npm-version@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-5.6.2.tgz#5359e9870941f66fb3b859995120801800880944" - integrity sha512-kXCnSzffmTWsaK0ol30coyCfO8WH26HFbmJjRBzKv7VGkuAIcB6gX2gqRRgNLLlvI+Yrp+JSlpVNVnu15SEH2g== +"@lerna/has-npm-version@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-6.0.1.tgz#ed27a27cad2090069feb3108b105ceec765bec5e" + integrity sha512-ol1onJaauMXK0cQsfRX2rvbhNRyNBY9Ne5trrRjfMROa7Tnr8c3I4+aKQs7m4z1JdWaGBV4xBH+NSZ/esPuaWA== dependencies: - "@lerna/child-process" "5.6.2" + "@lerna/child-process" "6.0.1" semver "^7.3.4" -"@lerna/import@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/import/-/import-5.6.2.tgz#7be2321fbc41fa0f7fdd233eb62571e8418fcb75" - integrity sha512-xQUE49mtcP0z3KUdXBsyvp8rGDz6phuYUoQbhcFRJ7WPcQKzMvtm0XYrER6c2YWEX7QOuDac6tU82P8zTrTBaA== - dependencies: - "@lerna/child-process" "5.6.2" - "@lerna/command" "5.6.2" - "@lerna/prompt" "5.6.2" - "@lerna/pulse-till-done" "5.6.2" - "@lerna/validation-error" "5.6.2" +"@lerna/import@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/import/-/import-6.0.1.tgz#9e869d6bbe82446ee3620c4310ca6232881b7952" + integrity sha512-GrTtIWUCnDf+FqRjenV2OKWU+khoZj0h/etgfXus45PBO2+V/SkkzIY4xof23XphiydUYrSrYtwx2i1aEmk3Wg== + dependencies: + "@lerna/child-process" "6.0.1" + "@lerna/command" "6.0.1" + "@lerna/prompt" "6.0.1" + "@lerna/pulse-till-done" "6.0.1" + "@lerna/validation-error" "6.0.1" dedent "^0.7.0" fs-extra "^9.1.0" p-map-series "^2.1.0" -"@lerna/info@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/info/-/info-5.6.2.tgz#82280cdae6e08aab5b3017c359f6e496116a62ae" - integrity sha512-MPjY5Olj+fiZHgfEdwXUFRKamdEuLr9Ob/qut8JsB/oQSQ4ALdQfnrOcMT8lJIcC2R67EA5yav2lHPBIkezm8A== +"@lerna/info@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/info/-/info-6.0.1.tgz#68395061ffbd81c7716d60b99b5220c90ade2862" + integrity sha512-QEW7JtJjoR1etUrcft7BnrwPZFHE2JPmt2DoSvSmLISLyy+HlmdXHK+p6Ej3g1ql8gS0GWCacgwmlRZ27CDp5A== dependencies: - "@lerna/command" "5.6.2" - "@lerna/output" "5.6.2" + "@lerna/command" "6.0.1" + "@lerna/output" "6.0.1" envinfo "^7.7.4" -"@lerna/init@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/init/-/init-5.6.2.tgz#8f92868c3f9081245f5a8e0b94ce6b5979b8541e" - integrity sha512-ahU3/lgF+J8kdJAQysihFJROHthkIDXfHmvhw7AYnzf94HjxGNXj7nz6i3At1/dM/1nQhR+4/uNR1/OU4tTYYQ== +"@lerna/init@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/init/-/init-6.0.1.tgz#babee56707bd19b3c1b82967e3360d1083c04cf9" + integrity sha512-zOMrSij09LSAVUUujpD3y32wkHp8dQ+/dVCp4USlfcGfI+kIPc5prkYCGDO8dEcqkze0pMfDMF23pVNvAf9g7w== dependencies: - "@lerna/child-process" "5.6.2" - "@lerna/command" "5.6.2" - "@lerna/project" "5.6.2" + "@lerna/child-process" "6.0.1" + "@lerna/command" "6.0.1" + "@lerna/project" "6.0.1" fs-extra "^9.1.0" p-map "^4.0.0" write-json-file "^4.3.0" -"@lerna/link@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/link/-/link-5.6.2.tgz#6af5addff89cd455c1837a47a36f430a2c6ae6a5" - integrity sha512-hXxQ4R3z6rUF1v2x62oIzLyeHL96u7ZBhxqYMJrm763D1VMSDcHKF9CjJfc6J9vH5Z2ZbL6CQg50Hw5mUpJbjg== +"@lerna/link@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/link/-/link-6.0.1.tgz#a94cf3aead92538835d955c6de281c65097f3471" + integrity sha512-VXZ77AWsJCycTu219ZLUHyRzMd5hgivLk5ZyBD1s/emArFvdEmGLscj2RXn3P3w/951b+DNG2Zbi6nek0iJ6DA== dependencies: - "@lerna/command" "5.6.2" - "@lerna/package-graph" "5.6.2" - "@lerna/symlink-dependencies" "5.6.2" - "@lerna/validation-error" "5.6.2" + "@lerna/command" "6.0.1" + "@lerna/package-graph" "6.0.1" + "@lerna/symlink-dependencies" "6.0.1" + "@lerna/validation-error" "6.0.1" p-map "^4.0.0" slash "^3.0.0" -"@lerna/list@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/list/-/list-5.6.2.tgz#5fdf8c678891eacef1d90afb84fb461deb6bb662" - integrity sha512-WjE5O2tQ3TcS+8LqXUaxi0YdldhxUhNihT5+Gg4vzGdIlrPDioO50Zjo9d8jOU7i3LMIk6EzCma0sZr2CVfEGg== +"@lerna/list@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/list/-/list-6.0.1.tgz#ab6d056c5d7b99ca0ed6a17d48bf907afd9d970a" + integrity sha512-M9Vneh866E1nlpU88rcUMLR+XTVi3VY0fLPr1OqXdYF+eTe6RkEHUQj8HIk94Rnt02HsWc4+FO31T4i5sf+PaA== dependencies: - "@lerna/command" "5.6.2" - "@lerna/filter-options" "5.6.2" - "@lerna/listable" "5.6.2" - "@lerna/output" "5.6.2" + "@lerna/command" "6.0.1" + "@lerna/filter-options" "6.0.1" + "@lerna/listable" "6.0.1" + "@lerna/output" "6.0.1" -"@lerna/listable@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-5.6.2.tgz#1a35e8da081f2dc286647cbf4a4a7fb3c7fb1102" - integrity sha512-8Yp49BwkY/5XqVru38Zko+6Wj/sgbwzJfIGEPy3Qu575r1NA/b9eI1gX22aMsEeXUeGOybR7nWT5ewnPQHjqvA== +"@lerna/listable@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-6.0.1.tgz#444e81f6642c198d116e9e6b86d96d10ddf2e147" + integrity sha512-+xEByVX0sbnBW3EBu3XCg71Bz9/dahncmCjNK0kVnZLnQZzfULCndaQeSt+f9KO0VCs8h1tnXdo2uLPm4lThnw== dependencies: - "@lerna/query-graph" "5.6.2" + "@lerna/query-graph" "6.0.1" chalk "^4.1.0" columnify "^1.6.0" -"@lerna/log-packed@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-5.6.2.tgz#05d26f038ce64e8ce8395c1745dfeb7589f89790" - integrity sha512-O9GODG7tMtWk+2fufn2MOkIDBYMRoKBhYMHshO5Aw/VIsH76DIxpX1koMzWfUngM/C70R4uNAKcVWineX4qzIw== +"@lerna/log-packed@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-6.0.1.tgz#20fe38b5f18e65392b42bf84cfdda0afc0b62330" + integrity sha512-HTJdZzfBbb5jyk/QU2O6o+yaWRwLoaPruhK+Q3ESTzQ2mlNCr0CI4UKWDcWURWx0EsVsYqsoUHuPZInpIHqCnA== dependencies: byte-size "^7.0.0" columnify "^1.6.0" has-unicode "^2.0.1" npmlog "^6.0.2" -"@lerna/npm-conf@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-5.6.2.tgz#3b72fc528c8a1cd0acc9b277749a6153bd8de083" - integrity sha512-gWDPhw1wjXYXphk/PAghTLexO5T6abVFhXb+KOMCeem366mY0F5bM88PiorL73aErTNUoR8n+V4X29NTZzDZpQ== +"@lerna/npm-conf@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-6.0.1.tgz#fa242a36ef687c7b5207a9d9a85b9e7a4f38bdc5" + integrity sha512-VjxODCnl6QJGoQ8z8AWEID1GO9CtCr2yRyn6NoRdBOTYmzI5KhBBM+nWmyMSOUe0EZI+K5j04/GRzKHg2KXTAQ== dependencies: config-chain "^1.1.12" pify "^5.0.0" -"@lerna/npm-dist-tag@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-5.6.2.tgz#6115aa4b005b57520d76428926ee7d12030f5e53" - integrity sha512-t2RmxV6Eog4acXkUI+EzWuYVbeVVY139pANIWS9qtdajfgp4GVXZi1S8mAIb70yeHdNpCp1mhK0xpCrFH9LvGQ== +"@lerna/npm-dist-tag@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-6.0.1.tgz#4718bdedd82f375ba619319070b694f1113e627b" + integrity sha512-jJKDgnhj6xGqSWGcbwdcbPtoo2m4mHRwqu8iln9e3TMOEyUO9aA4uvd0/18tEAsboOMiLUhhcQ8709iKv21ZEA== dependencies: - "@lerna/otplease" "5.6.2" + "@lerna/otplease" "6.0.1" npm-package-arg "8.1.1" npm-registry-fetch "^13.3.0" npmlog "^6.0.2" -"@lerna/npm-install@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-5.6.2.tgz#d5bd1e10c1c31f69a9ca5351b0cbe72dbc288dc2" - integrity sha512-AT226zdEo+uGENd37jwYgdALKJAIJK4pNOfmXWZWzVb9oMOr8I2YSjPYvSYUNG7gOo2YJQU8x5Zd7OShv2924Q== +"@lerna/npm-install@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-6.0.1.tgz#5d6f0c62b34f2bfeb8f20b81b08f01ca0d3ed60b" + integrity sha512-saDJSyhhl/wxgZSzRx2/pr0wsMR+hZpdhLGd1lZgo5XzLq3ogK+BxPFz3AK3xhRnNaMq96gDQ3xmeetoV53lwQ== dependencies: - "@lerna/child-process" "5.6.2" - "@lerna/get-npm-exec-opts" "5.6.2" + "@lerna/child-process" "6.0.1" + "@lerna/get-npm-exec-opts" "6.0.1" fs-extra "^9.1.0" npm-package-arg "8.1.1" npmlog "^6.0.2" signal-exit "^3.0.3" write-pkg "^4.0.0" -"@lerna/npm-publish@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-5.6.2.tgz#4e5e225b47589a7f8f96b7eee68b547e8ce432a2" - integrity sha512-ldSyewCfv9fAeC5xNjL0HKGSUxcC048EJoe/B+KRUmd+IPidvZxMEzRu08lSC/q3V9YeUv9ZvRnxATXOM8CffA== +"@lerna/npm-publish@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-6.0.1.tgz#ffbca4be5b971df978a60917460ee8f28b1c62b7" + integrity sha512-hgzF9fOfp010z7PJtqNLxNXiHr6u4UDVwiX8g22rhJKBh9Ekrq7N9NS3mF0l+RcleRU/jJKYtZ0Ci3fICaaRUg== dependencies: - "@lerna/otplease" "5.6.2" - "@lerna/run-lifecycle" "5.6.2" + "@lerna/otplease" "6.0.1" + "@lerna/run-lifecycle" "6.0.1" fs-extra "^9.1.0" libnpmpublish "^6.0.4" npm-package-arg "8.1.1" @@ -2686,85 +2686,85 @@ pify "^5.0.0" read-package-json "^5.0.1" -"@lerna/npm-run-script@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-5.6.2.tgz#66e3391ebdd6136312277be37a1b62ce48c12abf" - integrity sha512-MOQoWNcAyJivM8SYp0zELM7vg/Dj07j4YMdxZkey+S1UO0T4/vKBxb575o16hH4WeNzC3Pd7WBlb7C8dLOfNwQ== +"@lerna/npm-run-script@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-6.0.1.tgz#3a255aa6f37a5e2369a37a8ddcb2709f84019ed1" + integrity sha512-K+D4LEoVRuBoKRImprkVRHIORu0xouX+c6yI1B93KWHKJ60H8qCeB0gQkA30pFALx3qG07bXVnFmfK9SGQXD3Q== dependencies: - "@lerna/child-process" "5.6.2" - "@lerna/get-npm-exec-opts" "5.6.2" + "@lerna/child-process" "6.0.1" + "@lerna/get-npm-exec-opts" "6.0.1" npmlog "^6.0.2" -"@lerna/otplease@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-5.6.2.tgz#a94e4daf9d3d42bfc0366a6889b8809ed32dbdd0" - integrity sha512-dGS4lzkEQVTMAgji82jp8RK6UK32wlzrBAO4P4iiVHCUTuwNLsY9oeBXvVXSMrosJnl6Hbe0NOvi43mqSucGoA== +"@lerna/otplease@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-6.0.1.tgz#da5467c603565940c1f91e65d077abf25d96df7f" + integrity sha512-RrP8GtfE9yz37GuuCFqddR3mVIQc1ulUpAaaDNK4AOTb7gM0aCsTN7V2gCGBk1zdIsBuvNvNqt5jpWm4U6/EAA== dependencies: - "@lerna/prompt" "5.6.2" + "@lerna/prompt" "6.0.1" -"@lerna/output@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/output/-/output-5.6.2.tgz#fa97315d16cfe005a2891a3fc98f6f4fd3f518ed" - integrity sha512-++d+bfOQwY66yo7q1XuAvRcqtRHCG45e/awP5xQomTZ6R1rhWiZ3whWdc9Z6lF7+UtBB9toSYYffKU/xc3L0yQ== +"@lerna/output@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/output/-/output-6.0.1.tgz#5e301ad0bed607ee139cf207fd75ed1e5fac7908" + integrity sha512-4jZ3fgaCbnsTZ353/lXE/3w20Cge6G3iUoESVip+JE2yhZ8rWgPISG8RFR0YGEtSgq2yC9AgGnGlvmOnAc4SAQ== dependencies: npmlog "^6.0.2" -"@lerna/pack-directory@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-5.6.2.tgz#ced0287d13d8575fe928ad7d9ad92dc6554cc86d" - integrity sha512-w5Jk5fo+HkN4Le7WMOudTcmAymcf0xPd302TqAQncjXpk0cb8tZbj+5bbNHsGb58GRjOIm5icQbHXooQUxbHhA== +"@lerna/pack-directory@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-6.0.1.tgz#4a0bf61b7cb1b1b3f1fb95afec987a7c63ff9f95" + integrity sha512-vNgS5Rs7s6khOYuHE5nTds0VDfHBH8YNGvV1s0yGAg/Zkivi7bOTs8jDQFiYhQX3HOTC1/85BLhGQ3zcDHlrew== dependencies: - "@lerna/get-packed" "5.6.2" - "@lerna/package" "5.6.2" - "@lerna/run-lifecycle" "5.6.2" - "@lerna/temp-write" "5.6.2" + "@lerna/get-packed" "6.0.1" + "@lerna/package" "6.0.1" + "@lerna/run-lifecycle" "6.0.1" + "@lerna/temp-write" "6.0.1" npm-packlist "^5.1.1" npmlog "^6.0.2" tar "^6.1.0" -"@lerna/package-graph@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-5.6.2.tgz#cb0a70b83afc418c5b5363bb96746d501decdbeb" - integrity sha512-TmL61qBBvA3Tc4qICDirZzdFFwWOA6qicIXUruLiE2PblRowRmCO1bKrrP6XbDOspzwrkPef6N2F2/5gHQAnkQ== +"@lerna/package-graph@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-6.0.1.tgz#db72ab9ed45933d1518de7f7389a6c79e6059336" + integrity sha512-OMppRWpfSaI6HO/Tc5FVpNefgOsCc3/DzaMLme6QTTpbEwD3EhvQ3Xx0MgsGMPdmZhWp/WOoAJsVRnLa+l03gg== dependencies: - "@lerna/prerelease-id-from-version" "5.6.2" - "@lerna/validation-error" "5.6.2" + "@lerna/prerelease-id-from-version" "6.0.1" + "@lerna/validation-error" "6.0.1" npm-package-arg "8.1.1" npmlog "^6.0.2" semver "^7.3.4" -"@lerna/package@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/package/-/package-5.6.2.tgz#da73b350693fdd4154cf5b19799bfaadff57442e" - integrity sha512-LaOC8moyM5J9WnRiWZkedjOninSclBOJyPqhif6mHb2kCFX6jAroNYzE8KM4cphu8CunHuhI6Ixzswtv+Dultw== +"@lerna/package@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/package/-/package-6.0.1.tgz#cb950e574b1ea3ef5cd8cf62b3c4308f6c869122" + integrity sha512-vCwyiLVJ4K3SR6KZleglq1dUXIiYGmk3b+NrFWP/Z3dhVE0C+RqgxSsAS4aaUNMSO2KSI0dBdce7BT/D+FdpIQ== dependencies: load-json-file "^6.2.0" npm-package-arg "8.1.1" write-pkg "^4.0.0" -"@lerna/prerelease-id-from-version@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-5.6.2.tgz#63002662024a261310c6fbf01a50cb5f50569ca8" - integrity sha512-7gIm9fecWFVNy2kpj/KbH11bRcpyANAwpsft3X5m6J7y7A6FTUscCbEvl3ZNdpQKHNuvnHgCtkm3A5PMSCEgkA== +"@lerna/prerelease-id-from-version@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-6.0.1.tgz#a47980aa6c78deaa36430d03b6300bc889960b50" + integrity sha512-aZBs/FinztKjNXlk0cW99FpABynZzZwlmJuW4h9nMrQPgWoaDAERfImbefIH/lcpxdRuuGtClyZUFBOSq8ppfg== dependencies: semver "^7.3.4" -"@lerna/profiler@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-5.6.2.tgz#5bfd52fb666ad0506cac3b8d2839e904d0acf90a" - integrity sha512-okwkagP5zyRIOYTceu/9/esW7UZFt7lyL6q6ZgpSG3TYC5Ay+FXLtS6Xiha/FQdVdumFqKULDWTGovzUlxcwaw== +"@lerna/profiler@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-6.0.1.tgz#2b7a043e6999823ad97a7ddaea0ed7f338032f92" + integrity sha512-vZrgF5pDhYWY/Gx7MjtyOgTVMA6swDV2+xPZwkvRD1Z0XpWEIn5d79zRN/1SBpdMNozC7Lj++1oEbCGNWhy/ow== dependencies: fs-extra "^9.1.0" npmlog "^6.0.2" upath "^2.0.1" -"@lerna/project@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/project/-/project-5.6.2.tgz#a893851cdceeace36d30fdfdbc2da9159a9e2041" - integrity sha512-kPIMcIy/0DVWM91FPMMFmXyAnCuuLm3NdhnA8NusE//VuY9wC6QC/3OwuCY39b2dbko/fPZheqKeAZkkMH6sGg== +"@lerna/project@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/project/-/project-6.0.1.tgz#0d4a6dbca1943478d554d4a3a610968caf9b303a" + integrity sha512-/n2QuAEgImbwUqrJND15FxYu29p/mLTUpL/8cSg6IUlOQRFyXteESRyl8A2Ex7Wj00FMbtB13vgbmTdkTgKL0A== dependencies: - "@lerna/package" "5.6.2" - "@lerna/validation-error" "5.6.2" + "@lerna/package" "6.0.1" + "@lerna/validation-error" "6.0.1" cosmiconfig "^7.0.0" dedent "^0.7.0" dot-prop "^6.0.1" @@ -2777,38 +2777,38 @@ resolve-from "^5.0.0" write-json-file "^4.3.0" -"@lerna/prompt@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-5.6.2.tgz#7ea10fd3543aced0bf5521741808d86ffcf4b320" - integrity sha512-4hTNmVYADEr0GJTMegWV+GW6n+dzKx1vN9v2ISqyle283Myv930WxuyO0PeYGqTrkneJsyPreCMovuEGCvZ0iQ== +"@lerna/prompt@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-6.0.1.tgz#2a744b168ce4a29b7c66d500258a3f65b3f028e2" + integrity sha512-faR7oVdHBO3QTJ6o9kUEDPpyjCftd/CCa1rAC6q8f3vlLfCPrTym0qT+DcOBFGpDQh4m2dmGfJZgpXIVi6bMbg== dependencies: inquirer "^8.2.4" npmlog "^6.0.2" -"@lerna/publish@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-5.6.2.tgz#c8a26610c4fb2c7c5a232e04852bf545b242ee65" - integrity sha512-QaW0GjMJMuWlRNjeDCjmY/vjriGSWgkLS23yu8VKNtV5U3dt5yIKA3DNGV3HgZACuu45kQxzMDsfLzgzbGNtYA== - dependencies: - "@lerna/check-working-tree" "5.6.2" - "@lerna/child-process" "5.6.2" - "@lerna/collect-updates" "5.6.2" - "@lerna/command" "5.6.2" - "@lerna/describe-ref" "5.6.2" - "@lerna/log-packed" "5.6.2" - "@lerna/npm-conf" "5.6.2" - "@lerna/npm-dist-tag" "5.6.2" - "@lerna/npm-publish" "5.6.2" - "@lerna/otplease" "5.6.2" - "@lerna/output" "5.6.2" - "@lerna/pack-directory" "5.6.2" - "@lerna/prerelease-id-from-version" "5.6.2" - "@lerna/prompt" "5.6.2" - "@lerna/pulse-till-done" "5.6.2" - "@lerna/run-lifecycle" "5.6.2" - "@lerna/run-topologically" "5.6.2" - "@lerna/validation-error" "5.6.2" - "@lerna/version" "5.6.2" +"@lerna/publish@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-6.0.1.tgz#9448a35a87e2c986c8919114698f3a314a9a2574" + integrity sha512-xIleRwCuPHtShNSPc6RDH33Z+EO1E4O0LOhPq5qTwanNPYh5eL6bDHBsox44BbMD9dhhI4PUrqIGTu3AoKdDxg== + dependencies: + "@lerna/check-working-tree" "6.0.1" + "@lerna/child-process" "6.0.1" + "@lerna/collect-updates" "6.0.1" + "@lerna/command" "6.0.1" + "@lerna/describe-ref" "6.0.1" + "@lerna/log-packed" "6.0.1" + "@lerna/npm-conf" "6.0.1" + "@lerna/npm-dist-tag" "6.0.1" + "@lerna/npm-publish" "6.0.1" + "@lerna/otplease" "6.0.1" + "@lerna/output" "6.0.1" + "@lerna/pack-directory" "6.0.1" + "@lerna/prerelease-id-from-version" "6.0.1" + "@lerna/prompt" "6.0.1" + "@lerna/pulse-till-done" "6.0.1" + "@lerna/run-lifecycle" "6.0.1" + "@lerna/run-topologically" "6.0.1" + "@lerna/validation-error" "6.0.1" + "@lerna/version" "6.0.1" fs-extra "^9.1.0" libnpmaccess "^6.0.3" npm-package-arg "8.1.1" @@ -2819,99 +2819,99 @@ pacote "^13.6.1" semver "^7.3.4" -"@lerna/pulse-till-done@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-5.6.2.tgz#061c4ba2894fa08333fe4502299f9f9f24bdb91c" - integrity sha512-eA/X1RCxU5YGMNZmbgPi+Kyfx1Q3bn4P9jo/LZy+/NRRr1po3ASXP2GJZ1auBh/9A2ELDvvKTOXCVHqczKC6rA== +"@lerna/pulse-till-done@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-6.0.1.tgz#d23985aea1ba25bb33cf74b39f36f2b7a5d21791" + integrity sha512-DK5Ylh/O7Vzn9ObEggvoHdLxc1hiXsDZ4fUvSmi50kc5QrMrk+xo6OyPgIaDBhYxj6lm3TQ1KkvWnRgiEynKAg== dependencies: npmlog "^6.0.2" -"@lerna/query-graph@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-5.6.2.tgz#c507e9a9cb613c6d4d163d7d115a52ef8c1a9d3f" - integrity sha512-KRngr96yBP8XYDi9/U62fnGO+ZXqm04Qk6a2HtoTr/ha8QvO1s7Tgm0xs/G7qWXDQHZgunWIbmK/LhxM7eFQrw== +"@lerna/query-graph@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-6.0.1.tgz#f72b55f0ee4662d06167e639e975019e5c004c59" + integrity sha512-X8Z63Ax5a9nXgNBG+IAXEdCL4MG88akr7L4mBvKiTPrK5VgP46YzuZSaSoPI8bU67MlWBkSYQWAJJ5t0HEtKTw== dependencies: - "@lerna/package-graph" "5.6.2" + "@lerna/package-graph" "6.0.1" -"@lerna/resolve-symlink@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-5.6.2.tgz#51b6f4bbee36a1dcbf52634d05dcd08bb286f2cf" - integrity sha512-PDQy+7M8JEFtwIVHJgWvSxHkxJf9zXCENkvIWDB+SsoDPhw9+caewt46bTeP5iGm9pOMu3oZukaWo/TvF7sNjg== +"@lerna/resolve-symlink@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-6.0.1.tgz#30c3ccf4c730451754ce7aa002772f26dd757c20" + integrity sha512-btosycLN+2lpqou6pz0Oeq4XIKHDIn0NvdnuCBLxtuBOBNIkdlx5QWKCtZ31GYKbCUt55w1DSGL64kfVuejVQQ== dependencies: fs-extra "^9.1.0" npmlog "^6.0.2" read-cmd-shim "^3.0.0" -"@lerna/rimraf-dir@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-5.6.2.tgz#219c51a46c27b94789d683fc0424539f14505fea" - integrity sha512-jgEfzz7uBUiQKteq3G8MtJiA2D2VoKmZSSY3VSiW/tPOSXYxxSHxEsClQdCeNa6+sYrDNDT8fP6MJ3lPLjDeLA== +"@lerna/rimraf-dir@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-6.0.1.tgz#e52ba283a4c39ade75792c23d0c6dcec65dcbbf4" + integrity sha512-rBFkwrxEQWFfZV5IMiPfGVubOquvOTNsPJPUf5tZoPAqKHXVQi5iYZGB65VG8JA7eFenZxh5mVErX2gtWFh1Ew== dependencies: - "@lerna/child-process" "5.6.2" + "@lerna/child-process" "6.0.1" npmlog "^6.0.2" path-exists "^4.0.0" rimraf "^3.0.2" -"@lerna/run-lifecycle@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-5.6.2.tgz#b6954f334b40ca80caeb9e0cb7ca936222f39915" - integrity sha512-u9gGgq/50Fm8dvfcc/TSHOCAQvzLD7poVanDMhHYWOAqRDnellJEEmA1K/Yka4vZmySrzluahkry9G6jcREt+g== +"@lerna/run-lifecycle@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-6.0.1.tgz#ab94838cf7daa1edd6228be0a161b38ec1a42a0b" + integrity sha512-gC7rnV3mrgFFIM8GlHc3d22ovYHoExu9CuIAxN26CVrMq7iEYxWoxYvweqVANsCHR7CVbs+dsDx8/TP1pQG8wg== dependencies: - "@lerna/npm-conf" "5.6.2" + "@lerna/npm-conf" "6.0.1" "@npmcli/run-script" "^4.1.7" npmlog "^6.0.2" p-queue "^6.6.2" -"@lerna/run-topologically@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-5.6.2.tgz#ef00aa6751b4164ae4825244917cdd4bc2562501" - integrity sha512-QQ/jGOIsVvUg3izShWsd67RlWYh9UOH2yw97Ol1zySX9+JspCMVQrn9eKq1Pk8twQOFhT87LpT/aaxbTBgREPw== +"@lerna/run-topologically@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-6.0.1.tgz#dcf26259e57b224d4aad2e3b259555ecd2f226ea" + integrity sha512-p4J9RvOUyDUjQ21tDh7Durci9YnuBu3T8WXD8xu5ZwcxVnawK1h5B8kP4V1R5L/jwNqkXsAnlLwikPVGQ5Iptw== dependencies: - "@lerna/query-graph" "5.6.2" + "@lerna/query-graph" "6.0.1" p-queue "^6.6.2" -"@lerna/run@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/run/-/run-5.6.2.tgz#a964110d2fd13e4a3fe0fb4d752d0497651b26cb" - integrity sha512-c2kJxdFrNg5KOkrhmgwKKUOsfSrGNlFCe26EttufOJ3xfY0VnXlEw9rHOkTgwtu7969rfCdyaVP1qckMrF1Dgw== - dependencies: - "@lerna/command" "5.6.2" - "@lerna/filter-options" "5.6.2" - "@lerna/npm-run-script" "5.6.2" - "@lerna/output" "5.6.2" - "@lerna/profiler" "5.6.2" - "@lerna/run-topologically" "5.6.2" - "@lerna/timer" "5.6.2" - "@lerna/validation-error" "5.6.2" +"@lerna/run@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/run/-/run-6.0.1.tgz#20d3c77fa8faad01b915214b95477ae5390c8b45" + integrity sha512-F1vvpaevsWCjaQs3NlBegH54izm3cO3Qbg/cRRzPZMK4Jo7gE1ddL7+zCIq0zGt6aeVqRGBOtUMk4SvNGkzI4w== + dependencies: + "@lerna/command" "6.0.1" + "@lerna/filter-options" "6.0.1" + "@lerna/npm-run-script" "6.0.1" + "@lerna/output" "6.0.1" + "@lerna/profiler" "6.0.1" + "@lerna/run-topologically" "6.0.1" + "@lerna/timer" "6.0.1" + "@lerna/validation-error" "6.0.1" fs-extra "^9.1.0" p-map "^4.0.0" -"@lerna/symlink-binary@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-5.6.2.tgz#f8c68273f8a4f382bc0420593815dc13027f245a" - integrity sha512-Cth+miwYyO81WAmrQbPBrLHuF+F0UUc0el5kRXLH6j5zzaRS3kMM68r40M7MmfH8m3GPi7691UARoWFEotW5jw== +"@lerna/symlink-binary@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-6.0.1.tgz#b9278650c3360cc518e0d313d9999cd740a2c054" + integrity sha512-TcwxDMgU9w+hGl0EeYihPytVRKV0KTeZZW4Bq6NEtjTCIIuKWxZjcY5ocxW22i6BClBvfFAJqkf+e+i3Nixlhg== dependencies: - "@lerna/create-symlink" "5.6.2" - "@lerna/package" "5.6.2" + "@lerna/create-symlink" "6.0.1" + "@lerna/package" "6.0.1" fs-extra "^9.1.0" p-map "^4.0.0" -"@lerna/symlink-dependencies@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-5.6.2.tgz#263866a869c253db805a9a385741e8919b0aa341" - integrity sha512-dUVNQLEcjVOIQiT9OlSAKt0ykjyJPy8l9i4NJDe2/0XYaUjo8PWsxJ0vrutz27jzi2aZUy07ASmowQZEmnLHAw== +"@lerna/symlink-dependencies@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-6.0.1.tgz#28c01b3f910c1d13b1d447d27c47f5c76efd0096" + integrity sha512-ImyqjLjMBu0ORGO9gYHr9oDgN/5QeeGuELtYNweLS5vMNSH1dokQW9fqZSrgfCJPbxeCizBcDTi/Knqg17ebkA== dependencies: - "@lerna/create-symlink" "5.6.2" - "@lerna/resolve-symlink" "5.6.2" - "@lerna/symlink-binary" "5.6.2" + "@lerna/create-symlink" "6.0.1" + "@lerna/resolve-symlink" "6.0.1" + "@lerna/symlink-binary" "6.0.1" fs-extra "^9.1.0" p-map "^4.0.0" p-map-series "^2.1.0" -"@lerna/temp-write@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/temp-write/-/temp-write-5.6.2.tgz#724fcadfe12bfaa723c1ea0fbc14804653816db0" - integrity sha512-S5ZNVTurSwWBmc9kh5alfSjmO3+BnRT6shYtOlmVIUYqWeYVYA5C1Htj322bbU4CSNCMFK6NQl4qGKL17HMuig== +"@lerna/temp-write@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/temp-write/-/temp-write-6.0.1.tgz#84f8aa3f74b6150706a70430c68815517f5301cf" + integrity sha512-9eklYncDnwTnGF9o14GOrZU05ZK5n6/x5XYRQHbuLfK5T9pmOiUyl6sO1613cZygUMaWHHi7BLtBPiw2CklqXQ== dependencies: graceful-fs "^4.1.15" is-stream "^2.0.0" @@ -2919,38 +2919,38 @@ temp-dir "^1.0.0" uuid "^8.3.2" -"@lerna/timer@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-5.6.2.tgz#57de5dde716539c699f295b8a8c182dd41801b2e" - integrity sha512-AjMOiLc2B+5Nzdd9hNORetAdZ/WK8YNGX/+2ypzM68TMAPfIT5C40hMlSva9Yg4RsBz22REopXgM5s2zQd5ZQA== +"@lerna/timer@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-6.0.1.tgz#eb10242c48a1246e1bf216af305974fbd6332d39" + integrity sha512-FLoga8iprKmRkh9jO+LP4Bm7MZLO4wNHM4LML4Dlh9CPwcIOWTteI8wSgRXvEJpt33IRIoPOUnfL3iHh8WwaYA== -"@lerna/validation-error@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-5.6.2.tgz#75310749d94395f009c67a8fd47e146a86ce2943" - integrity sha512-4WlDUHaa+RSJNyJRtX3gVIAPVzjZD2tle8AJ0ZYBfdZnZmG0VlB2pD1FIbOQPK8sY2h5m0cHLRvfLoLncqHvdQ== +"@lerna/validation-error@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-6.0.1.tgz#afcf6b193eae86d64df9561afb7698696257304f" + integrity sha512-kjAxfFY1pDltwoCTvMQCbnpBwMXBFuvE4hdi8qePhBQ1Lf0PlTOI4ZqMFIkaTud+oujzysDXraTJbYTjc+C+zw== dependencies: npmlog "^6.0.2" -"@lerna/version@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/version/-/version-5.6.2.tgz#211ed1c0af3be0bb6bf6f79ef0d3e8daa1266ff0" - integrity sha512-odNSR2rTbHW++xMZSQKu/F6Syrd/sUvwDLPaMKktoOSPKmycHt/eWcuQQyACdtc43Iqeu4uQd7PCLsniqOVFrw== - dependencies: - "@lerna/check-working-tree" "5.6.2" - "@lerna/child-process" "5.6.2" - "@lerna/collect-updates" "5.6.2" - "@lerna/command" "5.6.2" - "@lerna/conventional-commits" "5.6.2" - "@lerna/github-client" "5.6.2" - "@lerna/gitlab-client" "5.6.2" - "@lerna/output" "5.6.2" - "@lerna/prerelease-id-from-version" "5.6.2" - "@lerna/prompt" "5.6.2" - "@lerna/run-lifecycle" "5.6.2" - "@lerna/run-topologically" "5.6.2" - "@lerna/temp-write" "5.6.2" - "@lerna/validation-error" "5.6.2" - "@nrwl/devkit" ">=14.8.1 < 16" +"@lerna/version@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/version/-/version-6.0.1.tgz#988675be8ea29f1548cb4554c257c2cc94b78084" + integrity sha512-d/addeHVsRFWx3fb/XZIh6f23KuEC9Fn3ytpaMzA8rlLF3Nob1opIR98ZfUz7Nf+skpIV1QiIbXdJTZzIKvd9g== + dependencies: + "@lerna/check-working-tree" "6.0.1" + "@lerna/child-process" "6.0.1" + "@lerna/collect-updates" "6.0.1" + "@lerna/command" "6.0.1" + "@lerna/conventional-commits" "6.0.1" + "@lerna/github-client" "6.0.1" + "@lerna/gitlab-client" "6.0.1" + "@lerna/output" "6.0.1" + "@lerna/prerelease-id-from-version" "6.0.1" + "@lerna/prompt" "6.0.1" + "@lerna/run-lifecycle" "6.0.1" + "@lerna/run-topologically" "6.0.1" + "@lerna/temp-write" "6.0.1" + "@lerna/validation-error" "6.0.1" + "@nrwl/devkit" ">=14.8.6 < 16" chalk "^4.1.0" dedent "^0.7.0" load-json-file "^6.2.0" @@ -2964,10 +2964,10 @@ slash "^3.0.0" write-json-file "^4.3.0" -"@lerna/write-log-file@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-5.6.2.tgz#a297307c80356abe4c3cfc75664febfa4658ec31" - integrity sha512-J09l18QnWQ3sXIRwuJkjXY3+KwPR2uO5NgbZGE3GXJK1V/LzOBRMvjGAIbuQHXw25uqe7vpLUpB8drtnFrubCQ== +"@lerna/write-log-file@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-6.0.1.tgz#4335d5e08686f8250ebae9d7f56b64452bd90cd3" + integrity sha512-fJGDE8rlE35DwKSqV8M1VV2xw/vQlgwTwURjNOMvd1Ar23Aa9CkJC4XAwc9uUgIku34IsWUM8MNbw9ClSsJaqw== dependencies: npmlog "^6.0.2" write-file-atomic "^4.0.1" @@ -3211,13 +3211,6 @@ read-package-json-fast "^2.0.3" which "^2.0.2" -"@nrwl/cli@14.8.3": - version "14.8.3" - resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-14.8.3.tgz#0debbc0887a3c19ba786d502ed0bf158a248c8b8" - integrity sha512-a8URAbqyZvegXMYU8pCA3Hfv0UdiDJc6HboazxinCJJgZWyqKYxRIWmKiWnfpXsr+qF6ntmBR/tC6yHbOL22gQ== - dependencies: - nx "14.8.3" - "@nrwl/cli@14.8.4": version "14.8.4" resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-14.8.4.tgz#036ccf235e23a07410addf04900e647cc83153bf" @@ -3225,6 +3218,13 @@ dependencies: nx "14.8.4" +"@nrwl/cli@15.0.0": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-15.0.0.tgz#7b00d95a6502f83fdd84f8888fd1ba7a180cdd07" + integrity sha512-D0zAhZ375bQnoUM2HLifMzAa75A3/lC9OkkewsiVVbqaznjEIry8ezHZepgfjFRVzLr3ue7FIpDEH3iJIYzvVw== + dependencies: + nx "15.0.0" + "@nrwl/devkit@14.8.4": version "14.8.4" resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-14.8.4.tgz#15812910878a50220dc5944693e2d84795308b31" @@ -3235,14 +3235,15 @@ ignore "^5.0.4" tslib "^2.3.0" -"@nrwl/devkit@>=14.8.1 < 16": - version "14.8.3" - resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-14.8.3.tgz#c73230d48970f34257e59c820a86920d66380d82" - integrity sha512-jEH+oKS4F4MJvoIe0Zw6zUODO2j2ib7f+62D4lMDKl5qopcgnKyU9rVnSCDolqCH81j326dfr8b7FfE6Z7p71A== +"@nrwl/devkit@>=14.8.6 < 16": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-15.0.0.tgz#755bc07581a57e0ae87f68a7562ab86ff737e919" + integrity sha512-ALtPfILlxLDg77rV/XNdDGbhUkh0gZPj/4Ehy3ScvVqPhTrDIZNLGX13dXgUUF9xhGb7SXPmvzZkduBpqmHnfQ== dependencies: "@phenomnomnominal/tsquery" "4.1.1" ejs "^3.1.7" ignore "^5.0.4" + semver "7.3.4" tslib "^2.3.0" "@nrwl/jest@14.8.4": @@ -3289,13 +3290,6 @@ tar "6.1.11" yargs-parser ">=21.0.1" -"@nrwl/tao@14.8.3": - version "14.8.3" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-14.8.3.tgz#2d95902cd66694b5293cad349ad2bba2b8ef45ea" - integrity sha512-lN7+1biSM/7PYMMgh3jjOXJ9fe6VjhVrtZsDcB6lcklpShjXfHXqlpXDM7vjlw19aLeZMdFWHFoU2C5BTBtzgQ== - dependencies: - nx "14.8.3" - "@nrwl/tao@14.8.4": version "14.8.4" resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-14.8.4.tgz#77ad1f92928f58ef5a338e4df5efbb3a89d6e84b" @@ -3303,6 +3297,13 @@ dependencies: nx "14.8.4" +"@nrwl/tao@15.0.0": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-15.0.0.tgz#128499a4256e408716f7347131a3ed32d1fec5f0" + integrity sha512-qup1eSWYwp/KVrw/wxeWBvYttQ9dcbQnqpXb5NQMD31SpXEZSpJB1i3GV/o6CF5qQQSNLwICXZx25rNTTQAqpg== + dependencies: + nx "15.0.0" + "@nrwl/workspace@14.8.4": version "14.8.4" resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-14.8.4.tgz#dd06b7d3d7e0b0757464580e9be4d0c69de2cf63" @@ -4826,13 +4827,6 @@ axe-core@^4.4.3: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f" integrity sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w== -axios@0.21.1: - version "0.21.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" - integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== - dependencies: - follow-redirects "^1.10.0" - axios@^0.21.1: version "0.21.4" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" @@ -7472,7 +7466,7 @@ flux@^4.0.1: fbemitter "^3.0.0" fbjs "^3.0.0" -follow-redirects@^1.0.0, follow-redirects@^1.10.0, follow-redirects@^1.14.0, follow-redirects@^1.14.7, follow-redirects@^1.15.0: +follow-redirects@^1.0.0, follow-redirects@^1.14.0, follow-redirects@^1.14.7, follow-redirects@^1.15.0: version "1.15.2" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== @@ -9530,33 +9524,33 @@ latest-version@^5.1.0: dependencies: package-json "^6.3.0" -lerna@5.6.2: - version "5.6.2" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-5.6.2.tgz#cdcdfe4e8bf07eccb4ecff1c216def9c67e62af2" - integrity sha512-Y0yMPslvnBnTZi7Nrs/gDyYZYauNf61xWNCehISHIORxZmmpoluNkcWTfcyb47is5uJQCv5QJX5xKKubbs+a6w== - dependencies: - "@lerna/add" "5.6.2" - "@lerna/bootstrap" "5.6.2" - "@lerna/changed" "5.6.2" - "@lerna/clean" "5.6.2" - "@lerna/cli" "5.6.2" - "@lerna/command" "5.6.2" - "@lerna/create" "5.6.2" - "@lerna/diff" "5.6.2" - "@lerna/exec" "5.6.2" - "@lerna/import" "5.6.2" - "@lerna/info" "5.6.2" - "@lerna/init" "5.6.2" - "@lerna/link" "5.6.2" - "@lerna/list" "5.6.2" - "@lerna/publish" "5.6.2" - "@lerna/run" "5.6.2" - "@lerna/version" "5.6.2" - "@nrwl/devkit" ">=14.8.1 < 16" +lerna@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-6.0.1.tgz#7b14f05d1e17dc628478d33f225a579a6088d317" + integrity sha512-aNodtj1jyuEqzYmkYh+vTfRuzLkG3RZkvYxFCuLeXXzIYD5pjMHtf+1q4m03SPsZt+cElhhwkgjdg6GjihraBw== + dependencies: + "@lerna/add" "6.0.1" + "@lerna/bootstrap" "6.0.1" + "@lerna/changed" "6.0.1" + "@lerna/clean" "6.0.1" + "@lerna/cli" "6.0.1" + "@lerna/command" "6.0.1" + "@lerna/create" "6.0.1" + "@lerna/diff" "6.0.1" + "@lerna/exec" "6.0.1" + "@lerna/import" "6.0.1" + "@lerna/info" "6.0.1" + "@lerna/init" "6.0.1" + "@lerna/link" "6.0.1" + "@lerna/list" "6.0.1" + "@lerna/publish" "6.0.1" + "@lerna/run" "6.0.1" + "@lerna/version" "6.0.1" + "@nrwl/devkit" ">=14.8.6 < 16" import-local "^3.0.2" inquirer "^8.2.4" npmlog "^6.0.2" - nx ">=14.8.1 < 16" + nx ">=14.8.6 < 16" typescript "^3 || ^4" leven@^3.1.0: @@ -10599,18 +10593,18 @@ nth-check@^2.0.0, nth-check@^2.0.1: dependencies: boolbase "^1.0.0" -nx@14.8.3, "nx@>=14.8.1 < 16": - version "14.8.3" - resolved "https://registry.yarnpkg.com/nx/-/nx-14.8.3.tgz#6f6e5c579d37683aa182c1829f7f9ac44e838900" - integrity sha512-6aMYrzlTqE77vHbaE1teI5P1A2oYkJGkuDMIo/zegRwUxCAjRzLAluUgPrmgqhuPTyTDn8p4aDfxAWV3Q0o/2Q== +nx@14.8.4: + version "14.8.4" + resolved "https://registry.yarnpkg.com/nx/-/nx-14.8.4.tgz#7a1f92409ed82aaf99d2ff190c47617179c5c6d2" + integrity sha512-J7QlmG6rsdR+1Ry0pohPZXHpPN1lzE70lvuCXveyU61VX8HsrbZBzgLif07BUT8lHbs7ORaOJSZd4BCqZBJSSw== dependencies: - "@nrwl/cli" "14.8.3" - "@nrwl/tao" "14.8.3" + "@nrwl/cli" "14.8.4" + "@nrwl/tao" "14.8.4" "@parcel/watcher" "2.0.4" "@yarnpkg/lockfile" "^1.1.0" "@yarnpkg/parsers" "^3.0.0-rc.18" "@zkochan/js-yaml" "0.0.6" - axios "0.21.1" + axios "^1.0.0" chalk "4.1.0" chokidar "^3.5.1" cli-cursor "3.1.0" @@ -10640,13 +10634,13 @@ nx@14.8.3, "nx@>=14.8.1 < 16": yargs "^17.4.0" yargs-parser "21.0.1" -nx@14.8.4: - version "14.8.4" - resolved "https://registry.yarnpkg.com/nx/-/nx-14.8.4.tgz#7a1f92409ed82aaf99d2ff190c47617179c5c6d2" - integrity sha512-J7QlmG6rsdR+1Ry0pohPZXHpPN1lzE70lvuCXveyU61VX8HsrbZBzgLif07BUT8lHbs7ORaOJSZd4BCqZBJSSw== +nx@15.0.0, "nx@>=14.8.6 < 16": + version "15.0.0" + resolved "https://registry.yarnpkg.com/nx/-/nx-15.0.0.tgz#8f1a291b7393861242b5c0f0d03c6317aed9c182" + integrity sha512-uh9Ou5oj7yr6Uyp4QhqW1vIVoanYn1sJM1jzOyoT17GAhhODfS0BtQgUvlmInDuRqP8LMaPg4LXFMby07U1HXg== dependencies: - "@nrwl/cli" "14.8.4" - "@nrwl/tao" "14.8.4" + "@nrwl/cli" "15.0.0" + "@nrwl/tao" "15.0.0" "@parcel/watcher" "2.0.4" "@yarnpkg/lockfile" "^1.1.0" "@yarnpkg/parsers" "^3.0.0-rc.18" @@ -14564,12 +14558,12 @@ yargs-parser@20.2.4: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== -yargs-parser@21.0.1, yargs-parser@^21.0.0: +yargs-parser@21.0.1: version "21.0.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== -yargs-parser@>=21.0.1: +yargs-parser@>=21.0.1, yargs-parser@^21.0.0: version "21.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== From fe80a432a856dab09a3fc19c791ce66483fdda42 Mon Sep 17 00:00:00 2001 From: Adnan Hashmi <56730784+adnanhashmi09@users.noreply.github.com> Date: Mon, 24 Oct 2022 07:40:02 +0530 Subject: [PATCH 060/193] chore(eslint-plugin): [prefer-nullish-coalescing] removed forceSuggestionFixer option (#5835) --- packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts b/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts index 6d820369b0a..ca40160e982 100644 --- a/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts +++ b/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts @@ -48,9 +48,6 @@ export default util.createRule({ ignoreMixedLogicalExpressions: { type: 'boolean', }, - forceSuggestionFixer: { - type: 'boolean', - }, }, additionalProperties: false, }, From 96e1c6c171a34b0793c50c3dba853c3999a6bd49 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sun, 23 Oct 2022 22:11:32 -0400 Subject: [PATCH 061/193] fix(eslint-plugin): [no-base-to-string] ignore Error, URL, and URLSearchParams by default (#5839) --- packages/eslint-plugin/src/rules/no-base-to-string.ts | 2 +- packages/eslint-plugin/tests/rules/no-base-to-string.test.ts | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/eslint-plugin/src/rules/no-base-to-string.ts b/packages/eslint-plugin/src/rules/no-base-to-string.ts index 8c81878238f..8b8521491f2 100644 --- a/packages/eslint-plugin/src/rules/no-base-to-string.ts +++ b/packages/eslint-plugin/src/rules/no-base-to-string.ts @@ -48,7 +48,7 @@ export default util.createRule({ }, defaultOptions: [ { - ignoredTypeNames: ['RegExp'], + ignoredTypeNames: ['Error', 'RegExp', 'URL', 'URLSearchParams'], }, ], create(context, [option]) { diff --git a/packages/eslint-plugin/tests/rules/no-base-to-string.test.ts b/packages/eslint-plugin/tests/rules/no-base-to-string.test.ts index a60ac656a40..c8af0c48ad8 100644 --- a/packages/eslint-plugin/tests/rules/no-base-to-string.test.ts +++ b/packages/eslint-plugin/tests/rules/no-base-to-string.test.ts @@ -113,6 +113,9 @@ tag\`\${{}}\`; return \`\${v}\`; } `, + "'' += new Error();", + "'' += new URL();", + "'' += new URLSearchParams();", ], invalid: [ { From e70a10aea684bc6bca05b69bfce3bae769a5f5ab Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Mon, 24 Oct 2022 06:44:18 -0700 Subject: [PATCH 062/193] feat(eslint-plugin): [no-unsafe-declaration-merging] switch to use scope analysis instead of type information (#5865) --- .../rules/no-unsafe-declaration-merging.ts | 45 ++++++++++++++----- .../no-unsafe-declaration-merging.test.ts | 16 +++---- 2 files changed, 39 insertions(+), 22 deletions(-) diff --git a/packages/eslint-plugin/src/rules/no-unsafe-declaration-merging.ts b/packages/eslint-plugin/src/rules/no-unsafe-declaration-merging.ts index 7982fe5c5f4..89d68db6e67 100644 --- a/packages/eslint-plugin/src/rules/no-unsafe-declaration-merging.ts +++ b/packages/eslint-plugin/src/rules/no-unsafe-declaration-merging.ts @@ -1,5 +1,6 @@ +import type { Scope } from '@typescript-eslint/scope-manager'; import type { TSESTree } from '@typescript-eslint/utils'; -import * as ts from 'typescript'; +import { AST_NODE_TYPES } from '@typescript-eslint/utils'; import * as util from '../util'; @@ -10,7 +11,7 @@ export default util.createRule({ docs: { description: 'Disallow unsafe declaration merging', recommended: 'strict', - requiresTypeChecking: true, + requiresTypeChecking: false, }, messages: { unsafeMerging: @@ -20,17 +21,22 @@ export default util.createRule({ }, defaultOptions: [], create(context) { - const parserServices = util.getParserServices(context); - const checker = parserServices.program.getTypeChecker(); - function checkUnsafeDeclaration( + scope: Scope, node: TSESTree.Identifier, - unsafeKind: ts.SyntaxKind, + unsafeKind: AST_NODE_TYPES, ): void { - const tsNode = parserServices.esTreeNodeToTSNodeMap.get(node); - const type = checker.getTypeAtLocation(tsNode); - const symbol = type.getSymbol(); - if (symbol?.declarations?.some(decl => decl.kind === unsafeKind)) { + const variable = scope.set.get(node.name); + if (!variable) { + return; + } + + const defs = variable.defs; + if (defs.length <= 1) { + return; + } + + if (defs.some(def => def.node.type === unsafeKind)) { context.report({ node, messageId: 'unsafeMerging', @@ -41,11 +47,26 @@ export default util.createRule({ return { ClassDeclaration(node): void { if (node.id) { - checkUnsafeDeclaration(node.id, ts.SyntaxKind.InterfaceDeclaration); + // by default eslint returns the inner class scope for the ClassDeclaration node + // but we want the outer scope within which merged variables will sit + const currentScope = context.getScope().upper; + if (currentScope == null) { + return; + } + + checkUnsafeDeclaration( + currentScope, + node.id, + AST_NODE_TYPES.TSInterfaceDeclaration, + ); } }, TSInterfaceDeclaration(node): void { - checkUnsafeDeclaration(node.id, ts.SyntaxKind.ClassDeclaration); + checkUnsafeDeclaration( + context.getScope(), + node.id, + AST_NODE_TYPES.ClassDeclaration, + ); }, }; }, diff --git a/packages/eslint-plugin/tests/rules/no-unsafe-declaration-merging.test.ts b/packages/eslint-plugin/tests/rules/no-unsafe-declaration-merging.test.ts index e92c1ed36e7..1feabbe8158 100644 --- a/packages/eslint-plugin/tests/rules/no-unsafe-declaration-merging.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unsafe-declaration-merging.test.ts @@ -80,23 +80,19 @@ class Foo {} }, { code: ` -namespace Foo { - export interface Bar {} -} -namespace Foo { - export class Bar {} -} +class Foo {} +interface Foo {} `, errors: [ { messageId: 'unsafeMerging', - line: 3, - column: 20, + line: 2, + column: 7, }, { messageId: 'unsafeMerging', - line: 6, - column: 16, + line: 3, + column: 11, }, ], }, From a6d8f7edb84f9f6dd59a76faf53bf686756e2aed Mon Sep 17 00:00:00 2001 From: Sviatoslav Miller Date: Mon, 24 Oct 2022 20:32:48 +0300 Subject: [PATCH 063/193] fix(type-utils): prevent stack overflow in `isTypeReadonly` (#5860) fix(eslint-plugin): isTypeReadonly stack overflow (#4476) Co-authored-by: Josh Goldberg --- .../prefer-readonly-parameter-types.test.ts | 18 ++++++++++++++++++ packages/type-utils/src/isTypeReadonly.ts | 4 ++++ .../type-utils/tests/isTypeReadonly.test.ts | 14 ++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/packages/eslint-plugin/tests/rules/prefer-readonly-parameter-types.test.ts b/packages/eslint-plugin/tests/rules/prefer-readonly-parameter-types.test.ts index 219b8cbdb08..b6b499b0efd 100644 --- a/packages/eslint-plugin/tests/rules/prefer-readonly-parameter-types.test.ts +++ b/packages/eslint-plugin/tests/rules/prefer-readonly-parameter-types.test.ts @@ -5,6 +5,7 @@ import type { InferMessageIdsTypeFromRule, InferOptionsTypeFromRule, } from '../../src/util'; +import { readonlynessOptionsDefaults } from '../../src/util'; import { getFixturesRootDir, noFormat, RuleTester } from '../RuleTester'; type MessageIds = InferMessageIdsTypeFromRule; @@ -362,6 +363,23 @@ ruleTester.run('prefer-readonly-parameter-types', rule, { }, ], }, + { + name: 'circular readonly types (Bug: #4476)', + code: ` + interface Obj { + readonly [K: string]: Obj; + } + + function foo(event: Obj): void {} + `, + options: [ + { + checkParameterProperties: true, + ignoreInferredTypes: false, + ...readonlynessOptionsDefaults, + }, + ], + }, ], invalid: [ // arrays diff --git a/packages/type-utils/src/isTypeReadonly.ts b/packages/type-utils/src/isTypeReadonly.ts index 42dcc2ce907..cac7690ea3a 100644 --- a/packages/type-utils/src/isTypeReadonly.ts +++ b/packages/type-utils/src/isTypeReadonly.ts @@ -113,6 +113,10 @@ function isTypeReadonlyObject( return Readonlyness.Mutable; } + if (indexInfo.type === type) { + return Readonlyness.Readonly; + } + return isTypeReadonlyRecurser( checker, indexInfo.type, diff --git a/packages/type-utils/tests/isTypeReadonly.test.ts b/packages/type-utils/tests/isTypeReadonly.test.ts index 60d822b57a1..77d9f65b2f9 100644 --- a/packages/type-utils/tests/isTypeReadonly.test.ts +++ b/packages/type-utils/tests/isTypeReadonly.test.ts @@ -134,6 +134,13 @@ describe('isTypeReadonly', () => { ); }); + describe('is readonly circular', () => { + const runTests = runTestIsReadonly; + + it('handles circular readonly PropertySignature inside a readonly IndexSignature', () => + runTests('interface Test { readonly [key: string]: Test };')); + }); + describe('is not readonly', () => { const runTests = runTestIsNotReadonly; @@ -145,6 +152,13 @@ describe('isTypeReadonly', () => { runTests, ); }); + + describe('is not readonly circular', () => { + const runTests = runTestIsNotReadonly; + + it('handles circular mutable PropertySignature inside a readonly IndexSignature', () => + runTests('interface Test { [key: string]: Test };')); + }); }); describe('Union', () => { From 9eea5f423fa99683af1f9a43ea15a7b3c0f78ef3 Mon Sep 17 00:00:00 2001 From: "typescript-eslint[bot]" Date: Mon, 24 Oct 2022 17:39:14 +0000 Subject: [PATCH 064/193] chore: publish v5.41.0 --- CHANGELOG.md | 12 ++++++++++++ lerna.json | 2 +- packages/ast-spec/CHANGELOG.md | 4 ++++ packages/ast-spec/package.json | 2 +- packages/eslint-plugin-internal/CHANGELOG.md | 4 ++++ packages/eslint-plugin-internal/package.json | 6 +++--- packages/eslint-plugin-tslint/CHANGELOG.md | 4 ++++ packages/eslint-plugin-tslint/package.json | 6 +++--- packages/eslint-plugin/CHANGELOG.md | 12 ++++++++++++ packages/eslint-plugin/package.json | 8 ++++---- packages/experimental-utils/CHANGELOG.md | 4 ++++ packages/experimental-utils/package.json | 4 ++-- packages/parser/CHANGELOG.md | 4 ++++ packages/parser/package.json | 8 ++++---- packages/scope-manager/CHANGELOG.md | 4 ++++ packages/scope-manager/package.json | 8 ++++---- packages/shared-fixtures/CHANGELOG.md | 4 ++++ packages/shared-fixtures/package.json | 2 +- packages/type-utils/CHANGELOG.md | 6 ++++++ packages/type-utils/package.json | 8 ++++---- packages/types/CHANGELOG.md | 4 ++++ packages/types/package.json | 2 +- packages/typescript-estree/CHANGELOG.md | 4 ++++ packages/typescript-estree/package.json | 8 ++++---- packages/utils/CHANGELOG.md | 4 ++++ packages/utils/package.json | 10 +++++----- packages/visitor-keys/CHANGELOG.md | 4 ++++ packages/visitor-keys/package.json | 4 ++-- packages/website-eslint/CHANGELOG.md | 4 ++++ packages/website-eslint/package.json | 16 ++++++++-------- packages/website/CHANGELOG.md | 4 ++++ packages/website/package.json | 8 ++++---- 32 files changed, 133 insertions(+), 51 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ba013f3d3a1..0304329f3aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) + +### Bug Fixes + +- **eslint-plugin:** [no-base-to-string] ignore Error, URL, and URLSearchParams by default ([#5839](https://github.com/typescript-eslint/typescript-eslint/issues/5839)) ([96e1c6c](https://github.com/typescript-eslint/typescript-eslint/commit/96e1c6c171a34b0793c50c3dba853c3999a6bd49)) +- **type-utils:** prevent stack overflow in `isTypeReadonly` ([#5860](https://github.com/typescript-eslint/typescript-eslint/issues/5860)) ([a6d8f7e](https://github.com/typescript-eslint/typescript-eslint/commit/a6d8f7edb84f9f6dd59a76faf53bf686756e2aed)), closes [#4476](https://github.com/typescript-eslint/typescript-eslint/issues/4476) + +### Features + +- **eslint-plugin:** [no-unsafe-declaration-merging] switch to use scope analysis instead of type information ([#5865](https://github.com/typescript-eslint/typescript-eslint/issues/5865)) ([e70a10a](https://github.com/typescript-eslint/typescript-eslint/commit/e70a10aea684bc6bca05b69bfce3bae769a5f5ab)) +- **eslint-plugin:** add no-unsafe-declaration-merging ([#5840](https://github.com/typescript-eslint/typescript-eslint/issues/5840)) ([3728031](https://github.com/typescript-eslint/typescript-eslint/commit/3728031c659dabde7658cd54184951d4be9aabcb)) + ## [5.40.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.0...v5.40.1) (2022-10-17) ### Bug Fixes diff --git a/lerna.json b/lerna.json index 758485853fd..9e451c6323f 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "5.40.1", + "version": "5.41.0", "npmClient": "yarn", "useWorkspaces": true, "stream": true diff --git a/packages/ast-spec/CHANGELOG.md b/packages/ast-spec/CHANGELOG.md index ef521466d46..5d890f335a6 100644 --- a/packages/ast-spec/CHANGELOG.md +++ b/packages/ast-spec/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) + +**Note:** Version bump only for package @typescript-eslint/ast-spec + ## [5.40.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.0...v5.40.1) (2022-10-17) **Note:** Version bump only for package @typescript-eslint/ast-spec diff --git a/packages/ast-spec/package.json b/packages/ast-spec/package.json index 03659533192..35df9004ba6 100644 --- a/packages/ast-spec/package.json +++ b/packages/ast-spec/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/ast-spec", - "version": "5.40.1", + "version": "5.41.0", "description": "TypeScript-ESTree AST spec", "private": true, "keywords": [ diff --git a/packages/eslint-plugin-internal/CHANGELOG.md b/packages/eslint-plugin-internal/CHANGELOG.md index 9b8c32313ea..eb09c888159 100644 --- a/packages/eslint-plugin-internal/CHANGELOG.md +++ b/packages/eslint-plugin-internal/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) + +**Note:** Version bump only for package @typescript-eslint/eslint-plugin-internal + ## [5.40.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.0...v5.40.1) (2022-10-17) **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 8847ac3ee0e..489a40472ef 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": "5.40.1", + "version": "5.41.0", "private": true, "main": "dist/index.js", "scripts": { @@ -14,8 +14,8 @@ }, "dependencies": { "@types/prettier": "*", - "@typescript-eslint/scope-manager": "5.40.1", - "@typescript-eslint/utils": "5.40.1", + "@typescript-eslint/scope-manager": "5.41.0", + "@typescript-eslint/utils": "5.41.0", "prettier": "*" } } diff --git a/packages/eslint-plugin-tslint/CHANGELOG.md b/packages/eslint-plugin-tslint/CHANGELOG.md index efe3a5dc046..cf95068ce8e 100644 --- a/packages/eslint-plugin-tslint/CHANGELOG.md +++ b/packages/eslint-plugin-tslint/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) + +**Note:** Version bump only for package @typescript-eslint/eslint-plugin-tslint + ## [5.40.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.0...v5.40.1) (2022-10-17) **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 d2703079347..cbe14473287 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": "5.40.1", + "version": "5.41.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/utils": "5.40.1", + "@typescript-eslint/utils": "5.41.0", "lodash": "^4.17.21" }, "peerDependencies": { @@ -48,6 +48,6 @@ }, "devDependencies": { "@types/lodash": "*", - "@typescript-eslint/parser": "5.40.1" + "@typescript-eslint/parser": "5.41.0" } } diff --git a/packages/eslint-plugin/CHANGELOG.md b/packages/eslint-plugin/CHANGELOG.md index 2056d19ba61..7b5a3d1fbc6 100644 --- a/packages/eslint-plugin/CHANGELOG.md +++ b/packages/eslint-plugin/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) + +### Bug Fixes + +- **eslint-plugin:** [no-base-to-string] ignore Error, URL, and URLSearchParams by default ([#5839](https://github.com/typescript-eslint/typescript-eslint/issues/5839)) ([96e1c6c](https://github.com/typescript-eslint/typescript-eslint/commit/96e1c6c171a34b0793c50c3dba853c3999a6bd49)) +- **type-utils:** prevent stack overflow in `isTypeReadonly` ([#5860](https://github.com/typescript-eslint/typescript-eslint/issues/5860)) ([a6d8f7e](https://github.com/typescript-eslint/typescript-eslint/commit/a6d8f7edb84f9f6dd59a76faf53bf686756e2aed)), closes [#4476](https://github.com/typescript-eslint/typescript-eslint/issues/4476) + +### Features + +- **eslint-plugin:** [no-unsafe-declaration-merging] switch to use scope analysis instead of type information ([#5865](https://github.com/typescript-eslint/typescript-eslint/issues/5865)) ([e70a10a](https://github.com/typescript-eslint/typescript-eslint/commit/e70a10aea684bc6bca05b69bfce3bae769a5f5ab)) +- **eslint-plugin:** add no-unsafe-declaration-merging ([#5840](https://github.com/typescript-eslint/typescript-eslint/issues/5840)) ([3728031](https://github.com/typescript-eslint/typescript-eslint/commit/3728031c659dabde7658cd54184951d4be9aabcb)) + ## [5.40.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.0...v5.40.1) (2022-10-17) ### Bug Fixes diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index 9b8ebc757f8..c977c64b8bc 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/eslint-plugin", - "version": "5.40.1", + "version": "5.41.0", "description": "TypeScript plugin for ESLint", "keywords": [ "eslint", @@ -44,9 +44,9 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/scope-manager": "5.40.1", - "@typescript-eslint/type-utils": "5.40.1", - "@typescript-eslint/utils": "5.40.1", + "@typescript-eslint/scope-manager": "5.41.0", + "@typescript-eslint/type-utils": "5.41.0", + "@typescript-eslint/utils": "5.41.0", "debug": "^4.3.4", "ignore": "^5.2.0", "regexpp": "^3.2.0", diff --git a/packages/experimental-utils/CHANGELOG.md b/packages/experimental-utils/CHANGELOG.md index 018890e363d..5b2bc9b5d9b 100644 --- a/packages/experimental-utils/CHANGELOG.md +++ b/packages/experimental-utils/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) + +**Note:** Version bump only for package @typescript-eslint/experimental-utils + ## [5.40.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.0...v5.40.1) (2022-10-17) **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 64d5f0ce683..8056c69d658 100644 --- a/packages/experimental-utils/package.json +++ b/packages/experimental-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/experimental-utils", - "version": "5.40.1", + "version": "5.41.0", "description": "(Experimental) Utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -38,7 +38,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/utils": "5.40.1" + "@typescript-eslint/utils": "5.41.0" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" diff --git a/packages/parser/CHANGELOG.md b/packages/parser/CHANGELOG.md index 02216420db0..b8064f16b73 100644 --- a/packages/parser/CHANGELOG.md +++ b/packages/parser/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) + +**Note:** Version bump only for package @typescript-eslint/parser + ## [5.40.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.0...v5.40.1) (2022-10-17) **Note:** Version bump only for package @typescript-eslint/parser diff --git a/packages/parser/package.json b/packages/parser/package.json index e4da5c46c6e..66e27e0d0a7 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/parser", - "version": "5.40.1", + "version": "5.41.0", "description": "An ESLint custom parser which leverages TypeScript ESTree", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -45,9 +45,9 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "dependencies": { - "@typescript-eslint/scope-manager": "5.40.1", - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/typescript-estree": "5.40.1", + "@typescript-eslint/scope-manager": "5.41.0", + "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/typescript-estree": "5.41.0", "debug": "^4.3.4" }, "devDependencies": { diff --git a/packages/scope-manager/CHANGELOG.md b/packages/scope-manager/CHANGELOG.md index 5c00cdf566b..66b6e6b4f53 100644 --- a/packages/scope-manager/CHANGELOG.md +++ b/packages/scope-manager/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) + +**Note:** Version bump only for package @typescript-eslint/scope-manager + ## [5.40.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.0...v5.40.1) (2022-10-17) **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 c0df74b06f9..5bc61a61f3b 100644 --- a/packages/scope-manager/package.json +++ b/packages/scope-manager/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/scope-manager", - "version": "5.40.1", + "version": "5.41.0", "description": "TypeScript scope analyser for ESLint", "keywords": [ "eslint", @@ -38,12 +38,12 @@ "typecheck": "cd ../../ && nx typecheck @typescript-eslint/scope-manager" }, "dependencies": { - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/visitor-keys": "5.40.1" + "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/visitor-keys": "5.41.0" }, "devDependencies": { "@types/glob": "*", - "@typescript-eslint/typescript-estree": "5.40.1", + "@typescript-eslint/typescript-estree": "5.41.0", "glob": "*", "jest-specific-snapshot": "*", "make-dir": "*", diff --git a/packages/shared-fixtures/CHANGELOG.md b/packages/shared-fixtures/CHANGELOG.md index a07b889bc19..ba001fbfa5d 100644 --- a/packages/shared-fixtures/CHANGELOG.md +++ b/packages/shared-fixtures/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) + +**Note:** Version bump only for package @typescript-eslint/shared-fixtures + ## [5.40.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.0...v5.40.1) (2022-10-17) **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 c25cf06a643..864ddbf70bb 100644 --- a/packages/shared-fixtures/package.json +++ b/packages/shared-fixtures/package.json @@ -1,5 +1,5 @@ { "name": "@typescript-eslint/shared-fixtures", - "version": "5.40.1", + "version": "5.41.0", "private": true } diff --git a/packages/type-utils/CHANGELOG.md b/packages/type-utils/CHANGELOG.md index 766f6cc8a9f..09b3607c201 100644 --- a/packages/type-utils/CHANGELOG.md +++ b/packages/type-utils/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) + +### Bug Fixes + +- **type-utils:** prevent stack overflow in `isTypeReadonly` ([#5860](https://github.com/typescript-eslint/typescript-eslint/issues/5860)) ([a6d8f7e](https://github.com/typescript-eslint/typescript-eslint/commit/a6d8f7edb84f9f6dd59a76faf53bf686756e2aed)), closes [#4476](https://github.com/typescript-eslint/typescript-eslint/issues/4476) + ## [5.40.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.0...v5.40.1) (2022-10-17) **Note:** Version bump only for package @typescript-eslint/type-utils diff --git a/packages/type-utils/package.json b/packages/type-utils/package.json index e73a2ef9d7c..bdc68f60358 100644 --- a/packages/type-utils/package.json +++ b/packages/type-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/type-utils", - "version": "5.40.1", + "version": "5.41.0", "description": "Type utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -39,13 +39,13 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/typescript-estree": "5.40.1", - "@typescript-eslint/utils": "5.40.1", + "@typescript-eslint/typescript-estree": "5.41.0", + "@typescript-eslint/utils": "5.41.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, "devDependencies": { - "@typescript-eslint/parser": "5.40.1", + "@typescript-eslint/parser": "5.41.0", "typescript": "*" }, "peerDependencies": { diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index 232e36980a9..e7cfbe3fb88 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) + +**Note:** Version bump only for package @typescript-eslint/types + ## [5.40.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.0...v5.40.1) (2022-10-17) **Note:** Version bump only for package @typescript-eslint/types diff --git a/packages/types/package.json b/packages/types/package.json index 71916d87d30..78c880438fb 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/types", - "version": "5.40.1", + "version": "5.41.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 27a60a57586..cb369c72bf4 100644 --- a/packages/typescript-estree/CHANGELOG.md +++ b/packages/typescript-estree/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) + +**Note:** Version bump only for package @typescript-eslint/typescript-estree + ## [5.40.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.0...v5.40.1) (2022-10-17) **Note:** Version bump only for package @typescript-eslint/typescript-estree diff --git a/packages/typescript-estree/package.json b/packages/typescript-estree/package.json index 6341d971bb6..52de436db7b 100644 --- a/packages/typescript-estree/package.json +++ b/packages/typescript-estree/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/typescript-estree", - "version": "5.40.1", + "version": "5.41.0", "description": "A parser that converts TypeScript source code into an ESTree compatible form", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -42,8 +42,8 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/visitor-keys": "5.40.1", + "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/visitor-keys": "5.41.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -59,7 +59,7 @@ "@types/is-glob": "*", "@types/semver": "*", "@types/tmp": "*", - "@typescript-eslint/shared-fixtures": "5.40.1", + "@typescript-eslint/shared-fixtures": "5.41.0", "glob": "*", "jest-specific-snapshot": "*", "make-dir": "*", diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md index afd75880b5d..ea1b24da025 100644 --- a/packages/utils/CHANGELOG.md +++ b/packages/utils/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) + +**Note:** Version bump only for package @typescript-eslint/utils + ## [5.40.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.0...v5.40.1) (2022-10-17) ### Bug Fixes diff --git a/packages/utils/package.json b/packages/utils/package.json index cd6dd72ac88..21b80b4a9fa 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/utils", - "version": "5.40.1", + "version": "5.41.0", "description": "Utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -41,9 +41,9 @@ "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.40.1", - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/typescript-estree": "5.40.1", + "@typescript-eslint/scope-manager": "5.41.0", + "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/typescript-estree": "5.41.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -52,7 +52,7 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "devDependencies": { - "@typescript-eslint/parser": "5.40.1", + "@typescript-eslint/parser": "5.41.0", "typescript": "*" }, "funding": { diff --git a/packages/visitor-keys/CHANGELOG.md b/packages/visitor-keys/CHANGELOG.md index 348daf00b73..65df1dacb42 100644 --- a/packages/visitor-keys/CHANGELOG.md +++ b/packages/visitor-keys/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) + +**Note:** Version bump only for package @typescript-eslint/visitor-keys + ## [5.40.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.0...v5.40.1) (2022-10-17) **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 19c308f5637..9898d07c851 100644 --- a/packages/visitor-keys/package.json +++ b/packages/visitor-keys/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/visitor-keys", - "version": "5.40.1", + "version": "5.41.0", "description": "Visitor keys used to help traverse the TypeScript-ESTree AST", "keywords": [ "eslint", @@ -39,7 +39,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/types": "5.41.0", "eslint-visitor-keys": "^3.3.0" }, "devDependencies": { diff --git a/packages/website-eslint/CHANGELOG.md b/packages/website-eslint/CHANGELOG.md index f316286d869..2129728bf18 100644 --- a/packages/website-eslint/CHANGELOG.md +++ b/packages/website-eslint/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) + +**Note:** Version bump only for package @typescript-eslint/website-eslint + ## [5.40.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.0...v5.40.1) (2022-10-17) **Note:** Version bump only for package @typescript-eslint/website-eslint diff --git a/packages/website-eslint/package.json b/packages/website-eslint/package.json index 7a2af6ee4a5..f094f70c3be 100644 --- a/packages/website-eslint/package.json +++ b/packages/website-eslint/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/website-eslint", - "version": "5.40.1", + "version": "5.41.0", "private": true, "description": "ESLint which works in browsers.", "engines": { @@ -16,19 +16,19 @@ "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore" }, "dependencies": { - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/utils": "5.40.1" + "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/utils": "5.41.0" }, "devDependencies": { "@rollup/plugin-commonjs": "^23.0.0", "@rollup/plugin-json": "^5.0.0", "@rollup/plugin-node-resolve": "^15.0.0", "@rollup/pluginutils": "^5.0.0", - "@typescript-eslint/eslint-plugin": "5.40.1", - "@typescript-eslint/parser": "5.40.1", - "@typescript-eslint/scope-manager": "5.40.1", - "@typescript-eslint/typescript-estree": "5.40.1", - "@typescript-eslint/visitor-keys": "5.40.1", + "@typescript-eslint/eslint-plugin": "5.41.0", + "@typescript-eslint/parser": "5.41.0", + "@typescript-eslint/scope-manager": "5.41.0", + "@typescript-eslint/typescript-estree": "5.41.0", + "@typescript-eslint/visitor-keys": "5.41.0", "eslint": "*", "rollup": "^2.75.4", "rollup-plugin-terser": "^7.0.2", diff --git a/packages/website/CHANGELOG.md b/packages/website/CHANGELOG.md index 6a1f4324f1c..38d0670bfbc 100644 --- a/packages/website/CHANGELOG.md +++ b/packages/website/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) + +**Note:** Version bump only for package website + ## [5.40.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.0...v5.40.1) (2022-10-17) **Note:** Version bump only for package website diff --git a/packages/website/package.json b/packages/website/package.json index dc62229e43b..9469e3450a7 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -1,6 +1,6 @@ { "name": "website", - "version": "5.40.1", + "version": "5.41.0", "private": true, "scripts": { "build": "docusaurus build", @@ -21,8 +21,8 @@ "@docusaurus/remark-plugin-npm2yarn": "~2.1.0", "@docusaurus/theme-common": "~2.1.0", "@mdx-js/react": "1.6.22", - "@typescript-eslint/parser": "5.40.1", - "@typescript-eslint/website-eslint": "5.40.1", + "@typescript-eslint/parser": "5.41.0", + "@typescript-eslint/website-eslint": "5.41.0", "clsx": "^1.1.1", "eslint": "*", "json-schema": "^0.4.0", @@ -48,7 +48,7 @@ "@types/react": "^18.0.9", "@types/react-helmet": "^6.1.5", "@types/react-router-dom": "^5.3.3", - "@typescript-eslint/eslint-plugin": "5.40.1", + "@typescript-eslint/eslint-plugin": "5.41.0", "copy-webpack-plugin": "^11.0.0", "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-react": "^7.29.4", From 3bd38caf4d8d2ca48490f241788ee174805f57b1 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Mon, 24 Oct 2022 14:02:14 -0400 Subject: [PATCH 065/193] chore(website): fix Options heading level for no-empty-interface docs (#5870) --- .../docs/rules/no-empty-interface.md | 2 +- packages/eslint-plugin/tests/docs.test.ts | 29 ++++++++++++++++--- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/packages/eslint-plugin/docs/rules/no-empty-interface.md b/packages/eslint-plugin/docs/rules/no-empty-interface.md index 194a6e6a654..699ebccb64a 100644 --- a/packages/eslint-plugin/docs/rules/no-empty-interface.md +++ b/packages/eslint-plugin/docs/rules/no-empty-interface.md @@ -48,7 +48,7 @@ interface Baz extends Foo, Bar {} -### Options +## Options This rule accepts a single object option with the following default configuration: diff --git a/packages/eslint-plugin/tests/docs.test.ts b/packages/eslint-plugin/tests/docs.test.ts index 9442ed366a3..e7872a962c9 100644 --- a/packages/eslint-plugin/tests/docs.test.ts +++ b/packages/eslint-plugin/tests/docs.test.ts @@ -26,11 +26,15 @@ function tokenIs( return token.type === type; } -function tokenIsH2(token: marked.Token): token is marked.Tokens.Heading { +function tokenIsHeading(token: marked.Token): token is marked.Tokens.Heading { + return tokenIs(token, 'heading'); +} + +function tokenIsH2( + token: marked.Token, +): token is marked.Tokens.Heading & { depth: 2 } { return ( - tokenIs(token, 'heading') && - token.depth === 2 && - !/[a-z]+: /.test(token.text) + tokenIsHeading(token) && token.depth === 2 && !/[a-z]+: /.test(token.text) ); } @@ -93,6 +97,23 @@ describe('Validating rule docs', () => { expect(header.text).toBe(titleCase(header.text)), ); }); + + const importantHeadings = new Set([ + 'How to Use', + 'Options', + 'Related To', + 'When Not To Use It', + ]); + + test('important headings must be h2s', () => { + const headers = tokens.filter(tokenIsHeading); + + for (const header of headers) { + if (importantHeadings.has(header.raw.replace(/#/g, '').trim())) { + expect(header.depth).toBe(2); + } + } + }); }); } }); From 1eaae09ecca359f366b94f6a04665403f48b05c7 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Mon, 24 Oct 2022 15:09:42 -0400 Subject: [PATCH 066/193] feat(eslint-plugin): [member-ordering] add natural sort order (#5662) * [WIP] feat(eslint-plugin): [member-ordering] add natural sort order * Fix yarn.lock and split option on case sensitivity * Document it too * Remove last todos * Move member-ordering sub-tests into sub-dirs --- .../docs/rules/member-ordering.md | 18 ++- packages/eslint-plugin/package.json | 2 + .../src/rules/member-ordering.ts | 53 +++++-- ...habetically-case-insensitive-order.test.ts | 6 +- ...mber-ordering-alphabetically-order.test.ts | 6 +- ...ing-natural-case-insensitive-order.test.ts | 135 ++++++++++++++++ .../member-ordering-natural-order.test.ts | 144 ++++++++++++++++++ yarn.lock | 10 ++ 8 files changed, 352 insertions(+), 22 deletions(-) rename packages/eslint-plugin/tests/rules/{ => member-ordering}/member-ordering-alphabetically-case-insensitive-order.test.ts (98%) rename packages/eslint-plugin/tests/rules/{ => member-ordering}/member-ordering-alphabetically-order.test.ts (99%) create mode 100644 packages/eslint-plugin/tests/rules/member-ordering/member-ordering-natural-case-insensitive-order.test.ts create mode 100644 packages/eslint-plugin/tests/rules/member-ordering/member-ordering-natural-order.test.ts diff --git a/packages/eslint-plugin/docs/rules/member-ordering.md b/packages/eslint-plugin/docs/rules/member-ordering.md index 9a6ca8d5dbc..7adde7ba9a6 100644 --- a/packages/eslint-plugin/docs/rules/member-ordering.md +++ b/packages/eslint-plugin/docs/rules/member-ordering.md @@ -24,7 +24,12 @@ type OrderConfig = MemberType[] | SortedOrderConfig | 'never'; interface SortedOrderConfig { memberTypes?: MemberType[] | 'never'; - order: 'alphabetically' | 'alphabetically-case-insensitive' | 'as-written'; + order: + | 'alphabetically' + | 'alphabetically-case-insensitive' + | 'as-written' + | 'natural' + | 'natural-case-insensitive'; } // See below for the more specific MemberType strings @@ -56,6 +61,17 @@ The supported member attributes are, in order: Member attributes may be joined with a `'-'` to combine into more specific groups. For example, `'public-field'` would come before `'private-field'`. +### Orders + +The `order` value specifies what order members should be within a group. +It defaults to `as-written`, meaning any order is fine. +Other allowed values are: + +- `alphabetically`: Sorted in a-z alphabetical order, directly using string `<` comparison (so `B` comes before `a`) +- `alphabetically-case-insensitive`: Sorted in a-z alphabetical order, ignoring case (so `a` comes before `B`) +- `natural`: Same as `alphabetically`, but using [`natural-compare-lite`](https://github.com/litejs/natural-compare-lite) for more friendly sorting of numbers +- `natural-case-insensitive`: Same as `alphabetically-case-insensitive`, but using [`natural-compare-lite`](https://github.com/litejs/natural-compare-lite) for more friendly sorting of numbers + ### Default configuration The default configuration looks as follows: diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index c977c64b8bc..eb1c777d115 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -49,6 +49,7 @@ "@typescript-eslint/utils": "5.41.0", "debug": "^4.3.4", "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", "regexpp": "^3.2.0", "semver": "^7.3.7", "tsutils": "^3.21.0" @@ -57,6 +58,7 @@ "@types/debug": "*", "@types/json-schema": "*", "@types/marked": "*", + "@types/natural-compare-lite": "^1.4.0", "@types/prettier": "*", "chalk": "^5.0.1", "json-schema": "*", diff --git a/packages/eslint-plugin/src/rules/member-ordering.ts b/packages/eslint-plugin/src/rules/member-ordering.ts index 66fe9b62334..3892c989bc9 100644 --- a/packages/eslint-plugin/src/rules/member-ordering.ts +++ b/packages/eslint-plugin/src/rules/member-ordering.ts @@ -1,5 +1,6 @@ import type { JSONSchema, TSESLint, TSESTree } from '@typescript-eslint/utils'; import { AST_NODE_TYPES } from '@typescript-eslint/utils'; +import naturalCompare from 'natural-compare-lite'; import * as util from '../util'; @@ -34,10 +35,13 @@ type BaseMemberType = type MemberType = BaseMemberType | BaseMemberType[]; -type Order = +type AlphabeticalOrder = | 'alphabetically' | 'alphabetically-case-insensitive' - | 'as-written'; + | 'natural' + | 'natural-case-insensitive'; + +type Order = AlphabeticalOrder | 'as-written'; interface SortedOrderConfig { memberTypes?: MemberType[] | 'never'; @@ -87,7 +91,13 @@ const objectConfig = (memberTypes: MemberType[]): JSONSchema.JSONSchema4 => ({ }, order: { type: 'string', - enum: ['alphabetically', 'alphabetically-case-insensitive', 'as-written'], + enum: [ + 'alphabetically', + 'alphabetically-case-insensitive', + 'as-written', + 'natural', + 'natural-case-insensitive', + ], }, }, additionalProperties: false, @@ -629,7 +639,7 @@ export default util.createRule({ */ function checkAlphaSort( members: Member[], - caseSensitive: boolean, + order: AlphabeticalOrder, ): boolean { let previousName = ''; let isCorrectlySorted = true; @@ -640,11 +650,7 @@ export default util.createRule({ // Note: Not all members have names if (name) { - if ( - caseSensitive - ? name < previousName - : name.toLowerCase() < previousName.toLowerCase() - ) { + if (naturalOutOfOrder(name, previousName, order)) { context.report({ node: member, messageId: 'incorrectOrder', @@ -664,6 +670,25 @@ export default util.createRule({ return isCorrectlySorted; } + function naturalOutOfOrder( + name: string, + previousName: string, + order: AlphabeticalOrder, + ): boolean { + switch (order) { + case 'alphabetically': + return name < previousName; + case 'alphabetically-case-insensitive': + return name.toLowerCase() < previousName.toLowerCase(); + case 'natural': + return naturalCompare(name, previousName) !== 1; + case 'natural-case-insensitive': + return ( + naturalCompare(name.toLowerCase(), previousName.toLowerCase()) !== 1 + ); + } + } + /** * Validates if all members are correctly sorted. * @@ -681,7 +706,7 @@ export default util.createRule({ } // Standardize config - let order: Order | null = null; + let order: Order | undefined; let memberTypes; if (Array.isArray(orderConfig)) { @@ -691,9 +716,7 @@ export default util.createRule({ memberTypes = orderConfig.memberTypes; } - const hasAlphaSort = order?.startsWith('alphabetically'); - const alphaSortIsCaseSensitive = - order !== 'alphabetically-case-insensitive'; + const hasAlphaSort = !!(order && order !== 'as-written'); // Check order if (Array.isArray(memberTypes)) { @@ -706,11 +729,11 @@ export default util.createRule({ if (hasAlphaSort) { grouped.some( groupMember => - !checkAlphaSort(groupMember, alphaSortIsCaseSensitive), + !checkAlphaSort(groupMember, order as AlphabeticalOrder), ); } } else if (hasAlphaSort) { - checkAlphaSort(members, alphaSortIsCaseSensitive); + checkAlphaSort(members, order as AlphabeticalOrder); } } diff --git a/packages/eslint-plugin/tests/rules/member-ordering-alphabetically-case-insensitive-order.test.ts b/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-alphabetically-case-insensitive-order.test.ts similarity index 98% rename from packages/eslint-plugin/tests/rules/member-ordering-alphabetically-case-insensitive-order.test.ts rename to packages/eslint-plugin/tests/rules/member-ordering/member-ordering-alphabetically-case-insensitive-order.test.ts index d2600b17dc8..3eecfc999c9 100644 --- a/packages/eslint-plugin/tests/rules/member-ordering-alphabetically-case-insensitive-order.test.ts +++ b/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-alphabetically-case-insensitive-order.test.ts @@ -1,8 +1,8 @@ import type { TSESLint } from '@typescript-eslint/utils'; -import type { MessageIds, Options } from '../../src/rules/member-ordering'; -import rule, { defaultOrder } from '../../src/rules/member-ordering'; -import { RuleTester } from '../RuleTester'; +import type { MessageIds, Options } from '../../../src/rules/member-ordering'; +import rule, { defaultOrder } from '../../../src/rules/member-ordering'; +import { RuleTester } from '../../RuleTester'; const ruleTester = new RuleTester({ parser: '@typescript-eslint/parser', diff --git a/packages/eslint-plugin/tests/rules/member-ordering-alphabetically-order.test.ts b/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-alphabetically-order.test.ts similarity index 99% rename from packages/eslint-plugin/tests/rules/member-ordering-alphabetically-order.test.ts rename to packages/eslint-plugin/tests/rules/member-ordering/member-ordering-alphabetically-order.test.ts index 63ef55408e7..afa1a5df810 100644 --- a/packages/eslint-plugin/tests/rules/member-ordering-alphabetically-order.test.ts +++ b/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-alphabetically-order.test.ts @@ -1,8 +1,8 @@ import type { TSESLint } from '@typescript-eslint/utils'; -import type { MessageIds, Options } from '../../src/rules/member-ordering'; -import rule, { defaultOrder } from '../../src/rules/member-ordering'; -import { RuleTester } from '../RuleTester'; +import type { MessageIds, Options } from '../../../src/rules/member-ordering'; +import rule, { defaultOrder } from '../../../src/rules/member-ordering'; +import { RuleTester } from '../../RuleTester'; const ruleTester = new RuleTester({ parser: '@typescript-eslint/parser', diff --git a/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-natural-case-insensitive-order.test.ts b/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-natural-case-insensitive-order.test.ts new file mode 100644 index 00000000000..782fee826d5 --- /dev/null +++ b/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-natural-case-insensitive-order.test.ts @@ -0,0 +1,135 @@ +import rule from '../../../src/rules/member-ordering'; +import { RuleTester } from '../../RuleTester'; + +const ruleTester = new RuleTester({ + parser: '@typescript-eslint/parser', +}); + +ruleTester.run('member-ordering-natural-order', rule, { + valid: [ + { + code: ` +interface Example { + 1: number; + 5: number; + 10: number; +} + `, + options: [ + { + default: { + order: 'natural-case-insensitive', + }, + }, + ], + }, + { + code: ` +interface Example { + new (): unknown; + + a1(): void; + a5(): void; + a10(): void; + B1(): void; + B5(): void; + B10(): void; + + a1: number; + a5: number; + a10: number; + B1: number; + B5: number; + B10: number; +} + `, + options: [ + { + default: { + memberTypes: ['constructor', 'method', 'field'], + order: 'natural-case-insensitive', + }, + }, + ], + }, + ], + invalid: [ + { + code: ` +interface Example { + 1: number; + 10: number; + 5: number; +} + `, + errors: [ + { + messageId: 'incorrectOrder', + data: { + beforeMember: 10, + member: 5, + }, + line: 5, + column: 3, + }, + ], + options: [ + { + default: { + order: 'natural-case-insensitive', + }, + }, + ], + }, + + { + code: ` +interface Example { + new (): unknown; + + a1(): void; + a10(): void; + a5(): void; + B5(): void; + B10(): void; + B1(): void; + + a5: number; + a10: number; + B1: number; + a1: number; + B5: number; + B10: number; +} + `, + errors: [ + { + column: 3, + data: { + beforeMember: 'a10', + member: 'a5', + }, + line: 7, + messageId: 'incorrectOrder', + }, + { + column: 3, + data: { + beforeMember: 'B10', + member: 'B1', + }, + line: 10, + messageId: 'incorrectOrder', + }, + ], + options: [ + { + default: { + memberTypes: ['constructor', 'method', 'field'], + order: 'natural-case-insensitive', + }, + }, + ], + }, + ], +}); diff --git a/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-natural-order.test.ts b/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-natural-order.test.ts new file mode 100644 index 00000000000..c34677a81c7 --- /dev/null +++ b/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-natural-order.test.ts @@ -0,0 +1,144 @@ +import rule from '../../../src/rules/member-ordering'; +import { RuleTester } from '../../RuleTester'; + +const ruleTester = new RuleTester({ + parser: '@typescript-eslint/parser', +}); + +ruleTester.run('member-ordering-natural-order', rule, { + valid: [ + { + code: ` +interface Example { + 1: number; + 5: number; + 10: number; +} + `, + options: [ + { + default: { + order: 'natural', + }, + }, + ], + }, + { + code: ` +interface Example { + new (): unknown; + + B1(): void; + B5(): void; + B10(): void; + a1(): void; + a5(): void; + a10(): void; + + B1: number; + B5: number; + B10: number; + a1: number; + a5: number; + a10: number; +} + `, + options: [ + { + default: { + memberTypes: ['constructor', 'method', 'field'], + order: 'natural', + }, + }, + ], + }, + ], + invalid: [ + { + code: ` +interface Example { + 1: number; + 10: number; + 5: number; +} + `, + errors: [ + { + messageId: 'incorrectOrder', + data: { + beforeMember: 10, + member: 5, + }, + line: 5, + column: 3, + }, + ], + options: [ + { + default: { + order: 'natural', + }, + }, + ], + }, + + { + code: ` +interface Example { + new (): unknown; + + a1(): void; + a10(): void; + a5(): void; + B5(): void; + B10(): void; + B1(): void; + + a5: number; + a10: number; + B1: number; + a1: number; + B5: number; + B10: number; +} + `, + errors: [ + { + column: 3, + data: { + beforeMember: 'a10', + member: 'a5', + }, + line: 7, + messageId: 'incorrectOrder', + }, + { + column: 3, + data: { + beforeMember: 'a5', + member: 'B5', + }, + line: 8, + messageId: 'incorrectOrder', + }, + { + column: 3, + data: { + beforeMember: 'B10', + member: 'B1', + }, + line: 10, + messageId: 'incorrectOrder', + }, + ], + options: [ + { + default: { + memberTypes: ['constructor', 'method', 'field'], + order: 'natural', + }, + }, + ], + }, + ], +}); diff --git a/yarn.lock b/yarn.lock index 2c88e05570a..1e719261af6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4112,6 +4112,11 @@ resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== +"@types/natural-compare-lite@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@types/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#90724682da3c304dd8d643b4e9ba00f53f29d454" + integrity sha512-ZDcj/yWsRPacqKPpCExWWFq9X1JQwEOfHsu8deN1Qfa6M02z6tN4DK6AMf2IkM7709gp3QW6Bo7m2NFDhA485w== + "@types/ncp@^2.0.5": version "2.0.5" resolved "https://registry.yarnpkg.com/@types/ncp/-/ncp-2.0.5.tgz#5c53b229a321946102a188b603306162137f4fb9" @@ -10327,6 +10332,11 @@ nanoid@^3.3.4: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" From 67744db31f61acab14b5fe027fbc2844ba198c97 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Mon, 24 Oct 2022 17:43:07 -0400 Subject: [PATCH 067/193] feat(typescript-estree): clarify docs and error for program project without matching TSConfig (#5762) * feat(typescript-estree): clarify docs and error for program project without matching TSConfig * lil cspell nit * Update docs/linting/TROUBLESHOOTING.md Co-authored-by: Andrew Churchill * Apply suggestions from code review Co-authored-by: Brad Zacher * Resolved a few docs comments * A few test fixes * Remove period * Apply suggestions from code review Co-authored-by: Brad Zacher * Link to FAQ article * Reordered docs, and updated tests Co-authored-by: Andrew Churchill Co-authored-by: Brad Zacher --- docs/linting/TROUBLESHOOTING.md | 44 ++++++- docs/linting/TYPED_LINTING.md | 19 +-- .../create-program/createProjectProgram.ts | 113 +++++++++++------- .../invalidFileErrors/tsconfig.extra.json | 1 + .../lib/__snapshots__/parse.test.ts.snap | 84 ++++++++----- .../typescript-estree/tests/lib/parse.test.ts | 57 +++++++-- .../tests/lib/semanticInfo.test.ts | 4 +- 7 files changed, 219 insertions(+), 103 deletions(-) create mode 100644 packages/typescript-estree/tests/fixtures/invalidFileErrors/tsconfig.extra.json diff --git a/docs/linting/TROUBLESHOOTING.md b/docs/linting/TROUBLESHOOTING.md index f37f8780a33..e477267c476 100644 --- a/docs/linting/TROUBLESHOOTING.md +++ b/docs/linting/TROUBLESHOOTING.md @@ -28,12 +28,48 @@ If you don't find an existing extension rule, or the extension rule doesn't work > We release a new version our tooling every week. > _Please_ ensure that you [check our the latest list of "extension" rules](https://typescript-eslint.io/rules/#extension-rules) **_before_** filing an issue. -## I get errors telling me "The file must be included in at least one of the projects provided" +## I get errors telling me "ESLint was configured to run ... However, that TSConfig does not / none of those TSConfigs include this file" + +### Fixing the Error + +- If you **do not** want to lint the file: + - Use [one of the options ESLint offers](https://eslint.org/docs/latest/user-guide/configuring/ignoring-code) to ignore files, namely a `.eslintignore` file, or `ignorePatterns` config. +- If you **do** want to lint the file: + - If you **do not** want to lint the file with [type-aware linting](./TYPED_LINTING.md): + - Use [ESLint's `overrides` configuration](https://eslint.org/docs/latest/user-guide/configuring/configuration-files#configuration-based-on-glob-patterns) to configure the file to not be parsed with type information. + - A popular setup is to omit the above additions from top-level configuration and only apply them to TypeScript files via an override. + - Alternatively, you can add `parserOptions: { project: null }` to an override for the files you wish to exclude. Note that `{ project: undefined }` will not work. + - If you **do** want to lint the file with [type-aware linting](./TYPED_LINTING.md): + - Check the `include` option of each of the tsconfigs that you provide to `parserOptions.project` - you must ensure that all files match an `include` glob, or else our tooling will not be able to find it. + - If your file shouldn't be a part of one of your existing tsconfigs (for example, it is a script/tool local to the repo), then consider creating a new tsconfig (we advise calling it `tsconfig.eslint.json`) in your project root which lists this file in its `include`. For an example of this, you can check out the configuration we use in this repo: + - [`tsconfig.eslint.json`](https://github.com/typescript-eslint/typescript-eslint/blob/main/tsconfig.eslint.json) + - [`.eslintrc.js`](https://github.com/typescript-eslint/typescript-eslint/blob/main/.eslintrc.js) + +### More Details + +This error may appear from the combination of two things: + +- The ESLint configuration for the source file specifies at least one TSConfig file in `parserOptions.project` +- None of those TSConfig files includes the source file being linted + - Note that files with the same name and different extension may not be recognized by TypeScript: see [`parserOptions.project` docs](https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/parser#parseroptionsproject) -This error means that the file that's being linted is not included in any of the TSConfig files you provided us. -This happens when users have test files, config files, or similar that are not included. +When TSConfig files are specified for parsing a source file, `@typescript-eslint/parser` will use the first TSConfig that is able to include that source file (per [aka.ms/tsconfig#include](https://www.typescriptlang.org/tsconfig#include)) to generate type information. +However, if no specified TSConfig includes the source file, the parser won't be able to generate type information. + +This error most commonly happens on config files or similar that are not included in their project TSConfig(s). +For example, many projects have files like: + +- An `.eslintrc.cjs` with `parserOptions.project: ["./tsconfig.json"]` +- A `tsconfig.json` with `include: ["src"]` + +In that case, viewing the `.eslintrc.cjs` in an IDE with the ESLint extension will show the error notice that the file couldn't be linted because it isn't included in `tsconfig.json`. + +See our docs on [type aware linting](./TYPED_LINTING.md) for more information. + +## I get errors telling me "The file must be included in at least one of the projects provided" -See our docs on [type aware linting](./TYPED_LINTING.md#i-get-errors-telling-me-the-file-must-be-included-in-at-least-one-of-the-projects-provided) for solutions. +You're using an outdated version of `@typescript-eslint/parser`. +Update to the latest version to see a more informative version of this error message, explained [above](#i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file). ## I use a framework (like Vue) that requires custom file extensions, and I get errors like "You should add `parserOptions.extraFileExtensions` to your config" diff --git a/docs/linting/TYPED_LINTING.md b/docs/linting/TYPED_LINTING.md index fcf6f4b185d..8ffb708d0e3 100644 --- a/docs/linting/TYPED_LINTING.md +++ b/docs/linting/TYPED_LINTING.md @@ -52,23 +52,8 @@ This means that generally they usually only run a complete lint before a push, o ### I get errors telling me "The file must be included in at least one of the projects provided" -This error means that the file that's being linted is not included in any of the tsconfig files you provided us. -A lot of the time this happens when users have test files or similar that are not included in their normal tsconfigs. - -Depending on what you want to achieve: - -- If you **do not** want to lint the file: - - Use [one of the options ESLint offers](https://eslint.org/docs/user-guide/configuring#ignoring-files-and-directories) to ignore files, like a `.eslintignore` file, or `ignorePatterns` config. -- If you **do** want to lint the file: - - If you **do not** want to lint the file with [type-aware linting](./TYPED_LINTING.md): - - Use [ESLint's `overrides` configuration](https://eslint.org/docs/user-guide/configuring#configuration-based-on-glob-patterns) to configure the file to not be parsed with type information. - - A popular setup is to omit the above additions from top-level configuration and only apply them to TypeScript files via an override. - - Alternatively, you can add `parserOptions: { project: null }` to an override for the files you wish to exclude. Note that `{ project: undefined }` will not work. - - If you **do** want to lint the file with [type-aware linting](./TYPED_LINTING.md): - - Check the `include` option of each of the tsconfigs that you provide to `parserOptions.project` - you must ensure that all files match an `include` glob, or else our tooling will not be able to find it. - - If your file shouldn't be a part of one of your existing tsconfigs (for example, it is a script/tool local to the repo), then consider creating a new tsconfig (we advise calling it `tsconfig.eslint.json`) in your project root which lists this file in its `include`. For an example of this, you can check out the configuration we use in this repo: - - [`tsconfig.eslint.json`](https://github.com/typescript-eslint/typescript-eslint/blob/main/tsconfig.eslint.json) - - [`.eslintrc.js`](https://github.com/typescript-eslint/typescript-eslint/blob/main/.eslintrc.js) +You're using an outdated version of `@typescript-eslint/parser`. +Update to the latest version to see a more informative version of this error message, explained [Troubleshooting and FAQs](./TROUBLESHOOTING.md##i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file). ## Troubleshooting diff --git a/packages/typescript-estree/src/create-program/createProjectProgram.ts b/packages/typescript-estree/src/create-program/createProjectProgram.ts index 359c2b2dc90..9ece5e4a827 100644 --- a/packages/typescript-estree/src/create-program/createProjectProgram.ts +++ b/packages/typescript-estree/src/create-program/createProjectProgram.ts @@ -34,65 +34,90 @@ function createProjectProgram( ): ASTAndProgram | undefined { log('Creating project program for: %s', extra.filePath); - const astAndProgram = firstDefined( - getProgramsForProjects(code, extra.filePath, extra), - currentProgram => getAstFromProgram(currentProgram, extra), + const programsForProjects = getProgramsForProjects( + code, + extra.filePath, + extra, + ); + const astAndProgram = firstDefined(programsForProjects, currentProgram => + getAstFromProgram(currentProgram, extra), ); - if (!astAndProgram && !createDefaultProgram) { - // the file was either not matched within the tsconfig, or the extension wasn't expected - const errorLines = [ - '"parserOptions.project" has been set for @typescript-eslint/parser.', - `The file does not match your project config: ${path.relative( - extra.tsconfigRootDir || process.cwd(), - extra.filePath, - )}.`, - ]; - let hasMatchedAnError = false; + // The file was either matched within the tsconfig, or we allow creating a default program + if (astAndProgram || createDefaultProgram) { + return astAndProgram; + } - const extraFileExtensions = extra.extraFileExtensions || []; + const describeFilePath = (filePath: string): string => { + const relative = path.relative( + extra.tsconfigRootDir || process.cwd(), + filePath, + ); + if (extra.tsconfigRootDir) { + return `/${relative}`; + } + return `/${relative}`; + }; - extraFileExtensions.forEach(extraExtension => { - if (!extraExtension.startsWith('.')) { - errorLines.push( - `Found unexpected extension "${extraExtension}" specified with the "extraFileExtensions" option. Did you mean ".${extraExtension}"?`, - ); - } - if (DEFAULT_EXTRA_FILE_EXTENSIONS.includes(extraExtension)) { - errorLines.push( - `You unnecessarily included the extension "${extraExtension}" with the "extraFileExtensions" option. This extension is already handled by the parser by default.`, - ); - } - }); + const describedFilePath = describeFilePath(extra.filePath); + const relativeProjects = extra.projects.map(describeFilePath); + const describedPrograms = + relativeProjects.length === 1 + ? relativeProjects[0] + : `\n${relativeProjects.map(project => `- ${project}`).join('\n')}`; + const errorLines = [ + `ESLint was configured to run on \`${describedFilePath}\` using \`parserOptions.project\`: ${describedPrograms}`, + ]; + let hasMatchedAnError = false; + + const extraFileExtensions = extra.extraFileExtensions || []; - const fileExtension = path.extname(extra.filePath); - if (!DEFAULT_EXTRA_FILE_EXTENSIONS.includes(fileExtension)) { - const nonStandardExt = `The extension for the file (${fileExtension}) is non-standard`; - if (extraFileExtensions.length > 0) { - if (!extraFileExtensions.includes(fileExtension)) { - errorLines.push( - `${nonStandardExt}. It should be added to your existing "parserOptions.extraFileExtensions".`, - ); - hasMatchedAnError = true; - } - } else { + extraFileExtensions.forEach(extraExtension => { + if (!extraExtension.startsWith('.')) { + errorLines.push( + `Found unexpected extension \`${extraExtension}\` specified with the \`parserOptions.extraFileExtensions\` option. Did you mean \`.${extraExtension}\`?`, + ); + } + if (DEFAULT_EXTRA_FILE_EXTENSIONS.includes(extraExtension)) { + errorLines.push( + `You unnecessarily included the extension \`${extraExtension}\` with the \`parserOptions.extraFileExtensions\` option. This extension is already handled by the parser by default.`, + ); + } + }); + + const fileExtension = path.extname(extra.filePath); + if (!DEFAULT_EXTRA_FILE_EXTENSIONS.includes(fileExtension)) { + const nonStandardExt = `The extension for the file (\`${fileExtension}\`) is non-standard`; + if (extraFileExtensions.length > 0) { + if (!extraFileExtensions.includes(fileExtension)) { errorLines.push( - `${nonStandardExt}. You should add "parserOptions.extraFileExtensions" to your config.`, + `${nonStandardExt}. It should be added to your existing \`parserOptions.extraFileExtensions\`.`, ); hasMatchedAnError = true; } - } - - if (!hasMatchedAnError) { + } else { errorLines.push( - 'The file must be included in at least one of the projects provided.', + `${nonStandardExt}. You should add \`parserOptions.extraFileExtensions\` to your config.`, ); + hasMatchedAnError = true; } + } - throw new Error(errorLines.join('\n')); + if (!hasMatchedAnError) { + const [describedInclusions, describedSpecifiers] = + extra.projects.length === 1 + ? ['that TSConfig does not', 'that TSConfig'] + : ['none of those TSConfigs', 'one of those TSConfigs']; + errorLines.push( + `However, ${describedInclusions} include this file. Either:`, + `- Change ESLint's list of included files to not include this file`, + `- Change ${describedSpecifiers} to include this file`, + `- Create a new TSConfig that includes this file and include it in your parserOptions.project`, + `See the TypeScript ESLint docs for more info: https://typescript-eslint.io/docs/linting/troubleshooting##i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file`, + ); } - return astAndProgram; + throw new Error(errorLines.join('\n')); } export { createProjectProgram }; diff --git a/packages/typescript-estree/tests/fixtures/invalidFileErrors/tsconfig.extra.json b/packages/typescript-estree/tests/fixtures/invalidFileErrors/tsconfig.extra.json new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/packages/typescript-estree/tests/fixtures/invalidFileErrors/tsconfig.extra.json @@ -0,0 +1 @@ +{} diff --git a/packages/typescript-estree/tests/lib/__snapshots__/parse.test.ts.snap b/packages/typescript-estree/tests/lib/__snapshots__/parse.test.ts.snap index 9816bea2914..81341b5e35f 100644 --- a/packages/typescript-estree/tests/lib/__snapshots__/parse.test.ts.snap +++ b/packages/typescript-estree/tests/lib/__snapshots__/parse.test.ts.snap @@ -1,59 +1,85 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`parseAndGenerateServices invalid file error messages "parserOptions.extraFileExtensions" is empty the extension does not match 1`] = ` -""parserOptions.project" has been set for @typescript-eslint/parser. -The file does not match your project config: other/unknownFileType.unknown. -The extension for the file (.unknown) is non-standard. You should add "parserOptions.extraFileExtensions" to your config." +"ESLint was configured to run on \`/other/unknownFileType.unknown\` using \`parserOptions.project\`: /tsconfig.json +The extension for the file (\`.unknown\`) is non-standard. You should add \`parserOptions.extraFileExtensions\` to your config." `; exports[`parseAndGenerateServices invalid file error messages "parserOptions.extraFileExtensions" is non-empty invalid extension 1`] = ` -""parserOptions.project" has been set for @typescript-eslint/parser. -The file does not match your project config: other/unknownFileType.unknown. -Found unexpected extension "unknown" specified with the "extraFileExtensions" option. Did you mean ".unknown"? -The extension for the file (.unknown) is non-standard. It should be added to your existing "parserOptions.extraFileExtensions"." +"ESLint was configured to run on \`/other/unknownFileType.unknown\` using \`parserOptions.project\`: /tsconfig.json +Found unexpected extension \`unknown\` specified with the \`parserOptions.extraFileExtensions\` option. Did you mean \`.unknown\`? +The extension for the file (\`.unknown\`) is non-standard. It should be added to your existing \`parserOptions.extraFileExtensions\`." `; exports[`parseAndGenerateServices invalid file error messages "parserOptions.extraFileExtensions" is non-empty the extension does not match 1`] = ` -""parserOptions.project" has been set for @typescript-eslint/parser. -The file does not match your project config: other/unknownFileType.unknown. -The extension for the file (.unknown) is non-standard. It should be added to your existing "parserOptions.extraFileExtensions"." +"ESLint was configured to run on \`/other/unknownFileType.unknown\` using \`parserOptions.project\`: /tsconfig.json +The extension for the file (\`.unknown\`) is non-standard. It should be added to your existing \`parserOptions.extraFileExtensions\`." `; exports[`parseAndGenerateServices invalid file error messages "parserOptions.extraFileExtensions" is non-empty the extension matches duplicate extension 1`] = ` -""parserOptions.project" has been set for @typescript-eslint/parser. -The file does not match your project config: ts/notIncluded.ts. -You unnecessarily included the extension ".ts" with the "extraFileExtensions" option. This extension is already handled by the parser by default. -The file must be included in at least one of the projects provided." +"ESLint was configured to run on \`/ts/notIncluded.ts\` using \`parserOptions.project\`: /tsconfig.json +You unnecessarily included the extension \`.ts\` with the \`parserOptions.extraFileExtensions\` option. This extension is already handled by the parser by default. +However, that TSConfig does not include this file. Either: +- Change ESLint's list of included files to not include this file +- Change that TSConfig to include this file +- Create a new TSConfig that includes this file and include it in your parserOptions.project +See the TypeScript ESLint docs for more info: https://typescript-eslint.io/docs/linting/troubleshooting##i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file" `; exports[`parseAndGenerateServices invalid file error messages "parserOptions.extraFileExtensions" is non-empty the extension matches the file isn't included 1`] = ` -""parserOptions.project" has been set for @typescript-eslint/parser. -The file does not match your project config: other/notIncluded.vue. -The file must be included in at least one of the projects provided." +"ESLint was configured to run on \`/other/notIncluded.vue\` using \`parserOptions.project\`: /tsconfig.json +However, that TSConfig does not include this file. Either: +- Change ESLint's list of included files to not include this file +- Change that TSConfig to include this file +- Create a new TSConfig that includes this file and include it in your parserOptions.project +See the TypeScript ESLint docs for more info: https://typescript-eslint.io/docs/linting/troubleshooting##i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file" `; exports[`parseAndGenerateServices invalid file error messages project includes errors for not included files 1`] = ` -""parserOptions.project" has been set for @typescript-eslint/parser. -The file does not match your project config: ts/notIncluded0j1.ts. -The file must be included in at least one of the projects provided." +"ESLint was configured to run on \`/ts/notIncluded0j1.ts\` using \`parserOptions.project\`: /tsconfig.json +However, that TSConfig does not include this file. Either: +- Change ESLint's list of included files to not include this file +- Change that TSConfig to include this file +- Create a new TSConfig that includes this file and include it in your parserOptions.project +See the TypeScript ESLint docs for more info: https://typescript-eslint.io/docs/linting/troubleshooting##i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file" `; exports[`parseAndGenerateServices invalid file error messages project includes errors for not included files 2`] = ` -""parserOptions.project" has been set for @typescript-eslint/parser. -The file does not match your project config: ts/notIncluded02.tsx. -The file must be included in at least one of the projects provided." +"ESLint was configured to run on \`/ts/notIncluded02.tsx\` using \`parserOptions.project\`: /tsconfig.json +However, that TSConfig does not include this file. Either: +- Change ESLint's list of included files to not include this file +- Change that TSConfig to include this file +- Create a new TSConfig that includes this file and include it in your parserOptions.project +See the TypeScript ESLint docs for more info: https://typescript-eslint.io/docs/linting/troubleshooting##i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file" `; exports[`parseAndGenerateServices invalid file error messages project includes errors for not included files 3`] = ` -""parserOptions.project" has been set for @typescript-eslint/parser. -The file does not match your project config: js/notIncluded01.js. -The file must be included in at least one of the projects provided." +"ESLint was configured to run on \`/js/notIncluded01.js\` using \`parserOptions.project\`: /tsconfig.json +However, that TSConfig does not include this file. Either: +- Change ESLint's list of included files to not include this file +- Change that TSConfig to include this file +- Create a new TSConfig that includes this file and include it in your parserOptions.project +See the TypeScript ESLint docs for more info: https://typescript-eslint.io/docs/linting/troubleshooting##i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file" `; exports[`parseAndGenerateServices invalid file error messages project includes errors for not included files 4`] = ` -""parserOptions.project" has been set for @typescript-eslint/parser. -The file does not match your project config: js/notIncluded02.jsx. -The file must be included in at least one of the projects provided." +"ESLint was configured to run on \`/js/notIncluded02.jsx\` using \`parserOptions.project\`: /tsconfig.json +However, that TSConfig does not include this file. Either: +- Change ESLint's list of included files to not include this file +- Change that TSConfig to include this file +- Create a new TSConfig that includes this file and include it in your parserOptions.project +See the TypeScript ESLint docs for more info: https://typescript-eslint.io/docs/linting/troubleshooting##i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file" +`; + +exports[`parseAndGenerateServices invalid project error messages throws when non of multiple projects include the file 1`] = ` +"ESLint was configured to run on \`/ts/notIncluded0j1.ts\` using \`parserOptions.project\`: +- /tsconfig.json +- /tsconfig.extra.json +However, none of those TSConfigs include this file. Either: +- Change ESLint's list of included files to not include this file +- Change one of those TSConfigs to include this file +- Create a new TSConfig that includes this file and include it in your parserOptions.project +See the TypeScript ESLint docs for more info: https://typescript-eslint.io/docs/linting/troubleshooting##i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file" `; exports[`parseAndGenerateServices isolated parsing should parse .js file - with JSX content - parserOptions.jsx = false 1`] = ` diff --git a/packages/typescript-estree/tests/lib/parse.test.ts b/packages/typescript-estree/tests/lib/parse.test.ts index 54d4c12dacd..dab87e38ab6 100644 --- a/packages/typescript-estree/tests/lib/parse.test.ts +++ b/packages/typescript-estree/tests/lib/parse.test.ts @@ -35,11 +35,32 @@ jest.mock('../../src/create-program/shared', () => { }; }); +// Tests in CI by default run with lowercase program file names, +// resulting in path.relative results starting with many "../"s +jest.mock('typescript', () => { + const ts = jest.requireActual('typescript'); + return { + ...ts, + sys: { + ...ts.sys, + useCaseSensitiveFileNames: true, + }, + }; +}); + const astConverterMock = jest.mocked(astConverterModule.astConverter); const createDefaultCompilerOptionsFromExtra = jest.mocked( sharedParserUtilsModule.createDefaultCompilerOptionsFromExtra, ); +/** + * Aligns paths between environments, node for windows uses `\`, for linux and mac uses `/` + */ +function alignErrorPath(error: Error): never { + error.message = error.message.replace(/\\(?!["])/gm, '/'); + throw error; +} + beforeEach(() => { jest.clearAllMocks(); }); @@ -539,14 +560,7 @@ describe('parseAndGenerateServices', () => { filePath: join(PROJECT_DIR, filePath), }); } catch (error) { - /** - * Aligns paths between environments, node for windows uses `\`, for linux and mac uses `/` - */ - (error as Error).message = (error as Error).message.replace( - /\\(?!["])/gm, - '/', - ); - throw error; + throw alignErrorPath(error as Error); } }; @@ -617,6 +631,33 @@ describe('parseAndGenerateServices', () => { }); }); + describe('invalid project error messages', () => { + it('throws when non of multiple projects include the file', () => { + const PROJECT_DIR = resolve(FIXTURES_DIR, '../invalidFileErrors'); + const code = 'var a = true'; + const config: TSESTreeOptions = { + comment: true, + tokens: true, + range: true, + loc: true, + tsconfigRootDir: PROJECT_DIR, + project: ['./**/tsconfig.json', './**/tsconfig.extra.json'], + }; + const testParse = (filePath: string) => (): void => { + try { + parser.parseAndGenerateServices(code, { + ...config, + filePath: join(PROJECT_DIR, filePath), + }); + } catch (error) { + throw alignErrorPath(error as Error); + } + }; + + expect(testParse('ts/notIncluded0j1.ts')).toThrowErrorMatchingSnapshot(); + }); + }); + describe('debug options', () => { const debugEnable = jest.fn(); beforeEach(() => { diff --git a/packages/typescript-estree/tests/lib/semanticInfo.test.ts b/packages/typescript-estree/tests/lib/semanticInfo.test.ts index 59a59e08a53..fae6a383662 100644 --- a/packages/typescript-estree/tests/lib/semanticInfo.test.ts +++ b/packages/typescript-estree/tests/lib/semanticInfo.test.ts @@ -240,7 +240,9 @@ describe('semanticInfo', () => { `function M() { return Base }`, createOptions(''), ), - ).toThrow(/The file does not match your project config: estree.ts/); + ).toThrow( + /ESLint was configured to run on `\/estree\.ts` using/, + ); }); it('non-existent project file', () => { From c4e0d8678e0398f3ab85510f40ad6f97832b9e6d Mon Sep 17 00:00:00 2001 From: Sviatoslav Miller Date: Tue, 25 Oct 2022 16:51:35 +0300 Subject: [PATCH 068/193] feat(website): Add a happy message to playground output pane when no errors or AST (#5868) (#5873) * feat(website): Add a happy message to playground output pane when no errors or AST (#5868) * Apply suggestions from code review Co-authored-by: Josh Goldberg --- .../website/src/components/ErrorsViewer.tsx | 68 ++++++++++++------- 1 file changed, 43 insertions(+), 25 deletions(-) diff --git a/packages/website/src/components/ErrorsViewer.tsx b/packages/website/src/components/ErrorsViewer.tsx index 3e0a890ee0a..0789b84d78c 100644 --- a/packages/website/src/components/ErrorsViewer.tsx +++ b/packages/website/src/components/ErrorsViewer.tsx @@ -91,6 +91,18 @@ function ErrorBlock({ ); } +function SuccessBlock(): JSX.Element { + return ( +
+
+
+
All is ok!
+
+
+
+ ); +} + export default function ErrorsViewer({ value, }: ErrorsViewerProps): JSX.Element { @@ -113,31 +125,37 @@ export default function ErrorsViewer({ return (
- {value?.map(({ group, uri, items }) => { - return ( -
-

- {group} - {uri && ( - <> - {' - '} - - docs - - - )} -

- {items.map((item, index) => ( - - ))} -
- ); - })} + {value?.length ? ( + value.map(({ group, uri, items }) => { + return ( +
+

+ {group} + {uri && ( + <> + {' - '} + + docs + + + )} +

+ {items.map((item, index) => ( + + ))} +
+ ); + }) + ) : ( +
+ +
+ )}
); } From 8ddcc9a767a0794b17e603a8b11af998154ad3cb Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Tue, 25 Oct 2022 18:22:28 -0400 Subject: [PATCH 069/193] chore: document and refactor 'extra' to 'parserSettings' (#5834) --- .../typescript-estree/src/ast-converter.ts | 18 +- .../create-program/createDefaultProgram.ts | 35 +- .../create-program/createIsolatedProgram.ts | 22 +- .../create-program/createProjectProgram.ts | 38 +- .../src/create-program/createSourceFile.ts | 14 +- .../src/create-program/createWatchProgram.ts | 62 +-- .../src/create-program/shared.ts | 17 +- .../src/create-program/useProvidedPrograms.ts | 12 +- .../src/parseSettings/createParseSettings.ts | 201 ++++++++ .../src/parseSettings/index.ts | 124 +++++ .../src/parseSettings/inferSingleRun.ts | 46 ++ .../src/parseSettings/warnAboutTSVersion.ts | 45 ++ .../typescript-estree/src/parser-options.ts | 28 - packages/typescript-estree/src/parser.ts | 487 ++---------------- .../src/components/linter/WebLinter.ts | 4 +- .../website/src/components/linter/config.ts | 7 +- 16 files changed, 572 insertions(+), 588 deletions(-) create mode 100644 packages/typescript-estree/src/parseSettings/createParseSettings.ts create mode 100644 packages/typescript-estree/src/parseSettings/index.ts create mode 100644 packages/typescript-estree/src/parseSettings/inferSingleRun.ts create mode 100644 packages/typescript-estree/src/parseSettings/warnAboutTSVersion.ts diff --git a/packages/typescript-estree/src/ast-converter.ts b/packages/typescript-estree/src/ast-converter.ts index 86a1970aef7..b9be864f529 100644 --- a/packages/typescript-estree/src/ast-converter.ts +++ b/packages/typescript-estree/src/ast-converter.ts @@ -4,13 +4,13 @@ import type { ASTMaps } from './convert'; import { Converter, convertError } from './convert'; import { convertComments } from './convert-comments'; import { convertTokens } from './node-utils'; -import type { Extra } from './parser-options'; +import type { ParseSettings } from './parseSettings'; import { simpleTraverse } from './simple-traverse'; import type { TSESTree } from './ts-estree'; export function astConverter( ast: SourceFile, - extra: Extra, + parseSettings: ParseSettings, shouldPreserveNodeMaps: boolean, ): { estree: TSESTree.Program; astMaps: ASTMaps } { /** @@ -26,7 +26,7 @@ export function astConverter( * Recursively convert the TypeScript AST into an ESTree-compatible AST */ const instance = new Converter(ast, { - errorOnUnknownASTType: extra.errorOnUnknownASTType || false, + errorOnUnknownASTType: parseSettings.errorOnUnknownASTType || false, shouldPreserveNodeMaps, }); @@ -35,15 +35,15 @@ export function astConverter( /** * Optionally remove range and loc if specified */ - if (!extra.range || !extra.loc) { + if (!parseSettings.range || !parseSettings.loc) { simpleTraverse(estree, { enter: node => { - if (!extra.range) { + if (!parseSettings.range) { // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- TS 4.0 made this an error because the types aren't optional // @ts-expect-error delete node.range; } - if (!extra.loc) { + if (!parseSettings.loc) { // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- TS 4.0 made this an error because the types aren't optional // @ts-expect-error delete node.loc; @@ -55,15 +55,15 @@ export function astConverter( /** * Optionally convert and include all tokens in the AST */ - if (extra.tokens) { + if (parseSettings.tokens) { estree.tokens = convertTokens(ast); } /** * Optionally convert and include all comments in the AST */ - if (extra.comment) { - estree.comments = convertComments(ast, extra.code); + if (parseSettings.comment) { + estree.comments = convertComments(ast, parseSettings.code); } const astMaps = instance.getASTMaps(); diff --git a/packages/typescript-estree/src/create-program/createDefaultProgram.ts b/packages/typescript-estree/src/create-program/createDefaultProgram.ts index bebb194aef5..a2de81399d2 100644 --- a/packages/typescript-estree/src/create-program/createDefaultProgram.ts +++ b/packages/typescript-estree/src/create-program/createDefaultProgram.ts @@ -2,8 +2,8 @@ import debug from 'debug'; import path from 'path'; import * as ts from 'typescript'; -import type { Extra } from '../parser-options'; -import type { ASTAndProgram, CanonicalPath } from './shared'; +import type { ParseSettings } from '../parseSettings'; +import type { ASTAndProgram } from './shared'; import { createDefaultCompilerOptionsFromExtra, getModuleResolver, @@ -12,27 +12,26 @@ import { const log = debug('typescript-eslint:typescript-estree:createDefaultProgram'); /** - * @param code The code of the file being linted - * @param extra The config object - * @param extra.tsconfigRootDir The root directory for relative tsconfig paths - * @param extra.projects Provided tsconfig paths + * @param parseSettings Internal settings for parsing the file * @returns If found, returns the source file corresponding to the code and the containing program */ function createDefaultProgram( - code: string, - extra: Extra, + parseSettings: ParseSettings, ): ASTAndProgram | undefined { - log('Getting default program for: %s', extra.filePath || 'unnamed file'); + log( + 'Getting default program for: %s', + parseSettings.filePath || 'unnamed file', + ); - if (!extra.projects || extra.projects.length !== 1) { + if (parseSettings.projects?.length !== 1) { return undefined; } - const tsconfigPath: CanonicalPath = extra.projects[0]; + const tsconfigPath = parseSettings.projects[0]; const commandLine = ts.getParsedCommandLineOfConfigFile( tsconfigPath, - createDefaultCompilerOptionsFromExtra(extra), + createDefaultCompilerOptionsFromExtra(parseSettings), { ...ts.sys, onUnRecoverableConfigFileDiagnostic: () => {} }, ); @@ -45,24 +44,24 @@ function createDefaultProgram( /* setParentNodes */ true, ); - if (extra.moduleResolver) { + if (parseSettings.moduleResolver) { compilerHost.resolveModuleNames = getModuleResolver( - extra.moduleResolver, + parseSettings.moduleResolver, ).resolveModuleNames; } const oldReadFile = compilerHost.readFile; compilerHost.readFile = (fileName: string): string | undefined => - path.normalize(fileName) === path.normalize(extra.filePath) - ? code + path.normalize(fileName) === path.normalize(parseSettings.filePath) + ? parseSettings.code : oldReadFile(fileName); const program = ts.createProgram( - [extra.filePath], + [parseSettings.filePath], commandLine.options, compilerHost, ); - const ast = program.getSourceFile(extra.filePath); + const ast = program.getSourceFile(parseSettings.filePath); return ast && { ast, program }; } diff --git a/packages/typescript-estree/src/create-program/createIsolatedProgram.ts b/packages/typescript-estree/src/create-program/createIsolatedProgram.ts index ba19b843aeb..5ec1c8e0fe7 100644 --- a/packages/typescript-estree/src/create-program/createIsolatedProgram.ts +++ b/packages/typescript-estree/src/create-program/createIsolatedProgram.ts @@ -1,7 +1,7 @@ import debug from 'debug'; import * as ts from 'typescript'; -import type { Extra } from '../parser-options'; +import type { ParseSettings } from '../parseSettings'; import { getScriptKind } from './getScriptKind'; import type { ASTAndProgram } from './shared'; import { createDefaultCompilerOptionsFromExtra } from './shared'; @@ -12,11 +12,11 @@ const log = debug('typescript-eslint:typescript-estree:createIsolatedProgram'); * @param code The code of the file being linted * @returns Returns a new source file and program corresponding to the linted code */ -function createIsolatedProgram(code: string, extra: Extra): ASTAndProgram { +function createIsolatedProgram(parseSettings: ParseSettings): ASTAndProgram { log( 'Getting isolated program in %s mode for: %s', - extra.jsx ? 'TSX' : 'TS', - extra.filePath, + parseSettings.jsx ? 'TSX' : 'TS', + parseSettings.filePath, ); const compilerHost: ts.CompilerHost = { @@ -24,7 +24,7 @@ function createIsolatedProgram(code: string, extra: Extra): ASTAndProgram { return true; }, getCanonicalFileName() { - return extra.filePath; + return parseSettings.filePath; }, getCurrentDirectory() { return ''; @@ -43,10 +43,10 @@ function createIsolatedProgram(code: string, extra: Extra): ASTAndProgram { getSourceFile(filename: string) { return ts.createSourceFile( filename, - code, + parseSettings.code, ts.ScriptTarget.Latest, /* setParentNodes */ true, - getScriptKind(extra.filePath, extra.jsx), + getScriptKind(parseSettings.filePath, parseSettings.jsx), ); }, readFile() { @@ -61,17 +61,17 @@ function createIsolatedProgram(code: string, extra: Extra): ASTAndProgram { }; const program = ts.createProgram( - [extra.filePath], + [parseSettings.filePath], { noResolve: true, target: ts.ScriptTarget.Latest, - jsx: extra.jsx ? ts.JsxEmit.Preserve : undefined, - ...createDefaultCompilerOptionsFromExtra(extra), + jsx: parseSettings.jsx ? ts.JsxEmit.Preserve : undefined, + ...createDefaultCompilerOptionsFromExtra(parseSettings), }, compilerHost, ); - const ast = program.getSourceFile(extra.filePath); + const ast = program.getSourceFile(parseSettings.filePath); if (!ast) { throw new Error( 'Expected an ast to be returned for the single-file isolated program.', diff --git a/packages/typescript-estree/src/create-program/createProjectProgram.ts b/packages/typescript-estree/src/create-program/createProjectProgram.ts index 9ece5e4a827..326100d3578 100644 --- a/packages/typescript-estree/src/create-program/createProjectProgram.ts +++ b/packages/typescript-estree/src/create-program/createProjectProgram.ts @@ -3,7 +3,7 @@ import path from 'path'; import * as ts from 'typescript'; import { firstDefined } from '../node-utils'; -import type { Extra } from '../parser-options'; +import type { ParseSettings } from '../parseSettings'; import { getProgramsForProjects } from './createWatchProgram'; import type { ASTAndProgram } from './shared'; import { getAstFromProgram } from './shared'; @@ -22,45 +22,37 @@ const DEFAULT_EXTRA_FILE_EXTENSIONS = [ ] as readonly string[]; /** - * @param code The code of the file being linted - * @param createDefaultProgram True if the default program should be created - * @param extra The config object - * @returns If found, returns the source file corresponding to the code and the containing program + * @param parseSettings Internal settings for parsing the file + * @returns If found, the source file corresponding to the code and the containing program */ function createProjectProgram( - code: string, - createDefaultProgram: boolean, - extra: Extra, + parseSettings: ParseSettings, ): ASTAndProgram | undefined { - log('Creating project program for: %s', extra.filePath); + log('Creating project program for: %s', parseSettings.filePath); - const programsForProjects = getProgramsForProjects( - code, - extra.filePath, - extra, - ); + const programsForProjects = getProgramsForProjects(parseSettings); const astAndProgram = firstDefined(programsForProjects, currentProgram => - getAstFromProgram(currentProgram, extra), + getAstFromProgram(currentProgram, parseSettings), ); // The file was either matched within the tsconfig, or we allow creating a default program - if (astAndProgram || createDefaultProgram) { + if (astAndProgram || parseSettings.createDefaultProgram) { return astAndProgram; } const describeFilePath = (filePath: string): string => { const relative = path.relative( - extra.tsconfigRootDir || process.cwd(), + parseSettings.tsconfigRootDir || process.cwd(), filePath, ); - if (extra.tsconfigRootDir) { + if (parseSettings.tsconfigRootDir) { return `/${relative}`; } return `/${relative}`; }; - const describedFilePath = describeFilePath(extra.filePath); - const relativeProjects = extra.projects.map(describeFilePath); + const describedFilePath = describeFilePath(parseSettings.filePath); + const relativeProjects = parseSettings.projects.map(describeFilePath); const describedPrograms = relativeProjects.length === 1 ? relativeProjects[0] @@ -70,7 +62,7 @@ function createProjectProgram( ]; let hasMatchedAnError = false; - const extraFileExtensions = extra.extraFileExtensions || []; + const extraFileExtensions = parseSettings.extraFileExtensions || []; extraFileExtensions.forEach(extraExtension => { if (!extraExtension.startsWith('.')) { @@ -85,7 +77,7 @@ function createProjectProgram( } }); - const fileExtension = path.extname(extra.filePath); + const fileExtension = path.extname(parseSettings.filePath); if (!DEFAULT_EXTRA_FILE_EXTENSIONS.includes(fileExtension)) { const nonStandardExt = `The extension for the file (\`${fileExtension}\`) is non-standard`; if (extraFileExtensions.length > 0) { @@ -105,7 +97,7 @@ function createProjectProgram( if (!hasMatchedAnError) { const [describedInclusions, describedSpecifiers] = - extra.projects.length === 1 + parseSettings.projects.length === 1 ? ['that TSConfig does not', 'that TSConfig'] : ['none of those TSConfigs', 'one of those TSConfigs']; errorLines.push( diff --git a/packages/typescript-estree/src/create-program/createSourceFile.ts b/packages/typescript-estree/src/create-program/createSourceFile.ts index 107f027e46d..806e503f0e4 100644 --- a/packages/typescript-estree/src/create-program/createSourceFile.ts +++ b/packages/typescript-estree/src/create-program/createSourceFile.ts @@ -1,24 +1,24 @@ import debug from 'debug'; import * as ts from 'typescript'; -import type { Extra } from '../parser-options'; +import type { ParseSettings } from '../parseSettings'; import { getScriptKind } from './getScriptKind'; const log = debug('typescript-eslint:typescript-estree:createSourceFile'); -function createSourceFile(code: string, extra: Extra): ts.SourceFile { +function createSourceFile(parseSettings: ParseSettings): ts.SourceFile { log( 'Getting AST without type information in %s mode for: %s', - extra.jsx ? 'TSX' : 'TS', - extra.filePath, + parseSettings.jsx ? 'TSX' : 'TS', + parseSettings.filePath, ); return ts.createSourceFile( - extra.filePath, - code, + parseSettings.filePath, + parseSettings.code, ts.ScriptTarget.Latest, /* setParentNodes */ true, - getScriptKind(extra.filePath, extra.jsx), + getScriptKind(parseSettings.filePath, parseSettings.jsx), ); } diff --git a/packages/typescript-estree/src/create-program/createWatchProgram.ts b/packages/typescript-estree/src/create-program/createWatchProgram.ts index 1511023a97e..0e32f8ec1e5 100644 --- a/packages/typescript-estree/src/create-program/createWatchProgram.ts +++ b/packages/typescript-estree/src/create-program/createWatchProgram.ts @@ -3,7 +3,7 @@ import fs from 'fs'; import semver from 'semver'; import * as ts from 'typescript'; -import type { Extra } from '../parser-options'; +import type { ParseSettings } from '../parseSettings'; import type { CanonicalPath } from './shared'; import { canonicalDirname, @@ -121,40 +121,34 @@ function createHash(content: string): string { function updateCachedFileList( tsconfigPath: CanonicalPath, program: ts.Program, - extra: Extra, + parseSettings: ParseSettings, ): Set { - const fileList = extra.EXPERIMENTAL_useSourceOfProjectReferenceRedirect - ? new Set( - program.getSourceFiles().map(sf => getCanonicalFileName(sf.fileName)), - ) - : new Set(program.getRootFileNames().map(f => getCanonicalFileName(f))); + const fileList = + parseSettings.EXPERIMENTAL_useSourceOfProjectReferenceRedirect + ? new Set( + program.getSourceFiles().map(sf => getCanonicalFileName(sf.fileName)), + ) + : new Set(program.getRootFileNames().map(f => getCanonicalFileName(f))); programFileListCache.set(tsconfigPath, fileList); return fileList; } /** * Calculate project environments using options provided by consumer and paths from config - * @param code The code being linted - * @param filePathIn The path of the file being parsed - * @param extra.tsconfigRootDir The root directory for relative tsconfig paths - * @param extra.projects Provided tsconfig paths + * @param parseSettings Internal settings for parsing the file * @returns The programs corresponding to the supplied tsconfig paths */ -function getProgramsForProjects( - code: string, - filePathIn: string, - extra: Extra, -): ts.Program[] { - const filePath = getCanonicalFileName(filePathIn); +function getProgramsForProjects(parseSettings: ParseSettings): ts.Program[] { + const filePath = getCanonicalFileName(parseSettings.filePath); const results = []; // preserve reference to code and file being linted - currentLintOperationState.code = code; + currentLintOperationState.code = parseSettings.code; currentLintOperationState.filePath = filePath; // Update file version if necessary const fileWatchCallbacks = fileWatchCallbackTrackingMap.get(filePath); - const codeHash = createHash(code); + const codeHash = createHash(parseSettings.code); if ( parsedFilesSeenHash.get(filePath) !== codeHash && fileWatchCallbacks && @@ -174,7 +168,11 @@ function getProgramsForProjects( let updatedProgram: ts.Program | null = null; if (!fileList) { updatedProgram = existingWatch.getProgram().getProgram(); - fileList = updateCachedFileList(tsconfigPath, updatedProgram, extra); + fileList = updateCachedFileList( + tsconfigPath, + updatedProgram, + parseSettings, + ); } if (fileList.has(filePath)) { @@ -198,7 +196,7 @@ function getProgramsForProjects( * - the required program hasn't been created yet, or * - the file is new/renamed, and the program hasn't been updated. */ - for (const tsconfigPath of extra.projects) { + for (const tsconfigPath of parseSettings.projects) { const existingWatch = knownWatchProgramMap.get(tsconfigPath); if (existingWatch) { @@ -218,7 +216,7 @@ function getProgramsForProjects( const fileList = updateCachedFileList( tsconfigPath, updatedProgram, - extra, + parseSettings, ); if (fileList.has(filePath)) { log('Found updated program for file. %s', filePath); @@ -230,7 +228,7 @@ function getProgramsForProjects( continue; } - const programWatch = createWatchProgram(tsconfigPath, extra); + const programWatch = createWatchProgram(tsconfigPath, parseSettings); knownWatchProgramMap.set(tsconfigPath, programWatch); const program = programWatch.getProgram().getProgram(); @@ -238,7 +236,7 @@ function getProgramsForProjects( program.getTypeChecker(); // cache and check the file list - const fileList = updateCachedFileList(tsconfigPath, program, extra); + const fileList = updateCachedFileList(tsconfigPath, program, parseSettings); if (fileList.has(filePath)) { log('Found program for file. %s', filePath); // we can return early because we know this program contains the file @@ -257,23 +255,23 @@ const isRunningNoTimeoutFix = semver.satisfies(ts.version, '>=3.9.0-beta', { function createWatchProgram( tsconfigPath: string, - extra: Extra, + parseSettings: ParseSettings, ): ts.WatchOfConfigFile { log('Creating watch program for %s.', tsconfigPath); // create compiler host const watchCompilerHost = ts.createWatchCompilerHost( tsconfigPath, - createDefaultCompilerOptionsFromExtra(extra), + createDefaultCompilerOptionsFromExtra(parseSettings), ts.sys, ts.createAbstractBuilder, diagnosticReporter, /*reportWatchStatus*/ () => {}, ) as WatchCompilerHostOfConfigFile; - if (extra.moduleResolver) { + if (parseSettings.moduleResolver) { watchCompilerHost.resolveModuleNames = getModuleResolver( - extra.moduleResolver, + parseSettings.moduleResolver, ).resolveModuleNames; } @@ -337,7 +335,9 @@ function createWatchProgram( ): string[] => oldReadDirectory( path, - !extensions ? undefined : extensions.concat(extra.extraFileExtensions), + !extensions + ? undefined + : extensions.concat(parseSettings.extraFileExtensions), exclude, include, depth, @@ -345,7 +345,7 @@ function createWatchProgram( oldOnDirectoryStructureHostCreate(host); }; // This works only on 3.9 - watchCompilerHost.extraFileExtensions = extra.extraFileExtensions.map( + watchCompilerHost.extraFileExtensions = parseSettings.extraFileExtensions.map( extension => ({ extension, isMixedContent: true, @@ -359,7 +359,7 @@ function createWatchProgram( * See https://github.com/typescript-eslint/typescript-eslint/issues/2094 */ watchCompilerHost.useSourceOfProjectReferenceRedirect = (): boolean => - extra.EXPERIMENTAL_useSourceOfProjectReferenceRedirect; + parseSettings.EXPERIMENTAL_useSourceOfProjectReferenceRedirect; // Since we don't want to asynchronously update program we want to disable timeout methods // So any changes in the program will be delayed and updated when getProgram is called on watch diff --git a/packages/typescript-estree/src/create-program/shared.ts b/packages/typescript-estree/src/create-program/shared.ts index 63ba34a5f83..dd50f757dce 100644 --- a/packages/typescript-estree/src/create-program/shared.ts +++ b/packages/typescript-estree/src/create-program/shared.ts @@ -2,7 +2,8 @@ import path from 'path'; import type { Program } from 'typescript'; import * as ts from 'typescript'; -import type { Extra, ModuleResolver } from '../parser-options'; +import type { ModuleResolver } from '../parser-options'; +import type { ParseSettings } from '../parseSettings'; interface ASTAndProgram { ast: ts.SourceFile; @@ -33,9 +34,9 @@ const DEFAULT_COMPILER_OPTIONS: ts.CompilerOptions = { }; function createDefaultCompilerOptionsFromExtra( - extra: Extra, + parseSettings: ParseSettings, ): ts.CompilerOptions { - if (extra.debugLevel.has('typescript')) { + if (parseSettings.debugLevel.has('typescript')) { return { ...DEFAULT_COMPILER_OPTIONS, extendedDiagnostics: true, @@ -63,10 +64,10 @@ function getCanonicalFileName(filePath: string): CanonicalPath { return correctPathCasing(normalized) as CanonicalPath; } -function ensureAbsolutePath(p: string, extra: Extra): string { +function ensureAbsolutePath(p: string, tsconfigRootDir: string): string { return path.isAbsolute(p) ? p - : path.join(extra.tsconfigRootDir || process.cwd(), p); + : path.join(tsconfigRootDir || process.cwd(), p); } function canonicalDirname(p: CanonicalPath): CanonicalPath { @@ -92,12 +93,12 @@ function getExtension(fileName: string | undefined): string | null { function getAstFromProgram( currentProgram: Program, - extra: Extra, + parseSettings: ParseSettings, ): ASTAndProgram | undefined { - const ast = currentProgram.getSourceFile(extra.filePath); + const ast = currentProgram.getSourceFile(parseSettings.filePath); // working around https://github.com/typescript-eslint/typescript-eslint/issues/1573 - const expectedExt = getExtension(extra.filePath); + const expectedExt = getExtension(parseSettings.filePath); const returnedExt = getExtension(ast?.fileName); if (expectedExt !== returnedExt) { return undefined; diff --git a/packages/typescript-estree/src/create-program/useProvidedPrograms.ts b/packages/typescript-estree/src/create-program/useProvidedPrograms.ts index 0a8300f5ad2..fc99416faa5 100644 --- a/packages/typescript-estree/src/create-program/useProvidedPrograms.ts +++ b/packages/typescript-estree/src/create-program/useProvidedPrograms.ts @@ -3,7 +3,7 @@ import * as fs from 'fs'; import * as path from 'path'; import * as ts from 'typescript'; -import type { Extra } from '../parser-options'; +import type { ParseSettings } from '../parseSettings'; import type { ASTAndProgram } from './shared'; import { CORE_COMPILER_OPTIONS, getAstFromProgram } from './shared'; @@ -11,16 +11,16 @@ const log = debug('typescript-eslint:typescript-estree:useProvidedProgram'); function useProvidedPrograms( programInstances: Iterable, - extra: Extra, + parseSettings: ParseSettings, ): ASTAndProgram | undefined { log( 'Retrieving ast for %s from provided program instance(s)', - extra.filePath, + parseSettings.filePath, ); let astAndProgram: ASTAndProgram | undefined; for (const programInstance of programInstances) { - astAndProgram = getAstFromProgram(programInstance, extra); + astAndProgram = getAstFromProgram(programInstance, parseSettings); // Stop at the first applicable program instance if (astAndProgram) { break; @@ -29,8 +29,8 @@ function useProvidedPrograms( if (!astAndProgram) { const relativeFilePath = path.relative( - extra.tsconfigRootDir || process.cwd(), - extra.filePath, + parseSettings.tsconfigRootDir || process.cwd(), + parseSettings.filePath, ); const errorLines = [ '"parserOptions.programs" has been provided for @typescript-eslint/parser.', diff --git a/packages/typescript-estree/src/parseSettings/createParseSettings.ts b/packages/typescript-estree/src/parseSettings/createParseSettings.ts new file mode 100644 index 00000000000..b1cde9d4c9a --- /dev/null +++ b/packages/typescript-estree/src/parseSettings/createParseSettings.ts @@ -0,0 +1,201 @@ +import debug from 'debug'; +import { sync as globSync } from 'globby'; +import isGlob from 'is-glob'; + +import type { CanonicalPath } from '../create-program/shared'; +import { + ensureAbsolutePath, + getCanonicalFileName, +} from '../create-program/shared'; +import type { TSESTreeOptions } from '../parser-options'; +import type { MutableParseSettings } from './index'; +import { inferSingleRun } from './inferSingleRun'; +import { warnAboutTSVersion } from './warnAboutTSVersion'; + +const log = debug( + 'typescript-eslint:typescript-estree:parser:parseSettings:createParseSettings', +); + +export function createParseSettings( + code: string, + options: Partial = {}, +): MutableParseSettings { + const tsconfigRootDir = + typeof options.tsconfigRootDir === 'string' + ? options.tsconfigRootDir + : process.cwd(); + const parseSettings: MutableParseSettings = { + code: enforceString(code), + comment: options.comment === true, + comments: [], + createDefaultProgram: options.createDefaultProgram === true, + debugLevel: + options.debugLevel === true + ? new Set(['typescript-eslint']) + : Array.isArray(options.debugLevel) + ? new Set(options.debugLevel) + : new Set(), + errorOnTypeScriptSyntacticAndSemanticIssues: false, + errorOnUnknownASTType: options.errorOnUnknownASTType === true, + EXPERIMENTAL_useSourceOfProjectReferenceRedirect: + options.EXPERIMENTAL_useSourceOfProjectReferenceRedirect === true, + extraFileExtensions: + Array.isArray(options.extraFileExtensions) && + options.extraFileExtensions.every(ext => typeof ext === 'string') + ? options.extraFileExtensions + : [], + filePath: ensureAbsolutePath( + typeof options.filePath === 'string' && options.filePath !== '' + ? options.filePath + : getFileName(options.jsx), + tsconfigRootDir, + ), + jsx: options.jsx === true, + loc: options.loc === true, + log: + typeof options.loggerFn === 'function' + ? options.loggerFn + : options.loggerFn === false + ? (): void => {} + : console.log, // eslint-disable-line no-console + moduleResolver: options.moduleResolver ?? '', + preserveNodeMaps: options.preserveNodeMaps !== false, + programs: Array.isArray(options.programs) ? options.programs : null, + projects: [], + range: options.range === true, + singleRun: inferSingleRun(options), + tokens: options.tokens === true ? [] : null, + tsconfigRootDir, + }; + + // debug doesn't support multiple `enable` calls, so have to do it all at once + if (parseSettings.debugLevel.size > 0) { + const namespaces = []; + if (parseSettings.debugLevel.has('typescript-eslint')) { + namespaces.push('typescript-eslint:*'); + } + if ( + parseSettings.debugLevel.has('eslint') || + // make sure we don't turn off the eslint debug if it was enabled via --debug + debug.enabled('eslint:*,-eslint:code-path') + ) { + // https://github.com/eslint/eslint/blob/9dfc8501fb1956c90dc11e6377b4cb38a6bea65d/bin/eslint.js#L25 + namespaces.push('eslint:*,-eslint:code-path'); + } + debug.enable(namespaces.join(',')); + } + + if (Array.isArray(options.programs)) { + if (!options.programs.length) { + throw new Error( + `You have set parserOptions.programs to an empty array. This will cause all files to not be found in existing programs. Either provide one or more existing TypeScript Program instances in the array, or remove the parserOptions.programs setting.`, + ); + } + log( + 'parserOptions.programs was provided, so parserOptions.project will be ignored.', + ); + } + + // Providing a program overrides project resolution + if (!parseSettings.programs) { + const projectFolderIgnoreList = ( + options.projectFolderIgnoreList ?? ['**/node_modules/**'] + ) + .reduce((acc, folder) => { + if (typeof folder === 'string') { + acc.push(folder); + } + return acc; + }, []) + // prefix with a ! for not match glob + .map(folder => (folder.startsWith('!') ? folder : `!${folder}`)); + + parseSettings.projects = prepareAndTransformProjects( + tsconfigRootDir, + options.project, + projectFolderIgnoreList, + ); + } + + warnAboutTSVersion(parseSettings); + + return parseSettings; +} + +/** + * Ensures source code is a string. + */ +function enforceString(code: unknown): string { + if (typeof code !== 'string') { + return String(code); + } + + return code; +} + +/** + * Compute the filename based on the parser options. + * + * Even if jsx option is set in typescript compiler, filename still has to + * contain .tsx file extension. + * + * @param options Parser options + */ +function getFileName(jsx?: boolean): string { + return jsx ? 'estree.tsx' : 'estree.ts'; +} + +function getTsconfigPath( + tsconfigPath: string, + tsconfigRootDir: string, +): CanonicalPath { + return getCanonicalFileName( + ensureAbsolutePath(tsconfigPath, tsconfigRootDir), + ); +} + +/** + * Normalizes, sanitizes, resolves and filters the provided project paths + */ +function prepareAndTransformProjects( + tsconfigRootDir: string, + projectsInput: string | string[] | undefined, + ignoreListInput: string[], +): CanonicalPath[] { + const sanitizedProjects: string[] = []; + + // Normalize and sanitize the project paths + if (typeof projectsInput === 'string') { + sanitizedProjects.push(projectsInput); + } else if (Array.isArray(projectsInput)) { + for (const project of projectsInput) { + if (typeof project === 'string') { + sanitizedProjects.push(project); + } + } + } + + if (sanitizedProjects.length === 0) { + return []; + } + + // Transform glob patterns into paths + const nonGlobProjects = sanitizedProjects.filter(project => !isGlob(project)); + const globProjects = sanitizedProjects.filter(project => isGlob(project)); + const uniqueCanonicalProjectPaths = new Set( + nonGlobProjects + .concat( + globSync([...globProjects, ...ignoreListInput], { + cwd: tsconfigRootDir, + }), + ) + .map(project => getTsconfigPath(project, tsconfigRootDir)), + ); + + log( + 'parserOptions.project (excluding ignored) matched projects: %s', + uniqueCanonicalProjectPaths, + ); + + return Array.from(uniqueCanonicalProjectPaths); +} diff --git a/packages/typescript-estree/src/parseSettings/index.ts b/packages/typescript-estree/src/parseSettings/index.ts new file mode 100644 index 00000000000..0a9734d1b24 --- /dev/null +++ b/packages/typescript-estree/src/parseSettings/index.ts @@ -0,0 +1,124 @@ +import type * as ts from 'typescript'; + +import type { CanonicalPath } from '../create-program/shared'; +import type { TSESTree } from '../ts-estree'; + +type DebugModule = 'typescript-eslint' | 'eslint' | 'typescript'; + +/** + * Internal settings used by the parser to run on a file. + */ +export interface MutableParseSettings { + /** + * Code of the file being parsed. + */ + code: string; + + /** + * Whether the `comment` parse option is enabled. + */ + comment: boolean; + + /** + * If the `comment` parse option is enabled, retrieved comments. + */ + comments: TSESTree.Comment[]; + + /** + * Whether to create a TypeScript program if one is not provided. + */ + createDefaultProgram: boolean; + + /** + * Which debug areas should be logged. + */ + debugLevel: Set; + + /** + * Whether to error if TypeScript reports a semantic or syntactic error diagnostic. + */ + errorOnTypeScriptSyntacticAndSemanticIssues: boolean; + + /** + * Whether to error if an unknown AST node type is encountered. + */ + errorOnUnknownASTType: boolean; + + /** + * Whether TS should use the source files for referenced projects instead of the compiled .d.ts files. + * + * @remarks + * This feature is not yet optimized, and is likely to cause OOMs for medium to large projects. + * This flag REQUIRES at least TS v3.9, otherwise it does nothing. + */ + EXPERIMENTAL_useSourceOfProjectReferenceRedirect: boolean; + + /** + * Any non-standard file extensions which will be parsed. + */ + extraFileExtensions: string[]; + + /** + * Path of the file being parsed. + */ + filePath: string; + + /** + * Whether parsing of JSX is enabled. + * + * @remarks The applicable file extension is still required. + */ + jsx: boolean; + + /** + * Whether to add `loc` information to each node. + */ + loc: boolean; + + /** + * Log function, if not `console.log`. + */ + log: (message: string) => void; + + /** + * Path for a module resolver to use for the compiler host's `resolveModuleNames`. + */ + moduleResolver: string; + + /** + * Whether two-way AST node maps are preserved during the AST conversion process. + */ + preserveNodeMaps?: boolean; + + /** + * One or more instances of TypeScript Program objects to be used for type information. + */ + programs: null | Iterable; + + /** + * Normalized paths to provided project paths. + */ + projects: CanonicalPath[]; + + /** + * Whether to add the `range` property to AST nodes. + */ + range: boolean; + + /** + * Whether this is part of a single run, rather than a long-running process. + */ + singleRun: boolean; + + /** + * If the `tokens` parse option is enabled, retrieved tokens. + */ + tokens: null | TSESTree.Token[]; + + /** + * The absolute path to the root directory for all provided `project`s. + */ + tsconfigRootDir: string; +} + +export type ParseSettings = Readonly; diff --git a/packages/typescript-estree/src/parseSettings/inferSingleRun.ts b/packages/typescript-estree/src/parseSettings/inferSingleRun.ts new file mode 100644 index 00000000000..723f857ece9 --- /dev/null +++ b/packages/typescript-estree/src/parseSettings/inferSingleRun.ts @@ -0,0 +1,46 @@ +import { normalize } from 'path'; + +import type { TSESTreeOptions } from '../parser-options'; + +/** + * ESLint (and therefore typescript-eslint) is used in both "single run"/one-time contexts, + * such as an ESLint CLI invocation, and long-running sessions (such as continuous feedback + * on a file in an IDE). + * + * When typescript-eslint handles TypeScript Program management behind the scenes, this distinction + * is important because there is significant overhead to managing the so called Watch Programs + * needed for the long-running use-case. We therefore use the following logic to figure out which + * of these contexts applies to the current execution. + * + * @returns Whether this is part of a single run, rather than a long-running process. + */ +export function inferSingleRun(options: TSESTreeOptions | undefined): boolean { + // Allow users to explicitly inform us of their intent to perform a single run (or not) with TSESTREE_SINGLE_RUN + if (process.env.TSESTREE_SINGLE_RUN === 'false') { + return false; + } + if (process.env.TSESTREE_SINGLE_RUN === 'true') { + return true; + } + + // Currently behind a flag while we gather real-world feedback + if (options?.allowAutomaticSingleRunInference) { + if ( + // Default to single runs for CI processes. CI=true is set by most CI providers by default. + process.env.CI === 'true' || + // This will be true for invocations such as `npx eslint ...` and `./node_modules/.bin/eslint ...` + process.argv[1].endsWith(normalize('node_modules/.bin/eslint')) + ) { + return true; + } + } + + /** + * We default to assuming that this run could be part of a long-running session (e.g. in an IDE) + * and watch programs will therefore be required. + * + * Unless we can reliably infer otherwise, we default to assuming that this run could be part + * of a long-running session (e.g. in an IDE) and watch programs will therefore be required + */ + return false; +} diff --git a/packages/typescript-estree/src/parseSettings/warnAboutTSVersion.ts b/packages/typescript-estree/src/parseSettings/warnAboutTSVersion.ts new file mode 100644 index 00000000000..6bd890bdae9 --- /dev/null +++ b/packages/typescript-estree/src/parseSettings/warnAboutTSVersion.ts @@ -0,0 +1,45 @@ +import semver from 'semver'; +import * as ts from 'typescript'; + +import type { ParseSettings } from './index'; +/** + * This needs to be kept in sync with the top-level README.md in the + * typescript-eslint monorepo + */ +const SUPPORTED_TYPESCRIPT_VERSIONS = '>=3.3.1 <4.9.0'; + +/* + * The semver package will ignore prerelease ranges, and we don't want to explicitly document every one + * List them all separately here, so we can automatically create the full string + */ +const SUPPORTED_PRERELEASE_RANGES: string[] = []; +const ACTIVE_TYPESCRIPT_VERSION = ts.version; +const isRunningSupportedTypeScriptVersion = semver.satisfies( + ACTIVE_TYPESCRIPT_VERSION, + [SUPPORTED_TYPESCRIPT_VERSIONS] + .concat(SUPPORTED_PRERELEASE_RANGES) + .join(' || '), +); + +let warnedAboutTSVersion = false; + +export function warnAboutTSVersion(parseSettings: ParseSettings): void { + if (!isRunningSupportedTypeScriptVersion && !warnedAboutTSVersion) { + const isTTY = + typeof process === 'undefined' ? false : process.stdout?.isTTY; + if (isTTY) { + const border = '============='; + const versionWarning = [ + border, + 'WARNING: You are currently running a version of TypeScript which is not officially supported by @typescript-eslint/typescript-estree.', + 'You may find that it works just fine, or you may not.', + `SUPPORTED TYPESCRIPT VERSIONS: ${SUPPORTED_TYPESCRIPT_VERSIONS}`, + `YOUR TYPESCRIPT VERSION: ${ACTIVE_TYPESCRIPT_VERSION}`, + 'Please only submit bug reports when using the officially supported version.', + border, + ]; + parseSettings.log(versionWarning.join('\n\n')); + } + warnedAboutTSVersion = true; + } +} diff --git a/packages/typescript-estree/src/parser-options.ts b/packages/typescript-estree/src/parser-options.ts index cfe82b15f22..cec95c3b413 100644 --- a/packages/typescript-estree/src/parser-options.ts +++ b/packages/typescript-estree/src/parser-options.ts @@ -1,36 +1,8 @@ import type { DebugLevel } from '@typescript-eslint/types'; import type * as ts from 'typescript'; -import type { CanonicalPath } from './create-program/shared'; import type { TSESTree, TSESTreeToTSNode, TSNode, TSToken } from './ts-estree'; -type DebugModule = 'typescript-eslint' | 'eslint' | 'typescript'; - -export interface Extra { - code: string; - comment: boolean; - comments: TSESTree.Comment[]; - createDefaultProgram: boolean; - debugLevel: Set; - errorOnTypeScriptSyntacticAndSemanticIssues: boolean; - errorOnUnknownASTType: boolean; - EXPERIMENTAL_useSourceOfProjectReferenceRedirect: boolean; - extraFileExtensions: string[]; - filePath: string; - jsx: boolean; - loc: boolean; - singleRun: boolean; - log: (message: string) => void; - preserveNodeMaps?: boolean; - programs: null | Iterable; - projects: CanonicalPath[]; - range: boolean; - strict: boolean; - tokens: null | TSESTree.Token[]; - tsconfigRootDir: string; - moduleResolver: string; -} - //////////////////////////////////////////////////// // MAKE SURE THIS IS KEPT IN SYNC WITH THE README // //////////////////////////////////////////////////// diff --git a/packages/typescript-estree/src/parser.ts b/packages/typescript-estree/src/parser.ts index ae461a24dd5..c5504ba961a 100644 --- a/packages/typescript-estree/src/parser.ts +++ b/packages/typescript-estree/src/parser.ts @@ -1,9 +1,5 @@ import debug from 'debug'; -import { sync as globSync } from 'globby'; -import isGlob from 'is-glob'; -import { normalize } from 'path'; -import semver from 'semver'; -import * as ts from 'typescript'; +import type * as ts from 'typescript'; import { astConverter } from './ast-converter'; import { convertError } from './convert'; @@ -12,41 +8,18 @@ import { createIsolatedProgram } from './create-program/createIsolatedProgram'; import { createProjectProgram } from './create-program/createProjectProgram'; import { createSourceFile } from './create-program/createSourceFile'; import type { ASTAndProgram, CanonicalPath } from './create-program/shared'; -import { - ensureAbsolutePath, - getCanonicalFileName, -} from './create-program/shared'; import { createProgramFromConfigFile, useProvidedPrograms, } from './create-program/useProvidedPrograms'; -import type { Extra, ParserServices, TSESTreeOptions } from './parser-options'; +import type { ParserServices, TSESTreeOptions } from './parser-options'; +import type { ParseSettings } from './parseSettings'; +import { createParseSettings } from './parseSettings/createParseSettings'; import { getFirstSemanticOrSyntacticError } from './semantic-or-syntactic-errors'; import type { TSESTree } from './ts-estree'; const log = debug('typescript-eslint:typescript-estree:parser'); -/** - * This needs to be kept in sync with the top-level README.md in the - * typescript-eslint monorepo - */ -const SUPPORTED_TYPESCRIPT_VERSIONS = '>=3.3.1 <4.9.0'; -/* - * The semver package will ignore prerelease ranges, and we don't want to explicitly document every one - * List them all separately here, so we can automatically create the full string - */ -const SUPPORTED_PRERELEASE_RANGES: string[] = []; -const ACTIVE_TYPESCRIPT_VERSION = ts.version; -const isRunningSupportedTypeScriptVersion = semver.satisfies( - ACTIVE_TYPESCRIPT_VERSION, - [SUPPORTED_TYPESCRIPT_VERSIONS] - .concat(SUPPORTED_PRERELEASE_RANGES) - .join(' || '), -); - -let extra: Extra; -let warnedAboutTSVersion = false; - /** * Cache existing programs for the single run use-case. * @@ -57,348 +30,24 @@ function clearProgramCache(): void { existingPrograms.clear(); } -function enforceString(code: unknown): string { - /** - * Ensure the source code is a string - */ - if (typeof code !== 'string') { - return String(code); - } - - return code; -} - /** - * @param code The code of the file being linted - * @param programInstances One or more (potentially lazily constructed) existing programs to use + * @param parseSettings Internal settings for parsing the file * @param shouldProvideParserServices True if the program should be attempted to be calculated from provided tsconfig files - * @param shouldCreateDefaultProgram True if the program should be created from compiler host * @returns Returns a source file and program corresponding to the linted code */ function getProgramAndAST( - code: string, - programInstances: Iterable | null, + parseSettings: ParseSettings, shouldProvideParserServices: boolean, - shouldCreateDefaultProgram: boolean, ): ASTAndProgram { return ( - (programInstances && useProvidedPrograms(programInstances, extra)) || + (parseSettings.programs && + useProvidedPrograms(parseSettings.programs, parseSettings)) || + (shouldProvideParserServices && createProjectProgram(parseSettings)) || (shouldProvideParserServices && - createProjectProgram(code, shouldCreateDefaultProgram, extra)) || - (shouldProvideParserServices && - shouldCreateDefaultProgram && - createDefaultProgram(code, extra)) || - createIsolatedProgram(code, extra) - ); -} - -/** - * Compute the filename based on the parser options. - * - * Even if jsx option is set in typescript compiler, filename still has to - * contain .tsx file extension. - * - * @param options Parser options - */ -function getFileName({ jsx }: { jsx?: boolean } = {}): string { - return jsx ? 'estree.tsx' : 'estree.ts'; -} - -/** - * Resets the extra config object - */ -function resetExtra(): void { - extra = { - code: '', - comment: false, - comments: [], - createDefaultProgram: false, - debugLevel: new Set(), - errorOnTypeScriptSyntacticAndSemanticIssues: false, - errorOnUnknownASTType: false, - EXPERIMENTAL_useSourceOfProjectReferenceRedirect: false, - extraFileExtensions: [], - filePath: getFileName(), - jsx: false, - loc: false, - log: console.log, // eslint-disable-line no-console - preserveNodeMaps: true, - programs: null, - projects: [], - range: false, - strict: false, - tokens: null, - tsconfigRootDir: process.cwd(), - /** - * Unless we can reliably infer otherwise, we default to assuming that this run could be part - * of a long-running session (e.g. in an IDE) and watch programs will therefore be required - */ - singleRun: false, - moduleResolver: '', - }; -} - -function getTsconfigPath(tsconfigPath: string, extra: Extra): CanonicalPath { - return getCanonicalFileName(ensureAbsolutePath(tsconfigPath, extra)); -} - -/** - * Normalizes, sanitizes, resolves and filters the provided project paths - */ -function prepareAndTransformProjects( - projectsInput: string | string[] | undefined, - ignoreListInput: string[], -): CanonicalPath[] { - const sanitizedProjects: string[] = []; - - // Normalize and sanitize the project paths - if (typeof projectsInput === 'string') { - sanitizedProjects.push(projectsInput); - } else if (Array.isArray(projectsInput)) { - for (const project of projectsInput) { - if (typeof project === 'string') { - sanitizedProjects.push(project); - } - } - } - - if (sanitizedProjects.length === 0) { - return []; - } - - // Transform glob patterns into paths - const nonGlobProjects = sanitizedProjects.filter(project => !isGlob(project)); - const globProjects = sanitizedProjects.filter(project => isGlob(project)); - const uniqueCanonicalProjectPaths = new Set( - nonGlobProjects - .concat( - globSync([...globProjects, ...ignoreListInput], { - cwd: extra.tsconfigRootDir, - }), - ) - .map(project => getTsconfigPath(project, extra)), - ); - - log( - 'parserOptions.project (excluding ignored) matched projects: %s', - uniqueCanonicalProjectPaths, + parseSettings.createDefaultProgram && + createDefaultProgram(parseSettings)) || + createIsolatedProgram(parseSettings) ); - - return Array.from(uniqueCanonicalProjectPaths); -} - -function applyParserOptionsToExtra(options: TSESTreeOptions): void { - /** - * Configure Debug logging - */ - if (options.debugLevel === true) { - extra.debugLevel = new Set(['typescript-eslint']); - } else if (Array.isArray(options.debugLevel)) { - extra.debugLevel = new Set(options.debugLevel); - } - if (extra.debugLevel.size > 0) { - // debug doesn't support multiple `enable` calls, so have to do it all at once - const namespaces = []; - if (extra.debugLevel.has('typescript-eslint')) { - namespaces.push('typescript-eslint:*'); - } - if ( - extra.debugLevel.has('eslint') || - // make sure we don't turn off the eslint debug if it was enabled via --debug - debug.enabled('eslint:*,-eslint:code-path') - ) { - // https://github.com/eslint/eslint/blob/9dfc8501fb1956c90dc11e6377b4cb38a6bea65d/bin/eslint.js#L25 - namespaces.push('eslint:*,-eslint:code-path'); - } - debug.enable(namespaces.join(',')); - } - - /** - * Track range information in the AST - */ - extra.range = typeof options.range === 'boolean' && options.range; - extra.loc = typeof options.loc === 'boolean' && options.loc; - - /** - * Track tokens in the AST - */ - if (typeof options.tokens === 'boolean' && options.tokens) { - extra.tokens = []; - } - - /** - * Track comments in the AST - */ - if (typeof options.comment === 'boolean' && options.comment) { - extra.comment = true; - extra.comments = []; - } - - /** - * Enable JSX - note the applicable file extension is still required - */ - if (typeof options.jsx !== 'boolean') { - extra.jsx = false; - } else { - extra.jsx = options.jsx; - } - - /** - * Get the file path - */ - if (typeof options.filePath === 'string' && options.filePath !== '') { - extra.filePath = options.filePath; - } else { - extra.filePath = getFileName(extra); - } - - /** - * Allow the user to cause the parser to error if it encounters an unknown AST Node Type - * (used in testing) - */ - if ( - typeof options.errorOnUnknownASTType === 'boolean' && - options.errorOnUnknownASTType - ) { - extra.errorOnUnknownASTType = true; - } - - /** - * Allow the user to override the function used for logging - */ - if (typeof options.loggerFn === 'function') { - extra.log = options.loggerFn; - } else if (options.loggerFn === false) { - extra.log = (): void => {}; - } - - if (typeof options.tsconfigRootDir === 'string') { - extra.tsconfigRootDir = options.tsconfigRootDir; - } - - // NOTE - ensureAbsolutePath relies upon having the correct tsconfigRootDir in extra - extra.filePath = ensureAbsolutePath(extra.filePath, extra); - - if (Array.isArray(options.programs)) { - if (!options.programs.length) { - throw new Error( - `You have set parserOptions.programs to an empty array. This will cause all files to not be found in existing programs. Either provide one or more existing TypeScript Program instances in the array, or remove the parserOptions.programs setting.`, - ); - } - extra.programs = options.programs; - log( - 'parserOptions.programs was provided, so parserOptions.project will be ignored.', - ); - } - - if (!extra.programs) { - // providing a program overrides project resolution - const projectFolderIgnoreList = ( - options.projectFolderIgnoreList ?? ['**/node_modules/**'] - ) - .reduce((acc, folder) => { - if (typeof folder === 'string') { - acc.push(folder); - } - return acc; - }, []) - // prefix with a ! for not match glob - .map(folder => (folder.startsWith('!') ? folder : `!${folder}`)); - // NOTE - prepareAndTransformProjects relies upon having the correct tsconfigRootDir in extra - extra.projects = prepareAndTransformProjects( - options.project, - projectFolderIgnoreList, - ); - } - - if ( - Array.isArray(options.extraFileExtensions) && - options.extraFileExtensions.every(ext => typeof ext === 'string') - ) { - extra.extraFileExtensions = options.extraFileExtensions; - } - - /** - * Allow the user to enable or disable the preservation of the AST node maps - * during the conversion process. - */ - if (typeof options.preserveNodeMaps === 'boolean') { - extra.preserveNodeMaps = options.preserveNodeMaps; - } - - extra.createDefaultProgram = - typeof options.createDefaultProgram === 'boolean' && - options.createDefaultProgram; - - extra.EXPERIMENTAL_useSourceOfProjectReferenceRedirect = - typeof options.EXPERIMENTAL_useSourceOfProjectReferenceRedirect === - 'boolean' && options.EXPERIMENTAL_useSourceOfProjectReferenceRedirect; - - if (typeof options.moduleResolver === 'string') { - extra.moduleResolver = options.moduleResolver; - } -} - -function warnAboutTSVersion(): void { - if (!isRunningSupportedTypeScriptVersion && !warnedAboutTSVersion) { - const isTTY = - typeof process === 'undefined' ? false : process.stdout?.isTTY; - if (isTTY) { - const border = '============='; - const versionWarning = [ - border, - 'WARNING: You are currently running a version of TypeScript which is not officially supported by @typescript-eslint/typescript-estree.', - 'You may find that it works just fine, or you may not.', - `SUPPORTED TYPESCRIPT VERSIONS: ${SUPPORTED_TYPESCRIPT_VERSIONS}`, - `YOUR TYPESCRIPT VERSION: ${ACTIVE_TYPESCRIPT_VERSION}`, - 'Please only submit bug reports when using the officially supported version.', - border, - ]; - extra.log(versionWarning.join('\n\n')); - } - warnedAboutTSVersion = true; - } -} - -/** - * ESLint (and therefore typescript-eslint) is used in both "single run"/one-time contexts, - * such as an ESLint CLI invocation, and long-running sessions (such as continuous feedback - * on a file in an IDE). - * - * When typescript-eslint handles TypeScript Program management behind the scenes, this distinction - * is important because there is significant overhead to managing the so called Watch Programs - * needed for the long-running use-case. We therefore use the following logic to figure out which - * of these contexts applies to the current execution. - */ -function inferSingleRun(options: TSESTreeOptions | undefined): void { - // Allow users to explicitly inform us of their intent to perform a single run (or not) with TSESTREE_SINGLE_RUN - if (process.env.TSESTREE_SINGLE_RUN === 'false') { - extra.singleRun = false; - return; - } - if (process.env.TSESTREE_SINGLE_RUN === 'true') { - extra.singleRun = true; - return; - } - - // Currently behind a flag while we gather real-world feedback - if (options?.allowAutomaticSingleRunInference) { - if ( - // Default to single runs for CI processes. CI=true is set by most CI providers by default. - process.env.CI === 'true' || - // This will be true for invocations such as `npx eslint ...` and `./node_modules/.bin/eslint ...` - process.argv[1].endsWith(normalize('node_modules/.bin/eslint')) - ) { - extra.singleRun = true; - return; - } - } - - /** - * We default to assuming that this run could be part of a long-running session (e.g. in an IDE) - * and watch programs will therefore be required - */ - extra.singleRun = false; } // eslint-disable-next-line @typescript-eslint/no-empty-interface @@ -433,7 +82,7 @@ function parseWithNodeMapsInternal( /** * Reset the parse configuration */ - resetExtra(); + const parseSettings = createParseSettings(code, options); /** * Ensure users do not attempt to use parse() when they need parseAndGenerateServices() @@ -445,38 +94,18 @@ function parseWithNodeMapsInternal( } /** - * Ensure the source code is a string, and store a reference to it - */ - code = enforceString(code); - extra.code = code; - - /** - * Apply the given parser options - */ - if (typeof options !== 'undefined') { - applyParserOptionsToExtra(options); - } - - /** - * Warn if the user is using an unsupported version of TypeScript - */ - warnAboutTSVersion(); - - /** - * Figure out whether this is a single run or part of a long-running process + * Create a ts.SourceFile directly, no ts.Program is needed for a simple parse */ - inferSingleRun(options); - - /** - * Create a ts.SourceFile directly, no ts.Program is needed for a simple - * parse - */ - const ast = createSourceFile(code, extra); + const ast = createSourceFile(parseSettings); /** * Convert the TypeScript AST to an ESTree-compatible one */ - const { estree, astMaps } = astConverter(ast, extra, shouldPreserveNodeMaps); + const { estree, astMaps } = astConverter( + ast, + parseSettings, + shouldPreserveNodeMaps, + ); return { ast: estree as AST, @@ -505,47 +134,31 @@ function parseAndGenerateServices( /** * Reset the parse configuration */ - resetExtra(); + const parseSettings = createParseSettings(code, options); - /** - * Ensure the source code is a string, and store a reference to it - */ - code = enforceString(code); - extra.code = code; - - /** - * Apply the given parser options - */ if (typeof options !== 'undefined') { - applyParserOptionsToExtra(options); if ( typeof options.errorOnTypeScriptSyntacticAndSemanticIssues === 'boolean' && options.errorOnTypeScriptSyntacticAndSemanticIssues ) { - extra.errorOnTypeScriptSyntacticAndSemanticIssues = true; + parseSettings.errorOnTypeScriptSyntacticAndSemanticIssues = true; } } - /** - * Warn if the user is using an unsupported version of TypeScript - */ - warnAboutTSVersion(); - - /** - * Figure out whether this is a single run or part of a long-running process - */ - inferSingleRun(options); - /** * If this is a single run in which the user has not provided any existing programs but there * are programs which need to be created from the provided "project" option, * create an Iterable which will lazily create the programs as needed by the iteration logic */ - if (extra.singleRun && !extra.programs && extra.projects?.length > 0) { - extra.programs = { + if ( + parseSettings.singleRun && + !parseSettings.programs && + parseSettings.projects?.length > 0 + ) { + parseSettings.programs = { *[Symbol.iterator](): Iterator { - for (const configFile of extra.projects) { + for (const configFile of parseSettings.projects) { const existingProgram = existingPrograms.get(configFile); if (existingProgram) { yield existingProgram; @@ -567,7 +180,7 @@ function parseAndGenerateServices( * Generate a full ts.Program or offer provided instances in order to be able to provide parser services, such as type-checking */ const shouldProvideParserServices = - extra.programs != null || (extra.projects && extra.projects.length > 0); + parseSettings.programs != null || parseSettings.projects?.length > 0; /** * If we are in singleRun mode but the parseAndGenerateServices() function has been called more than once for the current file, @@ -577,46 +190,38 @@ function parseAndGenerateServices( * In this scenario we cannot rely upon the singleRun AOT compiled programs because the SourceFiles will not contain the source * with the latest fixes applied. Therefore we fallback to creating the quickest possible isolated program from the updated source. */ - let ast: ts.SourceFile; - let program: ts.Program; - - if (extra.singleRun && options.filePath) { + if (parseSettings.singleRun && options.filePath) { parseAndGenerateServicesCalls[options.filePath] = (parseAndGenerateServicesCalls[options.filePath] || 0) + 1; } - if ( - extra.singleRun && + const { ast, program } = + parseSettings.singleRun && options.filePath && parseAndGenerateServicesCalls[options.filePath] > 1 - ) { - const isolatedAstAndProgram = createIsolatedProgram(code, extra); - ast = isolatedAstAndProgram.ast; - program = isolatedAstAndProgram.program; - } else { - const astAndProgram = getProgramAndAST( - code, - extra.programs, - shouldProvideParserServices, - extra.createDefaultProgram, - )!; - ast = astAndProgram.ast; - program = astAndProgram.program; - } + ? createIsolatedProgram(parseSettings) + : getProgramAndAST(parseSettings, shouldProvideParserServices)!; /** * Convert the TypeScript AST to an ESTree-compatible one, and optionally preserve * mappings between converted and original AST nodes */ - const preserveNodeMaps = - typeof extra.preserveNodeMaps === 'boolean' ? extra.preserveNodeMaps : true; - const { estree, astMaps } = astConverter(ast, extra, preserveNodeMaps); + const shouldPreserveNodeMaps = + typeof parseSettings.preserveNodeMaps === 'boolean' + ? parseSettings.preserveNodeMaps + : true; + + const { estree, astMaps } = astConverter( + ast, + parseSettings, + shouldPreserveNodeMaps, + ); /** * Even if TypeScript parsed the source code ok, and we had no problems converting the AST, * there may be other syntactic or semantic issues in the code that we can optionally report on. */ - if (program && extra.errorOnTypeScriptSyntacticAndSemanticIssues) { + if (program && parseSettings.errorOnTypeScriptSyntacticAndSemanticIssues) { const error = getFirstSemanticOrSyntacticError(program, ast); if (error) { throw convertError(error); diff --git a/packages/website/src/components/linter/WebLinter.ts b/packages/website/src/components/linter/WebLinter.ts index e3fa23cf0e0..378e34ed136 100644 --- a/packages/website/src/components/linter/WebLinter.ts +++ b/packages/website/src/components/linter/WebLinter.ts @@ -1,5 +1,5 @@ import { createVirtualCompilerHost } from '@site/src/components/linter/CompilerHost'; -import { extra } from '@site/src/components/linter/config'; +import { parseSettings } from '@site/src/components/linter/config'; import type { ParserOptions } from '@typescript-eslint/types'; import type { TSESLint, TSESTree } from '@typescript-eslint/utils'; import type { LintUtils } from '@typescript-eslint/website-eslint'; @@ -106,7 +106,7 @@ export class WebLinter { const { estree: ast, astMaps } = this.lintUtils.astConverter( tsAst, - { ...extra, code, jsx: isJsx }, + { ...parseSettings, code, jsx: isJsx }, true, ); diff --git a/packages/website/src/components/linter/config.ts b/packages/website/src/components/linter/config.ts index cad38a3e28f..f077f3786ee 100644 --- a/packages/website/src/components/linter/config.ts +++ b/packages/website/src/components/linter/config.ts @@ -1,12 +1,11 @@ -import type { Extra } from '@typescript-eslint/typescript-estree/dist/parser-options'; +import type { ParseSettings } from '@typescript-eslint/typescript-estree/dist/parseSettings'; -export const extra: Extra = { +export const parseSettings: ParseSettings = { code: '', comment: true, comments: [], createDefaultProgram: false, debugLevel: new Set(), - errorOnTypeScriptSyntacticAndSemanticIssues: false, errorOnUnknownASTType: false, extraFileExtensions: [], filePath: '', @@ -17,9 +16,9 @@ export const extra: Extra = { preserveNodeMaps: true, projects: [], range: true, - strict: false, tokens: [], tsconfigRootDir: '/', + errorOnTypeScriptSyntacticAndSemanticIssues: false, EXPERIMENTAL_useSourceOfProjectReferenceRedirect: false, singleRun: false, programs: null, From 8794fd3773af8d6a65c1c33db80a28be0a4401be Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Tue, 25 Oct 2022 18:22:57 -0400 Subject: [PATCH 070/193] chore(website): fix renamed Sponsorship docs link (#5882) --- packages/website/src/components/FinancialContributors/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/website/src/components/FinancialContributors/index.tsx b/packages/website/src/components/FinancialContributors/index.tsx index 3d5889ecede..609de140c9a 100644 --- a/packages/website/src/components/FinancialContributors/index.tsx +++ b/packages/website/src/components/FinancialContributors/index.tsx @@ -50,7 +50,7 @@ export function FinancialContributors(): JSX.Element { Docs From fcf3f9da6595f8cda843e8adbfdf466c52dd7d08 Mon Sep 17 00:00:00 2001 From: Adnan Hashmi <56730784+adnanhashmi09@users.noreply.github.com> Date: Wed, 26 Oct 2022 05:05:35 +0530 Subject: [PATCH 071/193] docs: Mention wide globs performance implications in monorepos docs and parser README (#5864) * docs: Mention wide globs performance implications in monorepos docs and parser readme * Update docs/linting/typed-linting/MONOREPOS.md Co-authored-by: Josh Goldberg --- docs/linting/typed-linting/MONOREPOS.md | 27 +++++++++++++++++++++++++ packages/parser/README.md | 2 ++ 2 files changed, 29 insertions(+) diff --git a/docs/linting/typed-linting/MONOREPOS.md b/docs/linting/typed-linting/MONOREPOS.md index 1bb057718c6..5163e997ec8 100644 --- a/docs/linting/typed-linting/MONOREPOS.md +++ b/docs/linting/typed-linting/MONOREPOS.md @@ -62,6 +62,33 @@ module.exports = { }; ``` +### Wide globs in `parserOptions.project` + +Using wide globs `**` in your `parserOptions.project` may degrade linting performance. +Instead of globs that use `**` to recursively check all folders, prefer paths that use a single `*` at a time. + +```js title=".eslintrc.js" +module.exports = { + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:@typescript-eslint/recommended-requiring-type-checking', + ], + parser: '@typescript-eslint/parser', + parserOptions: { + tsconfigRootDir: __dirname, + // Remove this line + project: ['./tsconfig.eslint.json', './**/tsconfig.json'], + // Add this line + project: ['./tsconfig.eslint.json', './packages/*/tsconfig.json'], + }, + plugins: ['@typescript-eslint'], + root: true, +}; +``` + +See [Glob pattern in parser's option "project" slows down linting](https://github.com/typescript-eslint/typescript-eslint/issues/2611) for more details. + ### Important note regarding large (> 10) multi-package monorepos We've had reports that for sufficiently large and/or interdependent projects, you may run into OOMs using this approach. diff --git a/packages/parser/README.md b/packages/parser/README.md index efba4854413..b32ed30beab 100644 --- a/packages/parser/README.md +++ b/packages/parser/README.md @@ -164,6 +164,8 @@ This option allows you to provide a path to your project's `tsconfig.json`. **Th - If you use project references, TypeScript will not automatically use project references to resolve files. This means that you will have to add each referenced tsconfig to the `project` field either separately, or via a glob. +- Note that using wide globs `**` in your `parserOptions.project` may cause performance implications. Instead of globs that use `**` to recursively check all folders, prefer paths that use a single `*` at a time. For more info see [#2611](https://github.com/typescript-eslint/typescript-eslint/issues/2611). + - TypeScript will ignore files with duplicate filenames in the same folder (for example, `src/file.ts` and `src/file.js`). TypeScript purposely ignore all but one of the files, only keeping the one file with the highest priority extension (the extension priority order (from highest to lowest) is `.ts`, `.tsx`, `.d.ts`, `.js`, `.jsx`). For more info see #955. - Note that if this setting is specified and `createDefaultProgram` is not, you must only lint files that are included in the projects as defined by the provided `tsconfig.json` files. If your existing configuration does not include all of the files you would like to lint, you can create a separate `tsconfig.eslint.json` as follows: From 2019c2f64e984e7726ea15da9b027040aaed576a Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Tue, 25 Oct 2022 22:02:37 -0400 Subject: [PATCH 072/193] chore: add auto-canary release for v6 (#5883) --- .github/workflows/ci.yml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ff735911dfa..1a1fd0e460b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,6 +4,7 @@ on: push: branches: - main + - v6 pull_request: branches: - '**' @@ -249,3 +250,28 @@ jobs: run: npx lerna publish --loglevel=verbose --canary --exact --force-publish --yes env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + + publish_canary_version_v6: + name: Publish the next major version code as a canary version + runs-on: ubuntu-latest + needs: [integration_tests, lint_with_build, lint_without_build, unit_tests] + if: github.ref == 'refs/heads/v${major}' + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Install + uses: ./.github/actions/prepare-install + with: + node-version: ${{ env.PRIMARY_NODE_VERSION }} + registry-url: 'https://registry.npmjs.org' + - name: Build + uses: ./.github/actions/prepare-build + + # Fetch all history for all tags and branches in this job because lerna needs it + - run: | + git fetch --prune --unshallow + + - name: Publish all packages to npm + run: npx lerna publish premajor --loglevel=verbose --canary --exact --force-publish --yes --dist-tag rc-v${major} + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} From 3b8d449696c319690536a18a48ef32749dc2f559 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Tue, 25 Oct 2022 22:52:59 -0400 Subject: [PATCH 073/193] feat(scope-manager): ignore ECMA version (#5881) * feat(scope-manager): ignore ECMA version * Remove much more * Fix WebLinter lint --- packages/parser/src/parser.ts | 1 - packages/parser/tests/lib/parser.ts | 8 --- packages/scope-manager/README.md | 12 +---- packages/scope-manager/src/ScopeManager.ts | 9 ++-- packages/scope-manager/src/analyze.ts | 35 ++----------- .../src/referencer/Referencer.ts | 17 ++----- .../get-declared-variables.test.ts | 1 - .../tests/eslint-scope/implied-strict.test.ts | 30 +---------- .../eslint-scope/map-ecma-version.test.ts | 51 ------------------- packages/scope-manager/tests/fixtures.test.ts | 1 - .../src/components/linter/WebLinter.ts | 4 -- 11 files changed, 18 insertions(+), 151 deletions(-) delete mode 100644 packages/scope-manager/tests/eslint-scope/map-ecma-version.test.ts diff --git a/packages/parser/src/parser.ts b/packages/parser/src/parser.ts index 0e4b7780c17..e7223e93332 100644 --- a/packages/parser/src/parser.ts +++ b/packages/parser/src/parser.ts @@ -105,7 +105,6 @@ function parseForESLint( jsx: validateBoolean(options.ecmaFeatures.jsx), }); const analyzeOptions: AnalyzeOptions = { - ecmaVersion: options.ecmaVersion === 'latest' ? 1e8 : options.ecmaVersion, globalReturn: options.ecmaFeatures.globalReturn, jsxPragma: options.jsxPragma, jsxFragmentName: options.jsxFragmentName, diff --git a/packages/parser/tests/lib/parser.ts b/packages/parser/tests/lib/parser.ts index 7f2f193e11d..e554c4bfde7 100644 --- a/packages/parser/tests/lib/parser.ts +++ b/packages/parser/tests/lib/parser.ts @@ -19,11 +19,6 @@ describe('parser', () => { expect(() => parseForESLint(code, null)).not.toThrow(); }); - it("parseForESLint() should work if options.ecmaVersion is `'latest'`", () => { - const code = 'const valid = true;'; - expect(() => parseForESLint(code, { ecmaVersion: 'latest' })).not.toThrow(); - }); - it('parseAndGenerateServices() should be called with options', () => { const code = 'const valid = true;'; const spy = jest.spyOn(typescriptESTree, 'parseAndGenerateServices'); @@ -33,7 +28,6 @@ describe('parser', () => { range: false, tokens: false, sourceType: 'module' as const, - ecmaVersion: 2018, ecmaFeatures: { globalReturn: false, jsx: false, @@ -84,7 +78,6 @@ describe('parser', () => { range: false, tokens: false, sourceType: 'module' as const, - ecmaVersion: 2018, ecmaFeatures: { globalReturn: false, jsx: false, @@ -104,7 +97,6 @@ describe('parser', () => { parseForESLint(code, config); expect(spy).toHaveBeenCalledTimes(1); expect(spy).toHaveBeenLastCalledWith(expect.anything(), { - ecmaVersion: 2018, globalReturn: false, lib: ['dom.iterable'], jsxPragma: 'Foo', diff --git a/packages/scope-manager/README.md b/packages/scope-manager/README.md index b0a745f3fa5..3d9ef751032 100644 --- a/packages/scope-manager/README.md +++ b/packages/scope-manager/README.md @@ -36,13 +36,6 @@ interface AnalyzeOptions { */ childVisitorKeys?: Record | null; - /** - * Which ECMAScript version is considered. - * Defaults to `2018`. - * `'latest'` is converted to 1e8 at parser. - */ - ecmaVersion?: EcmaVersion | 1e8; - /** * Whether the whole script is executed under node.js environment. * When enabled, the scope manager adds a function scope immediately following the global scope. @@ -51,7 +44,7 @@ interface AnalyzeOptions { globalReturn?: boolean; /** - * Implied strict mode (if ecmaVersion >= 5). + * Implied strict mode. * Defaults to `false`. */ impliedStrict?: boolean; @@ -76,7 +69,7 @@ interface AnalyzeOptions { * This automatically defines a type variable for any types provided by the configured TS libs. * For more information, see https://www.typescriptlang.org/tsconfig#lib * - * Defaults to the lib for the provided `ecmaVersion`. + * Defaults to ['esnext']. */ lib?: Lib[]; @@ -105,7 +98,6 @@ const ast = parse(code, { range: true, }); const scope = analyze(ast, { - ecmaVersion: 2020, sourceType: 'module', }); ``` diff --git a/packages/scope-manager/src/ScopeManager.ts b/packages/scope-manager/src/ScopeManager.ts index 5368cca1dc3..d8beafba4aa 100644 --- a/packages/scope-manager/src/ScopeManager.ts +++ b/packages/scope-manager/src/ScopeManager.ts @@ -28,9 +28,11 @@ interface ScopeManagerOptions { globalReturn?: boolean; sourceType?: 'module' | 'script'; impliedStrict?: boolean; - ecmaVersion?: number; } +/** + * @see https://eslint.org/docs/latest/developer-guide/scope-manager-interface#scopemanager-interface + */ class ScopeManager { public currentScope: Scope | null; public readonly declaredVariables: WeakMap; @@ -77,12 +79,13 @@ class ScopeManager { public isImpliedStrict(): boolean { return this.#options.impliedStrict === true; } + public isStrictModeSupported(): boolean { - return this.#options.ecmaVersion != null && this.#options.ecmaVersion >= 5; + return true; } public isES6(): boolean { - return this.#options.ecmaVersion != null && this.#options.ecmaVersion >= 6; + return true; } /** diff --git a/packages/scope-manager/src/analyze.ts b/packages/scope-manager/src/analyze.ts index e227d1e45ad..1cb1d989209 100644 --- a/packages/scope-manager/src/analyze.ts +++ b/packages/scope-manager/src/analyze.ts @@ -1,7 +1,6 @@ -import type { EcmaVersion, Lib, TSESTree } from '@typescript-eslint/types'; +import type { Lib, TSESTree } from '@typescript-eslint/types'; import { visitorKeys } from '@typescript-eslint/visitor-keys'; -import { lib as TSLibraries } from './lib'; import type { ReferencerOptions } from './referencer'; import { Referencer } from './referencer'; import { ScopeManager } from './ScopeManager'; @@ -16,13 +15,6 @@ interface AnalyzeOptions { */ childVisitorKeys?: ReferencerOptions['childVisitorKeys']; - /** - * Which ECMAScript version is considered. - * Defaults to `2018`. - * `'latest'` is converted to 1e8 at parser. - */ - ecmaVersion?: EcmaVersion | 1e8; - /** * Whether the whole script is executed under node.js environment. * When enabled, the scope manager adds a function scope immediately following the global scope. @@ -31,7 +23,7 @@ interface AnalyzeOptions { globalReturn?: boolean; /** - * Implied strict mode (if ecmaVersion >= 5). + * Implied strict mode. * Defaults to `false`. */ impliedStrict?: boolean; @@ -54,7 +46,7 @@ interface AnalyzeOptions { /** * The lib used by the project. * This automatically defines a type variable for any types provided by the configured TS libs. - * Defaults to the lib for the provided `ecmaVersion`. + * Defaults to ['esnext']. * * https://www.typescriptlang.org/tsconfig#lib */ @@ -74,7 +66,6 @@ interface AnalyzeOptions { const DEFAULT_OPTIONS: Required = { childVisitorKeys: visitorKeys, - ecmaVersion: 2018, globalReturn: false, impliedStrict: false, jsxPragma: 'React', @@ -84,21 +75,6 @@ const DEFAULT_OPTIONS: Required = { emitDecoratorMetadata: false, }; -/** - * Convert ecmaVersion to lib. - * `'latest'` is converted to 1e8 at parser. - */ -function mapEcmaVersion(version: EcmaVersion | 1e8 | undefined): Lib { - if (version == null || version === 3 || version === 5) { - return 'es5'; - } - - const year = version > 2000 ? version : 2015 + (version - 6); - const lib = `es${year}`; - - return lib in TSLibraries ? (lib as Lib) : year > 2020 ? 'esnext' : 'es5'; -} - /** * Takes an AST and returns the analyzed scopes. */ @@ -106,12 +82,9 @@ function analyze( tree: TSESTree.Node, providedOptions?: AnalyzeOptions, ): ScopeManager { - const ecmaVersion = - providedOptions?.ecmaVersion ?? DEFAULT_OPTIONS.ecmaVersion; const options: Required = { childVisitorKeys: providedOptions?.childVisitorKeys ?? DEFAULT_OPTIONS.childVisitorKeys, - ecmaVersion, globalReturn: providedOptions?.globalReturn ?? DEFAULT_OPTIONS.globalReturn, impliedStrict: providedOptions?.impliedStrict ?? DEFAULT_OPTIONS.impliedStrict, @@ -122,7 +95,7 @@ function analyze( jsxFragmentName: providedOptions?.jsxFragmentName ?? DEFAULT_OPTIONS.jsxFragmentName, sourceType: providedOptions?.sourceType ?? DEFAULT_OPTIONS.sourceType, - lib: providedOptions?.lib ?? [mapEcmaVersion(ecmaVersion)], + lib: providedOptions?.lib ?? ['esnext'], emitDecoratorMetadata: providedOptions?.emitDecoratorMetadata ?? DEFAULT_OPTIONS.emitDecoratorMetadata, diff --git a/packages/scope-manager/src/referencer/Referencer.ts b/packages/scope-manager/src/referencer/Referencer.ts index a69209e86c6..ecadb7e9fd6 100644 --- a/packages/scope-manager/src/referencer/Referencer.ts +++ b/packages/scope-manager/src/referencer/Referencer.ts @@ -371,9 +371,7 @@ class Referencer extends Visitor { } protected BlockStatement(node: TSESTree.BlockStatement): void { - if (this.scopeManager.isES6()) { - this.scopeManager.nestBlockScope(node); - } + this.scopeManager.nestBlockScope(node); this.visitChildren(node); @@ -487,7 +485,7 @@ class Referencer extends Visitor { protected ImportDeclaration(node: TSESTree.ImportDeclaration): void { assert( - this.scopeManager.isES6() && this.scopeManager.isModule(), + this.scopeManager.isModule(), 'ImportDeclaration should appear when the mode is ES6 and in the module context.', ); @@ -579,14 +577,11 @@ class Referencer extends Visitor { this.scopeManager.nestFunctionScope(node, false); } - if (this.scopeManager.isES6() && this.scopeManager.isModule()) { + if (this.scopeManager.isModule()) { this.scopeManager.nestModuleScope(node); } - if ( - this.scopeManager.isStrictModeSupported() && - this.scopeManager.isImpliedStrict() - ) { + if (this.scopeManager.isImpliedStrict()) { this.currentScope().isStrict = true; } @@ -601,9 +596,7 @@ class Referencer extends Visitor { protected SwitchStatement(node: TSESTree.SwitchStatement): void { this.visit(node.discriminant); - if (this.scopeManager.isES6()) { - this.scopeManager.nestSwitchScope(node); - } + this.scopeManager.nestSwitchScope(node); for (const switchCase of node.cases) { this.visit(switchCase); diff --git a/packages/scope-manager/tests/eslint-scope/get-declared-variables.test.ts b/packages/scope-manager/tests/eslint-scope/get-declared-variables.test.ts index 23e02b9af0c..82611eb5147 100644 --- a/packages/scope-manager/tests/eslint-scope/get-declared-variables.test.ts +++ b/packages/scope-manager/tests/eslint-scope/get-declared-variables.test.ts @@ -12,7 +12,6 @@ describe('ScopeManager.prototype.getDeclaredVariables', () => { expectedNamesList: string[][], ): void { const scopeManager = analyze(ast, { - ecmaVersion: 6, sourceType: 'module', }); diff --git a/packages/scope-manager/tests/eslint-scope/implied-strict.test.ts b/packages/scope-manager/tests/eslint-scope/implied-strict.test.ts index 34151be8c3d..893da6048c2 100644 --- a/packages/scope-manager/tests/eslint-scope/implied-strict.test.ts +++ b/packages/scope-manager/tests/eslint-scope/implied-strict.test.ts @@ -8,7 +8,7 @@ import { } from '../util'; describe('impliedStrict option', () => { - it('ensures all user scopes are strict if ecmaVersion >= 5', () => { + it('ensures all user scopes are strict', () => { const { scopeManager } = parseAndAnalyze( ` function foo() { @@ -18,7 +18,6 @@ describe('impliedStrict option', () => { } `, { - ecmaVersion: 5, impliedStrict: true, }, ); @@ -42,38 +41,12 @@ describe('impliedStrict option', () => { expect(scope.isStrict).toBeTruthy(); }); - it('ensures impliedStrict option is only effective when ecmaVersion option >= 5', () => { - const { scopeManager } = parseAndAnalyze( - ` - function foo() {} - `, - { - ecmaVersion: 3, - impliedStrict: true, - }, - ); - - expect(scopeManager.scopes).toHaveLength(2); - - let scope = scopeManager.scopes[0]; - - expectToBeGlobalScope(scope); - expect(scope.block.type).toBe(AST_NODE_TYPES.Program); - expect(scope.isStrict).toBeFalsy(); - - scope = scopeManager.scopes[1]; - expectToBeFunctionScope(scope); - expect(scope.block.type).toBe(AST_NODE_TYPES.FunctionDeclaration); - expect(scope.isStrict).toBeFalsy(); - }); - it('omits a nodejs global scope when ensuring all user scopes are strict', () => { const { scopeManager } = parseAndAnalyze( ` function foo() {} `, { - ecmaVersion: 5, globalReturn: true, impliedStrict: true, }, @@ -100,7 +73,6 @@ describe('impliedStrict option', () => { it('omits a module global scope when ensuring all user scopes are strict', () => { const { scopeManager } = parseAndAnalyze('function foo() {}', { - ecmaVersion: 6, impliedStrict: true, sourceType: 'module', }); diff --git a/packages/scope-manager/tests/eslint-scope/map-ecma-version.test.ts b/packages/scope-manager/tests/eslint-scope/map-ecma-version.test.ts deleted file mode 100644 index becca474ff3..00000000000 --- a/packages/scope-manager/tests/eslint-scope/map-ecma-version.test.ts +++ /dev/null @@ -1,51 +0,0 @@ -import type { EcmaVersion, Lib, TSESTree } from '@typescript-eslint/types'; - -import { analyze } from '../../src/analyze'; -import { Referencer } from '../../src/referencer'; - -jest.mock('../../src/referencer'); -jest.mock('../../src/ScopeManager'); - -describe('ecma version mapping', () => { - it("should map to 'esnext' when unsuported and new", () => { - expectMapping(2042, 'esnext'); - expectMapping(42, 'esnext'); - }); - - it("should map to 'es5' when unsuported and old", () => { - expectMapping(2002, 'es5'); - expectMapping(2, 'es5'); - }); - - it("should map to 'es{year}' when supported and >= 6", () => { - expectMapping(2015, 'es2015'); - expectMapping(6, 'es2015'); - expectMapping(2020, 'es2020'); - expectMapping(11, 'es2020'); - }); - - it("should map to 'es5' when 5 or 3", () => { - expectMapping(5, 'es5'); - expectMapping(3, 'es5'); - }); - - it("should map to 'es2018' when undefined", () => { - expectMapping(undefined, 'es2018'); - }); - - it("should map to 'esnext' when 'latest'", () => { - // `'latest'` is converted to 1e8 at parser. - expectMapping(1e8, 'esnext'); - }); -}); - -const fakeNode = {} as unknown as TSESTree.Node; - -function expectMapping(ecmaVersion: number | undefined, lib: Lib): void { - (Referencer as jest.Mock).mockClear(); - analyze(fakeNode, { ecmaVersion: ecmaVersion as EcmaVersion }); - expect(Referencer).toHaveBeenCalledWith( - expect.objectContaining({ lib: [lib] }), - expect.any(Object), - ); -} diff --git a/packages/scope-manager/tests/fixtures.test.ts b/packages/scope-manager/tests/fixtures.test.ts index fa86c1544c7..ac6b39c860e 100644 --- a/packages/scope-manager/tests/fixtures.test.ts +++ b/packages/scope-manager/tests/fixtures.test.ts @@ -42,7 +42,6 @@ const ALLOWED_OPTIONS: Map = new Map< keyof AnalyzeOptions, ALLOWED_VALUE >([ - ['ecmaVersion', ['number']], ['globalReturn', ['boolean']], ['impliedStrict', ['boolean']], ['jsxPragma', ['string']], diff --git a/packages/website/src/components/linter/WebLinter.ts b/packages/website/src/components/linter/WebLinter.ts index 378e34ed136..acd3c569ff3 100644 --- a/packages/website/src/components/linter/WebLinter.ts +++ b/packages/website/src/components/linter/WebLinter.ts @@ -111,10 +111,6 @@ export class WebLinter { ); const scopeManager = this.lintUtils.analyze(ast, { - ecmaVersion: - eslintOptions.ecmaVersion === 'latest' - ? 1e8 - : eslintOptions.ecmaVersion, globalReturn: eslintOptions.ecmaFeatures?.globalReturn ?? false, sourceType: eslintOptions.sourceType ?? 'script', }); From 2ee81df5a365d82ef4b3dfc124d4ec39c7bcb725 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Tue, 25 Oct 2022 23:08:14 -0400 Subject: [PATCH 074/193] Revert "feat(scope-manager): ignore ECMA version" (#5888) Revert "feat(scope-manager): ignore ECMA version (#5881)" This reverts commit 3b8d449696c319690536a18a48ef32749dc2f559. --- packages/parser/src/parser.ts | 1 + packages/parser/tests/lib/parser.ts | 8 +++ packages/scope-manager/README.md | 12 ++++- packages/scope-manager/src/ScopeManager.ts | 9 ++-- packages/scope-manager/src/analyze.ts | 35 +++++++++++-- .../src/referencer/Referencer.ts | 17 +++++-- .../get-declared-variables.test.ts | 1 + .../tests/eslint-scope/implied-strict.test.ts | 30 ++++++++++- .../eslint-scope/map-ecma-version.test.ts | 51 +++++++++++++++++++ packages/scope-manager/tests/fixtures.test.ts | 1 + .../src/components/linter/WebLinter.ts | 4 ++ 11 files changed, 151 insertions(+), 18 deletions(-) create mode 100644 packages/scope-manager/tests/eslint-scope/map-ecma-version.test.ts diff --git a/packages/parser/src/parser.ts b/packages/parser/src/parser.ts index e7223e93332..0e4b7780c17 100644 --- a/packages/parser/src/parser.ts +++ b/packages/parser/src/parser.ts @@ -105,6 +105,7 @@ function parseForESLint( jsx: validateBoolean(options.ecmaFeatures.jsx), }); const analyzeOptions: AnalyzeOptions = { + ecmaVersion: options.ecmaVersion === 'latest' ? 1e8 : options.ecmaVersion, globalReturn: options.ecmaFeatures.globalReturn, jsxPragma: options.jsxPragma, jsxFragmentName: options.jsxFragmentName, diff --git a/packages/parser/tests/lib/parser.ts b/packages/parser/tests/lib/parser.ts index e554c4bfde7..7f2f193e11d 100644 --- a/packages/parser/tests/lib/parser.ts +++ b/packages/parser/tests/lib/parser.ts @@ -19,6 +19,11 @@ describe('parser', () => { expect(() => parseForESLint(code, null)).not.toThrow(); }); + it("parseForESLint() should work if options.ecmaVersion is `'latest'`", () => { + const code = 'const valid = true;'; + expect(() => parseForESLint(code, { ecmaVersion: 'latest' })).not.toThrow(); + }); + it('parseAndGenerateServices() should be called with options', () => { const code = 'const valid = true;'; const spy = jest.spyOn(typescriptESTree, 'parseAndGenerateServices'); @@ -28,6 +33,7 @@ describe('parser', () => { range: false, tokens: false, sourceType: 'module' as const, + ecmaVersion: 2018, ecmaFeatures: { globalReturn: false, jsx: false, @@ -78,6 +84,7 @@ describe('parser', () => { range: false, tokens: false, sourceType: 'module' as const, + ecmaVersion: 2018, ecmaFeatures: { globalReturn: false, jsx: false, @@ -97,6 +104,7 @@ describe('parser', () => { parseForESLint(code, config); expect(spy).toHaveBeenCalledTimes(1); expect(spy).toHaveBeenLastCalledWith(expect.anything(), { + ecmaVersion: 2018, globalReturn: false, lib: ['dom.iterable'], jsxPragma: 'Foo', diff --git a/packages/scope-manager/README.md b/packages/scope-manager/README.md index 3d9ef751032..b0a745f3fa5 100644 --- a/packages/scope-manager/README.md +++ b/packages/scope-manager/README.md @@ -36,6 +36,13 @@ interface AnalyzeOptions { */ childVisitorKeys?: Record | null; + /** + * Which ECMAScript version is considered. + * Defaults to `2018`. + * `'latest'` is converted to 1e8 at parser. + */ + ecmaVersion?: EcmaVersion | 1e8; + /** * Whether the whole script is executed under node.js environment. * When enabled, the scope manager adds a function scope immediately following the global scope. @@ -44,7 +51,7 @@ interface AnalyzeOptions { globalReturn?: boolean; /** - * Implied strict mode. + * Implied strict mode (if ecmaVersion >= 5). * Defaults to `false`. */ impliedStrict?: boolean; @@ -69,7 +76,7 @@ interface AnalyzeOptions { * This automatically defines a type variable for any types provided by the configured TS libs. * For more information, see https://www.typescriptlang.org/tsconfig#lib * - * Defaults to ['esnext']. + * Defaults to the lib for the provided `ecmaVersion`. */ lib?: Lib[]; @@ -98,6 +105,7 @@ const ast = parse(code, { range: true, }); const scope = analyze(ast, { + ecmaVersion: 2020, sourceType: 'module', }); ``` diff --git a/packages/scope-manager/src/ScopeManager.ts b/packages/scope-manager/src/ScopeManager.ts index d8beafba4aa..5368cca1dc3 100644 --- a/packages/scope-manager/src/ScopeManager.ts +++ b/packages/scope-manager/src/ScopeManager.ts @@ -28,11 +28,9 @@ interface ScopeManagerOptions { globalReturn?: boolean; sourceType?: 'module' | 'script'; impliedStrict?: boolean; + ecmaVersion?: number; } -/** - * @see https://eslint.org/docs/latest/developer-guide/scope-manager-interface#scopemanager-interface - */ class ScopeManager { public currentScope: Scope | null; public readonly declaredVariables: WeakMap; @@ -79,13 +77,12 @@ class ScopeManager { public isImpliedStrict(): boolean { return this.#options.impliedStrict === true; } - public isStrictModeSupported(): boolean { - return true; + return this.#options.ecmaVersion != null && this.#options.ecmaVersion >= 5; } public isES6(): boolean { - return true; + return this.#options.ecmaVersion != null && this.#options.ecmaVersion >= 6; } /** diff --git a/packages/scope-manager/src/analyze.ts b/packages/scope-manager/src/analyze.ts index 1cb1d989209..e227d1e45ad 100644 --- a/packages/scope-manager/src/analyze.ts +++ b/packages/scope-manager/src/analyze.ts @@ -1,6 +1,7 @@ -import type { Lib, TSESTree } from '@typescript-eslint/types'; +import type { EcmaVersion, Lib, TSESTree } from '@typescript-eslint/types'; import { visitorKeys } from '@typescript-eslint/visitor-keys'; +import { lib as TSLibraries } from './lib'; import type { ReferencerOptions } from './referencer'; import { Referencer } from './referencer'; import { ScopeManager } from './ScopeManager'; @@ -15,6 +16,13 @@ interface AnalyzeOptions { */ childVisitorKeys?: ReferencerOptions['childVisitorKeys']; + /** + * Which ECMAScript version is considered. + * Defaults to `2018`. + * `'latest'` is converted to 1e8 at parser. + */ + ecmaVersion?: EcmaVersion | 1e8; + /** * Whether the whole script is executed under node.js environment. * When enabled, the scope manager adds a function scope immediately following the global scope. @@ -23,7 +31,7 @@ interface AnalyzeOptions { globalReturn?: boolean; /** - * Implied strict mode. + * Implied strict mode (if ecmaVersion >= 5). * Defaults to `false`. */ impliedStrict?: boolean; @@ -46,7 +54,7 @@ interface AnalyzeOptions { /** * The lib used by the project. * This automatically defines a type variable for any types provided by the configured TS libs. - * Defaults to ['esnext']. + * Defaults to the lib for the provided `ecmaVersion`. * * https://www.typescriptlang.org/tsconfig#lib */ @@ -66,6 +74,7 @@ interface AnalyzeOptions { const DEFAULT_OPTIONS: Required = { childVisitorKeys: visitorKeys, + ecmaVersion: 2018, globalReturn: false, impliedStrict: false, jsxPragma: 'React', @@ -75,6 +84,21 @@ const DEFAULT_OPTIONS: Required = { emitDecoratorMetadata: false, }; +/** + * Convert ecmaVersion to lib. + * `'latest'` is converted to 1e8 at parser. + */ +function mapEcmaVersion(version: EcmaVersion | 1e8 | undefined): Lib { + if (version == null || version === 3 || version === 5) { + return 'es5'; + } + + const year = version > 2000 ? version : 2015 + (version - 6); + const lib = `es${year}`; + + return lib in TSLibraries ? (lib as Lib) : year > 2020 ? 'esnext' : 'es5'; +} + /** * Takes an AST and returns the analyzed scopes. */ @@ -82,9 +106,12 @@ function analyze( tree: TSESTree.Node, providedOptions?: AnalyzeOptions, ): ScopeManager { + const ecmaVersion = + providedOptions?.ecmaVersion ?? DEFAULT_OPTIONS.ecmaVersion; const options: Required = { childVisitorKeys: providedOptions?.childVisitorKeys ?? DEFAULT_OPTIONS.childVisitorKeys, + ecmaVersion, globalReturn: providedOptions?.globalReturn ?? DEFAULT_OPTIONS.globalReturn, impliedStrict: providedOptions?.impliedStrict ?? DEFAULT_OPTIONS.impliedStrict, @@ -95,7 +122,7 @@ function analyze( jsxFragmentName: providedOptions?.jsxFragmentName ?? DEFAULT_OPTIONS.jsxFragmentName, sourceType: providedOptions?.sourceType ?? DEFAULT_OPTIONS.sourceType, - lib: providedOptions?.lib ?? ['esnext'], + lib: providedOptions?.lib ?? [mapEcmaVersion(ecmaVersion)], emitDecoratorMetadata: providedOptions?.emitDecoratorMetadata ?? DEFAULT_OPTIONS.emitDecoratorMetadata, diff --git a/packages/scope-manager/src/referencer/Referencer.ts b/packages/scope-manager/src/referencer/Referencer.ts index ecadb7e9fd6..a69209e86c6 100644 --- a/packages/scope-manager/src/referencer/Referencer.ts +++ b/packages/scope-manager/src/referencer/Referencer.ts @@ -371,7 +371,9 @@ class Referencer extends Visitor { } protected BlockStatement(node: TSESTree.BlockStatement): void { - this.scopeManager.nestBlockScope(node); + if (this.scopeManager.isES6()) { + this.scopeManager.nestBlockScope(node); + } this.visitChildren(node); @@ -485,7 +487,7 @@ class Referencer extends Visitor { protected ImportDeclaration(node: TSESTree.ImportDeclaration): void { assert( - this.scopeManager.isModule(), + this.scopeManager.isES6() && this.scopeManager.isModule(), 'ImportDeclaration should appear when the mode is ES6 and in the module context.', ); @@ -577,11 +579,14 @@ class Referencer extends Visitor { this.scopeManager.nestFunctionScope(node, false); } - if (this.scopeManager.isModule()) { + if (this.scopeManager.isES6() && this.scopeManager.isModule()) { this.scopeManager.nestModuleScope(node); } - if (this.scopeManager.isImpliedStrict()) { + if ( + this.scopeManager.isStrictModeSupported() && + this.scopeManager.isImpliedStrict() + ) { this.currentScope().isStrict = true; } @@ -596,7 +601,9 @@ class Referencer extends Visitor { protected SwitchStatement(node: TSESTree.SwitchStatement): void { this.visit(node.discriminant); - this.scopeManager.nestSwitchScope(node); + if (this.scopeManager.isES6()) { + this.scopeManager.nestSwitchScope(node); + } for (const switchCase of node.cases) { this.visit(switchCase); diff --git a/packages/scope-manager/tests/eslint-scope/get-declared-variables.test.ts b/packages/scope-manager/tests/eslint-scope/get-declared-variables.test.ts index 82611eb5147..23e02b9af0c 100644 --- a/packages/scope-manager/tests/eslint-scope/get-declared-variables.test.ts +++ b/packages/scope-manager/tests/eslint-scope/get-declared-variables.test.ts @@ -12,6 +12,7 @@ describe('ScopeManager.prototype.getDeclaredVariables', () => { expectedNamesList: string[][], ): void { const scopeManager = analyze(ast, { + ecmaVersion: 6, sourceType: 'module', }); diff --git a/packages/scope-manager/tests/eslint-scope/implied-strict.test.ts b/packages/scope-manager/tests/eslint-scope/implied-strict.test.ts index 893da6048c2..34151be8c3d 100644 --- a/packages/scope-manager/tests/eslint-scope/implied-strict.test.ts +++ b/packages/scope-manager/tests/eslint-scope/implied-strict.test.ts @@ -8,7 +8,7 @@ import { } from '../util'; describe('impliedStrict option', () => { - it('ensures all user scopes are strict', () => { + it('ensures all user scopes are strict if ecmaVersion >= 5', () => { const { scopeManager } = parseAndAnalyze( ` function foo() { @@ -18,6 +18,7 @@ describe('impliedStrict option', () => { } `, { + ecmaVersion: 5, impliedStrict: true, }, ); @@ -41,12 +42,38 @@ describe('impliedStrict option', () => { expect(scope.isStrict).toBeTruthy(); }); + it('ensures impliedStrict option is only effective when ecmaVersion option >= 5', () => { + const { scopeManager } = parseAndAnalyze( + ` + function foo() {} + `, + { + ecmaVersion: 3, + impliedStrict: true, + }, + ); + + expect(scopeManager.scopes).toHaveLength(2); + + let scope = scopeManager.scopes[0]; + + expectToBeGlobalScope(scope); + expect(scope.block.type).toBe(AST_NODE_TYPES.Program); + expect(scope.isStrict).toBeFalsy(); + + scope = scopeManager.scopes[1]; + expectToBeFunctionScope(scope); + expect(scope.block.type).toBe(AST_NODE_TYPES.FunctionDeclaration); + expect(scope.isStrict).toBeFalsy(); + }); + it('omits a nodejs global scope when ensuring all user scopes are strict', () => { const { scopeManager } = parseAndAnalyze( ` function foo() {} `, { + ecmaVersion: 5, globalReturn: true, impliedStrict: true, }, @@ -73,6 +100,7 @@ describe('impliedStrict option', () => { it('omits a module global scope when ensuring all user scopes are strict', () => { const { scopeManager } = parseAndAnalyze('function foo() {}', { + ecmaVersion: 6, impliedStrict: true, sourceType: 'module', }); diff --git a/packages/scope-manager/tests/eslint-scope/map-ecma-version.test.ts b/packages/scope-manager/tests/eslint-scope/map-ecma-version.test.ts new file mode 100644 index 00000000000..becca474ff3 --- /dev/null +++ b/packages/scope-manager/tests/eslint-scope/map-ecma-version.test.ts @@ -0,0 +1,51 @@ +import type { EcmaVersion, Lib, TSESTree } from '@typescript-eslint/types'; + +import { analyze } from '../../src/analyze'; +import { Referencer } from '../../src/referencer'; + +jest.mock('../../src/referencer'); +jest.mock('../../src/ScopeManager'); + +describe('ecma version mapping', () => { + it("should map to 'esnext' when unsuported and new", () => { + expectMapping(2042, 'esnext'); + expectMapping(42, 'esnext'); + }); + + it("should map to 'es5' when unsuported and old", () => { + expectMapping(2002, 'es5'); + expectMapping(2, 'es5'); + }); + + it("should map to 'es{year}' when supported and >= 6", () => { + expectMapping(2015, 'es2015'); + expectMapping(6, 'es2015'); + expectMapping(2020, 'es2020'); + expectMapping(11, 'es2020'); + }); + + it("should map to 'es5' when 5 or 3", () => { + expectMapping(5, 'es5'); + expectMapping(3, 'es5'); + }); + + it("should map to 'es2018' when undefined", () => { + expectMapping(undefined, 'es2018'); + }); + + it("should map to 'esnext' when 'latest'", () => { + // `'latest'` is converted to 1e8 at parser. + expectMapping(1e8, 'esnext'); + }); +}); + +const fakeNode = {} as unknown as TSESTree.Node; + +function expectMapping(ecmaVersion: number | undefined, lib: Lib): void { + (Referencer as jest.Mock).mockClear(); + analyze(fakeNode, { ecmaVersion: ecmaVersion as EcmaVersion }); + expect(Referencer).toHaveBeenCalledWith( + expect.objectContaining({ lib: [lib] }), + expect.any(Object), + ); +} diff --git a/packages/scope-manager/tests/fixtures.test.ts b/packages/scope-manager/tests/fixtures.test.ts index ac6b39c860e..fa86c1544c7 100644 --- a/packages/scope-manager/tests/fixtures.test.ts +++ b/packages/scope-manager/tests/fixtures.test.ts @@ -42,6 +42,7 @@ const ALLOWED_OPTIONS: Map = new Map< keyof AnalyzeOptions, ALLOWED_VALUE >([ + ['ecmaVersion', ['number']], ['globalReturn', ['boolean']], ['impliedStrict', ['boolean']], ['jsxPragma', ['string']], diff --git a/packages/website/src/components/linter/WebLinter.ts b/packages/website/src/components/linter/WebLinter.ts index acd3c569ff3..378e34ed136 100644 --- a/packages/website/src/components/linter/WebLinter.ts +++ b/packages/website/src/components/linter/WebLinter.ts @@ -111,6 +111,10 @@ export class WebLinter { ); const scopeManager = this.lintUtils.analyze(ast, { + ecmaVersion: + eslintOptions.ecmaVersion === 'latest' + ? 1e8 + : eslintOptions.ecmaVersion, globalReturn: eslintOptions.ecmaFeatures?.globalReturn ?? false, sourceType: eslintOptions.sourceType ?? 'script', }); From a0c828559187d1e167f2e095b503c887db4d4352 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Thu, 27 Oct 2022 01:02:45 -0400 Subject: [PATCH 075/193] feat(eslint-plugin) [sort-type-union-intersection-members] rename to sort-type-constituents (#5879) * feat(eslint-plugin) [sort-type-union-intersection-members] rename to sort-type-constituents * Sigh, test rename * Added back rule, with replacedBy * Fixed up rules exports --- .eslintrc.js | 2 +- .../docs/rules/sort-type-constituents.md | 101 ++++++ .../sort-type-union-intersection-members.md | 5 + packages/eslint-plugin/src/configs/all.ts | 2 +- packages/eslint-plugin/src/rules/index.ts | 2 + .../src/rules/sort-type-constituents.ts | 269 ++++++++++++++ .../sort-type-union-intersection-members.ts | 2 + .../rules/sort-type-constituents.test.ts | 334 ++++++++++++++++++ 8 files changed, 715 insertions(+), 2 deletions(-) create mode 100644 packages/eslint-plugin/docs/rules/sort-type-constituents.md create mode 100644 packages/eslint-plugin/src/rules/sort-type-constituents.ts create mode 100644 packages/eslint-plugin/tests/rules/sort-type-constituents.test.ts diff --git a/.eslintrc.js b/.eslintrc.js index 8e62b6d06e3..da7ff36fd3b 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -308,7 +308,7 @@ module.exports = { rules: { // disallow ALL unused vars '@typescript-eslint/no-unused-vars': 'error', - '@typescript-eslint/sort-type-union-intersection-members': 'error', + '@typescript-eslint/sort-type-constituents': 'error', }, }, { diff --git a/packages/eslint-plugin/docs/rules/sort-type-constituents.md b/packages/eslint-plugin/docs/rules/sort-type-constituents.md new file mode 100644 index 00000000000..264ef2b52df --- /dev/null +++ b/packages/eslint-plugin/docs/rules/sort-type-constituents.md @@ -0,0 +1,101 @@ +--- +description: 'Enforce constituents of a type union/intersection to be sorted alphabetically.' +--- + +> 🛑 This file is source code, not the primary documentation location! 🛑 +> +> See **https://typescript-eslint.io/rules/sort-type-constituents** for documentation. + +Sorting union (`|`) and intersection (`&`) types can help: + +- keep your codebase standardized +- find repeated types +- reduce diff churn + +This rule reports on any types that aren't sorted alphabetically. + +> Types are sorted case-insensitively and treating numbers like a human would, falling back to character code sorting in case of ties. + +## Examples + + + +### ❌ Incorrect + +```ts +type T1 = B | A; + +type T2 = { b: string } & { a: string }; + +type T3 = [1, 2, 4] & [1, 2, 3]; + +type T4 = + | [1, 2, 4] + | [1, 2, 3] + | { b: string } + | { a: string } + | (() => void) + | (() => string) + | 'b' + | 'a' + | 'b' + | 'a' + | readonly string[] + | readonly number[] + | string[] + | number[] + | B + | A + | string + | any; +``` + +### ✅ Correct + +```ts +type T1 = A | B; + +type T2 = { a: string } & { b: string }; + +type T3 = [1, 2, 3] & [1, 2, 4]; + +type T4 = + | any + | string + | A + | B + | number[] + | string[] + | readonly number[] + | readonly string[] + | 'a' + | 'b' + | 'a' + | 'b' + | (() => string) + | (() => void) + | { a: string } + | { b: string } + | [1, 2, 3] + | [1, 2, 4]; +``` + +## Options + +### `groupOrder` + +Each constituent of the type is placed into a group, and then the rule sorts alphabetically within each group. +The ordering of groups is determined by this option. + +- `conditional` - Conditional types (`A extends B ? C : D`) +- `function` - Function and constructor types (`() => void`, `new () => type`) +- `import` - Import types (`import('path')`) +- `intersection` - Intersection types (`A & B`) +- `keyword` - Keyword types (`any`, `string`, etc) +- `literal` - Literal types (`1`, `'b'`, `true`, etc) +- `named` - Named types (`A`, `A['prop']`, `B[]`, `Array`) +- `object` - Object types (`{ a: string }`, `{ [key: string]: number }`) +- `operator` - Operator types (`keyof A`, `typeof B`, `readonly C[]`) +- `tuple` - Tuple types (`[A, B, C]`) +- `union` - Union types (`A | B`) +- `nullish` - `null` and `undefined` diff --git a/packages/eslint-plugin/docs/rules/sort-type-union-intersection-members.md b/packages/eslint-plugin/docs/rules/sort-type-union-intersection-members.md index 2a47547219b..dbaf1807edf 100644 --- a/packages/eslint-plugin/docs/rules/sort-type-union-intersection-members.md +++ b/packages/eslint-plugin/docs/rules/sort-type-union-intersection-members.md @@ -6,6 +6,11 @@ description: 'Enforce members of a type union/intersection to be sorted alphabet > > See **https://typescript-eslint.io/rules/sort-type-union-intersection-members** for documentation. +:::danger Deprecated + +This rule has been renamed to [`sort-type-union-intersection-members`](./sort-type-union-intersection-members.md). +::: + Sorting union (`|`) and intersection (`&`) types can help: - keep your codebase standardized diff --git a/packages/eslint-plugin/src/configs/all.ts b/packages/eslint-plugin/src/configs/all.ts index 1f6530ead3e..20ea892f581 100644 --- a/packages/eslint-plugin/src/configs/all.ts +++ b/packages/eslint-plugin/src/configs/all.ts @@ -154,7 +154,7 @@ export = { '@typescript-eslint/return-await': 'error', semi: 'off', '@typescript-eslint/semi': 'error', - '@typescript-eslint/sort-type-union-intersection-members': 'error', + '@typescript-eslint/sort-type-constituents': 'error', 'space-before-blocks': 'off', '@typescript-eslint/space-before-blocks': 'error', 'space-before-function-paren': 'off', diff --git a/packages/eslint-plugin/src/rules/index.ts b/packages/eslint-plugin/src/rules/index.ts index 851661400fb..8a3c2bbf437 100644 --- a/packages/eslint-plugin/src/rules/index.ts +++ b/packages/eslint-plugin/src/rules/index.ts @@ -115,6 +115,7 @@ import restrictPlusOperands from './restrict-plus-operands'; import restrictTemplateExpressions from './restrict-template-expressions'; import returnAwait from './return-await'; import semi from './semi'; +import sortTypeConstituents from './sort-type-constituents'; import sortTypeUnionIntersectionMembers from './sort-type-union-intersection-members'; import spaceBeforeBlocks from './space-before-blocks'; import spaceBeforeFunctionParen from './space-before-function-paren'; @@ -245,6 +246,7 @@ export default { 'restrict-template-expressions': restrictTemplateExpressions, 'return-await': returnAwait, semi: semi, + 'sort-type-constituents': sortTypeConstituents, 'sort-type-union-intersection-members': sortTypeUnionIntersectionMembers, 'space-before-blocks': spaceBeforeBlocks, 'space-before-function-paren': spaceBeforeFunctionParen, diff --git a/packages/eslint-plugin/src/rules/sort-type-constituents.ts b/packages/eslint-plugin/src/rules/sort-type-constituents.ts new file mode 100644 index 00000000000..92b5e44c6f9 --- /dev/null +++ b/packages/eslint-plugin/src/rules/sort-type-constituents.ts @@ -0,0 +1,269 @@ +import type { TSESLint, TSESTree } from '@typescript-eslint/utils'; +import { AST_NODE_TYPES } from '@typescript-eslint/utils'; + +import * as util from '../util'; +import { getEnumNames } from '../util'; + +enum Group { + conditional = 'conditional', + function = 'function', + import = 'import', + intersection = 'intersection', + keyword = 'keyword', + nullish = 'nullish', + literal = 'literal', + named = 'named', + object = 'object', + operator = 'operator', + tuple = 'tuple', + union = 'union', +} + +function getGroup(node: TSESTree.TypeNode): Group { + switch (node.type) { + case AST_NODE_TYPES.TSConditionalType: + return Group.conditional; + + case AST_NODE_TYPES.TSConstructorType: + case AST_NODE_TYPES.TSFunctionType: + return Group.function; + + case AST_NODE_TYPES.TSImportType: + return Group.import; + + case AST_NODE_TYPES.TSIntersectionType: + return Group.intersection; + + case AST_NODE_TYPES.TSAnyKeyword: + case AST_NODE_TYPES.TSBigIntKeyword: + case AST_NODE_TYPES.TSBooleanKeyword: + case AST_NODE_TYPES.TSNeverKeyword: + case AST_NODE_TYPES.TSNumberKeyword: + case AST_NODE_TYPES.TSObjectKeyword: + case AST_NODE_TYPES.TSStringKeyword: + case AST_NODE_TYPES.TSSymbolKeyword: + case AST_NODE_TYPES.TSThisType: + case AST_NODE_TYPES.TSUnknownKeyword: + case AST_NODE_TYPES.TSIntrinsicKeyword: + return Group.keyword; + + case AST_NODE_TYPES.TSNullKeyword: + case AST_NODE_TYPES.TSUndefinedKeyword: + case AST_NODE_TYPES.TSVoidKeyword: + return Group.nullish; + + case AST_NODE_TYPES.TSLiteralType: + case AST_NODE_TYPES.TSTemplateLiteralType: + return Group.literal; + + case AST_NODE_TYPES.TSArrayType: + case AST_NODE_TYPES.TSIndexedAccessType: + case AST_NODE_TYPES.TSInferType: + case AST_NODE_TYPES.TSTypeReference: + return Group.named; + + case AST_NODE_TYPES.TSMappedType: + case AST_NODE_TYPES.TSTypeLiteral: + return Group.object; + + case AST_NODE_TYPES.TSTypeOperator: + case AST_NODE_TYPES.TSTypeQuery: + return Group.operator; + + case AST_NODE_TYPES.TSTupleType: + return Group.tuple; + + case AST_NODE_TYPES.TSUnionType: + return Group.union; + + // These types should never occur as part of a union/intersection + case AST_NODE_TYPES.TSAbstractKeyword: + case AST_NODE_TYPES.TSAsyncKeyword: + case AST_NODE_TYPES.TSDeclareKeyword: + case AST_NODE_TYPES.TSExportKeyword: + case AST_NODE_TYPES.TSNamedTupleMember: + case AST_NODE_TYPES.TSOptionalType: + case AST_NODE_TYPES.TSPrivateKeyword: + case AST_NODE_TYPES.TSProtectedKeyword: + case AST_NODE_TYPES.TSPublicKeyword: + case AST_NODE_TYPES.TSReadonlyKeyword: + case AST_NODE_TYPES.TSRestType: + case AST_NODE_TYPES.TSStaticKeyword: + case AST_NODE_TYPES.TSTypePredicate: + /* istanbul ignore next */ + throw new Error(`Unexpected Type ${node.type}`); + } +} + +function requiresParentheses(node: TSESTree.TypeNode): boolean { + return ( + node.type === AST_NODE_TYPES.TSFunctionType || + node.type === AST_NODE_TYPES.TSConstructorType + ); +} + +export type Options = [ + { + checkIntersections?: boolean; + checkUnions?: boolean; + groupOrder?: string[]; + }, +]; +export type MessageIds = 'notSorted' | 'notSortedNamed' | 'suggestFix'; + +export default util.createRule({ + name: 'sort-type-constituents', + meta: { + type: 'suggestion', + docs: { + description: + 'Enforce constituents of a type union/intersection to be sorted alphabetically', + recommended: false, + }, + fixable: 'code', + hasSuggestions: true, + messages: { + notSorted: '{{type}} type constituents must be sorted.', + notSortedNamed: '{{type}} type {{name}} constituents must be sorted.', + suggestFix: 'Sort constituents of type (removes all comments).', + }, + schema: [ + { + type: 'object', + properties: { + checkIntersections: { + description: 'Whether to check intersection types.', + type: 'boolean', + }, + checkUnions: { + description: 'Whether to check union types.', + type: 'boolean', + }, + groupOrder: { + description: 'Ordering of the groups.', + type: 'array', + items: { + type: 'string', + enum: getEnumNames(Group), + }, + }, + }, + }, + ], + }, + defaultOptions: [ + { + checkIntersections: true, + checkUnions: true, + groupOrder: [ + Group.named, + Group.keyword, + Group.operator, + Group.literal, + Group.function, + Group.import, + Group.conditional, + Group.object, + Group.tuple, + Group.intersection, + Group.union, + Group.nullish, + ], + }, + ], + create(context, [{ checkIntersections, checkUnions, groupOrder }]) { + const sourceCode = context.getSourceCode(); + + const collator = new Intl.Collator('en', { + sensitivity: 'base', + numeric: true, + }); + + function checkSorting( + node: TSESTree.TSIntersectionType | TSESTree.TSUnionType, + ): void { + const sourceOrder = node.types.map(type => { + const group = groupOrder?.indexOf(getGroup(type)) ?? -1; + return { + group: group === -1 ? Number.MAX_SAFE_INTEGER : group, + node: type, + text: sourceCode.getText(type), + }; + }); + const expectedOrder = [...sourceOrder].sort((a, b) => { + if (a.group !== b.group) { + return a.group - b.group; + } + + return ( + collator.compare(a.text, b.text) || + (a.text < b.text ? -1 : a.text > b.text ? 1 : 0) + ); + }); + + const hasComments = node.types.some(type => { + const count = + sourceCode.getCommentsBefore(type).length + + sourceCode.getCommentsAfter(type).length; + return count > 0; + }); + + for (let i = 0; i < expectedOrder.length; i += 1) { + if (expectedOrder[i].node !== sourceOrder[i].node) { + let messageId: MessageIds = 'notSorted'; + const data = { + name: '', + type: + node.type === AST_NODE_TYPES.TSIntersectionType + ? 'Intersection' + : 'Union', + }; + if (node.parent?.type === AST_NODE_TYPES.TSTypeAliasDeclaration) { + messageId = 'notSortedNamed'; + data.name = node.parent.id.name; + } + + const fix: TSESLint.ReportFixFunction = fixer => { + const sorted = expectedOrder + .map(t => (requiresParentheses(t.node) ? `(${t.text})` : t.text)) + .join( + node.type === AST_NODE_TYPES.TSIntersectionType ? ' & ' : ' | ', + ); + + return fixer.replaceText(node, sorted); + }; + return context.report({ + node, + messageId, + data, + // don't autofix if any of the types have leading/trailing comments + // the logic for preserving them correctly is a pain - we may implement this later + ...(hasComments + ? { + suggest: [ + { + messageId: 'suggestFix', + fix, + }, + ], + } + : { fix }), + }); + } + } + } + + return { + ...(checkIntersections && { + TSIntersectionType(node): void { + checkSorting(node); + }, + }), + ...(checkUnions && { + TSUnionType(node): void { + checkSorting(node); + }, + }), + }; + }, +}); diff --git a/packages/eslint-plugin/src/rules/sort-type-union-intersection-members.ts b/packages/eslint-plugin/src/rules/sort-type-union-intersection-members.ts index ded7212c6c9..2a83b4b0525 100644 --- a/packages/eslint-plugin/src/rules/sort-type-union-intersection-members.ts +++ b/packages/eslint-plugin/src/rules/sort-type-union-intersection-members.ts @@ -114,6 +114,7 @@ export type MessageIds = 'notSorted' | 'notSortedNamed' | 'suggestFix'; export default util.createRule({ name: 'sort-type-union-intersection-members', meta: { + deprecated: true, type: 'suggestion', docs: { description: @@ -127,6 +128,7 @@ export default util.createRule({ notSortedNamed: '{{type}} type {{name}} members must be sorted.', suggestFix: 'Sort members of type (removes all comments).', }, + replacedBy: ['@typescript-eslint/sort-type-constituents'], schema: [ { type: 'object', diff --git a/packages/eslint-plugin/tests/rules/sort-type-constituents.test.ts b/packages/eslint-plugin/tests/rules/sort-type-constituents.test.ts new file mode 100644 index 00000000000..b9989c2cf87 --- /dev/null +++ b/packages/eslint-plugin/tests/rules/sort-type-constituents.test.ts @@ -0,0 +1,334 @@ +import type { TSESLint } from '@typescript-eslint/utils'; + +import type { + MessageIds, + Options, +} from '../../src/rules/sort-type-constituents'; +import rule from '../../src/rules/sort-type-constituents'; +import { noFormat, RuleTester } from '../RuleTester'; + +const ruleTester = new RuleTester({ + parser: '@typescript-eslint/parser', +}); + +const valid = (operator: '|' | '&'): TSESLint.ValidTestCase[] => [ + { + code: `type T = A ${operator} B;`, + }, + { + code: `type T = A ${operator} /* comment */ B;`, + }, + { + code: `type T = 'A' ${operator} 'B';`, + }, + { + code: `type T = 1 ${operator} 2;`, + }, + { + code: noFormat`type T = (A) ${operator} (B);`, + }, + { + code: `type T = { a: string } ${operator} { b: string };`, + }, + { + code: `type T = [1, 2, 3] ${operator} [1, 2, 4];`, + }, + { + code: `type T = (() => string) ${operator} (() => void);`, + }, + { + code: `type T = () => string ${operator} void;`, + }, + { + // testing the default ordering + code: noFormat` +type T = + ${operator} A + ${operator} B + ${operator} intrinsic + ${operator} number[] + ${operator} string[] + ${operator} any + ${operator} string + ${operator} symbol + ${operator} this + ${operator} readonly number[] + ${operator} readonly string[] + ${operator} 'a' + ${operator} 'b' + ${operator} "a" + ${operator} "b" + ${operator} (() => string) + ${operator} (() => void) + ${operator} (new () => string) + ${operator} (new () => void) + ${operator} import('bar') + ${operator} import('foo') + ${operator} (number extends string ? unknown : never) + ${operator} (string extends string ? unknown : never) + ${operator} { [a in string]: string } + ${operator} { [a: string]: string } + ${operator} { [b in string]: string } + ${operator} { [b: string]: string } + ${operator} { a: string } + ${operator} { b: string } + ${operator} [1, 2, 3] + ${operator} [1, 2, 4] + ${operator} (A & B) + ${operator} (B & C) + ${operator} (A | B) + ${operator} (B | C) + ${operator} null + ${operator} undefined + `, + }, +]; +const invalid = ( + operator: '|' | '&', +): TSESLint.InvalidTestCase[] => { + const type = operator === '|' ? 'Union' : 'Intersection'; + return [ + { + code: `type T = B ${operator} A;`, + output: `type T = A ${operator} B;`, + errors: [ + { + messageId: 'notSortedNamed', + data: { + type, + name: 'T', + }, + }, + ], + }, + { + code: `type T = 'B' ${operator} 'A';`, + output: `type T = 'A' ${operator} 'B';`, + errors: [ + { + messageId: 'notSortedNamed', + data: { + type, + name: 'T', + }, + }, + ], + }, + { + code: `type T = 2 ${operator} 1;`, + output: `type T = 1 ${operator} 2;`, + errors: [ + { + messageId: 'notSortedNamed', + data: { + type, + name: 'T', + }, + }, + ], + }, + { + code: noFormat`type T = (B) ${operator} (A);`, + output: `type T = A ${operator} B;`, + errors: [ + { + messageId: 'notSortedNamed', + data: { + type, + name: 'T', + }, + }, + ], + }, + { + code: `type T = { b: string } ${operator} { a: string };`, + output: `type T = { a: string } ${operator} { b: string };`, + errors: [ + { + messageId: 'notSortedNamed', + data: { + type, + name: 'T', + }, + }, + ], + }, + { + code: `type T = [1, 2, 4] ${operator} [1, 2, 3];`, + output: `type T = [1, 2, 3] ${operator} [1, 2, 4];`, + errors: [ + { + messageId: 'notSortedNamed', + data: { + type, + name: 'T', + }, + }, + ], + }, + { + code: `type T = (() => void) ${operator} (() => string);`, + output: `type T = (() => string) ${operator} (() => void);`, + errors: [ + { + messageId: 'notSortedNamed', + data: { + type, + name: 'T', + }, + }, + ], + }, + { + code: `type T = () => void ${operator} string;`, + output: `type T = () => string ${operator} void;`, + errors: [ + { + messageId: 'notSorted', + data: { + type, + }, + }, + ], + }, + { + code: `type T = () => undefined ${operator} null;`, + output: `type T = () => null ${operator} undefined;`, + errors: [ + { + messageId: 'notSorted', + data: { + type, + }, + }, + ], + }, + { + code: noFormat` +type T = + ${operator} [1, 2, 4] + ${operator} [1, 2, 3] + ${operator} { b: string } + ${operator} { a: string } + ${operator} (() => void) + ${operator} (() => string) + ${operator} "b" + ${operator} "a" + ${operator} 'b' + ${operator} 'a' + ${operator} readonly string[] + ${operator} readonly number[] + ${operator} string[] + ${operator} number[] + ${operator} B + ${operator} A + ${operator} undefined + ${operator} null + ${operator} string + ${operator} any; + `, + output: ` +type T = + A ${operator} B ${operator} number[] ${operator} string[] ${operator} any ${operator} string ${operator} readonly number[] ${operator} readonly string[] ${operator} 'a' ${operator} 'b' ${operator} "a" ${operator} "b" ${operator} (() => string) ${operator} (() => void) ${operator} { a: string } ${operator} { b: string } ${operator} [1, 2, 3] ${operator} [1, 2, 4] ${operator} null ${operator} undefined; + `, + errors: [ + { + messageId: 'notSortedNamed', + data: { + type, + name: 'T', + }, + }, + ], + }, + { + code: `type T = B ${operator} /* comment */ A;`, + output: null, + errors: [ + { + messageId: 'notSortedNamed', + data: { + type, + name: 'T', + }, + suggestions: [ + { + messageId: 'suggestFix', + output: `type T = A ${operator} B;`, + }, + ], + }, + ], + }, + { + code: `type T = (() => /* comment */ A) ${operator} B;`, + output: `type T = B ${operator} (() => /* comment */ A);`, + errors: [ + { + messageId: 'notSortedNamed', + data: { + type, + name: 'T', + }, + suggestions: null, + }, + ], + }, + { + code: `type Expected = (new (x: number) => boolean) ${operator} string;`, + output: `type Expected = string ${operator} (new (x: number) => boolean);`, + errors: [ + { + messageId: 'notSortedNamed', + }, + ], + }, + ]; +}; + +ruleTester.run('sort-type-constituents', rule, { + valid: [ + ...valid('|'), + { + code: 'type T = B | A;', + options: [ + { + checkUnions: false, + }, + ], + }, + + ...valid('&'), + { + code: 'type T = B & A;', + options: [ + { + checkIntersections: false, + }, + ], + }, + + { + code: noFormat` +type T = [1] | 'a' | 'b' | "b" | 1 | 2 | {}; + `, + options: [ + { + groupOrder: ['tuple', 'literal', 'object'], + }, + ], + }, + { + // if not specified - groups should be placed last + code: ` +type T = 1 | string | {} | A; + `, + options: [ + { + groupOrder: ['literal', 'keyword'], + }, + ], + }, + ], + invalid: [...invalid('|'), ...invalid('&')], +}); From 344322add846d03c6c9981e486b09e6ba1196555 Mon Sep 17 00:00:00 2001 From: Shogo Hida Date: Thu, 27 Oct 2022 14:12:13 +0900 Subject: [PATCH 076/193] fix(eslint-plugin): enable react/jsx-curly-brace-presence lint rule in website package (#5894) Add 'react/jsx-curly-brace-presence': 'error' Co-authored-by: Josh Goldberg --- packages/website/.eslintrc.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/website/.eslintrc.js b/packages/website/.eslintrc.js index 2359a5a4cd5..323ce34a38d 100644 --- a/packages/website/.eslintrc.js +++ b/packages/website/.eslintrc.js @@ -23,6 +23,7 @@ module.exports = { 'react/jsx-no-target-blank': 'off', 'react/no-unescaped-entities': 'off', '@typescript-eslint/internal/prefer-ast-types-enum': 'off', + 'react/jsx-curly-brace-presence': 'error', }, settings: { react: { From d806bda82343712a24e3c78b9b34d4345dd1de3b Mon Sep 17 00:00:00 2001 From: kmin-jeong <53456037+kmin-jeong@users.noreply.github.com> Date: Sat, 29 Oct 2022 21:45:53 +0900 Subject: [PATCH 077/193] feat(eslint-plugin): [no-invalid-void-type] better report message for void used as a constituent inside a function return type (#5274) * feat: update repository * remove duplicate examples * feat:add about re-exporting --isolatedModules in When Not To Use It * feat: add exmaples * fix: remove duplicate examples in correct * fix:correct words * fix: fix space-between * fix: fix code * fix: fix code space * fix: check error * fix:missed examples * feat: read review and fix them fix examples and --Isolatedmodules explain * feat: add two taps one is correct, another is incorrect * fix: add * feat: fix explaination about `isolatedmodules` * fix: fix explain about `isolatedModules` * fis: modify When no to use it * fix: revert change log * fix: add lint * fix: add lint * add: fix code * fix:fix docs splits * feat: add lint * Update packages/eslint-plugin/docs/rules/consistent-type-exports.md * feat:change error message better * fix:separating message and made types about union * fix: separate error message * fix:fix mistake type * fix:fix typo * fix:fix error message in case of union * fix:fix error message in InvalidVoidForUnion * fix: add logic about union * feat: add test case * Switched change to just enhance error message * oops comment Co-authored-by: Josh Goldberg Co-authored-by: Josh Goldberg --- .../src/rules/no-invalid-void-type.ts | 23 +++++++++++----- .../tests/rules/no-invalid-void-type.test.ts | 26 ++++++++++++++++--- 2 files changed, 40 insertions(+), 9 deletions(-) diff --git a/packages/eslint-plugin/src/rules/no-invalid-void-type.ts b/packages/eslint-plugin/src/rules/no-invalid-void-type.ts index 7cda184e4fd..9f938ac438f 100644 --- a/packages/eslint-plugin/src/rules/no-invalid-void-type.ts +++ b/packages/eslint-plugin/src/rules/no-invalid-void-type.ts @@ -13,7 +13,8 @@ type MessageIds = | 'invalidVoidNotReturnOrGeneric' | 'invalidVoidNotReturn' | 'invalidVoidNotReturnOrThisParam' - | 'invalidVoidNotReturnOrThisParamOrGeneric'; + | 'invalidVoidNotReturnOrThisParamOrGeneric' + | 'invalidVoidUnionConstituent'; export default util.createRule<[Options], MessageIds>({ name: 'no-invalid-void-type', @@ -25,14 +26,16 @@ export default util.createRule<[Options], MessageIds>({ }, messages: { invalidVoidForGeneric: - '{{ generic }} may not have void as a type variable.', + '{{ generic }} may not have void as a type argument.', invalidVoidNotReturnOrGeneric: - 'void is only valid as a return type or generic type variable.', + 'void is only valid as a return type or generic type argument.', invalidVoidNotReturn: 'void is only valid as a return type.', invalidVoidNotReturnOrThisParam: 'void is only valid as return type or type of `this` parameter.', invalidVoidNotReturnOrThisParamOrGeneric: - 'void is only valid as a return type or generic type variable or the type of a `this` parameter.', + 'void is only valid as a return type or generic type argument or the type of a `this` parameter.', + invalidVoidUnionConstituent: + 'void is not valid as a constituent in a union type', }, schema: [ { @@ -136,7 +139,7 @@ export default util.createRule<[Options], MessageIds>({ ): void { if (parentNode.default !== node) { context.report({ - messageId: 'invalidVoidNotReturnOrGeneric', + messageId: getNotReturnOrGenericMessageId(node), node, }); } @@ -218,7 +221,7 @@ export default util.createRule<[Options], MessageIds>({ allowInGenericTypeArguments && allowAsThisParameter ? 'invalidVoidNotReturnOrThisParamOrGeneric' : allowInGenericTypeArguments - ? 'invalidVoidNotReturnOrGeneric' + ? getNotReturnOrGenericMessageId(node) : allowAsThisParameter ? 'invalidVoidNotReturnOrThisParam' : 'invalidVoidNotReturn', @@ -228,3 +231,11 @@ export default util.createRule<[Options], MessageIds>({ }; }, }); + +function getNotReturnOrGenericMessageId( + node: TSESTree.TSVoidKeyword, +): MessageIds { + return node.parent!.type === AST_NODE_TYPES.TSUnionType + ? 'invalidVoidUnionConstituent' + : 'invalidVoidNotReturnOrGeneric'; +} diff --git a/packages/eslint-plugin/tests/rules/no-invalid-void-type.test.ts b/packages/eslint-plugin/tests/rules/no-invalid-void-type.test.ts index 8164e85b2bd..1a972b665be 100644 --- a/packages/eslint-plugin/tests/rules/no-invalid-void-type.test.ts +++ b/packages/eslint-plugin/tests/rules/no-invalid-void-type.test.ts @@ -316,7 +316,7 @@ ruleTester.run('allowInGenericTypeArguments: true', rule, { code: 'type UnionType2 = string | number | void;', errors: [ { - messageId: 'invalidVoidNotReturnOrGeneric', + messageId: 'invalidVoidUnionConstituent', line: 1, column: 37, }, @@ -326,12 +326,32 @@ ruleTester.run('allowInGenericTypeArguments: true', rule, { code: 'type UnionType3 = string | ((number & any) | (string | void));', errors: [ { - messageId: 'invalidVoidNotReturnOrGeneric', + messageId: 'invalidVoidUnionConstituent', line: 1, column: 56, }, ], }, + { + code: 'declare function test(): number | void;', + errors: [ + { + messageId: 'invalidVoidUnionConstituent', + line: 1, + column: 35, + }, + ], + }, + { + code: 'declare function test(): T;', + errors: [ + { + messageId: 'invalidVoidUnionConstituent', + line: 1, + column: 42, + }, + ], + }, { code: 'type IntersectionType = string & number & void;', errors: [ @@ -394,7 +414,7 @@ ruleTester.run('allowInGenericTypeArguments: true', rule, { code: 'type invalidVoidUnion = void | Map;', errors: [ { - messageId: 'invalidVoidNotReturnOrGeneric', + messageId: 'invalidVoidUnionConstituent', line: 1, column: 25, }, From 891b0879ba9c64a4722b8c0bf9e599a725b6d6df Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Sat, 29 Oct 2022 06:25:11 -0700 Subject: [PATCH 078/193] fix(typescript-estree): don't allow single-run unless we're in type-aware linting mode (#5893) Co-authored-by: Josh Goldberg --- .../src/parseSettings/inferSingleRun.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/typescript-estree/src/parseSettings/inferSingleRun.ts b/packages/typescript-estree/src/parseSettings/inferSingleRun.ts index 723f857ece9..5d765a22ce9 100644 --- a/packages/typescript-estree/src/parseSettings/inferSingleRun.ts +++ b/packages/typescript-estree/src/parseSettings/inferSingleRun.ts @@ -15,6 +15,16 @@ import type { TSESTreeOptions } from '../parser-options'; * @returns Whether this is part of a single run, rather than a long-running process. */ export function inferSingleRun(options: TSESTreeOptions | undefined): boolean { + if ( + // single-run implies type-aware linting - no projects means we can't be in single-run mode + options?.project == null || + // programs passed via options means the user should be managing the programs, so we shouldn't + // be creating our own single-run programs accidentally + options?.programs != null + ) { + return false; + } + // Allow users to explicitly inform us of their intent to perform a single run (or not) with TSESTREE_SINGLE_RUN if (process.env.TSESTREE_SINGLE_RUN === 'false') { return false; From 8ed72192c274249d26628fb125796e71318b857a Mon Sep 17 00:00:00 2001 From: YeonJuan Date: Sun, 30 Oct 2022 12:25:18 +0900 Subject: [PATCH 079/193] fix(eslint-plugin): [no-extra-parens] handle type assertion in extends clause (#5901) * fix(eslint-plugin): [no-extra-parens] handle type assertion in extends clause * Add test cases * Handle class expression * Add test cases --- .../src/rules/no-extra-parens.ts | 26 +++++++++++++-- .../tests/rules/no-extra-parens.test.ts | 32 +++++++++++++++++++ 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/packages/eslint-plugin/src/rules/no-extra-parens.ts b/packages/eslint-plugin/src/rules/no-extra-parens.ts index 3a4a5973074..a44276a0a76 100644 --- a/packages/eslint-plugin/src/rules/no-extra-parens.ts +++ b/packages/eslint-plugin/src/rules/no-extra-parens.ts @@ -141,8 +141,30 @@ export default util.createRule({ }, BinaryExpression: binaryExp, CallExpression: callExp, - // ClassDeclaration - // ClassExpression + ClassDeclaration(node) { + if (node.superClass?.type === AST_NODE_TYPES.TSAsExpression) { + return rules.ClassDeclaration({ + ...node, + superClass: { + ...node.superClass, + type: AST_NODE_TYPES.SequenceExpression as any, + }, + }); + } + return rules.ClassDeclaration(node); + }, + ClassExpression(node) { + if (node.superClass?.type === AST_NODE_TYPES.TSAsExpression) { + return rules.ClassExpression({ + ...node, + superClass: { + ...node.superClass, + type: AST_NODE_TYPES.SequenceExpression as any, + }, + }); + } + return rules.ClassExpression(node); + }, ConditionalExpression(node) { // reduces the precedence of the node so the rule thinks it needs to be wrapped if (util.isTypeAssertion(node.test)) { diff --git a/packages/eslint-plugin/tests/rules/no-extra-parens.test.ts b/packages/eslint-plugin/tests/rules/no-extra-parens.test.ts index 6a9e87111aa..369f55101f2 100644 --- a/packages/eslint-plugin/tests/rules/no-extra-parens.test.ts +++ b/packages/eslint-plugin/tests/rules/no-extra-parens.test.ts @@ -141,6 +141,10 @@ t.true((me.get as SinonStub).calledWithExactly('/foo', other)); t.true((me.get).calledWithExactly('/foo', other)); (requestInit.headers as Headers).get('Cookie'); ( requestInit.headers).get('Cookie'); +class Foo {} +class Foo extends (Bar as any) {} +const foo = class {}; +const foo = class extends (Bar as any) {} `, parserOptions: { ecmaFeatures: { @@ -254,6 +258,10 @@ new a((1)); a<(A)>((1)); async function f(arg: Promise) { await (arg); } async function f(arg: any) { await ((arg as Promise)); } +class Foo extends ((Bar as any)) {} +class Foo extends (Bar) {} +const foo = class extends ((Bar as any)) {} +const foo = class extends (Bar) {} `, output: ` a = b * c; @@ -267,6 +275,10 @@ new a(1); a<(A)>(1); async function f(arg: Promise) { await arg; } async function f(arg: any) { await (arg as Promise); } +class Foo extends (Bar as any) {} +class Foo extends Bar {} +const foo = class extends (Bar as any) {} +const foo = class extends Bar {} `, errors: [ { @@ -324,6 +336,26 @@ async function f(arg: any) { await (arg as Promise); } line: 12, column: 37, }, + { + messageId: 'unexpected', + line: 13, + column: 20, + }, + { + messageId: 'unexpected', + line: 14, + column: 19, + }, + { + messageId: 'unexpected', + line: 15, + column: 28, + }, + { + messageId: 'unexpected', + line: 16, + column: 27, + }, ], }), ...batchedSingleLineTests({ From 54141946ac2a25799bb622d47d9a3fd1fb316ef9 Mon Sep 17 00:00:00 2001 From: "typescript-eslint[bot]" <53356952+typescript-eslint[bot]@users.noreply.github.com> Date: Sun, 30 Oct 2022 23:03:00 -0400 Subject: [PATCH 080/193] chore: update sponsors (#5905) Co-authored-by: typescript-eslint[bot] --- packages/website/data/sponsors.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/website/data/sponsors.json b/packages/website/data/sponsors.json index faef97d207f..a4aa0623e04 100644 --- a/packages/website/data/sponsors.json +++ b/packages/website/data/sponsors.json @@ -39,6 +39,14 @@ "totalDonations": 120000, "website": "https://blog.coinbase.com/engineering-and-security/home" }, + { + "id": "Sentry", + "image": "https://images.opencollective.com/sentry/9620d33/logo.png", + "name": "Sentry", + "tier": "sponsor", + "totalDonations": 114800, + "website": "https://sentry.io/welcome/" + }, { "id": "n8n.io - n8n GmbH", "image": "https://images.opencollective.com/n8n/dca2f0c/logo.png", @@ -79,14 +87,6 @@ "totalDonations": 54000, "website": "https://www.future-processing.com/" }, - { - "id": "Sentry", - "image": "https://images.opencollective.com/sentry/9620d33/logo.png", - "name": "Sentry", - "tier": "supporter", - "totalDonations": 50000, - "website": "https://sentry.io/welcome/" - }, { "id": "Whitebox", "image": "https://images.opencollective.com/whiteboxinc/ef0d11d/logo.png", From 1f14c03d2696ce02537c08aba683bdd587de5e6b Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Mon, 31 Oct 2022 03:53:04 -0700 Subject: [PATCH 081/193] docs(eslint-plugin): [consistent-type-imports] make a note about `parserOptions.emitDecoratorMetadata` (#5904) * docs(eslint-plugin): [consistent-type-imports] make a note about `parserOptions.emitDecoratorMetadata` * Update consistent-type-imports.md * Update consistent-type-imports.md * Update consistent-type-imports.md * Update consistent-type-imports.md --- .../eslint-plugin/docs/rules/consistent-type-imports.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/eslint-plugin/docs/rules/consistent-type-imports.md b/packages/eslint-plugin/docs/rules/consistent-type-imports.md index 6e6912d34cf..745930d0d54 100644 --- a/packages/eslint-plugin/docs/rules/consistent-type-imports.md +++ b/packages/eslint-plugin/docs/rules/consistent-type-imports.md @@ -48,6 +48,12 @@ type T = import('Foo').Foo; const x: import('Bar') = 1; ``` +## Usage with `emitDecoratorMetadata` + +The `emitDecoratorMetadata` compiler option changes the code the TypeScript emits. In short - it causes TypeScript to create references to value imports when they are used in a type-only location. If you are using `emitDecoratorMetadata` then our tooling will require additional information in order for the rule to work correctly. + +If you are using [type-aware linting](https://typescript-eslint.io/docs/linting/typed-linting), then you just need to ensure that the `tsconfig.json` you've configured for `parserOptions.project` has `emitDecoratorMetadata` turned on. Otherwise you can explicitly tell our tooling to analyze your code as if the compiler option was turned on [by setting `parserOptions.emitDecoratorMetadata` to `true`](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/README.md#parseroptionsemitdecoratormetadata). + ## When Not To Use It - If you specifically want to use both import kinds for stylistic reasons, you can disable this rule. From 0520d53536af411d66ce2ce0dd478365e67adbac Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Mon, 31 Oct 2022 05:03:38 -0700 Subject: [PATCH 082/193] feat(utils): add `RuleTester` API for top-level dependency constraints (#5896) * feat(utils): add `RuleTester` API for top-level dependency constraints * Apply suggestions from code review Co-authored-by: Josh Goldberg * address comments * oops Co-authored-by: Josh Goldberg --- .../eslint-utils/rule-tester/RuleTester.ts | 89 +++++++++++++++--- packages/utils/src/ts-eslint/RuleTester.ts | 21 ++--- .../rule-tester/RuleTester.test.ts | 91 ++++++++++++++++++- 3 files changed, 175 insertions(+), 26 deletions(-) diff --git a/packages/utils/src/eslint-utils/rule-tester/RuleTester.ts b/packages/utils/src/eslint-utils/rule-tester/RuleTester.ts index e81d23d0206..54a645ccf25 100644 --- a/packages/utils/src/eslint-utils/rule-tester/RuleTester.ts +++ b/packages/utils/src/eslint-utils/rule-tester/RuleTester.ts @@ -1,9 +1,13 @@ import type * as TSESLintParserType from '@typescript-eslint/parser'; +import assert from 'assert'; import { version as eslintVersion } from 'eslint/package.json'; import * as path from 'path'; import * as semver from 'semver'; -import * as TSESLint from '../../ts-eslint'; +import type { ParserOptions } from '../../ts-eslint/ParserOptions'; +import type { RuleModule } from '../../ts-eslint/Rule'; +import type { RuleTesterTestFrameworkFunction } from '../../ts-eslint/RuleTester'; +import * as BaseRuleTester from '../../ts-eslint/RuleTester'; import { deepMerge } from '../deepMerge'; import type { DependencyConstraint } from './dependencyConstraints'; import { satisfiesAllDependencyConstraints } from './dependencyConstraints'; @@ -11,18 +15,28 @@ import { satisfiesAllDependencyConstraints } from './dependencyConstraints'; const TS_ESLINT_PARSER = '@typescript-eslint/parser'; const ERROR_MESSAGE = `Do not set the parser at the test level unless you want to use a parser other than ${TS_ESLINT_PARSER}`; -type RuleTesterConfig = Omit & { +type RuleTesterConfig = Omit & { parser: typeof TS_ESLINT_PARSER; + /** + * Constraints that must pass in the current environment for any tests to run + */ + dependencyConstraints?: DependencyConstraint; }; interface InvalidTestCase< TMessageIds extends string, TOptions extends Readonly, -> extends TSESLint.InvalidTestCase { +> extends BaseRuleTester.InvalidTestCase { + /** + * Constraints that must pass in the current environment for the test to run + */ dependencyConstraints?: DependencyConstraint; } interface ValidTestCase> - extends TSESLint.ValidTestCase { + extends BaseRuleTester.ValidTestCase { + /** + * Constraints that must pass in the current environment for the test to run + */ dependencyConstraints?: DependencyConstraint; } interface RunTests< @@ -36,24 +50,42 @@ interface RunTests< type AfterAll = (fn: () => void) => void; -class RuleTester extends TSESLint.RuleTester { +function isDescribeWithSkip( + value: unknown, +): value is RuleTesterTestFrameworkFunction & { + skip: RuleTesterTestFrameworkFunction; +} { + return ( + typeof value === 'object' && + value != null && + 'skip' in value && + typeof (value as Record).skip === 'function' + ); +} + +class RuleTester extends BaseRuleTester.RuleTester { readonly #baseOptions: RuleTesterConfig; - static #afterAll: AfterAll; + static #afterAll: AfterAll | undefined; /** * If you supply a value to this property, the rule tester will call this instead of using the version defined on * the global namespace. */ static get afterAll(): AfterAll { return ( - this.#afterAll || + this.#afterAll ?? (typeof afterAll === 'function' ? afterAll : (): void => {}) ); } - static set afterAll(value) { + static set afterAll(value: AfterAll | undefined) { this.#afterAll = value; } + private get staticThis(): typeof RuleTester { + // the cast here is due to https://github.com/microsoft/TypeScript/issues/3841 + return this.constructor as typeof RuleTester; + } + constructor(baseOptions: RuleTesterConfig) { super({ ...baseOptions, @@ -73,8 +105,7 @@ class RuleTester extends TSESLint.RuleTester { // make sure that the parser doesn't hold onto file handles between tests // on linux (i.e. our CI env), there can be very a limited number of watch handles available - // the cast here is due to https://github.com/microsoft/TypeScript/issues/3841 - (this.constructor as typeof RuleTester).afterAll(() => { + this.staticThis.afterAll(() => { try { // instead of creating a hard dependency, just use a soft require // a bit weird, but if they're using this tooling, it'll be installed @@ -85,11 +116,11 @@ class RuleTester extends TSESLint.RuleTester { } }); } - private getFilename(testOptions?: TSESLint.ParserOptions): string { + private getFilename(testOptions?: ParserOptions): string { const resolvedOptions = deepMerge( this.#baseOptions.parserOptions, testOptions, - ) as TSESLint.ParserOptions; + ) as ParserOptions; const filename = `file.ts${resolvedOptions.ecmaFeatures?.jsx ? 'x' : ''}`; if (resolvedOptions.project) { return path.join( @@ -107,9 +138,41 @@ class RuleTester extends TSESLint.RuleTester { // This is a lot more explicit run>( name: string, - rule: TSESLint.RuleModule, + rule: RuleModule, testsReadonly: RunTests, ): void { + if ( + this.#baseOptions.dependencyConstraints && + !satisfiesAllDependencyConstraints( + this.#baseOptions.dependencyConstraints, + ) + ) { + if (isDescribeWithSkip(this.staticThis.describe)) { + // for frameworks like mocha or jest that have a "skip" version of their function + // we can provide a nice skipped test! + this.staticThis.describe.skip(name, () => { + this.staticThis.it( + 'All tests skipped due to unsatisfied constructor dependency constraints', + () => {}, + ); + }); + } else { + // otherwise just declare an empty test + this.staticThis.describe(name, () => { + this.staticThis.it( + 'All tests skipped due to unsatisfied constructor dependency constraints', + () => { + // some frameworks error if there are no assertions + assert.equal(true, true); + }, + ); + }); + } + + // don't run any tests because we don't match the base constraint + return; + } + const tests = { // standardize the valid tests as objects valid: testsReadonly.valid.map(test => { diff --git a/packages/utils/src/ts-eslint/RuleTester.ts b/packages/utils/src/ts-eslint/RuleTester.ts index 7002fc538cd..6c0b98b795f 100644 --- a/packages/utils/src/ts-eslint/RuleTester.ts +++ b/packages/utils/src/ts-eslint/RuleTester.ts @@ -125,6 +125,10 @@ interface TestCaseError { // readonly message?: string | RegExp; } +/** + * @param text a string describing the rule + * @param callback the test callback + */ type RuleTesterTestFrameworkFunction = ( text: string, callback: () => void, @@ -166,31 +170,26 @@ declare class RuleTesterBase { /** * If you supply a value to this property, the rule tester will call this instead of using the version defined on * the global namespace. - * @param text a string describing the rule - * @param callback the test callback */ - static describe?: RuleTesterTestFrameworkFunction; + static get describe(): RuleTesterTestFrameworkFunction; + static set describe(value: RuleTesterTestFrameworkFunction | undefined); /** * If you supply a value to this property, the rule tester will call this instead of using the version defined on * the global namespace. - * @param text a string describing the test case - * @param callback the test callback */ - static it?: RuleTesterTestFrameworkFunction; + static get it(): RuleTesterTestFrameworkFunction; + static set it(value: RuleTesterTestFrameworkFunction | undefined); /** * If you supply a value to this property, the rule tester will call this instead of using the version defined on * the global namespace. - * @param text a string describing the test case - * @param callback the test callback */ - static itOnly?: RuleTesterTestFrameworkFunction; + static get itOnly(): RuleTesterTestFrameworkFunction; + static set itOnly(value: RuleTesterTestFrameworkFunction | undefined); /** * Define a rule for one particular run of tests. - * @param name The name of the rule to define. - * @param rule The rule definition. */ defineRule>( name: string, diff --git a/packages/utils/tests/eslint-utils/rule-tester/RuleTester.test.ts b/packages/utils/tests/eslint-utils/rule-tester/RuleTester.test.ts index cab7666196a..2e620332942 100644 --- a/packages/utils/tests/eslint-utils/rule-tester/RuleTester.test.ts +++ b/packages/utils/tests/eslint-utils/rule-tester/RuleTester.test.ts @@ -73,8 +73,8 @@ RuleTester.itOnly = jest.fn(); /* eslint-enable jest/prefer-spy-on */ const mockedAfterAll = jest.mocked(RuleTester.afterAll); -const _mockedDescribe = jest.mocked(RuleTester.describe); -const _mockedIt = jest.mocked(RuleTester.it); +const mockedDescribe = jest.mocked(RuleTester.describe); +const mockedIt = jest.mocked(RuleTester.it); const _mockedItOnly = jest.mocked(RuleTester.itOnly); const runSpy = jest.spyOn(BaseRuleTester.prototype, 'run'); const mockedParserClearCaches = jest.mocked(parser.clearCaches); @@ -715,5 +715,92 @@ describe('RuleTester', () => { } `); }); + + describe('constructor constraints', () => { + it('skips all tests if a constructor constraint is not satisifed', () => { + const ruleTester = new RuleTester({ + parser: '@typescript-eslint/parser', + dependencyConstraints: { + 'totally-real-dependency': '999', + }, + }); + + ruleTester.run('my-rule', NOOP_RULE, { + invalid: [ + { + code: 'failing - major', + errors: [], + }, + ], + valid: [ + { + code: 'passing - major', + }, + ], + }); + + // trigger the describe block + expect(mockedDescribe.mock.calls.length).toBeGreaterThanOrEqual(1); + mockedDescribe.mock.lastCall?.[1](); + expect(mockedDescribe.mock.calls).toMatchInlineSnapshot(` + [ + [ + "my-rule", + [Function], + ], + ] + `); + expect(mockedIt.mock.lastCall).toMatchInlineSnapshot(` + [ + "All tests skipped due to unsatisfied constructor dependency constraints", + [Function], + ] + `); + }); + + it('does not skip all tests if a constructor constraint is satisifed', () => { + const ruleTester = new RuleTester({ + parser: '@typescript-eslint/parser', + dependencyConstraints: { + 'totally-real-dependency': '10', + }, + }); + + ruleTester.run('my-rule', NOOP_RULE, { + invalid: [ + { + code: 'valid', + errors: [], + }, + ], + valid: [ + { + code: 'valid', + }, + ], + }); + + // trigger the describe block + expect(mockedDescribe.mock.calls.length).toBeGreaterThanOrEqual(1); + mockedDescribe.mock.lastCall?.[1](); + expect(mockedDescribe.mock.calls).toMatchInlineSnapshot(` + [ + [ + "my-rule", + [Function], + ], + [ + "valid", + [Function], + ], + [ + "invalid", + [Function], + ], + ] + `); + // expect(mockedIt.mock.lastCall).toMatchInlineSnapshot(`undefined`); + }); + }); }); }); From 5c316c12f09d58aee6ee634a8055533f361f1589 Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Mon, 31 Oct 2022 05:58:30 -0700 Subject: [PATCH 083/193] fix(ast-spec): add TSQualifiedName to TypeNode union (#5906) * fix(ast-spec): add TSQualifiedName to TypeNode union * fix rule with missing type --- packages/ast-spec/src/unions/TypeNode.ts | 2 ++ packages/eslint-plugin/src/rules/sort-type-constituents.ts | 1 + .../src/rules/sort-type-union-intersection-members.ts | 1 + .../tests/rules/sort-type-constituents.test.ts | 6 +++++- .../rules/sort-type-union-intersection-members.test.ts | 6 +++++- 5 files changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/ast-spec/src/unions/TypeNode.ts b/packages/ast-spec/src/unions/TypeNode.ts index 461281cd4ce..f1859d7d347 100644 --- a/packages/ast-spec/src/unions/TypeNode.ts +++ b/packages/ast-spec/src/unions/TypeNode.ts @@ -25,6 +25,7 @@ import type { TSOptionalType } from '../type/TSOptionalType/spec'; import type { TSPrivateKeyword } from '../type/TSPrivateKeyword/spec'; import type { TSProtectedKeyword } from '../type/TSProtectedKeyword/spec'; import type { TSPublicKeyword } from '../type/TSPublicKeyword/spec'; +import type { TSQualifiedName } from '../type/TSQualifiedName/spec'; import type { TSReadonlyKeyword } from '../type/TSReadonlyKeyword/spec'; import type { TSRestType } from '../type/TSRestType/spec'; import type { TSStaticKeyword } from '../type/TSStaticKeyword/spec'; @@ -71,6 +72,7 @@ export type TypeNode = | TSPrivateKeyword | TSProtectedKeyword | TSPublicKeyword + | TSQualifiedName | TSReadonlyKeyword | TSRestType | TSStaticKeyword diff --git a/packages/eslint-plugin/src/rules/sort-type-constituents.ts b/packages/eslint-plugin/src/rules/sort-type-constituents.ts index 92b5e44c6f9..1abeddcf823 100644 --- a/packages/eslint-plugin/src/rules/sort-type-constituents.ts +++ b/packages/eslint-plugin/src/rules/sort-type-constituents.ts @@ -60,6 +60,7 @@ function getGroup(node: TSESTree.TypeNode): Group { case AST_NODE_TYPES.TSIndexedAccessType: case AST_NODE_TYPES.TSInferType: case AST_NODE_TYPES.TSTypeReference: + case AST_NODE_TYPES.TSQualifiedName: return Group.named; case AST_NODE_TYPES.TSMappedType: diff --git a/packages/eslint-plugin/src/rules/sort-type-union-intersection-members.ts b/packages/eslint-plugin/src/rules/sort-type-union-intersection-members.ts index 2a83b4b0525..1fbf91b9ae8 100644 --- a/packages/eslint-plugin/src/rules/sort-type-union-intersection-members.ts +++ b/packages/eslint-plugin/src/rules/sort-type-union-intersection-members.ts @@ -60,6 +60,7 @@ function getGroup(node: TSESTree.TypeNode): Group { case AST_NODE_TYPES.TSIndexedAccessType: case AST_NODE_TYPES.TSInferType: case AST_NODE_TYPES.TSTypeReference: + case AST_NODE_TYPES.TSQualifiedName: return Group.named; case AST_NODE_TYPES.TSMappedType: diff --git a/packages/eslint-plugin/tests/rules/sort-type-constituents.test.ts b/packages/eslint-plugin/tests/rules/sort-type-constituents.test.ts index b9989c2cf87..2587375060e 100644 --- a/packages/eslint-plugin/tests/rules/sort-type-constituents.test.ts +++ b/packages/eslint-plugin/tests/rules/sort-type-constituents.test.ts @@ -45,6 +45,8 @@ const valid = (operator: '|' | '&'): TSESLint.ValidTestCase[] => [ type T = ${operator} A ${operator} B + ${operator} C.D + ${operator} D.E ${operator} intrinsic ${operator} number[] ${operator} string[] @@ -220,6 +222,8 @@ type T = ${operator} readonly number[] ${operator} string[] ${operator} number[] + ${operator} D.E + ${operator} C.D ${operator} B ${operator} A ${operator} undefined @@ -229,7 +233,7 @@ type T = `, output: ` type T = - A ${operator} B ${operator} number[] ${operator} string[] ${operator} any ${operator} string ${operator} readonly number[] ${operator} readonly string[] ${operator} 'a' ${operator} 'b' ${operator} "a" ${operator} "b" ${operator} (() => string) ${operator} (() => void) ${operator} { a: string } ${operator} { b: string } ${operator} [1, 2, 3] ${operator} [1, 2, 4] ${operator} null ${operator} undefined; + A ${operator} B ${operator} C.D ${operator} D.E ${operator} number[] ${operator} string[] ${operator} any ${operator} string ${operator} readonly number[] ${operator} readonly string[] ${operator} 'a' ${operator} 'b' ${operator} "a" ${operator} "b" ${operator} (() => string) ${operator} (() => void) ${operator} { a: string } ${operator} { b: string } ${operator} [1, 2, 3] ${operator} [1, 2, 4] ${operator} null ${operator} undefined; `, errors: [ { diff --git a/packages/eslint-plugin/tests/rules/sort-type-union-intersection-members.test.ts b/packages/eslint-plugin/tests/rules/sort-type-union-intersection-members.test.ts index 38ae67f1804..a24959d8b6a 100644 --- a/packages/eslint-plugin/tests/rules/sort-type-union-intersection-members.test.ts +++ b/packages/eslint-plugin/tests/rules/sort-type-union-intersection-members.test.ts @@ -45,6 +45,8 @@ const valid = (operator: '|' | '&'): TSESLint.ValidTestCase[] => [ type T = ${operator} A ${operator} B + ${operator} C.D + ${operator} D.E ${operator} intrinsic ${operator} number[] ${operator} string[] @@ -220,6 +222,8 @@ type T = ${operator} readonly number[] ${operator} string[] ${operator} number[] + ${operator} D.E + ${operator} C.D ${operator} B ${operator} A ${operator} undefined @@ -229,7 +233,7 @@ type T = `, output: ` type T = - A ${operator} B ${operator} number[] ${operator} string[] ${operator} any ${operator} string ${operator} readonly number[] ${operator} readonly string[] ${operator} 'a' ${operator} 'b' ${operator} "a" ${operator} "b" ${operator} (() => string) ${operator} (() => void) ${operator} { a: string } ${operator} { b: string } ${operator} [1, 2, 3] ${operator} [1, 2, 4] ${operator} null ${operator} undefined; + A ${operator} B ${operator} C.D ${operator} D.E ${operator} number[] ${operator} string[] ${operator} any ${operator} string ${operator} readonly number[] ${operator} readonly string[] ${operator} 'a' ${operator} 'b' ${operator} "a" ${operator} "b" ${operator} (() => string) ${operator} (() => void) ${operator} { a: string } ${operator} { b: string } ${operator} [1, 2, 3] ${operator} [1, 2, 4] ${operator} null ${operator} undefined; `, errors: [ { From 1e5e9ea4cac25947c3a8748647a4fb4d329c4b25 Mon Sep 17 00:00:00 2001 From: "typescript-eslint[bot]" Date: Mon, 31 Oct 2022 17:35:31 +0000 Subject: [PATCH 084/193] chore: publish v5.42.0 --- CHANGELOG.md | 22 ++++++++++++++++++++ lerna.json | 2 +- packages/ast-spec/CHANGELOG.md | 6 ++++++ packages/ast-spec/package.json | 2 +- packages/eslint-plugin-internal/CHANGELOG.md | 4 ++++ packages/eslint-plugin-internal/package.json | 6 +++--- packages/eslint-plugin-tslint/CHANGELOG.md | 4 ++++ packages/eslint-plugin-tslint/package.json | 6 +++--- packages/eslint-plugin/CHANGELOG.md | 12 +++++++++++ packages/eslint-plugin/package.json | 8 +++---- packages/experimental-utils/CHANGELOG.md | 4 ++++ packages/experimental-utils/package.json | 4 ++-- packages/parser/CHANGELOG.md | 10 +++++++++ packages/parser/package.json | 8 +++---- packages/scope-manager/CHANGELOG.md | 10 +++++++++ packages/scope-manager/package.json | 8 +++---- packages/shared-fixtures/CHANGELOG.md | 4 ++++ packages/shared-fixtures/package.json | 2 +- packages/type-utils/CHANGELOG.md | 4 ++++ packages/type-utils/package.json | 8 +++---- packages/types/CHANGELOG.md | 4 ++++ packages/types/package.json | 2 +- packages/typescript-estree/CHANGELOG.md | 10 +++++++++ packages/typescript-estree/package.json | 8 +++---- packages/utils/CHANGELOG.md | 6 ++++++ packages/utils/package.json | 10 ++++----- packages/visitor-keys/CHANGELOG.md | 4 ++++ packages/visitor-keys/package.json | 4 ++-- packages/website-eslint/CHANGELOG.md | 4 ++++ packages/website-eslint/package.json | 16 +++++++------- packages/website/CHANGELOG.md | 15 +++++++++++++ packages/website/package.json | 8 +++---- 32 files changed, 174 insertions(+), 51 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0304329f3aa..f4685ce8dae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,28 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) + +### Bug Fixes + +- **ast-spec:** add TSQualifiedName to TypeNode union ([#5906](https://github.com/typescript-eslint/typescript-eslint/issues/5906)) ([5c316c1](https://github.com/typescript-eslint/typescript-eslint/commit/5c316c12f09d58aee6ee634a8055533f361f1589)) +- **eslint-plugin:** [no-extra-parens] handle type assertion in extends clause ([#5901](https://github.com/typescript-eslint/typescript-eslint/issues/5901)) ([8ed7219](https://github.com/typescript-eslint/typescript-eslint/commit/8ed72192c274249d26628fb125796e71318b857a)) +- **eslint-plugin:** enable react/jsx-curly-brace-presence lint rule in website package ([#5894](https://github.com/typescript-eslint/typescript-eslint/issues/5894)) ([344322a](https://github.com/typescript-eslint/typescript-eslint/commit/344322add846d03c6c9981e486b09e6ba1196555)) +- **typescript-estree:** don't allow single-run unless we're in type-aware linting mode ([#5893](https://github.com/typescript-eslint/typescript-eslint/issues/5893)) ([891b087](https://github.com/typescript-eslint/typescript-eslint/commit/891b0879ba9c64a4722b8c0bf9e599a725b6d6df)) + +### Features + +- **eslint-plugin:** [member-ordering] add natural sort order ([#5662](https://github.com/typescript-eslint/typescript-eslint/issues/5662)) ([1eaae09](https://github.com/typescript-eslint/typescript-eslint/commit/1eaae09ecca359f366b94f6a04665403f48b05c7)) +- **eslint-plugin:** [no-invalid-void-type] better report message for void used as a constituent inside a function return type ([#5274](https://github.com/typescript-eslint/typescript-eslint/issues/5274)) ([d806bda](https://github.com/typescript-eslint/typescript-eslint/commit/d806bda82343712a24e3c78b9b34d4345dd1de3b)) +- **scope-manager:** ignore ECMA version ([#5881](https://github.com/typescript-eslint/typescript-eslint/issues/5881)) ([3b8d449](https://github.com/typescript-eslint/typescript-eslint/commit/3b8d449696c319690536a18a48ef32749dc2f559)) +- **typescript-estree:** clarify docs and error for program project without matching TSConfig ([#5762](https://github.com/typescript-eslint/typescript-eslint/issues/5762)) ([67744db](https://github.com/typescript-eslint/typescript-eslint/commit/67744db31f61acab14b5fe027fbc2844ba198c97)) +- **utils:** add `RuleTester` API for top-level dependency constraints ([#5896](https://github.com/typescript-eslint/typescript-eslint/issues/5896)) ([0520d53](https://github.com/typescript-eslint/typescript-eslint/commit/0520d53536af411d66ce2ce0dd478365e67adbac)) +- **website:** Add a happy message to playground output pane when no errors or AST ([#5868](https://github.com/typescript-eslint/typescript-eslint/issues/5868)) ([#5873](https://github.com/typescript-eslint/typescript-eslint/issues/5873)) ([c4e0d86](https://github.com/typescript-eslint/typescript-eslint/commit/c4e0d8678e0398f3ab85510f40ad6f97832b9e6d)) + +### Reverts + +- Revert "feat(scope-manager): ignore ECMA version" (#5888) ([2ee81df](https://github.com/typescript-eslint/typescript-eslint/commit/2ee81df5a365d82ef4b3dfc124d4ec39c7bcb725)), closes [#5888](https://github.com/typescript-eslint/typescript-eslint/issues/5888) [#5881](https://github.com/typescript-eslint/typescript-eslint/issues/5881) + # [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) ### Bug Fixes diff --git a/lerna.json b/lerna.json index 9e451c6323f..47974603d99 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "5.41.0", + "version": "5.42.0", "npmClient": "yarn", "useWorkspaces": true, "stream": true diff --git a/packages/ast-spec/CHANGELOG.md b/packages/ast-spec/CHANGELOG.md index 5d890f335a6..4b069d345df 100644 --- a/packages/ast-spec/CHANGELOG.md +++ b/packages/ast-spec/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) + +### Bug Fixes + +- **ast-spec:** add TSQualifiedName to TypeNode union ([#5906](https://github.com/typescript-eslint/typescript-eslint/issues/5906)) ([5c316c1](https://github.com/typescript-eslint/typescript-eslint/commit/5c316c12f09d58aee6ee634a8055533f361f1589)) + # [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) **Note:** Version bump only for package @typescript-eslint/ast-spec diff --git a/packages/ast-spec/package.json b/packages/ast-spec/package.json index 35df9004ba6..4b35b75dff2 100644 --- a/packages/ast-spec/package.json +++ b/packages/ast-spec/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/ast-spec", - "version": "5.41.0", + "version": "5.42.0", "description": "TypeScript-ESTree AST spec", "private": true, "keywords": [ diff --git a/packages/eslint-plugin-internal/CHANGELOG.md b/packages/eslint-plugin-internal/CHANGELOG.md index eb09c888159..150635d9f22 100644 --- a/packages/eslint-plugin-internal/CHANGELOG.md +++ b/packages/eslint-plugin-internal/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) + +**Note:** Version bump only for package @typescript-eslint/eslint-plugin-internal + # [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) **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 489a40472ef..e21f2c82fa4 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": "5.41.0", + "version": "5.42.0", "private": true, "main": "dist/index.js", "scripts": { @@ -14,8 +14,8 @@ }, "dependencies": { "@types/prettier": "*", - "@typescript-eslint/scope-manager": "5.41.0", - "@typescript-eslint/utils": "5.41.0", + "@typescript-eslint/scope-manager": "5.42.0", + "@typescript-eslint/utils": "5.42.0", "prettier": "*" } } diff --git a/packages/eslint-plugin-tslint/CHANGELOG.md b/packages/eslint-plugin-tslint/CHANGELOG.md index cf95068ce8e..758874fd110 100644 --- a/packages/eslint-plugin-tslint/CHANGELOG.md +++ b/packages/eslint-plugin-tslint/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) + +**Note:** Version bump only for package @typescript-eslint/eslint-plugin-tslint + # [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) **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 cbe14473287..feeedacebe6 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": "5.41.0", + "version": "5.42.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/utils": "5.41.0", + "@typescript-eslint/utils": "5.42.0", "lodash": "^4.17.21" }, "peerDependencies": { @@ -48,6 +48,6 @@ }, "devDependencies": { "@types/lodash": "*", - "@typescript-eslint/parser": "5.41.0" + "@typescript-eslint/parser": "5.42.0" } } diff --git a/packages/eslint-plugin/CHANGELOG.md b/packages/eslint-plugin/CHANGELOG.md index 7b5a3d1fbc6..609763b480e 100644 --- a/packages/eslint-plugin/CHANGELOG.md +++ b/packages/eslint-plugin/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) + +### Bug Fixes + +- **ast-spec:** add TSQualifiedName to TypeNode union ([#5906](https://github.com/typescript-eslint/typescript-eslint/issues/5906)) ([5c316c1](https://github.com/typescript-eslint/typescript-eslint/commit/5c316c12f09d58aee6ee634a8055533f361f1589)) +- **eslint-plugin:** [no-extra-parens] handle type assertion in extends clause ([#5901](https://github.com/typescript-eslint/typescript-eslint/issues/5901)) ([8ed7219](https://github.com/typescript-eslint/typescript-eslint/commit/8ed72192c274249d26628fb125796e71318b857a)) + +### Features + +- **eslint-plugin:** [member-ordering] add natural sort order ([#5662](https://github.com/typescript-eslint/typescript-eslint/issues/5662)) ([1eaae09](https://github.com/typescript-eslint/typescript-eslint/commit/1eaae09ecca359f366b94f6a04665403f48b05c7)) +- **eslint-plugin:** [no-invalid-void-type] better report message for void used as a constituent inside a function return type ([#5274](https://github.com/typescript-eslint/typescript-eslint/issues/5274)) ([d806bda](https://github.com/typescript-eslint/typescript-eslint/commit/d806bda82343712a24e3c78b9b34d4345dd1de3b)) + # [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) ### Bug Fixes diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index eb1c777d115..f3afe646a16 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/eslint-plugin", - "version": "5.41.0", + "version": "5.42.0", "description": "TypeScript plugin for ESLint", "keywords": [ "eslint", @@ -44,9 +44,9 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/scope-manager": "5.41.0", - "@typescript-eslint/type-utils": "5.41.0", - "@typescript-eslint/utils": "5.41.0", + "@typescript-eslint/scope-manager": "5.42.0", + "@typescript-eslint/type-utils": "5.42.0", + "@typescript-eslint/utils": "5.42.0", "debug": "^4.3.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", diff --git a/packages/experimental-utils/CHANGELOG.md b/packages/experimental-utils/CHANGELOG.md index 5b2bc9b5d9b..7334d6b80b4 100644 --- a/packages/experimental-utils/CHANGELOG.md +++ b/packages/experimental-utils/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) + +**Note:** Version bump only for package @typescript-eslint/experimental-utils + # [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) **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 8056c69d658..618afe32e04 100644 --- a/packages/experimental-utils/package.json +++ b/packages/experimental-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/experimental-utils", - "version": "5.41.0", + "version": "5.42.0", "description": "(Experimental) Utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -38,7 +38,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/utils": "5.41.0" + "@typescript-eslint/utils": "5.42.0" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" diff --git a/packages/parser/CHANGELOG.md b/packages/parser/CHANGELOG.md index b8064f16b73..689b11e8227 100644 --- a/packages/parser/CHANGELOG.md +++ b/packages/parser/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) + +### Features + +- **scope-manager:** ignore ECMA version ([#5881](https://github.com/typescript-eslint/typescript-eslint/issues/5881)) ([3b8d449](https://github.com/typescript-eslint/typescript-eslint/commit/3b8d449696c319690536a18a48ef32749dc2f559)) + +### Reverts + +- Revert "feat(scope-manager): ignore ECMA version" (#5888) ([2ee81df](https://github.com/typescript-eslint/typescript-eslint/commit/2ee81df5a365d82ef4b3dfc124d4ec39c7bcb725)), closes [#5888](https://github.com/typescript-eslint/typescript-eslint/issues/5888) [#5881](https://github.com/typescript-eslint/typescript-eslint/issues/5881) + # [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) **Note:** Version bump only for package @typescript-eslint/parser diff --git a/packages/parser/package.json b/packages/parser/package.json index 66e27e0d0a7..8ef9a0cf359 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/parser", - "version": "5.41.0", + "version": "5.42.0", "description": "An ESLint custom parser which leverages TypeScript ESTree", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -45,9 +45,9 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "dependencies": { - "@typescript-eslint/scope-manager": "5.41.0", - "@typescript-eslint/types": "5.41.0", - "@typescript-eslint/typescript-estree": "5.41.0", + "@typescript-eslint/scope-manager": "5.42.0", + "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/typescript-estree": "5.42.0", "debug": "^4.3.4" }, "devDependencies": { diff --git a/packages/scope-manager/CHANGELOG.md b/packages/scope-manager/CHANGELOG.md index 66b6e6b4f53..a4601cd80b3 100644 --- a/packages/scope-manager/CHANGELOG.md +++ b/packages/scope-manager/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) + +### Features + +- **scope-manager:** ignore ECMA version ([#5881](https://github.com/typescript-eslint/typescript-eslint/issues/5881)) ([3b8d449](https://github.com/typescript-eslint/typescript-eslint/commit/3b8d449696c319690536a18a48ef32749dc2f559)) + +### Reverts + +- Revert "feat(scope-manager): ignore ECMA version" (#5888) ([2ee81df](https://github.com/typescript-eslint/typescript-eslint/commit/2ee81df5a365d82ef4b3dfc124d4ec39c7bcb725)), closes [#5888](https://github.com/typescript-eslint/typescript-eslint/issues/5888) [#5881](https://github.com/typescript-eslint/typescript-eslint/issues/5881) + # [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) **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 5bc61a61f3b..34ffe2f86e9 100644 --- a/packages/scope-manager/package.json +++ b/packages/scope-manager/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/scope-manager", - "version": "5.41.0", + "version": "5.42.0", "description": "TypeScript scope analyser for ESLint", "keywords": [ "eslint", @@ -38,12 +38,12 @@ "typecheck": "cd ../../ && nx typecheck @typescript-eslint/scope-manager" }, "dependencies": { - "@typescript-eslint/types": "5.41.0", - "@typescript-eslint/visitor-keys": "5.41.0" + "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/visitor-keys": "5.42.0" }, "devDependencies": { "@types/glob": "*", - "@typescript-eslint/typescript-estree": "5.41.0", + "@typescript-eslint/typescript-estree": "5.42.0", "glob": "*", "jest-specific-snapshot": "*", "make-dir": "*", diff --git a/packages/shared-fixtures/CHANGELOG.md b/packages/shared-fixtures/CHANGELOG.md index ba001fbfa5d..6011551b73e 100644 --- a/packages/shared-fixtures/CHANGELOG.md +++ b/packages/shared-fixtures/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) + +**Note:** Version bump only for package @typescript-eslint/shared-fixtures + # [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) **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 864ddbf70bb..5c8bb352ba3 100644 --- a/packages/shared-fixtures/package.json +++ b/packages/shared-fixtures/package.json @@ -1,5 +1,5 @@ { "name": "@typescript-eslint/shared-fixtures", - "version": "5.41.0", + "version": "5.42.0", "private": true } diff --git a/packages/type-utils/CHANGELOG.md b/packages/type-utils/CHANGELOG.md index 09b3607c201..09af50ebb31 100644 --- a/packages/type-utils/CHANGELOG.md +++ b/packages/type-utils/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) + +**Note:** Version bump only for package @typescript-eslint/type-utils + # [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) ### Bug Fixes diff --git a/packages/type-utils/package.json b/packages/type-utils/package.json index bdc68f60358..6150b2d27c9 100644 --- a/packages/type-utils/package.json +++ b/packages/type-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/type-utils", - "version": "5.41.0", + "version": "5.42.0", "description": "Type utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -39,13 +39,13 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/typescript-estree": "5.41.0", - "@typescript-eslint/utils": "5.41.0", + "@typescript-eslint/typescript-estree": "5.42.0", + "@typescript-eslint/utils": "5.42.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, "devDependencies": { - "@typescript-eslint/parser": "5.41.0", + "@typescript-eslint/parser": "5.42.0", "typescript": "*" }, "peerDependencies": { diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index e7cfbe3fb88..48a98e9a16f 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) + +**Note:** Version bump only for package @typescript-eslint/types + # [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) **Note:** Version bump only for package @typescript-eslint/types diff --git a/packages/types/package.json b/packages/types/package.json index 78c880438fb..d2347b6a48c 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/types", - "version": "5.41.0", + "version": "5.42.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 cb369c72bf4..78cf8e7aefc 100644 --- a/packages/typescript-estree/CHANGELOG.md +++ b/packages/typescript-estree/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) + +### Bug Fixes + +- **typescript-estree:** don't allow single-run unless we're in type-aware linting mode ([#5893](https://github.com/typescript-eslint/typescript-eslint/issues/5893)) ([891b087](https://github.com/typescript-eslint/typescript-eslint/commit/891b0879ba9c64a4722b8c0bf9e599a725b6d6df)) + +### Features + +- **typescript-estree:** clarify docs and error for program project without matching TSConfig ([#5762](https://github.com/typescript-eslint/typescript-eslint/issues/5762)) ([67744db](https://github.com/typescript-eslint/typescript-eslint/commit/67744db31f61acab14b5fe027fbc2844ba198c97)) + # [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) **Note:** Version bump only for package @typescript-eslint/typescript-estree diff --git a/packages/typescript-estree/package.json b/packages/typescript-estree/package.json index 52de436db7b..1df5908ca03 100644 --- a/packages/typescript-estree/package.json +++ b/packages/typescript-estree/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/typescript-estree", - "version": "5.41.0", + "version": "5.42.0", "description": "A parser that converts TypeScript source code into an ESTree compatible form", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -42,8 +42,8 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "5.41.0", - "@typescript-eslint/visitor-keys": "5.41.0", + "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/visitor-keys": "5.42.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -59,7 +59,7 @@ "@types/is-glob": "*", "@types/semver": "*", "@types/tmp": "*", - "@typescript-eslint/shared-fixtures": "5.41.0", + "@typescript-eslint/shared-fixtures": "5.42.0", "glob": "*", "jest-specific-snapshot": "*", "make-dir": "*", diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md index ea1b24da025..97a2797ea8a 100644 --- a/packages/utils/CHANGELOG.md +++ b/packages/utils/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) + +### Features + +- **utils:** add `RuleTester` API for top-level dependency constraints ([#5896](https://github.com/typescript-eslint/typescript-eslint/issues/5896)) ([0520d53](https://github.com/typescript-eslint/typescript-eslint/commit/0520d53536af411d66ce2ce0dd478365e67adbac)) + # [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) **Note:** Version bump only for package @typescript-eslint/utils diff --git a/packages/utils/package.json b/packages/utils/package.json index 21b80b4a9fa..2de743ab01d 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/utils", - "version": "5.41.0", + "version": "5.42.0", "description": "Utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -41,9 +41,9 @@ "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.41.0", - "@typescript-eslint/types": "5.41.0", - "@typescript-eslint/typescript-estree": "5.41.0", + "@typescript-eslint/scope-manager": "5.42.0", + "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/typescript-estree": "5.42.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -52,7 +52,7 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "devDependencies": { - "@typescript-eslint/parser": "5.41.0", + "@typescript-eslint/parser": "5.42.0", "typescript": "*" }, "funding": { diff --git a/packages/visitor-keys/CHANGELOG.md b/packages/visitor-keys/CHANGELOG.md index 65df1dacb42..21700ddd1a3 100644 --- a/packages/visitor-keys/CHANGELOG.md +++ b/packages/visitor-keys/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) + +**Note:** Version bump only for package @typescript-eslint/visitor-keys + # [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) **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 9898d07c851..2068a094820 100644 --- a/packages/visitor-keys/package.json +++ b/packages/visitor-keys/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/visitor-keys", - "version": "5.41.0", + "version": "5.42.0", "description": "Visitor keys used to help traverse the TypeScript-ESTree AST", "keywords": [ "eslint", @@ -39,7 +39,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/types": "5.42.0", "eslint-visitor-keys": "^3.3.0" }, "devDependencies": { diff --git a/packages/website-eslint/CHANGELOG.md b/packages/website-eslint/CHANGELOG.md index 2129728bf18..5c65303053e 100644 --- a/packages/website-eslint/CHANGELOG.md +++ b/packages/website-eslint/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) + +**Note:** Version bump only for package @typescript-eslint/website-eslint + # [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) **Note:** Version bump only for package @typescript-eslint/website-eslint diff --git a/packages/website-eslint/package.json b/packages/website-eslint/package.json index f094f70c3be..5384c756758 100644 --- a/packages/website-eslint/package.json +++ b/packages/website-eslint/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/website-eslint", - "version": "5.41.0", + "version": "5.42.0", "private": true, "description": "ESLint which works in browsers.", "engines": { @@ -16,19 +16,19 @@ "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore" }, "dependencies": { - "@typescript-eslint/types": "5.41.0", - "@typescript-eslint/utils": "5.41.0" + "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/utils": "5.42.0" }, "devDependencies": { "@rollup/plugin-commonjs": "^23.0.0", "@rollup/plugin-json": "^5.0.0", "@rollup/plugin-node-resolve": "^15.0.0", "@rollup/pluginutils": "^5.0.0", - "@typescript-eslint/eslint-plugin": "5.41.0", - "@typescript-eslint/parser": "5.41.0", - "@typescript-eslint/scope-manager": "5.41.0", - "@typescript-eslint/typescript-estree": "5.41.0", - "@typescript-eslint/visitor-keys": "5.41.0", + "@typescript-eslint/eslint-plugin": "5.42.0", + "@typescript-eslint/parser": "5.42.0", + "@typescript-eslint/scope-manager": "5.42.0", + "@typescript-eslint/typescript-estree": "5.42.0", + "@typescript-eslint/visitor-keys": "5.42.0", "eslint": "*", "rollup": "^2.75.4", "rollup-plugin-terser": "^7.0.2", diff --git a/packages/website/CHANGELOG.md b/packages/website/CHANGELOG.md index 38d0670bfbc..472da3ec4f2 100644 --- a/packages/website/CHANGELOG.md +++ b/packages/website/CHANGELOG.md @@ -3,6 +3,21 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) + +### Bug Fixes + +- **eslint-plugin:** enable react/jsx-curly-brace-presence lint rule in website package ([#5894](https://github.com/typescript-eslint/typescript-eslint/issues/5894)) ([344322a](https://github.com/typescript-eslint/typescript-eslint/commit/344322add846d03c6c9981e486b09e6ba1196555)) + +### Features + +- **scope-manager:** ignore ECMA version ([#5881](https://github.com/typescript-eslint/typescript-eslint/issues/5881)) ([3b8d449](https://github.com/typescript-eslint/typescript-eslint/commit/3b8d449696c319690536a18a48ef32749dc2f559)) +- **website:** Add a happy message to playground output pane when no errors or AST ([#5868](https://github.com/typescript-eslint/typescript-eslint/issues/5868)) ([#5873](https://github.com/typescript-eslint/typescript-eslint/issues/5873)) ([c4e0d86](https://github.com/typescript-eslint/typescript-eslint/commit/c4e0d8678e0398f3ab85510f40ad6f97832b9e6d)) + +### Reverts + +- Revert "feat(scope-manager): ignore ECMA version" (#5888) ([2ee81df](https://github.com/typescript-eslint/typescript-eslint/commit/2ee81df5a365d82ef4b3dfc124d4ec39c7bcb725)), closes [#5888](https://github.com/typescript-eslint/typescript-eslint/issues/5888) [#5881](https://github.com/typescript-eslint/typescript-eslint/issues/5881) + # [5.41.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.40.1...v5.41.0) (2022-10-24) **Note:** Version bump only for package website diff --git a/packages/website/package.json b/packages/website/package.json index 9469e3450a7..c2ef8addd0e 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -1,6 +1,6 @@ { "name": "website", - "version": "5.41.0", + "version": "5.42.0", "private": true, "scripts": { "build": "docusaurus build", @@ -21,8 +21,8 @@ "@docusaurus/remark-plugin-npm2yarn": "~2.1.0", "@docusaurus/theme-common": "~2.1.0", "@mdx-js/react": "1.6.22", - "@typescript-eslint/parser": "5.41.0", - "@typescript-eslint/website-eslint": "5.41.0", + "@typescript-eslint/parser": "5.42.0", + "@typescript-eslint/website-eslint": "5.42.0", "clsx": "^1.1.1", "eslint": "*", "json-schema": "^0.4.0", @@ -48,7 +48,7 @@ "@types/react": "^18.0.9", "@types/react-helmet": "^6.1.5", "@types/react-router-dom": "^5.3.3", - "@typescript-eslint/eslint-plugin": "5.41.0", + "@typescript-eslint/eslint-plugin": "5.42.0", "copy-webpack-plugin": "^11.0.0", "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-react": "^7.29.4", From 2089e5ab6f7697d0d86848950c7a2e015811f71f Mon Sep 17 00:00:00 2001 From: "typescript-eslint[bot]" <53356952+typescript-eslint[bot]@users.noreply.github.com> Date: Mon, 31 Oct 2022 21:19:52 -0700 Subject: [PATCH 085/193] chore: update contributors (#5909) Co-authored-by: typescript-eslint[bot] --- CONTRIBUTORS.md | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 3d6d37b2190..9d9b15f70f2 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -10,83 +10,83 @@ Thanks goes to these wonderful people:
Brad Zacher

Armano

Josh Goldberg
-
Reyad Attiyat
+
Oleksandr T.
+
Michaël De Boey
+
Reyad Attiyat

Patricio Trevino

Sosuke Suzuki

Joshua Chen
-
Nicholas C. Zakas
-
Jed Fox
+
Nicholas C. Zakas

YeonJuan
+
Jed Fox

Rafael Santana

Ben Lichtman
-
Nikita
-
Taeheon Kim
+
Nikita
+
Taeheon Kim

Scott O'Hara

Retsam

Kai Cataldo
-
Rasmus Eneman
-
Toru Nagashima
+
Rasmus Eneman
+
Rebecca Stevens
+
Toru Nagashima

Yosuke Ota

JounQin
+ +
Lucas Azzola

Danny Fritz

Ika
- -
mackie

Simen Bekkhus
+ +
Kanitkorn Sujautra

cherryblossom

Zzzen
+
Anix
+
Daniil Dubrava
-
Anix
-
Pete Gonzalez

ldrick

Susisu
+
Bryan Mishkin

Gavin Barron
+
Kevin Partington
-
Kevin Partington

Lucas Duailibe

Niles Salter
+
Pavel Birukov
+
Shahar Dawn Or

SHIMA RYUHEI
-
koooge
+
koooge

thomas michael wallace

ulrichb

Juan García
-
Bryan Mishkin

Daniel Cassidy
-
Daniel Nixon

Denys Kniazevych
-
Dimitri Mitropoulos

Ian MacLeod

Jonathan Delgado
- -
Philipp A.

Pig Fang
-
Tadhg McDonald-Jensen
-
Thomas den Hollander
-
Yasar Siddiqui
+
Thomas den Hollander
+
Yasar Siddiqui

Yusuke Tanaka
-
Bence Dányi
-
Eric Wang
-
Soobin Bak
+
zz
From e88f4fa1d0127ba0ddeff578ec67f2e66a1de68b Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Tue, 1 Nov 2022 21:57:02 -0700 Subject: [PATCH 086/193] fix(ast-spec): correct misnamed ExportNamedDeclaration AST type (#5913) --- .../ast-spec/src/declaration/ExportNamedDeclaration/spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/spec.ts b/packages/ast-spec/src/declaration/ExportNamedDeclaration/spec.ts index 061c53f4b46..b9b158eddb4 100644 --- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/spec.ts +++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/spec.ts @@ -46,7 +46,7 @@ export interface ExportNamedDeclarationWithoutSourceWithMultiple extends ExportNamedDeclarationBase { // this will always be empty array assertions: ImportAttribute[]; - declaration: NamedExportDeclarations; + declaration: null; source: null; specifiers: ExportSpecifier[]; } @@ -55,7 +55,7 @@ export interface ExportNamedDeclarationWithoutSourceWithSingle extends ExportNamedDeclarationBase { // this will always be empty array assertions: ImportAttribute[]; - declaration: null; + declaration: NamedExportDeclarations; source: null; // this will always be empty array specifiers: ExportSpecifier[]; From c874e500abca75f069bb6a176660a66e90783519 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 1 Nov 2022 22:12:14 -0700 Subject: [PATCH 087/193] chore(deps): update docusaurus to ~2.2.0 (#5911) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/website/package.json | 12 +- yarn.lock | 376 +++++++++++++++++----------------- 2 files changed, 194 insertions(+), 194 deletions(-) diff --git a/packages/website/package.json b/packages/website/package.json index c2ef8addd0e..7ca8f69a3d7 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -15,11 +15,11 @@ }, "dependencies": { "@babel/runtime": "^7.18.3", - "@docusaurus/core": "~2.1.0", - "@docusaurus/plugin-pwa": "~2.1.0", - "@docusaurus/preset-classic": "~2.1.0", - "@docusaurus/remark-plugin-npm2yarn": "~2.1.0", - "@docusaurus/theme-common": "~2.1.0", + "@docusaurus/core": "~2.2.0", + "@docusaurus/plugin-pwa": "~2.2.0", + "@docusaurus/preset-classic": "~2.2.0", + "@docusaurus/remark-plugin-npm2yarn": "~2.2.0", + "@docusaurus/theme-common": "~2.2.0", "@mdx-js/react": "1.6.22", "@typescript-eslint/parser": "5.42.0", "@typescript-eslint/website-eslint": "5.42.0", @@ -43,7 +43,7 @@ }, "devDependencies": { "@axe-core/playwright": "^4.4.5", - "@docusaurus/module-type-aliases": "~2.1.0", + "@docusaurus/module-type-aliases": "~2.2.0", "@playwright/test": "^1.27.1", "@types/react": "^18.0.9", "@types/react-helmet": "^6.1.5", diff --git a/yarn.lock b/yarn.lock index 1e719261af6..543fa9bbc68 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1536,10 +1536,10 @@ "@docsearch/css" "3.1.1" algoliasearch "^4.0.0" -"@docusaurus/core@2.1.0", "@docusaurus/core@~2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.1.0.tgz#4aedc306f4c4cd2e0491b641bf78941d4b480ab6" - integrity sha512-/ZJ6xmm+VB9Izbn0/s6h6289cbPy2k4iYFwWDhjiLsVqwa/Y0YBBcXvStfaHccudUC3OfP+26hMk7UCjc50J6Q== +"@docusaurus/core@2.2.0", "@docusaurus/core@~2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.2.0.tgz#64c9ee31502c23b93c869f8188f73afaf5fd4867" + integrity sha512-Vd6XOluKQqzG12fEs9prJgDtyn6DPok9vmUWDR2E6/nV5Fl9SVkhEQOBxwObjk3kQh7OY7vguFaLh0jqdApWsA== dependencies: "@babel/core" "^7.18.6" "@babel/generator" "^7.18.7" @@ -1551,13 +1551,13 @@ "@babel/runtime" "^7.18.6" "@babel/runtime-corejs3" "^7.18.6" "@babel/traverse" "^7.18.8" - "@docusaurus/cssnano-preset" "2.1.0" - "@docusaurus/logger" "2.1.0" - "@docusaurus/mdx-loader" "2.1.0" + "@docusaurus/cssnano-preset" "2.2.0" + "@docusaurus/logger" "2.2.0" + "@docusaurus/mdx-loader" "2.2.0" "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-common" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-common" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" "@slorber/static-site-generator-webpack-plugin" "^4.0.7" "@svgr/webpack" "^6.2.1" autoprefixer "^10.4.7" @@ -1613,33 +1613,33 @@ webpack-merge "^5.8.0" webpackbar "^5.0.2" -"@docusaurus/cssnano-preset@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.1.0.tgz#5b42107769b7cbc61655496090bc262d7788d6ab" - integrity sha512-pRLewcgGhOies6pzsUROfmPStDRdFw+FgV5sMtLr5+4Luv2rty5+b/eSIMMetqUsmg3A9r9bcxHk9bKAKvx3zQ== +"@docusaurus/cssnano-preset@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.2.0.tgz#fc05044659051ae74ab4482afcf4a9936e81d523" + integrity sha512-mAAwCo4n66TMWBH1kXnHVZsakW9VAXJzTO4yZukuL3ro4F+JtkMwKfh42EG75K/J/YIFQG5I/Bzy0UH/hFxaTg== dependencies: cssnano-preset-advanced "^5.3.8" postcss "^8.4.14" postcss-sort-media-queries "^4.2.1" tslib "^2.4.0" -"@docusaurus/logger@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.1.0.tgz#86c97e948f578814d3e61fc2b2ad283043cbe87a" - integrity sha512-uuJx2T6hDBg82joFeyobywPjSOIfeq05GfyKGHThVoXuXsu1KAzMDYcjoDxarb9CoHCI/Dor8R2MoL6zII8x1Q== +"@docusaurus/logger@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.2.0.tgz#ea2f7feda7b8675485933b87f06d9c976d17423f" + integrity sha512-DF3j1cA5y2nNsu/vk8AG7xwpZu6f5MKkPPMaaIbgXLnWGfm6+wkOeW7kNrxnM95YOhKUkJUophX69nGUnLsm0A== dependencies: chalk "^4.1.2" tslib "^2.4.0" -"@docusaurus/mdx-loader@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.1.0.tgz#3fca9576cc73a22f8e7d9941985590b9e47a8526" - integrity sha512-i97hi7hbQjsD3/8OSFhLy7dbKGH8ryjEzOfyhQIn2CFBYOY3ko0vMVEf3IY9nD3Ld7amYzsZ8153RPkcnXA+Lg== +"@docusaurus/mdx-loader@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.2.0.tgz#fd558f429e5d9403d284bd4214e54d9768b041a0" + integrity sha512-X2bzo3T0jW0VhUU+XdQofcEeozXOTmKQMvc8tUnWRdTnCvj4XEcBVdC3g+/jftceluiwSTNRAX4VBOJdNt18jA== dependencies: "@babel/parser" "^7.18.8" "@babel/traverse" "^7.18.8" - "@docusaurus/logger" "2.1.0" - "@docusaurus/utils" "2.1.0" + "@docusaurus/logger" "2.2.0" + "@docusaurus/utils" "2.2.0" "@mdx-js/mdx" "^1.6.22" escape-html "^1.0.3" file-loader "^6.2.0" @@ -1654,13 +1654,13 @@ url-loader "^4.1.1" webpack "^5.73.0" -"@docusaurus/module-type-aliases@2.1.0", "@docusaurus/module-type-aliases@~2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.1.0.tgz#322f8fd5b436af2154c0dddfa173435730e66261" - integrity sha512-Z8WZaK5cis3xEtyfOT817u9xgGUauT0PuuVo85ysnFRX8n7qLN1lTPCkC+aCmFm/UcV8h/W5T4NtIsst94UntQ== +"@docusaurus/module-type-aliases@2.2.0", "@docusaurus/module-type-aliases@~2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.2.0.tgz#1e23e54a1bbb6fde1961e4fa395b1b69f4803ba5" + integrity sha512-wDGW4IHKoOr9YuJgy7uYuKWrDrSpsUSDHLZnWQYM9fN7D5EpSmYHjFruUpKWVyxLpD/Wh0rW8hYZwdjJIQUQCQ== dependencies: "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/types" "2.1.0" + "@docusaurus/types" "2.2.0" "@types/history" "^4.7.11" "@types/react" "*" "@types/react-router-config" "*" @@ -1668,18 +1668,18 @@ react-helmet-async "*" react-loadable "npm:@docusaurus/react-loadable@5.5.2" -"@docusaurus/plugin-content-blog@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.1.0.tgz#32b1a7cd4b0026f4a76fce4edc5cfdd0edb1ec42" - integrity sha512-xEp6jlu92HMNUmyRBEeJ4mCW1s77aAEQO4Keez94cUY/Ap7G/r0Awa6xSLff7HL0Fjg8KK1bEbDy7q9voIavdg== - dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/logger" "2.1.0" - "@docusaurus/mdx-loader" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-common" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" +"@docusaurus/plugin-content-blog@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.2.0.tgz#dc55982e76771f4e678ac10e26d10e1da2011dc1" + integrity sha512-0mWBinEh0a5J2+8ZJXJXbrCk1tSTNf7Nm4tYAl5h2/xx+PvH/Bnu0V+7mMljYm/1QlDYALNIIaT/JcoZQFUN3w== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/logger" "2.2.0" + "@docusaurus/mdx-loader" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-common" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" cheerio "^1.0.0-rc.12" feed "^4.2.2" fs-extra "^10.1.0" @@ -1690,18 +1690,18 @@ utility-types "^3.10.0" webpack "^5.73.0" -"@docusaurus/plugin-content-docs@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.1.0.tgz#3fcdf258c13dde27268ce7108a102b74ca4c279b" - integrity sha512-Rup5pqXrXlKGIC4VgwvioIhGWF7E/NNSlxv+JAxRYpik8VKlWsk9ysrdHIlpX+KJUCO9irnY21kQh2814mlp/Q== - dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/logger" "2.1.0" - "@docusaurus/mdx-loader" "2.1.0" - "@docusaurus/module-type-aliases" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" +"@docusaurus/plugin-content-docs@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.2.0.tgz#0fcb85226fcdb80dc1e2d4a36ef442a650dcc84d" + integrity sha512-BOazBR0XjzsHE+2K1wpNxz5QZmrJgmm3+0Re0EVPYFGW8qndCWGNtXW/0lGKhecVPML8yyFeAmnUCIs7xM2wPw== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/logger" "2.2.0" + "@docusaurus/mdx-loader" "2.2.0" + "@docusaurus/module-type-aliases" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" "@types/react-router-config" "^5.0.6" combine-promises "^1.1.0" fs-extra "^10.1.0" @@ -1712,65 +1712,65 @@ utility-types "^3.10.0" webpack "^5.73.0" -"@docusaurus/plugin-content-pages@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.1.0.tgz#714d24f71d49dbfed888f50c15e975c2154c3ce8" - integrity sha512-SwZdDZRlObHNKXTnFo7W2aF6U5ZqNVI55Nw2GCBryL7oKQSLeI0lsrMlMXdzn+fS7OuBTd3MJBO1T4Zpz0i/+g== - dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/mdx-loader" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" +"@docusaurus/plugin-content-pages@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.2.0.tgz#e3f40408787bbe229545dd50595f87e1393bc3ae" + integrity sha512-+OTK3FQHk5WMvdelz8v19PbEbx+CNT6VSpx7nVOvMNs5yJCKvmqBJBQ2ZSxROxhVDYn+CZOlmyrC56NSXzHf6g== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/mdx-loader" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" fs-extra "^10.1.0" tslib "^2.4.0" webpack "^5.73.0" -"@docusaurus/plugin-debug@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.1.0.tgz#b3145affb40e25cf342174638952a5928ddaf7dc" - integrity sha512-8wsDq3OIfiy6440KLlp/qT5uk+WRHQXIXklNHEeZcar+Of0TZxCNe2FBpv+bzb/0qcdP45ia5i5WmR5OjN6DPw== +"@docusaurus/plugin-debug@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.2.0.tgz#b38741d2c492f405fee01ee0ef2e0029cedb689a" + integrity sha512-p9vOep8+7OVl6r/NREEYxf4HMAjV8JMYJ7Bos5fCFO0Wyi9AZEo0sCTliRd7R8+dlJXZEgcngSdxAUo/Q+CJow== dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils" "2.1.0" + "@docusaurus/core" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils" "2.2.0" fs-extra "^10.1.0" react-json-view "^1.21.3" tslib "^2.4.0" -"@docusaurus/plugin-google-analytics@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.1.0.tgz#c9a7269817b38e43484d38fad9996e39aac4196c" - integrity sha512-4cgeqIly/wcFVbbWP03y1QJJBgH8W+Bv6AVbWnsXNOZa1yB3AO6hf3ZdeQH9x20v9T2pREogVgAH0rSoVnNsgg== +"@docusaurus/plugin-google-analytics@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.2.0.tgz#63c7137eff5a1208d2059fea04b5207c037d7954" + integrity sha512-+eZVVxVeEnV5nVQJdey9ZsfyEVMls6VyWTIj8SmX0k5EbqGvnIfET+J2pYEuKQnDIHxy+syRMoRM6AHXdHYGIg== dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" + "@docusaurus/core" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" tslib "^2.4.0" -"@docusaurus/plugin-google-gtag@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.1.0.tgz#e4f351dcd98b933538d55bb742650a2a36ca9a32" - integrity sha512-/3aDlv2dMoCeiX2e+DTGvvrdTA+v3cKQV3DbmfsF4ENhvc5nKV23nth04Z3Vq0Ci1ui6Sn80TkhGk/tiCMW2AA== +"@docusaurus/plugin-google-gtag@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.2.0.tgz#7b086d169ac5fe9a88aca10ab0fd2bf00c6c6b12" + integrity sha512-6SOgczP/dYdkqUMGTRqgxAS1eTp6MnJDAQMy8VCF1QKbWZmlkx4agHDexihqmYyCujTYHqDAhm1hV26EET54NQ== dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" + "@docusaurus/core" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" tslib "^2.4.0" -"@docusaurus/plugin-pwa@~2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-pwa/-/plugin-pwa-2.1.0.tgz#e6deb53a4c4b10de85c73886a75497a48bedd258" - integrity sha512-SOhEbv9sECaD/c9Ym2Bq6ruK56PAxV9Ftj6Hk2rKFdrASBv3ruri2iCT5YPKMpXqmzWd84GnE2pusMW2s1w2Sw== +"@docusaurus/plugin-pwa@~2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-pwa/-/plugin-pwa-2.2.0.tgz#2aca00d268efbca8f3cf1c3e260b801e6f7f8af5" + integrity sha512-j1ldskYXkKYmWB6V1I0Lv2o9EUhSdGI6pCo0RFGaLijJKLlA9R+F5j+0kWvoyirXM7LRGknkXYYkc50i25R5Sw== dependencies: "@babel/core" "^7.18.6" "@babel/preset-env" "^7.18.6" - "@docusaurus/core" "2.1.0" - "@docusaurus/theme-common" "2.1.0" - "@docusaurus/theme-translations" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" + "@docusaurus/core" "2.2.0" + "@docusaurus/theme-common" "2.2.0" + "@docusaurus/theme-translations" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" babel-loader "^8.2.5" clsx "^1.2.1" core-js "^3.23.3" @@ -1782,38 +1782,38 @@ workbox-precaching "^6.5.3" workbox-window "^6.5.3" -"@docusaurus/plugin-sitemap@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.1.0.tgz#b316bb9a42a1717845e26bd4e2d3071748a54b47" - integrity sha512-2Y6Br8drlrZ/jN9MwMBl0aoi9GAjpfyfMBYpaQZXimbK+e9VjYnujXlvQ4SxtM60ASDgtHIAzfVFBkSR/MwRUw== - dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/logger" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-common" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" +"@docusaurus/plugin-sitemap@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.2.0.tgz#876da60937886032d63143253d420db6a4b34773" + integrity sha512-0jAmyRDN/aI265CbWZNZuQpFqiZuo+5otk2MylU9iVrz/4J7gSc+ZJ9cy4EHrEsW7PV8s1w18hIEsmcA1YgkKg== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/logger" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-common" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" fs-extra "^10.1.0" sitemap "^7.1.1" tslib "^2.4.0" -"@docusaurus/preset-classic@~2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.1.0.tgz#45b23c8ec10c96ded9ece128fac3a39b10bcbc56" - integrity sha512-NQMnaq974K4BcSMXFSJBQ5itniw6RSyW+VT+6i90kGZzTwiuKZmsp0r9lC6BYAvvVMQUNJQwrETmlu7y2XKW7w== - dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/plugin-content-blog" "2.1.0" - "@docusaurus/plugin-content-docs" "2.1.0" - "@docusaurus/plugin-content-pages" "2.1.0" - "@docusaurus/plugin-debug" "2.1.0" - "@docusaurus/plugin-google-analytics" "2.1.0" - "@docusaurus/plugin-google-gtag" "2.1.0" - "@docusaurus/plugin-sitemap" "2.1.0" - "@docusaurus/theme-classic" "2.1.0" - "@docusaurus/theme-common" "2.1.0" - "@docusaurus/theme-search-algolia" "2.1.0" - "@docusaurus/types" "2.1.0" +"@docusaurus/preset-classic@~2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.2.0.tgz#bece5a043eeb74430f7c6c7510000b9c43669eb7" + integrity sha512-yKIWPGNx7BT8v2wjFIWvYrS+nvN04W+UameSFf8lEiJk6pss0kL6SG2MRvyULiI3BDxH+tj6qe02ncpSPGwumg== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/plugin-content-blog" "2.2.0" + "@docusaurus/plugin-content-docs" "2.2.0" + "@docusaurus/plugin-content-pages" "2.2.0" + "@docusaurus/plugin-debug" "2.2.0" + "@docusaurus/plugin-google-analytics" "2.2.0" + "@docusaurus/plugin-google-gtag" "2.2.0" + "@docusaurus/plugin-sitemap" "2.2.0" + "@docusaurus/theme-classic" "2.2.0" + "@docusaurus/theme-common" "2.2.0" + "@docusaurus/theme-search-algolia" "2.2.0" + "@docusaurus/types" "2.2.0" "@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2": version "5.5.2" @@ -1823,32 +1823,32 @@ "@types/react" "*" prop-types "^15.6.2" -"@docusaurus/remark-plugin-npm2yarn@~2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/remark-plugin-npm2yarn/-/remark-plugin-npm2yarn-2.1.0.tgz#45d933002880e55ac70ac33a21894243e8af7643" - integrity sha512-crlbE7XN4m6f5PMW+1K0w1/r6YsJPBHPAnxBu+dwcObBYFKeNnmtci8mBOX/Ey1eeV9wO1yFwaSWKEn1EAbcbQ== +"@docusaurus/remark-plugin-npm2yarn@~2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/remark-plugin-npm2yarn/-/remark-plugin-npm2yarn-2.2.0.tgz#12d433eda8986c475277dd7fb8624b10c8a976ea" + integrity sha512-CFiwzk+0QrlBjkcx4cNV8LQZHgo15aQ3piO0Iao0vGXLc7eupGigDLuE7q3Phc10ELweO+P2gRQTjlBqIQTC+Q== dependencies: npm-to-yarn "^1.0.1" tslib "^2.4.0" unist-util-visit "^2.0.3" -"@docusaurus/theme-classic@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.1.0.tgz#d957a907ea8dd035c1cf911d0fbe91d8f24aef3f" - integrity sha512-xn8ZfNMsf7gaSy9+ClFnUu71o7oKgMo5noYSS1hy3svNifRTkrBp6+MReLDsmIaj3mLf2e7+JCBYKBFbaGzQng== - dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/mdx-loader" "2.1.0" - "@docusaurus/module-type-aliases" "2.1.0" - "@docusaurus/plugin-content-blog" "2.1.0" - "@docusaurus/plugin-content-docs" "2.1.0" - "@docusaurus/plugin-content-pages" "2.1.0" - "@docusaurus/theme-common" "2.1.0" - "@docusaurus/theme-translations" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-common" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" +"@docusaurus/theme-classic@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.2.0.tgz#a048bb1bc077dee74b28bec25f4b84b481863742" + integrity sha512-kjbg/qJPwZ6H1CU/i9d4l/LcFgnuzeiGgMQlt6yPqKo0SOJIBMPuz7Rnu3r/WWbZFPi//o8acclacOzmXdUUEg== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/mdx-loader" "2.2.0" + "@docusaurus/module-type-aliases" "2.2.0" + "@docusaurus/plugin-content-blog" "2.2.0" + "@docusaurus/plugin-content-docs" "2.2.0" + "@docusaurus/plugin-content-pages" "2.2.0" + "@docusaurus/theme-common" "2.2.0" + "@docusaurus/theme-translations" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-common" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" "@mdx-js/react" "^1.6.22" clsx "^1.2.1" copy-text-to-clipboard "^3.0.1" @@ -1863,17 +1863,17 @@ tslib "^2.4.0" utility-types "^3.10.0" -"@docusaurus/theme-common@2.1.0", "@docusaurus/theme-common@~2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.1.0.tgz#dff4d5d1e29efc06125dc06f7b259f689bb3f24d" - integrity sha512-vT1otpVPbKux90YpZUnvknsn5zvpLf+AW1W0EDcpE9up4cDrPqfsh0QoxGHFJnobE2/qftsBFC19BneN4BH8Ag== - dependencies: - "@docusaurus/mdx-loader" "2.1.0" - "@docusaurus/module-type-aliases" "2.1.0" - "@docusaurus/plugin-content-blog" "2.1.0" - "@docusaurus/plugin-content-docs" "2.1.0" - "@docusaurus/plugin-content-pages" "2.1.0" - "@docusaurus/utils" "2.1.0" +"@docusaurus/theme-common@2.2.0", "@docusaurus/theme-common@~2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.2.0.tgz#2303498d80448aafdd588b597ce9d6f4cfa930e4" + integrity sha512-R8BnDjYoN90DCL75gP7qYQfSjyitXuP9TdzgsKDmSFPNyrdE3twtPNa2dIN+h+p/pr+PagfxwWbd6dn722A1Dw== + dependencies: + "@docusaurus/mdx-loader" "2.2.0" + "@docusaurus/module-type-aliases" "2.2.0" + "@docusaurus/plugin-content-blog" "2.2.0" + "@docusaurus/plugin-content-docs" "2.2.0" + "@docusaurus/plugin-content-pages" "2.2.0" + "@docusaurus/utils" "2.2.0" "@types/history" "^4.7.11" "@types/react" "*" "@types/react-router-config" "*" @@ -1883,19 +1883,19 @@ tslib "^2.4.0" utility-types "^3.10.0" -"@docusaurus/theme-search-algolia@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.1.0.tgz#e7cdf64b6f7a15b07c6dcf652fd308cfdaabb0ee" - integrity sha512-rNBvi35VvENhucslEeVPOtbAzBdZY/9j55gdsweGV5bYoAXy4mHB6zTGjealcB4pJ6lJY4a5g75fXXMOlUqPfg== +"@docusaurus/theme-search-algolia@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.2.0.tgz#77fd9f7a600917e6024fe3ac7fb6cfdf2ce84737" + integrity sha512-2h38B0tqlxgR2FZ9LpAkGrpDWVdXZ7vltfmTdX+4RsDs3A7khiNsmZB+x/x6sA4+G2V2CvrsPMlsYBy5X+cY1w== dependencies: "@docsearch/react" "^3.1.1" - "@docusaurus/core" "2.1.0" - "@docusaurus/logger" "2.1.0" - "@docusaurus/plugin-content-docs" "2.1.0" - "@docusaurus/theme-common" "2.1.0" - "@docusaurus/theme-translations" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" + "@docusaurus/core" "2.2.0" + "@docusaurus/logger" "2.2.0" + "@docusaurus/plugin-content-docs" "2.2.0" + "@docusaurus/theme-common" "2.2.0" + "@docusaurus/theme-translations" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" algoliasearch "^4.13.1" algoliasearch-helper "^3.10.0" clsx "^1.2.1" @@ -1905,18 +1905,18 @@ tslib "^2.4.0" utility-types "^3.10.0" -"@docusaurus/theme-translations@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.1.0.tgz#ce9a2955afd49bff364cfdfd4492b226f6dd3b6e" - integrity sha512-07n2akf2nqWvtJeMy3A+7oSGMuu5F673AovXVwY0aGAux1afzGCiqIFlYW3EP0CujvDJAEFSQi/Tetfh+95JNg== +"@docusaurus/theme-translations@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.2.0.tgz#5fbd4693679806f80c26eeae1381e1f2c23d83e7" + integrity sha512-3T140AG11OjJrtKlY4pMZ5BzbGRDjNs2co5hJ6uYJG1bVWlhcaFGqkaZ5lCgKflaNHD7UHBHU9Ec5f69jTdd6w== dependencies: fs-extra "^10.1.0" tslib "^2.4.0" -"@docusaurus/types@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.1.0.tgz#01e13cd9adb268fffe87b49eb90302d5dc3edd6b" - integrity sha512-BS1ebpJZnGG6esKqsjtEC9U9qSaPylPwlO7cQ1GaIE7J/kMZI3FITnNn0otXXu7c7ZTqhb6+8dOrG6fZn6fqzQ== +"@docusaurus/types@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.2.0.tgz#02c577a4041ab7d058a3c214ccb13647e21a9857" + integrity sha512-b6xxyoexfbRNRI8gjblzVOnLr4peCJhGbYGPpJ3LFqpi5nsFfoK4mmDLvWdeah0B7gmJeXabN7nQkFoqeSdmOw== dependencies: "@types/history" "^4.7.11" "@types/react" "*" @@ -1927,30 +1927,30 @@ webpack "^5.73.0" webpack-merge "^5.8.0" -"@docusaurus/utils-common@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.1.0.tgz#248434751096f8c6c644ed65eed2a5a070a227f8" - integrity sha512-F2vgmt4yRFgRQR2vyEFGTWeyAdmgKbtmu3sjHObF0tjjx/pN0Iw/c6eCopaH34E6tc9nO0nvp01pwW+/86d1fg== +"@docusaurus/utils-common@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.2.0.tgz#a401c1b93a8697dd566baf6ac64f0fdff1641a78" + integrity sha512-qebnerHp+cyovdUseDQyYFvMW1n1nv61zGe5JJfoNQUnjKuApch3IVsz+/lZ9a38pId8kqehC1Ao2bW/s0ntDA== dependencies: tslib "^2.4.0" -"@docusaurus/utils-validation@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.1.0.tgz#c8cf1d8454d924d9a564fefa86436268f43308e3" - integrity sha512-AMJzWYKL3b7FLltKtDXNLO9Y649V2BXvrnRdnW2AA+PpBnYV78zKLSCz135cuWwRj1ajNtP4onbXdlnyvCijGQ== +"@docusaurus/utils-validation@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.2.0.tgz#04d4d103137ad0145883971d3aa497f4a1315f25" + integrity sha512-I1hcsG3yoCkasOL5qQAYAfnmVoLei7apugT6m4crQjmDGxq+UkiRrq55UqmDDyZlac/6ax/JC0p+usZ6W4nVyg== dependencies: - "@docusaurus/logger" "2.1.0" - "@docusaurus/utils" "2.1.0" + "@docusaurus/logger" "2.2.0" + "@docusaurus/utils" "2.2.0" joi "^17.6.0" js-yaml "^4.1.0" tslib "^2.4.0" -"@docusaurus/utils@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.1.0.tgz#b77b45b22e61eb6c2dcad8a7e96f6db0409b655f" - integrity sha512-fPvrfmAuC54n8MjZuG4IysaMdmvN5A/qr7iFLbSGSyDrsbP4fnui6KdZZIa/YOLIPLec8vjZ8RIITJqF18mx4A== +"@docusaurus/utils@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.2.0.tgz#3d6f9b7a69168d5c92d371bf21c556a4f50d1da6" + integrity sha512-oNk3cjvx7Tt1Lgh/aeZAmFpGV2pDr5nHKrBVx6hTkzGhrnMuQqLt6UPlQjdYQ3QHXwyF/ZtZMO1D5Pfi0lu7SA== dependencies: - "@docusaurus/logger" "2.1.0" + "@docusaurus/logger" "2.2.0" "@svgr/webpack" "^6.2.1" file-loader "^6.2.0" fs-extra "^10.1.0" From f11183cfe31e4e2c29d122516a9884c85a2617e0 Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Tue, 1 Nov 2022 22:12:25 -0700 Subject: [PATCH 088/193] chore(eslint-plugin-internal): [plugin-test-formatting] support random object literal tests (#5895) * chore(eslint-plugin-internal): [plugin-test-formatting] support random object literal tests * update test column --- packages/eslint-plugin-internal/package.json | 1 + .../src/rules/plugin-test-formatting.ts | 109 +- .../rules/plugin-test-formatting.test.ts | 211 +- packages/eslint-plugin/tests/RuleTester.ts | 5 + .../tests/rules/member-ordering.test.ts | 3256 +++++++++-------- ...habetically-case-insensitive-order.test.ts | 289 +- ...mber-ordering-alphabetically-order.test.ts | 2299 ++++++------ 7 files changed, 3225 insertions(+), 2945 deletions(-) diff --git a/packages/eslint-plugin-internal/package.json b/packages/eslint-plugin-internal/package.json index e21f2c82fa4..1603397279a 100644 --- a/packages/eslint-plugin-internal/package.json +++ b/packages/eslint-plugin-internal/package.json @@ -15,6 +15,7 @@ "dependencies": { "@types/prettier": "*", "@typescript-eslint/scope-manager": "5.42.0", + "@typescript-eslint/type-utils": "5.42.0", "@typescript-eslint/utils": "5.42.0", "prettier": "*" } diff --git a/packages/eslint-plugin-internal/src/rules/plugin-test-formatting.ts b/packages/eslint-plugin-internal/src/rules/plugin-test-formatting.ts index 15386398048..8cd85cce8e9 100644 --- a/packages/eslint-plugin-internal/src/rules/plugin-test-formatting.ts +++ b/packages/eslint-plugin-internal/src/rules/plugin-test-formatting.ts @@ -1,5 +1,6 @@ +import { getContextualType } from '@typescript-eslint/type-utils'; import type { TSESTree } from '@typescript-eslint/utils'; -import { AST_NODE_TYPES } from '@typescript-eslint/utils'; +import { AST_NODE_TYPES, ESLintUtils } from '@typescript-eslint/utils'; import { format, resolveConfig } from 'prettier'; import { createRule } from '../util'; @@ -108,6 +109,7 @@ export default createRule({ docs: { description: `Enforces that eslint-plugin test snippets are correctly formatted`, recommended: 'error', + requiresTypeChecking: true, }, fixable: 'code', schema: [ @@ -146,6 +148,11 @@ export default createRule({ ], create(context, [{ formatWithPrettier }]) { const sourceCode = context.getSourceCode(); + const { program, esTreeNodeToTSNodeMap } = + ESLintUtils.getParserServices(context); + const checker = program.getTypeChecker(); + + const checkedObjects = new Set(); function prettierFormat( code: string, @@ -448,6 +455,12 @@ export default createRule({ test: TSESTree.ObjectExpression, isErrorTest = true, ): void { + if (checkedObjects.has(test)) { + return; + } + + checkedObjects.add(test); + for (const prop of test.properties) { if ( prop.type !== AST_NODE_TYPES.Property || @@ -478,33 +491,99 @@ export default createRule({ } } - const invalidTestsSelectorPath = [ - AST_NODE_TYPES.CallExpression, - AST_NODE_TYPES.ObjectExpression, - 'Property[key.name = "invalid"]', - AST_NODE_TYPES.ArrayExpression, - AST_NODE_TYPES.ObjectExpression, - ]; - return { // valid 'CallExpression > ObjectExpression > Property[key.name = "valid"] > ArrayExpression': checkValidTest, // invalid - errors - [invalidTestsSelectorPath.join(' > ')]: checkInvalidTest, - // invalid - suggestions [[ - ...invalidTestsSelectorPath, - 'Property[key.name = "errors"]', - AST_NODE_TYPES.ArrayExpression, + AST_NODE_TYPES.CallExpression, AST_NODE_TYPES.ObjectExpression, - 'Property[key.name = "suggestions"]', + 'Property[key.name = "invalid"]', AST_NODE_TYPES.ArrayExpression, AST_NODE_TYPES.ObjectExpression, ].join(' > ')]: checkInvalidTest, // special case for our batchedSingleLineTests utility 'CallExpression[callee.name = "batchedSingleLineTests"] > ObjectExpression': checkInvalidTest, + + /** + * generic, type-aware handling for any old object + * this is a fallback to handle random variables people declare or object + * literals that are passed via array maps, etc + */ + ObjectExpression(node): void { + if (checkedObjects.has(node)) { + return; + } + + const type = getContextualType( + checker, + esTreeNodeToTSNodeMap.get(node), + ); + if (!type) { + return; + } + + const typeString = checker.typeToString(type); + if (/^RunTests\b/.test(typeString)) { + checkedObjects.add(node); + + for (const prop of node.properties) { + if ( + prop.type === AST_NODE_TYPES.SpreadElement || + prop.computed || + prop.key.type !== AST_NODE_TYPES.Identifier || + prop.value.type !== AST_NODE_TYPES.ArrayExpression + ) { + continue; + } + + switch (prop.key.name) { + case 'valid': + checkValidTest(prop.value); + break; + + case 'invalid': + for (const element of prop.value.elements) { + if (element.type === AST_NODE_TYPES.ObjectExpression) { + checkInvalidTest(element); + } + } + break; + } + } + return; + } + + if (/^ValidTestCase\b/.test(typeString)) { + checkInvalidTest(node); + return; + } + + if (/^InvalidTestCase\b/.test(typeString)) { + checkInvalidTest(node); + for (const testProp of node.properties) { + if ( + testProp.type === AST_NODE_TYPES.SpreadElement || + testProp.computed || + testProp.key.type !== AST_NODE_TYPES.Identifier || + testProp.key.name !== 'errors' || + testProp.value.type !== AST_NODE_TYPES.ArrayExpression + ) { + continue; + } + + for (const errorElement of testProp.value.elements) { + if (errorElement.type !== AST_NODE_TYPES.ObjectExpression) { + continue; + } + + checkInvalidTest(errorElement); + } + } + } + }, }; }, }); diff --git a/packages/eslint-plugin-internal/tests/rules/plugin-test-formatting.test.ts b/packages/eslint-plugin-internal/tests/rules/plugin-test-formatting.test.ts index 81be2118f6c..f5745996d38 100644 --- a/packages/eslint-plugin-internal/tests/rules/plugin-test-formatting.test.ts +++ b/packages/eslint-plugin-internal/tests/rules/plugin-test-formatting.test.ts @@ -1,9 +1,11 @@ import rule from '../../src/rules/plugin-test-formatting'; -import { RuleTester } from '../RuleTester'; +import { getFixturesRootDir, RuleTester } from '../RuleTester'; const ruleTester = new RuleTester({ parser: '@typescript-eslint/parser', parserOptions: { + project: './tsconfig.json', + tsconfigRootDir: getFixturesRootDir(), sourceType: 'module', }, }); @@ -132,6 +134,44 @@ ${CODE_INDENT}const a = 1; ${CODE_INDENT}const b = 1; ${PARENT_INDENT}\``, + + // random, unannotated variables aren't checked + ` +const test1 = { + code: 'const badlyFormatted = "code"', +}; +const test2 = { + valid: [ + 'const badlyFormatted = "code"', + { + code: 'const badlyFormatted = "code"', + }, + ], + invalid: [ + { + code: 'const badlyFormatted = "code"', + errors: [], + }, + ], +}; + `, + + // TODO - figure out how to handle this pattern + ` +import { TSESLint } from '@typescript-eslint/utils'; + +const test = [ + { + code: 'const badlyFormatted = "code1"', + }, + { + code: 'const badlyFormatted = "code2"', + }, +].map>(test => ({ + code: test.code, + errors: [], +})); + `, ], invalid: [ // Literal @@ -506,5 +546,174 @@ foo }, ], }, + + // annotated variables are checked + { + code: ` +const test: RunTests = { + valid: [ + 'const badlyFormatted = "code"', + { + code: 'const badlyFormatted = "code"', + }, + ], + invalid: [ + { + code: 'const badlyFormatted = "code"', + errors: [], + }, + ], +}; + `, + output: ` +const test: RunTests = { + valid: [ + "const badlyFormatted = 'code';", + { + code: "const badlyFormatted = 'code';", + }, + ], + invalid: [ + { + code: "const badlyFormatted = 'code';", + errors: [], + }, + ], +}; + `, + errors: [ + { + messageId: 'invalidFormatting', + }, + { + messageId: 'invalidFormatting', + }, + { + messageId: 'invalidFormattingErrorTest', + }, + ], + }, + { + code: ` +import { TSESLint } from '@typescript-eslint/utils'; + +const test: TSESLint.RunTests<'', []> = { + valid: [ + 'const badlyFormatted = "code"', + { + code: 'const badlyFormatted = "code"', + }, + ], + invalid: [ + { + code: 'const badlyFormatted = "code"', + errors: [], + }, + ], +}; + `, + output: ` +import { TSESLint } from '@typescript-eslint/utils'; + +const test: TSESLint.RunTests<'', []> = { + valid: [ + "const badlyFormatted = 'code';", + { + code: "const badlyFormatted = 'code';", + }, + ], + invalid: [ + { + code: "const badlyFormatted = 'code';", + errors: [], + }, + ], +}; + `, + errors: [ + { + messageId: 'invalidFormatting', + }, + { + messageId: 'invalidFormatting', + }, + { + messageId: 'invalidFormattingErrorTest', + }, + ], + }, + { + code: ` +import { TSESLint } from '@typescript-eslint/utils'; + +const test: TSESLint.ValidTestCase<[]> = { + code: 'const badlyFormatted = "code"', +}; + `, + output: ` +import { TSESLint } from '@typescript-eslint/utils'; + +const test: TSESLint.ValidTestCase<[]> = { + code: "const badlyFormatted = 'code';", +}; + `, + errors: [ + { + messageId: 'invalidFormattingErrorTest', + }, + ], + }, + { + code: ` +import { TSESLint } from '@typescript-eslint/utils'; + +const test: TSESLint.InvalidTestCase<'', []> = { + code: 'const badlyFormatted = "code1"', + errors: [ + { + code: 'const badlyFormatted = "code2"', + // shouldn't get fixed as per rule ignoring output + output: 'const badlyFormatted = "code3"', + suggestions: [ + { + messageId: '', + // shouldn't get fixed as per rule ignoring output + output: 'const badlyFormatted = "code4"', + }, + ], + }, + ], +}; + `, + output: ` +import { TSESLint } from '@typescript-eslint/utils'; + +const test: TSESLint.InvalidTestCase<'', []> = { + code: "const badlyFormatted = 'code1';", + errors: [ + { + code: "const badlyFormatted = 'code2';", + // shouldn't get fixed as per rule ignoring output + output: 'const badlyFormatted = "code3"', + suggestions: [ + { + messageId: '', + // shouldn't get fixed as per rule ignoring output + output: 'const badlyFormatted = "code4"', + }, + ], + }, + ], +}; + `, + errors: [ + { + messageId: 'invalidFormattingErrorTest', + }, + { + messageId: 'invalidFormattingErrorTest', + }, + ], + }, ], }); diff --git a/packages/eslint-plugin/tests/RuleTester.ts b/packages/eslint-plugin/tests/RuleTester.ts index 7479d99f29a..7c46b9a12f5 100644 --- a/packages/eslint-plugin/tests/RuleTester.ts +++ b/packages/eslint-plugin/tests/RuleTester.ts @@ -6,5 +6,10 @@ function getFixturesRootDir(): string { } const { batchedSingleLineTests, RuleTester, noFormat } = ESLintUtils; +export { + RunTests, + ValidTestCase, + InvalidTestCase, +} from '@typescript-eslint/utils/dist/eslint-utils/rule-tester/RuleTester'; export { batchedSingleLineTests, getFixturesRootDir, noFormat, RuleTester }; diff --git a/packages/eslint-plugin/tests/rules/member-ordering.test.ts b/packages/eslint-plugin/tests/rules/member-ordering.test.ts index 68bbfa7eff6..538cfa733db 100644 --- a/packages/eslint-plugin/tests/rules/member-ordering.test.ts +++ b/packages/eslint-plugin/tests/rules/member-ordering.test.ts @@ -1,130 +1,129 @@ -import type { TSESLint } from '@typescript-eslint/utils'; - import type { MessageIds, Options } from '../../src/rules/member-ordering'; import rule from '../../src/rules/member-ordering'; +import type { RunTests } from '../RuleTester'; import { RuleTester } from '../RuleTester'; const ruleTester = new RuleTester({ parser: '@typescript-eslint/parser', }); -const grouped: TSESLint.RunTests = { +const grouped: RunTests = { valid: [ ` // no accessibility === public interface Foo { - [Z: string]: any; - A: string; - B: string; - C: string; - D: string; - E: string; - F: string; - new(); - G(); - H(); - I(); - J(); - K(); - L(); + [Z: string]: any; + A: string; + B: string; + C: string; + D: string; + E: string; + F: string; + new (); + G(); + H(); + I(); + J(); + K(); + L(); } - `, + `, { code: ` // no accessibility === public interface Foo { - A: string; - J(); - K(); - D: string; - E: string; - F: string; - new(); - G(); - H(); - [Z: string]: any; - B: string; - C: string; - I(); - L(); + A: string; + J(); + K(); + D: string; + E: string; + F: string; + new (); + G(); + H(); + [Z: string]: any; + B: string; + C: string; + I(); + L(); } - `, + `, options: [{ default: 'never' }], }, { code: ` // no accessibility === public interface Foo { - [Z: string]: any; - A: string; - B: string; - C: string; - D: string; - E: string; - F: string; - new(); - G(); - H(); - I(); - J(); - K(); - L(); + [Z: string]: any; + A: string; + B: string; + C: string; + D: string; + E: string; + F: string; + new (); + G(); + H(); + I(); + J(); + K(); + L(); } - `, + `, options: [{ default: ['signature', 'field', 'constructor', 'method'] }], }, { code: ` interface X { (): void; - a: unknown; + a: unknown; b(): void; } - `, + `, options: [{ default: ['call-signature', 'field', 'method'] }], }, { code: ` // no accessibility === public interface Foo { - A: string; - J(); - K(); - D: string; - [Z: string]: any; - E: string; - F: string; - new(); - G(); - B: string; - C: string; - H(); - I(); - L(); + A: string; + J(); + K(); + D: string; + [Z: string]: any; + E: string; + F: string; + new (); + G(); + B: string; + C: string; + H(); + I(); + L(); } - `, + `, options: [{ interfaces: 'never' }], }, { code: ` // no accessibility === public interface Foo { - [Z: string]: any; - G(); - H(); - I(); - J(); - K(); - L(); - new(); - A: string; - B: string; - C: string; - D: string; - E: string; - F: string; + [Z: string]: any; + G(); + H(); + I(); + J(); + K(); + L(); + new (); + A: string; + B: string; + C: string; + D: string; + E: string; + F: string; } - `, + `, options: [ { interfaces: ['signature', 'method', 'constructor', 'field'] }, ], @@ -133,22 +132,22 @@ interface Foo { code: ` // no accessibility === public interface Foo { - G(); - H(); - I(); - J(); - K(); - L(); - new(); - A: string; - B: string; - C: string; - D: string; - E: string; - F: string; - [Z: string]: any; + G(); + H(); + I(); + J(); + K(); + L(); + new (); + A: string; + B: string; + C: string; + D: string; + E: string; + F: string; + [Z: string]: any; } - `, + `, options: [ { default: ['signature', 'field', 'constructor', 'method'], @@ -160,23 +159,23 @@ interface Foo { code: ` // no accessibility === public interface Foo { - G(); - H(); - I(); - new(); - [Z: string]: any; - D: string; - E: string; - F: string; - G?: string; - J(); - K(); - L(); - A: string; - B: string; - C: string; + G(); + H(); + I(); + new (); + [Z: string]: any; + D: string; + E: string; + F: string; + G?: string; + J(); + K(); + L(); + A: string; + B: string; + C: string; } - `, + `, options: [ { default: [ @@ -191,22 +190,22 @@ interface Foo { code: ` // no accessibility === public interface Foo { - G(); - H(); - I(); - J(); - K(); - L(); - [Z: string]: any; - D: string; - E: string; - F: string; - new(); - A: string; - B: string; - C: string; + G(); + H(); + I(); + J(); + K(); + L(); + [Z: string]: any; + D: string; + E: string; + F: string; + new (); + A: string; + B: string; + C: string; } - `, + `, options: [ { default: ['method', 'public-constructor', 'protected-static-field'], @@ -216,147 +215,147 @@ interface Foo { ` // no accessibility === public type Foo = { - [Z: string]: any; - A: string; - B: string; - C: string; - D: string; - E: string; - F: string; - new(); - G(); - H(); - I(); - J(); - K(); - L(); -} - `, + [Z: string]: any; + A: string; + B: string; + C: string; + D: string; + E: string; + F: string; + new (); + G(); + H(); + I(); + J(); + K(); + L(); +}; + `, { code: ` // no accessibility === public type Foo = { - A: string; - B: string; - C: string; - D: string; - E: string; - F: string; - [Z: string]: any; - G(); - H(); - I(); - J(); - K(); - L(); -} - `, + A: string; + B: string; + C: string; + D: string; + E: string; + F: string; + [Z: string]: any; + G(); + H(); + I(); + J(); + K(); + L(); +}; + `, options: [{ default: 'never' }], }, { code: ` // no accessibility === public type Foo = { - [Z: string]: any; - A: string; - B: string; - C: string; - D: string; - E: string; - F: string; - G(); - H(); - I(); - J(); - K(); - L(); -} - `, + [Z: string]: any; + A: string; + B: string; + C: string; + D: string; + E: string; + F: string; + G(); + H(); + I(); + J(); + K(); + L(); +}; + `, options: [{ default: ['signature', 'field', 'constructor', 'method'] }], }, { code: ` // no accessibility === public type Foo = { - [Z: string]: any; - new(); - A: string; - B: string; - C: string; - D: string; - E: string; - F: string; - G(); - H(); - I(); - J(); - K(); - L(); -} - `, + [Z: string]: any; + new (); + A: string; + B: string; + C: string; + D: string; + E: string; + F: string; + G(); + H(); + I(); + J(); + K(); + L(); +}; + `, options: [{ default: ['field', 'method'] }], }, { code: ` // no accessibility === public type Foo = { - G(); - H(); - [Z: string]: any; - K(); - L(); - A: string; - B: string; - I(); - J(); - C: string; - D: string; - E: string; - F: string; -} - `, + G(); + H(); + [Z: string]: any; + K(); + L(); + A: string; + B: string; + I(); + J(); + C: string; + D: string; + E: string; + F: string; +}; + `, options: [{ typeLiterals: 'never' }], }, { code: ` // no accessibility === public type Foo = { - G(); - H(); - I(); - J(); - K(); - L(); - A: string; - B: string; - C: string; - D: string; - E: string; - F: string; - [Z: string]: any; -} - `, + G(); + H(); + I(); + J(); + K(); + L(); + A: string; + B: string; + C: string; + D: string; + E: string; + F: string; + [Z: string]: any; +}; + `, options: [{ typeLiterals: ['method', 'field', 'signature'] }], }, { code: ` // no accessibility === public type Foo = { - G(); - H(); - I(); - J(); - K(); - L(); - A: string; - B: string; - C: string; - D: string; - E: string; - F: string; - [Z: string]: any; -} - `, + G(); + H(); + I(); + J(); + K(); + L(); + A: string; + B: string; + C: string; + D: string; + E: string; + F: string; + [Z: string]: any; +}; + `, options: [ { typeLiterals: ['method', 'constructor', 'field', 'signature'] }, ], @@ -365,21 +364,21 @@ type Foo = { code: ` // no accessibility === public type Foo = { - G(); - H(); - I(); - J(); - K(); - L(); - A: string; - B: string; - C: string; - D: string; - E: string; - F: string; - [Z: string]: any; -} - `, + G(); + H(); + I(); + J(); + K(); + L(); + A: string; + B: string; + C: string; + D: string; + E: string; + F: string; + [Z: string]: any; +}; + `, options: [ { default: ['signature', 'field', 'constructor', 'method'], @@ -391,21 +390,21 @@ type Foo = { code: ` // no accessibility === public type Foo = { - [Z: string]: any; - D: string; - E: string; - F: string; - A: string; - B: string; - C: string; - G(); - H(); - I(); - J(); - K(); - L(); -} - `, + [Z: string]: any; + D: string; + E: string; + F: string; + A: string; + B: string; + C: string; + G(); + H(); + I(); + J(); + K(); + L(); +}; + `, options: [ { default: [ @@ -419,182 +418,182 @@ type Foo = { }, ` class Foo { - [Z: string]: any; - public static A: string; - protected static B: string = ""; - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - private F: string = ""; - constructor() {} - public static G() {} - protected static H() {} - private static I() {} - public J() {} - protected K() {} - private L() {} + [Z: string]: any; + public static A: string; + protected static B: string = ''; + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + private F: string = ''; + constructor() {} + public static G() {} + protected static H() {} + private static I() {} + public J() {} + protected K() {} + private L() {} } - `, + `, { code: ` class Foo { - [Z: string]: any; - public static A: string; - protected static B: string = ""; - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - private F: string = ""; - constructor() {} - public static G() {} - protected static H() {} - private static I() {} - public J() {} - protected K() {} - private L() {} + [Z: string]: any; + public static A: string; + protected static B: string = ''; + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + private F: string = ''; + constructor() {} + public static G() {} + protected static H() {} + private static I() {} + public J() {} + protected K() {} + private L() {} } - `, + `, options: [{ default: 'never' }], }, { code: ` class Foo { - [Z: string]: any; - public static A: string; - protected static B: string = ""; - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - private F: string = ""; - constructor() {} - public static G() {} - protected static H() {} - private static I() {} - public J() {} - protected K() {} - private L() {} + [Z: string]: any; + public static A: string; + protected static B: string = ''; + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + private F: string = ''; + constructor() {} + public static G() {} + protected static H() {} + private static I() {} + public J() {} + protected K() {} + private L() {} } - `, + `, options: [{ default: ['signature', 'field', 'constructor', 'method'] }], }, { code: ` class Foo { - [Z: string]: any; - constructor() {} - public static A: string; - protected static B: string = ""; - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - private F: string = ""; - public static G() {} - protected static H() {} - private static I() {} - public J() {} - protected K() {} - private L() {} + [Z: string]: any; + constructor() {} + public static A: string; + protected static B: string = ''; + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + private F: string = ''; + public static G() {} + protected static H() {} + private static I() {} + public J() {} + protected K() {} + private L() {} } - `, + `, options: [{ default: ['field', 'method'] }], }, { code: ` class Foo { - public static G() {} - protected K() {} - private L() {} - private static I() {} - public J() {} - public D: string = ""; - [Z: string]: any; - protected static H() {} - public static A: string; - protected static B: string = ""; - constructor() {} - private static C: string = ""; - protected E: string = ""; - private F: string = ""; + public static G() {} + protected K() {} + private L() {} + private static I() {} + public J() {} + public D: string = ''; + [Z: string]: any; + protected static H() {} + public static A: string; + protected static B: string = ''; + constructor() {} + private static C: string = ''; + protected E: string = ''; + private F: string = ''; } - `, + `, options: [{ classes: 'never' }], }, { code: ` class Foo { - public static G() {} - protected static H() {} - private static I() {} - public J() {} - protected K() {} - private L() {} - [Z: string]: any; - public static A: string; - protected static B: string = ""; - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - private F: string = ""; - constructor() {} + public static G() {} + protected static H() {} + private static I() {} + public J() {} + protected K() {} + private L() {} + [Z: string]: any; + public static A: string; + protected static B: string = ''; + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + private F: string = ''; + constructor() {} } - `, + `, options: [{ classes: ['method', 'field'] }], }, { code: ` class Foo { - public static G() {} - protected static H() {} - private static I() {} - public J() {} - protected K() {} - private L() {} - constructor() {} - public static A: string; - protected static B: string = ""; - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - private F: string = ""; - [Z: string]: any; + public static G() {} + protected static H() {} + private static I() {} + public J() {} + protected K() {} + private L() {} + constructor() {} + public static A: string; + protected static B: string = ''; + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + private F: string = ''; + [Z: string]: any; } - `, + `, options: [{ classes: ['method', 'constructor', 'field', 'signature'] }], }, { code: ` class Foo { - private required: boolean; - private typeChecker: (data: any) => boolean; - constructor(validator: (data: any) => boolean) { - this.typeChecker = validator; - } - check(data: any): boolean { - return this.typeChecker(data); - } + private required: boolean; + private typeChecker: (data: any) => boolean; + constructor(validator: (data: any) => boolean) { + this.typeChecker = validator; + } + check(data: any): boolean { + return this.typeChecker(data); + } } - `, + `, options: [{ classes: ['field', 'constructor', 'method'] }], }, { code: ` class Foo { - public static G() {} - protected static H() {} - private static I() {} - public J() {} - protected K() {} - private L() {} - constructor() {} - public static A: string; - protected static B: string = ""; - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - private F: string = ""; - [Z: string]: any; + public static G() {} + protected static H() {} + private static I() {} + public J() {} + protected K() {} + private L() {} + constructor() {} + public static A: string; + protected static B: string = ''; + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + private F: string = ''; + [Z: string]: any; } - `, + `, options: [ { default: ['signature', 'field', 'constructor', 'method'], @@ -605,22 +604,22 @@ class Foo { { code: ` class Foo { - public J() {} - public static G() {} - protected static H() {} - private static I() {} - protected K() {} - private L() {} - [Z: string]: any; - constructor() {} - public D: string = ""; - public static A: string; - private static C: string = ""; - private F: string = ""; - protected static B: string = ""; - protected E: string = ""; + public J() {} + public static G() {} + protected static H() {} + private static I() {} + protected K() {} + private L() {} + [Z: string]: any; + constructor() {} + public D: string = ''; + public static A: string; + private static C: string = ''; + private F: string = ''; + protected static B: string = ''; + protected E: string = ''; } - `, + `, options: [ { classes: [ @@ -637,22 +636,22 @@ class Foo { { code: ` class Foo { - public static G() {} - private static I() {} - protected static H() {} - public J() {} - private L() {} - protected K() {} - [Z: string]: any; - constructor() {} - public D: string = ""; - public static A: string; - protected static B: string = ""; - protected E: string = ""; - private static C: string = ""; - private F: string = ""; + public static G() {} + private static I() {} + protected static H() {} + public J() {} + private L() {} + protected K() {} + [Z: string]: any; + constructor() {} + public D: string = ''; + public static A: string; + protected static B: string = ''; + protected E: string = ''; + private static C: string = ''; + private F: string = ''; } - `, + `, options: [ { classes: [ @@ -672,22 +671,22 @@ class Foo { { code: ` class Foo { - public J() {} - public static G() {} - public D: string = ""; - public static A: string = ""; - constructor() {} - protected K() {} - private L() {} - protected static H() {} - private static I() {} - protected static B: string = ""; - private static C: string = ""; - protected E: string = ""; - private F: string = ""; - [Z: string]: any; + public J() {} + public static G() {} + public D: string = ''; + public static A: string = ''; + constructor() {} + protected K() {} + private L() {} + protected static H() {} + private static I() {} + protected static B: string = ''; + private static C: string = ''; + protected E: string = ''; + private F: string = ''; + [Z: string]: any; } - `, + `, options: [ { default: [ @@ -704,22 +703,22 @@ class Foo { { code: ` class Foo { - public J() {} - public static G() {} - protected static H() {} - private static I() {} - protected K() {} - private L() {} - constructor() {} - [Z: string]: any; - public static A: string; - private F: string = ""; - protected static B: string = ""; - public D: string = ""; - private static C: string = ""; - protected E: string = ""; + public J() {} + public static G() {} + protected static H() {} + private static I() {} + protected K() {} + private L() {} + constructor() {} + [Z: string]: any; + public static A: string; + private F: string = ''; + protected static B: string = ''; + public D: string = ''; + private static C: string = ''; + protected E: string = ''; } - `, + `, options: [ { classes: [ @@ -738,22 +737,22 @@ class Foo { { code: ` class Foo { - private L() {} - private static I() {} - protected static H() {} - protected static B: string = ""; - public static G() {} - public J() {} - protected K() {} - private static C: string = ""; - private F: string = ""; - protected E: string = ""; - public static A: string; - public D: string = ""; - constructor() {} - [Z: string]: any; + private L() {} + private static I() {} + protected static H() {} + protected static B: string = ''; + public static G() {} + public J() {} + protected K() {} + private static C: string = ''; + private F: string = ''; + protected E: string = ''; + public static A: string; + public D: string = ''; + constructor() {} + [Z: string]: any; } - `, + `, options: [ { classes: ['private-instance-method', 'protected-static-field'], @@ -763,22 +762,22 @@ class Foo { { code: ` class Foo { - private L() {} - private static I() {} - protected static H() {} - public static G() {} - public J() {} - protected static B: string = ""; - protected K() {} - private static C: string = ""; - private F: string = ""; - protected E: string = ""; - public static A: string; - public D: string = ""; - constructor() {} - [Z: string]: any; + private L() {} + private static I() {} + protected static H() {} + public static G() {} + public J() {} + protected static B: string = ''; + protected K() {} + private static C: string = ''; + private F: string = ''; + protected E: string = ''; + public static A: string; + public D: string = ''; + constructor() {} + [Z: string]: any; } - `, + `, options: [ { default: ['public-instance-method', 'protected-static-field'], @@ -788,22 +787,22 @@ class Foo { { code: ` class Foo { - private L() {} - private static I() {} - protected static H() {} - public static G() {} - public J() {} - protected static B: string = ""; - protected K() {} - private static C: string = ""; - private F: string = ""; - protected E: string = ""; - public static A: string; - public D: string = ""; - constructor() {} - [Z: string]: any; + private L() {} + private static I() {} + protected static H() {} + public static G() {} + public J() {} + protected static B: string = ''; + protected K() {} + private static C: string = ''; + private F: string = ''; + protected E: string = ''; + public static A: string; + public D: string = ''; + constructor() {} + [Z: string]: any; } - `, + `, options: [ { classes: ['public-instance-method', 'protected-static-field'], @@ -813,22 +812,22 @@ class Foo { { code: ` class Foo { - [Z: string]: any; - public D: string = ""; - private L() {} - private static I() {} - protected static H() {} - public static G() {} - public J() {} - private constructor() {} - protected static B: string = ""; - protected K() {} - private static C: string = ""; - private F: string = ""; - protected E: string = ""; - public static A: string; + [Z: string]: any; + public D: string = ''; + private L() {} + private static I() {} + protected static H() {} + public static G() {} + public J() {} + private constructor() {} + protected static B: string = ''; + protected K() {} + private static C: string = ''; + private F: string = ''; + protected E: string = ''; + public static A: string; } - `, + `, options: [ { default: [ @@ -847,22 +846,22 @@ class Foo { { code: ` class Foo { - public constructor() {} - public D: string = ""; - private L() {} - private static I() {} - protected static H() {} - public static G() {} - public J() {} - [Z: string]: any; - protected static B: string = ""; - protected K() {} - private static C: string = ""; - private F: string = ""; - protected E: string = ""; - public static A: string; + public constructor() {} + public D: string = ''; + private L() {} + private static I() {} + protected static H() {} + public static G() {} + public J() {} + [Z: string]: any; + protected static B: string = ''; + protected K() {} + private static C: string = ''; + private F: string = ''; + protected E: string = ''; + public static A: string; } - `, + `, options: [ { default: [ @@ -880,146 +879,146 @@ class Foo { }, ` const foo = class Foo { - [Z: string]: any; - public static A: string; - protected static B: string = ""; - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - private F: string = ""; - constructor() {} - public static G() {} - protected static H() {} - private static I() {} - public J() {} - protected K() {} - private L() {} -} - `, + [Z: string]: any; + public static A: string; + protected static B: string = ''; + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + private F: string = ''; + constructor() {} + public static G() {} + protected static H() {} + private static I() {} + public J() {} + protected K() {} + private L() {} +}; + `, { code: ` const foo = class Foo { - constructor() {} - public static A: string; - protected static B: string = ""; - private static I() {} - public J() {} - private F: string = ""; - [Z: string]: any; - public static G() {} - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - protected static H() {} - protected K() {} - private L() {} -} - `, + constructor() {} + public static A: string; + protected static B: string = ''; + private static I() {} + public J() {} + private F: string = ''; + [Z: string]: any; + public static G() {} + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + protected static H() {} + protected K() {} + private L() {} +}; + `, options: [{ default: 'never' }], }, { code: ` const foo = class Foo { - [Z: string]: any; - public static A: string; - protected static B: string = ""; - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - private F: string = ""; - constructor() {} - public static G() {} - protected static H() {} - private static I() {} - public J() {} - protected K() {} - private L() {} -} - `, + [Z: string]: any; + public static A: string; + protected static B: string = ''; + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + private F: string = ''; + constructor() {} + public static G() {} + protected static H() {} + private static I() {} + public J() {} + protected K() {} + private L() {} +}; + `, options: [{ default: ['signature', 'field', 'constructor', 'method'] }], }, { code: ` const foo = class Foo { - constructor() {} - public static A: string; - protected static B: string = ""; - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - private F: string = ""; - [Z: string]: any; - public static G() {} - protected static H() {} - private static I() {} - public J() {} - protected K() {} - private L() {} -} - `, + constructor() {} + public static A: string; + protected static B: string = ''; + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + private F: string = ''; + [Z: string]: any; + public static G() {} + protected static H() {} + private static I() {} + public J() {} + protected K() {} + private L() {} +}; + `, options: [{ default: ['field', 'method'] }], }, { code: ` const foo = class Foo { - private L() {} - protected static H() {} - constructor() {} - private static I() {} - public J() {} - private static C: string = ""; - [Z: string]: any; - public D: string = ""; - protected K() {} - public static G() {} - public static A: string; - protected static B: string = ""; - protected E: string = ""; - private F: string = ""; -} - `, + private L() {} + protected static H() {} + constructor() {} + private static I() {} + public J() {} + private static C: string = ''; + [Z: string]: any; + public D: string = ''; + protected K() {} + public static G() {} + public static A: string; + protected static B: string = ''; + protected E: string = ''; + private F: string = ''; +}; + `, options: [{ classExpressions: 'never' }], }, { code: ` const foo = class Foo { - public static G() {} - protected static H() {} - private static I() {} - public J() {} - protected K() {} - private L() {} - public static A: string; - protected static B: string = ""; - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - private F: string = ""; - constructor() {} - [Z: string]: any; -} - `, + public static G() {} + protected static H() {} + private static I() {} + public J() {} + protected K() {} + private L() {} + public static A: string; + protected static B: string = ''; + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + private F: string = ''; + constructor() {} + [Z: string]: any; +}; + `, options: [{ classExpressions: ['method', 'field'] }], }, { code: ` const foo = class Foo { - public static G() {} - protected static H() {} - private static I() {} - public J() {} - protected K() {} - private L() {} - [Z: string]: any; - constructor() {} - public static A: string; - protected static B: string = ""; - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - private F: string = ""; -} - `, + public static G() {} + protected static H() {} + private static I() {} + public J() {} + protected K() {} + private L() {} + [Z: string]: any; + constructor() {} + public static A: string; + protected static B: string = ''; + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + private F: string = ''; +}; + `, options: [ { classExpressions: ['method', 'signature', 'constructor', 'field'] }, ], @@ -1027,22 +1026,22 @@ const foo = class Foo { { code: ` const foo = class Foo { - public static G() {} - protected static H() {} - private static I() {} - public J() {} - protected K() {} - private L() {} - [Z: string]: any; - constructor() {} - public static A: string; - protected static B: string = ""; - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - private F: string = ""; -} - `, + public static G() {} + protected static H() {} + private static I() {} + public J() {} + protected K() {} + private L() {} + [Z: string]: any; + constructor() {} + public static A: string; + protected static B: string = ''; + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + private F: string = ''; +}; + `, options: [ { default: ['field', 'constructor', 'method'], @@ -1053,23 +1052,22 @@ const foo = class Foo { { code: ` const foo = class Foo { - [Z: string]: any; - private L() {} - private static I() {} - protected static H() {} - protected static B: string = ""; - public static G() {} - public J() {} - protected K() {} - private static C: string = ""; - private F: string = ""; - protected E: string = ""; - public static A: string; - public D: string = ""; - constructor() {} - -} - `, + [Z: string]: any; + private L() {} + private static I() {} + protected static H() {} + protected static B: string = ''; + public static G() {} + public J() {} + protected K() {} + private static C: string = ''; + private F: string = ''; + protected E: string = ''; + public static A: string; + public D: string = ''; + constructor() {} +}; + `, options: [ { classExpressions: [ @@ -1082,23 +1080,22 @@ const foo = class Foo { { code: ` const foo = class Foo { - private L() {} - private static I() {} - protected static H() {} - public static G() {} - public J() {} - [Z: string]: any; - protected static B: string = ""; - protected K() {} - private static C: string = ""; - private F: string = ""; - protected E: string = ""; - public static A: string; - public D: string = ""; - constructor() {} - -} - `, + private L() {} + private static I() {} + protected static H() {} + public static G() {} + public J() {} + [Z: string]: any; + protected static B: string = ''; + protected K() {} + private static C: string = ''; + private F: string = ''; + protected E: string = ''; + public static A: string; + public D: string = ''; + constructor() {} +}; + `, options: [ { default: ['public-instance-method', 'protected-static-field'], @@ -1108,23 +1105,22 @@ const foo = class Foo { { code: ` const foo = class Foo { - private L() {} - private static I() {} - protected static H() {} - public static G() {} - public J() {} - [Z: string]: any; - protected static B: string = ""; - protected K() {} - private static C: string = ""; - private F: string = ""; - protected E: string = ""; - public static A: string; - public D: string = ""; - constructor() {} - -} - `, + private L() {} + private static I() {} + protected static H() {} + public static G() {} + public J() {} + [Z: string]: any; + protected static B: string = ''; + protected K() {} + private static C: string = ''; + private F: string = ''; + protected E: string = ''; + public static A: string; + public D: string = ''; + constructor() {} +}; + `, options: [ { classExpressions: [ @@ -1137,22 +1133,22 @@ const foo = class Foo { { code: ` const foo = class Foo { - public D: string = ""; - private L() {} - private static I() {} - protected static H() {} - public static G() {} - public J() {} - [Z: string]: any; - private constructor() {} - protected static B: string = ""; - protected K() {} - private static C: string = ""; - private F: string = ""; - protected E: string = ""; - public static A: string; -} - `, + public D: string = ''; + private L() {} + private static I() {} + protected static H() {} + public static G() {} + public J() {} + [Z: string]: any; + private constructor() {} + protected static B: string = ''; + protected K() {} + private static C: string = ''; + private F: string = ''; + protected E: string = ''; + public static A: string; +}; + `, options: [ { default: [ @@ -1176,22 +1172,22 @@ const foo = class Foo { { code: ` const foo = class Foo { - public constructor() {} - public D: string = ""; - private L() {} - private static I() {} - protected static H() {} - public static G() {} - public J() {} - protected static B: string = ""; - protected K() {} - [Z: string]: any; - private static C: string = ""; - private F: string = ""; - protected E: string = ""; - public static A: string; -} - `, + public constructor() {} + public D: string = ''; + private L() {} + private static I() {} + protected static H() {} + public static G() {} + public J() {} + protected static B: string = ''; + protected K() {} + [Z: string]: any; + private static C: string = ''; + private F: string = ''; + protected E: string = ''; + public static A: string; +}; + `, options: [ { default: [ @@ -1214,36 +1210,36 @@ const foo = class Foo { }, ` class Foo { - [Z: string]: any; - A: string; - constructor () {} - J() {} - K = () => {} + [Z: string]: any; + A: string; + constructor() {} + J() {} + K = () => {}; } - `, + `, { code: ` class Foo { - J() {} - K = () => {} - constructor () {} - A: string; - [Z: string]: any; + J() {} + K = () => {}; + constructor() {} + A: string; + [Z: string]: any; } - `, + `, options: [{ default: ['method', 'constructor', 'field', 'signature'] }], }, { code: ` class Foo { - J() {} - K = () => {} - constructor () {} - [Z: string]: any; - A: string; - L: () => {} + J() {} + K = () => {}; + constructor() {} + [Z: string]: any; + A: string; + L: () => {}; } - `, + `, options: [{ default: ['method', 'constructor', 'signature', 'field'] }], }, { @@ -1253,7 +1249,7 @@ class Foo { m() {} f = 1; } - `, + `, options: [{ default: ['static-initialization', 'method', 'field'] }], }, { @@ -1263,7 +1259,7 @@ class Foo { f = 1; static {} } - `, + `, options: [{ default: ['method', 'field', 'static-initialization'] }], }, { @@ -1273,108 +1269,110 @@ class Foo { static {} m() {} } - `, + `, options: [{ default: ['field', 'static-initialization', 'method'] }], }, ` interface Foo { - [Z: string]: any; - A: string; - K: () => {}; - J(); + [Z: string]: any; + A: string; + K: () => {}; + J(); } - `, + `, { code: ` interface Foo { - [Z: string]: any; - J(); - K: () => {} - A: string; + [Z: string]: any; + J(); + K: () => {}; + A: string; } - `, + `, options: [{ default: ['signature', 'method', 'constructor', 'field'] }], }, ` type Foo = { - [Z: string]: any; - A: string; - K: () => {} - J(); -} - `, + [Z: string]: any; + A: string; + K: () => {}; + J(); +}; + `, { code: ` type Foo = { - J(); - [Z: string]: any; - K: () => {} - A: string; -} - `, + J(); + [Z: string]: any; + K: () => {}; + A: string; +}; + `, options: [{ default: ['method', 'constructor', 'signature', 'field'] }], }, { code: ` abstract class Foo { - B: string; - abstract A: () => {} + B: string; + abstract A: () => {}; } - `, + `, }, { code: ` interface Foo { - [A:string]: number; - public B: string; + [A: string]: number; + B: string; } - `, + `, }, { code: ` abstract class Foo { - [Z: string]: any; - private static C: string; - B: string; - private D: string; - protected static F(): {}; - public E(): {}; - public abstract A(): void; - protected abstract G(): void; + [Z: string]: any; + private static C: string; + B: string; + private D: string; + protected static F(): {}; + public E(): {}; + public abstract A(): void; + protected abstract G(): void; } - `, + `, }, { code: ` abstract class Foo { - protected typeChecker: (data: any) => boolean; - public abstract required: boolean; - abstract verify(): void; + protected typeChecker: (data: any) => boolean; + public abstract required: boolean; + abstract verify(): void; } - `, + `, options: [{ classes: ['signature', 'field', 'constructor', 'method'] }], }, { code: ` class Foo { - @Dec() B: string; - @Dec() A: string; - constructor() {} - D: string; - C: string; - E(): void; - F(): void; -} `, + @Dec() B: string; + @Dec() A: string; + constructor() {} + D: string; + C: string; + E(): void; + F(): void; +} + `, options: [{ default: ['decorated-field', 'field'] }], }, { code: ` class Foo { - A: string; - B: string; - @Dec() private C: string; - private D: string; -} `, + A: string; + B: string; + @Dec() private C: string; + private D: string; +} + `, options: [ { default: ['public-field', 'private-decorated-field', 'private-field'], @@ -1384,12 +1382,13 @@ class Foo { { code: ` class Foo { - constructor() {} - @Dec() public A(): void; - @Dec() private B: string; - private C(): void; - private D: string; -} `, + constructor() {} + @Dec() public A(): void; + @Dec() private B: string; + private C(): void; + private D: string; +} + `, options: [ { default: [ @@ -1403,12 +1402,13 @@ class Foo { { code: ` class Foo { - @Dec() private A(): void; - @Dec() private B: string; - constructor() {} - private C(): void; - private D: string; -} `, + @Dec() private A(): void; + @Dec() private B: string; + constructor() {} + private C(): void; + private D: string; +} + `, options: [ { default: [ @@ -1423,9 +1423,10 @@ class Foo { { code: ` class Foo { - public A: string; - @Dec() private B: string; -} `, + public A: string; + @Dec() private B: string; +} + `, options: [ { default: ['private-decorated-field', 'public-instance-field'], @@ -1437,12 +1438,13 @@ class Foo { { code: ` class Foo { - public A(): string; - @Dec() public B(): string; - public C(): string; + public A(): string; + @Dec() public B(): string; + public C(): string; - d: string; -} `, + d: string; +} + `, options: [ { default: ['public-method', 'field'], @@ -1452,14 +1454,15 @@ class Foo { { code: ` class Foo { - A: string; - constructor() {} - get B() {} - set B() {} - get C() {} - set C() {} - D(): void; -} `, + A: string; + constructor() {} + get B() {} + set B() {} + get C() {} + set C() {} + D(): void; +} + `, options: [ { default: ['field', 'constructor', ['get', 'set'], 'method'], @@ -1469,10 +1472,11 @@ class Foo { { code: ` class Foo { - A: string; - constructor() {} - B(): void; -} `, + A: string; + constructor() {} + B(): void; +} + `, options: [ { default: ['field', 'constructor', [], 'method'], @@ -1482,13 +1486,14 @@ class Foo { { code: ` class Foo { - A: string; - constructor() {} - @Dec() private B: string; - private C(): void; - set D() {} - E(): void; -} `, + A: string; + constructor() {} + @Dec() private B: string; + private C(): void; + set D() {} + E(): void; +} + `, options: [ { default: [ @@ -1503,14 +1508,15 @@ class Foo { { code: ` class Foo { - A: string; - constructor() {} - get B() {} - get C() {} - set B() {} - set C() {} - D(): void; -} `, + A: string; + constructor() {} + get B() {} + get C() {} + set B() {} + set C() {} + D(): void; +} + `, options: [ { default: ['field', 'constructor', ['get'], ['set'], 'method'], @@ -1523,22 +1529,22 @@ class Foo { code: ` // no accessibility === public interface Foo { - [Z: string]: any; - A: string; - B: string; - C: string; - D: string; - E: string; - F: string; - G(); - H(); - I(); - J(); - K(); - L(); - new(); + [Z: string]: any; + A: string; + B: string; + C: string; + D: string; + E: string; + F: string; + G(); + H(); + I(); + J(); + K(); + L(); + new (); } - `, + `, errors: [ { messageId: 'incorrectGroupOrder', @@ -1547,18 +1553,18 @@ interface Foo { rank: 'method', }, line: 17, - column: 5, + column: 3, }, ], }, { code: ` interface X { - a: unknown; + a: unknown; (): void; b(): void; } - `, + `, options: [{ default: ['call-signature', 'field', 'method'] }], errors: [ { @@ -1576,22 +1582,22 @@ interface X { code: ` // no accessibility === public interface Foo { - A: string; - B: string; - C: string; - D: string; - E: string; - F: string; - G(); - H(); - I(); - J(); - K(); - L(); - new(); - [Z: string]: any; + A: string; + B: string; + C: string; + D: string; + E: string; + F: string; + G(); + H(); + I(); + J(); + K(); + L(); + new (); + [Z: string]: any; } - `, + `, options: [{ default: ['signature', 'method', 'constructor', 'field'] }], errors: [ { @@ -1601,7 +1607,7 @@ interface Foo { rank: 'field', }, line: 10, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -1610,7 +1616,7 @@ interface Foo { rank: 'field', }, line: 11, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -1619,7 +1625,7 @@ interface Foo { rank: 'field', }, line: 12, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -1628,7 +1634,7 @@ interface Foo { rank: 'field', }, line: 13, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -1637,7 +1643,7 @@ interface Foo { rank: 'field', }, line: 14, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -1646,7 +1652,7 @@ interface Foo { rank: 'field', }, line: 15, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -1655,7 +1661,7 @@ interface Foo { rank: 'field', }, line: 16, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -1664,7 +1670,7 @@ interface Foo { rank: 'field', }, line: 17, - column: 5, + column: 3, }, ], }, @@ -1672,22 +1678,22 @@ interface Foo { code: ` // no accessibility === public interface Foo { - A: string; - B: string; - C: string; - D: string; - E: string; - F: string; - G(); - H(); - I(); - J(); - K(); - L(); - new(); - [Z: string]: any; + A: string; + B: string; + C: string; + D: string; + E: string; + F: string; + G(); + H(); + I(); + J(); + K(); + L(); + new (); + [Z: string]: any; } - `, + `, options: [ { interfaces: ['method', 'signature', 'constructor', 'field'] }, ], @@ -1699,7 +1705,7 @@ interface Foo { rank: 'field', }, line: 10, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -1708,7 +1714,7 @@ interface Foo { rank: 'field', }, line: 11, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -1717,7 +1723,7 @@ interface Foo { rank: 'field', }, line: 12, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -1726,7 +1732,7 @@ interface Foo { rank: 'field', }, line: 13, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -1735,7 +1741,7 @@ interface Foo { rank: 'field', }, line: 14, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -1744,7 +1750,7 @@ interface Foo { rank: 'field', }, line: 15, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -1753,7 +1759,7 @@ interface Foo { rank: 'field', }, line: 16, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -1762,7 +1768,7 @@ interface Foo { rank: 'field', }, line: 17, - column: 5, + column: 3, }, ], }, @@ -1770,22 +1776,22 @@ interface Foo { code: ` // no accessibility === public interface Foo { - A: string; - B: string; - C: string; - D: string; - E: string; - F: string; - G(); - H(); - I(); - J(); - K(); - L(); - new(); - [Z: string]: any; + A: string; + B: string; + C: string; + D: string; + E: string; + F: string; + G(); + H(); + I(); + J(); + K(); + L(); + new (); + [Z: string]: any; } - `, + `, options: [ { default: ['field', 'method', 'constructor', 'signature'], @@ -1800,7 +1806,7 @@ interface Foo { rank: 'field', }, line: 10, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -1809,7 +1815,7 @@ interface Foo { rank: 'field', }, line: 11, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -1818,7 +1824,7 @@ interface Foo { rank: 'field', }, line: 12, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -1827,7 +1833,7 @@ interface Foo { rank: 'field', }, line: 13, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -1836,7 +1842,7 @@ interface Foo { rank: 'field', }, line: 14, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -1845,7 +1851,7 @@ interface Foo { rank: 'field', }, line: 15, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -1854,7 +1860,7 @@ interface Foo { rank: 'field', }, line: 16, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -1863,7 +1869,7 @@ interface Foo { rank: 'field', }, line: 17, - column: 5, + column: 3, }, ], }, @@ -1871,22 +1877,22 @@ interface Foo { code: ` // no accessibility === public interface Foo { - [Z: string]: any; - new(); - A: string; - G(); - B: string; - H(); - C: string; - I(); - D: string; - J(); - E: string; - K(); - F: string; - L(); + [Z: string]: any; + new (); + A: string; + G(); + B: string; + H(); + C: string; + I(); + D: string; + J(); + E: string; + K(); + F: string; + L(); } - `, + `, options: [ { interfaces: ['signature', 'constructor', 'field', 'method'], @@ -1900,7 +1906,7 @@ interface Foo { rank: 'method', }, line: 8, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -1909,7 +1915,7 @@ interface Foo { rank: 'method', }, line: 10, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -1918,7 +1924,7 @@ interface Foo { rank: 'method', }, line: 12, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -1927,7 +1933,7 @@ interface Foo { rank: 'method', }, line: 14, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -1936,7 +1942,7 @@ interface Foo { rank: 'method', }, line: 16, - column: 5, + column: 3, }, ], }, @@ -1944,22 +1950,22 @@ interface Foo { code: ` // no accessibility === public type Foo = { - [Z: string]: any; - A: string; - B: string; - C: string; - D: string; - E: string; - F: string; - G(); - H(); - I(); - J(); - K(); - L(); - new(); -} - `, + [Z: string]: any; + A: string; + B: string; + C: string; + D: string; + E: string; + F: string; + G(); + H(); + I(); + J(); + K(); + L(); + new (); +}; + `, errors: [ { messageId: 'incorrectGroupOrder', @@ -1968,7 +1974,7 @@ type Foo = { rank: 'method', }, line: 17, - column: 5, + column: 3, }, ], }, @@ -1976,22 +1982,22 @@ type Foo = { code: ` // no accessibility === public type Foo = { - A: string; - B: string; - C: string; - D: string; - E: string; - F: string; - G(); - H(); - I(); - J(); - K(); - L(); - [Z: string]: any; - new(); -} - `, + A: string; + B: string; + C: string; + D: string; + E: string; + F: string; + G(); + H(); + I(); + J(); + K(); + L(); + [Z: string]: any; + new (); +}; + `, options: [{ default: ['method', 'constructor', 'signature', 'field'] }], errors: [ { @@ -2001,7 +2007,7 @@ type Foo = { rank: 'field', }, line: 10, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2010,7 +2016,7 @@ type Foo = { rank: 'field', }, line: 11, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2019,7 +2025,7 @@ type Foo = { rank: 'field', }, line: 12, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2028,7 +2034,7 @@ type Foo = { rank: 'field', }, line: 13, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2037,7 +2043,7 @@ type Foo = { rank: 'field', }, line: 14, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2046,7 +2052,7 @@ type Foo = { rank: 'field', }, line: 15, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2055,7 +2061,7 @@ type Foo = { rank: 'field', }, line: 16, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2064,7 +2070,7 @@ type Foo = { rank: 'field', }, line: 17, - column: 5, + column: 3, }, ], }, @@ -2072,22 +2078,22 @@ type Foo = { code: ` // no accessibility === public type Foo = { - [Z: string]: any; - A: string; - B: string; - C: string; - D: string; - E: string; - F: string; - G(); - H(); - I(); - J(); - K(); - L(); - new(); -} - `, + [Z: string]: any; + A: string; + B: string; + C: string; + D: string; + E: string; + F: string; + G(); + H(); + I(); + J(); + K(); + L(); + new (); +}; + `, options: [ { typeLiterals: ['method', 'constructor', 'signature', 'field'] }, ], @@ -2099,7 +2105,7 @@ type Foo = { rank: 'signature', }, line: 11, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2108,7 +2114,7 @@ type Foo = { rank: 'signature', }, line: 12, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2117,7 +2123,7 @@ type Foo = { rank: 'signature', }, line: 13, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2126,7 +2132,7 @@ type Foo = { rank: 'signature', }, line: 14, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2135,7 +2141,7 @@ type Foo = { rank: 'signature', }, line: 15, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2144,7 +2150,7 @@ type Foo = { rank: 'signature', }, line: 16, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2153,7 +2159,7 @@ type Foo = { rank: 'signature', }, line: 17, - column: 5, + column: 3, }, ], }, @@ -2161,22 +2167,22 @@ type Foo = { code: ` // no accessibility === public type Foo = { - A: string; - B: string; - C: string; - D: string; - E: string; - F: string; - G(); - H(); - I(); - J(); - K(); - L(); - new(); - [Z: string]: any; -} - `, + A: string; + B: string; + C: string; + D: string; + E: string; + F: string; + G(); + H(); + I(); + J(); + K(); + L(); + new (); + [Z: string]: any; +}; + `, options: [ { default: ['field', 'method', 'constructor', 'signature'], @@ -2191,7 +2197,7 @@ type Foo = { rank: 'field', }, line: 10, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2200,7 +2206,7 @@ type Foo = { rank: 'field', }, line: 11, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2209,7 +2215,7 @@ type Foo = { rank: 'field', }, line: 12, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2218,7 +2224,7 @@ type Foo = { rank: 'field', }, line: 13, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2227,7 +2233,7 @@ type Foo = { rank: 'field', }, line: 14, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2236,7 +2242,7 @@ type Foo = { rank: 'field', }, line: 15, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2245,7 +2251,7 @@ type Foo = { rank: 'field', }, line: 16, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2254,7 +2260,7 @@ type Foo = { rank: 'field', }, line: 17, - column: 5, + column: 3, }, ], }, @@ -2262,22 +2268,22 @@ type Foo = { code: ` // no accessibility === public type Foo = { - new(); - [Z: string]: any; - A: string; - G(); - B: string; - H(); - C: string; - I(); - D: string; - J(); - E: string; - K(); - F: string; - L(); -} - `, + new (); + [Z: string]: any; + A: string; + G(); + B: string; + H(); + C: string; + I(); + D: string; + J(); + E: string; + K(); + F: string; + L(); +}; + `, options: [ { typeLiterals: ['constructor', 'signature', 'field', 'method'], @@ -2291,7 +2297,7 @@ type Foo = { rank: 'method', }, line: 8, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2300,7 +2306,7 @@ type Foo = { rank: 'method', }, line: 10, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2309,7 +2315,7 @@ type Foo = { rank: 'method', }, line: 12, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2318,7 +2324,7 @@ type Foo = { rank: 'method', }, line: 14, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2327,29 +2333,29 @@ type Foo = { rank: 'method', }, line: 16, - column: 5, + column: 3, }, ], }, { code: ` class Foo { - [Z: string]: any; - public static A: string = ""; - protected static B: string = ""; - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - private F: string = ""; - constructor() {} - public J() {} - protected K() {} - private L() {} - public static G() {} - protected static H() {} - private static I() {} + [Z: string]: any; + public static A: string = ''; + protected static B: string = ''; + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + private F: string = ''; + constructor() {} + public J() {} + protected K() {} + private L() {} + public static G() {} + protected static H() {} + private static I() {} } - `, + `, errors: [ { messageId: 'incorrectGroupOrder', @@ -2358,7 +2364,7 @@ class Foo { rank: 'public instance method', }, line: 14, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2367,7 +2373,7 @@ class Foo { rank: 'public instance method', }, line: 15, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2376,29 +2382,29 @@ class Foo { rank: 'public instance method', }, line: 16, - column: 5, + column: 3, }, ], }, { code: ` class Foo { - constructor() {} - public static A: string = ""; - protected static B: string = ""; - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - private F: string = ""; - public J() {} - protected K() {} - private L() {} - public static G() {} - protected static H() {} - private static I() {} - [Z: string]: any; + constructor() {} + public static A: string = ''; + protected static B: string = ''; + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + private F: string = ''; + public J() {} + protected K() {} + private L() {} + public static G() {} + protected static H() {} + private static I() {} + [Z: string]: any; } - `, + `, options: [{ default: ['field', 'constructor', 'method', 'signature'] }], errors: [ { @@ -2408,7 +2414,7 @@ class Foo { rank: 'constructor', }, line: 4, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2417,7 +2423,7 @@ class Foo { rank: 'constructor', }, line: 5, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2426,7 +2432,7 @@ class Foo { rank: 'constructor', }, line: 6, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2435,7 +2441,7 @@ class Foo { rank: 'constructor', }, line: 7, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2444,7 +2450,7 @@ class Foo { rank: 'constructor', }, line: 8, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2453,28 +2459,28 @@ class Foo { rank: 'constructor', }, line: 9, - column: 5, + column: 3, }, ], }, { code: ` class Foo { - constructor() {} - protected static B: string = ""; - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - private F: string = ""; - public static G() {} - public static A: string; - protected static H() {} - private static I() {} - public J() {} - protected K() {} - private L() {} + constructor() {} + protected static B: string = ''; + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + private F: string = ''; + public static G() {} + public static A: string; + protected static H() {} + private static I() {} + public J() {} + protected K() {} + private L() {} } - `, + `, options: [{ default: ['field', 'method'] }], errors: [ { @@ -2484,28 +2490,28 @@ class Foo { rank: 'method', }, line: 10, - column: 5, + column: 3, }, ], }, { code: ` class Foo { - protected static H() {} - private static I() {} - public J() {} - protected K() {} - private L() {} - public static A: string; - public static G() {} - protected static B: string = ""; - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - private F: string = ""; - constructor() {} + protected static H() {} + private static I() {} + public J() {} + protected K() {} + private L() {} + public static A: string; + public static G() {} + protected static B: string = ''; + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + private F: string = ''; + constructor() {} } - `, + `, options: [{ default: ['method', 'field'] }], errors: [ { @@ -2515,28 +2521,28 @@ class Foo { rank: 'field', }, line: 9, - column: 5, + column: 3, }, ], }, { code: ` class Foo { - public static G() {} - protected static H() {} - protected static B: string = ""; - private static I() {} - public J() {} - protected K() {} - private L() {} - public static A: string; - constructor() {} - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - private F: string = ""; + public static G() {} + protected static H() {} + protected static B: string = ''; + private static I() {} + public J() {} + protected K() {} + private L() {} + public static A: string; + constructor() {} + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + private F: string = ''; } - `, + `, options: [{ classes: ['method', 'constructor', 'field'] }], errors: [ { @@ -2546,7 +2552,7 @@ class Foo { rank: 'field', }, line: 6, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2555,7 +2561,7 @@ class Foo { rank: 'field', }, line: 7, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2564,7 +2570,7 @@ class Foo { rank: 'field', }, line: 8, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2573,7 +2579,7 @@ class Foo { rank: 'field', }, line: 9, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2582,28 +2588,28 @@ class Foo { rank: 'field', }, line: 11, - column: 5, + column: 3, }, ], }, { code: ` class Foo { - public static A: string; - public static G() {} - protected static H() {} - private static I() {} - public J() {} - protected K() {} - private L() {} - constructor() {} - protected static B: string = ""; - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - private F: string = ""; + public static A: string; + public static G() {} + protected static H() {} + private static I() {} + public J() {} + protected K() {} + private L() {} + constructor() {} + protected static B: string = ''; + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + private F: string = ''; } - `, + `, options: [ { default: ['field', 'constructor', 'method'], @@ -2618,7 +2624,7 @@ class Foo { rank: 'field', }, line: 4, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2627,7 +2633,7 @@ class Foo { rank: 'field', }, line: 5, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2636,7 +2642,7 @@ class Foo { rank: 'field', }, line: 6, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2645,7 +2651,7 @@ class Foo { rank: 'field', }, line: 7, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2654,7 +2660,7 @@ class Foo { rank: 'field', }, line: 8, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2663,7 +2669,7 @@ class Foo { rank: 'field', }, line: 9, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2672,30 +2678,30 @@ class Foo { rank: 'field', }, line: 10, - column: 5, + column: 3, }, ], }, { code: ` class Foo { - private L() {} - public J() {} - public static G() {} - protected static H() {} - private static I() {} - protected K() {} - constructor() {} - public D: string = ""; - private static C: string = ""; - public static A: string; - private static C: string = ""; - protected static B: string = ""; - private F: string = ""; - protected static B: string = ""; - protected E: string = ""; + private L() {} + public J() {} + public static G() {} + protected static H() {} + private static I() {} + protected K() {} + constructor() {} + public D: string = ''; + private static C: string = ''; + public static A: string; + private static C: string = ''; + protected static B: string = ''; + private F: string = ''; + protected static B: string = ''; + protected E: string = ''; } - `, + `, options: [ { classes: [ @@ -2715,7 +2721,7 @@ class Foo { rank: 'private field', }, line: 12, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2724,28 +2730,28 @@ class Foo { rank: 'protected field', }, line: 15, - column: 5, + column: 3, }, ], }, { code: ` class Foo { - public static G() {} - private static I() {} - public J() {} - protected static H() {} - private L() {} - protected K() {} - public D: string = ""; - constructor() {} - public static A: string; - protected static B: string = ""; - protected E: string = ""; - private static C: string = ""; - private F: string = ""; + public static G() {} + private static I() {} + public J() {} + protected static H() {} + private L() {} + protected K() {} + public D: string = ''; + constructor() {} + public static A: string; + protected static B: string = ''; + protected E: string = ''; + private static C: string = ''; + private F: string = ''; } - `, + `, options: [ { classes: [ @@ -2768,7 +2774,7 @@ class Foo { rank: 'public instance method', }, line: 6, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2777,28 +2783,28 @@ class Foo { rank: 'public field', }, line: 10, - column: 5, + column: 3, }, ], }, { code: ` class Foo { - public J() {} - public static G() {} - public D: string = ""; - public static A: string = ""; - private L() {} - constructor() {} - protected K() {} - protected static H() {} - private static I() {} - protected static B: string = ""; - private static C: string = ""; - protected E: string = ""; - private F: string = ""; + public J() {} + public static G() {} + public D: string = ''; + public static A: string = ''; + private L() {} + constructor() {} + protected K() {} + protected static H() {} + private static I() {} + protected static B: string = ''; + private static C: string = ''; + protected E: string = ''; + private F: string = ''; } - `, + `, options: [ { default: [ @@ -2818,28 +2824,28 @@ class Foo { rank: 'method', }, line: 8, - column: 5, + column: 3, }, ], }, { code: ` class Foo { - public J() {} - private static I() {} - public static G() {} - protected static H() {} - protected K() {} - private L() {} - constructor() {} - public static A: string; - private F: string = ""; - protected static B: string = ""; - public D: string = ""; - private static C: string = ""; - protected E: string = ""; + public J() {} + private static I() {} + public static G() {} + protected static H() {} + protected K() {} + private L() {} + constructor() {} + public static A: string; + private F: string = ''; + protected static B: string = ''; + public D: string = ''; + private static C: string = ''; + protected E: string = ''; } - `, + `, options: [ { classes: [ @@ -2861,7 +2867,7 @@ class Foo { rank: 'private static method', }, line: 5, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2870,28 +2876,28 @@ class Foo { rank: 'private static method', }, line: 6, - column: 5, + column: 3, }, ], }, { code: ` class Foo { - private static I() {} - protected static H() {} - protected static B: string = ""; - public static G() {} - public J() {} - protected K() {} - private static C: string = ""; - private L() {} - private F: string = ""; - protected E: string = ""; - public static A: string; - public D: string = ""; - constructor() {} + private static I() {} + protected static H() {} + protected static B: string = ''; + public static G() {} + public J() {} + protected K() {} + private static C: string = ''; + private L() {} + private F: string = ''; + protected E: string = ''; + public static A: string; + public D: string = ''; + constructor() {} } - `, + `, options: [ { classes: ['private-instance-method', 'protected-static-field'], @@ -2905,29 +2911,28 @@ class Foo { rank: 'protected static field', }, line: 10, - column: 5, + column: 3, }, ], }, { code: ` class Foo { - private L() {} - private static I() {} - protected static H() {} - public static G() {} - protected static B: string = ""; - public J() {} - protected K() {} - private static C: string = ""; - private F: string = ""; - protected E: string = ""; - public static A: string; - public D: string = ""; - constructor() {} - + private L() {} + private static I() {} + protected static H() {} + public static G() {} + protected static B: string = ''; + public J() {} + protected K() {} + private static C: string = ''; + private F: string = ''; + protected E: string = ''; + public static A: string; + public D: string = ''; + constructor() {} } - `, + `, options: [ { default: ['public-instance-method', 'protected-static-field'], @@ -2941,28 +2946,28 @@ class Foo { rank: 'protected static field', }, line: 8, - column: 5, + column: 3, }, ], }, { code: ` const foo = class Foo { - public static A: string = ""; - protected static B: string = ""; - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - private F: string = ""; - constructor() {} - public J() {} - protected K() {} - private L() {} - public static G() {} - protected static H() {} - private static I() {} -} - `, + public static A: string = ''; + protected static B: string = ''; + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + private F: string = ''; + constructor() {} + public J() {} + protected K() {} + private L() {} + public static G() {} + protected static H() {} + private static I() {} +}; + `, errors: [ { messageId: 'incorrectGroupOrder', @@ -2971,7 +2976,7 @@ const foo = class Foo { rank: 'public instance method', }, line: 13, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2980,7 +2985,7 @@ const foo = class Foo { rank: 'public instance method', }, line: 14, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -2989,29 +2994,29 @@ const foo = class Foo { rank: 'public instance method', }, line: 15, - column: 5, + column: 3, }, ], }, { code: ` const foo = class { - [Z: string]: any; - constructor() {} - public static A: string = ""; - protected static B: string = ""; - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - private F: string = ""; - public J() {} - protected K() {} - private L() {} - public static G() {} - protected static H() {} - private static I() {} -} - `, + [Z: string]: any; + constructor() {} + public static A: string = ''; + protected static B: string = ''; + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + private F: string = ''; + public J() {} + protected K() {} + private L() {} + public static G() {} + protected static H() {} + private static I() {} +}; + `, options: [{ default: ['signature', 'field', 'constructor', 'method'] }], errors: [ { @@ -3021,7 +3026,7 @@ const foo = class { rank: 'constructor', }, line: 5, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -3030,7 +3035,7 @@ const foo = class { rank: 'constructor', }, line: 6, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -3039,7 +3044,7 @@ const foo = class { rank: 'constructor', }, line: 7, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -3048,7 +3053,7 @@ const foo = class { rank: 'constructor', }, line: 8, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -3057,7 +3062,7 @@ const foo = class { rank: 'constructor', }, line: 9, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -3066,29 +3071,29 @@ const foo = class { rank: 'constructor', }, line: 10, - column: 5, + column: 3, }, ], }, { code: ` const foo = class { - constructor() {} - protected static B: string = ""; - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - private F: string = ""; - [Z: string]: any; - public static G() {} - public static A: string; - protected static H() {} - private static I() {} - public J() {} - protected K() {} - private L() {} -} - `, + constructor() {} + protected static B: string = ''; + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + private F: string = ''; + [Z: string]: any; + public static G() {} + public static A: string; + protected static H() {} + private static I() {} + public J() {} + protected K() {} + private L() {} +}; + `, options: [{ default: ['field', 'method'] }], errors: [ { @@ -3098,28 +3103,28 @@ const foo = class { rank: 'method', }, line: 11, - column: 5, + column: 3, }, ], }, { code: ` const foo = class { - protected static H() {} - private static I() {} - public J() {} - protected K() {} - private L() {} - public static A: string; - public static G() {} - protected static B: string = ""; - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - private F: string = ""; - constructor() {} -} - `, + protected static H() {} + private static I() {} + public J() {} + protected K() {} + private L() {} + public static A: string; + public static G() {} + protected static B: string = ''; + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + private F: string = ''; + constructor() {} +}; + `, options: [{ default: ['method', 'field'] }], errors: [ { @@ -3129,29 +3134,29 @@ const foo = class { rank: 'field', }, line: 9, - column: 5, + column: 3, }, ], }, { code: ` const foo = class { - public static G() {} - protected static H() {} - protected static B: string = ""; - private static I() {} - public J() {} - protected K() {} - private L() {} - public static A: string; - constructor() {} - [Z: string]: any; - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - private F: string = ""; -} - `, + public static G() {} + protected static H() {} + protected static B: string = ''; + private static I() {} + public J() {} + protected K() {} + private L() {} + public static A: string; + constructor() {} + [Z: string]: any; + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + private F: string = ''; +}; + `, options: [{ classExpressions: ['method', 'constructor', 'field'] }], errors: [ { @@ -3161,7 +3166,7 @@ const foo = class { rank: 'field', }, line: 6, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -3170,7 +3175,7 @@ const foo = class { rank: 'field', }, line: 7, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -3179,7 +3184,7 @@ const foo = class { rank: 'field', }, line: 8, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -3188,7 +3193,7 @@ const foo = class { rank: 'field', }, line: 9, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -3197,28 +3202,28 @@ const foo = class { rank: 'field', }, line: 11, - column: 5, + column: 3, }, ], }, { code: ` const foo = class { - public static A: string; - public static G() {} - protected static H() {} - private static I() {} - public J() {} - protected K() {} - private L() {} - constructor() {} - protected static B: string = ""; - private static C: string = ""; - public D: string = ""; - protected E: string = ""; - private F: string = ""; -} - `, + public static A: string; + public static G() {} + protected static H() {} + private static I() {} + public J() {} + protected K() {} + private L() {} + constructor() {} + protected static B: string = ''; + private static C: string = ''; + public D: string = ''; + protected E: string = ''; + private F: string = ''; +}; + `, options: [ { default: ['field', 'constructor', 'method'], @@ -3233,7 +3238,7 @@ const foo = class { rank: 'field', }, line: 4, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -3242,7 +3247,7 @@ const foo = class { rank: 'field', }, line: 5, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -3251,7 +3256,7 @@ const foo = class { rank: 'field', }, line: 6, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -3260,7 +3265,7 @@ const foo = class { rank: 'field', }, line: 7, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -3269,7 +3274,7 @@ const foo = class { rank: 'field', }, line: 8, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -3278,7 +3283,7 @@ const foo = class { rank: 'field', }, line: 9, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -3287,30 +3292,30 @@ const foo = class { rank: 'field', }, line: 10, - column: 5, + column: 3, }, ], }, { code: ` const foo = class { - private L() {} - public J() {} - public static G() {} - protected static H() {} - private static I() {} - protected K() {} - constructor() {} - public D: string = ""; - private static C: string = ""; - public static A: string; - private static C: string = ""; - protected static B: string = ""; - private F: string = ""; - protected static B: string = ""; - protected E: string = ""; -} - `, + private L() {} + public J() {} + public static G() {} + protected static H() {} + private static I() {} + protected K() {} + constructor() {} + public D: string = ''; + private static C: string = ''; + public static A: string; + private static C: string = ''; + protected static B: string = ''; + private F: string = ''; + protected static B: string = ''; + protected E: string = ''; +}; + `, options: [ { classExpressions: [ @@ -3330,7 +3335,7 @@ const foo = class { rank: 'private field', }, line: 12, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -3339,28 +3344,28 @@ const foo = class { rank: 'protected field', }, line: 15, - column: 5, + column: 3, }, ], }, { code: ` const foo = class { - public static G() {} - private static I() {} - public J() {} - protected static H() {} - private L() {} - protected K() {} - public D: string = ""; - constructor() {} - public static A: string; - protected static B: string = ""; - protected E: string = ""; - private static C: string = ""; - private F: string = ""; -} - `, + public static G() {} + private static I() {} + public J() {} + protected static H() {} + private L() {} + protected K() {} + public D: string = ''; + constructor() {} + public static A: string; + protected static B: string = ''; + protected E: string = ''; + private static C: string = ''; + private F: string = ''; +}; + `, options: [ { classExpressions: [ @@ -3383,7 +3388,7 @@ const foo = class { rank: 'public instance method', }, line: 6, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -3392,28 +3397,28 @@ const foo = class { rank: 'public field', }, line: 10, - column: 5, + column: 3, }, ], }, { code: ` const foo = class { - public J() {} - public static G() {} - public D: string = ""; - public static A: string = ""; - private L() {} - constructor() {} - protected K() {} - protected static H() {} - private static I() {} - protected static B: string = ""; - private static C: string = ""; - protected E: string = ""; - private F: string = ""; -} - `, + public J() {} + public static G() {} + public D: string = ''; + public static A: string = ''; + private L() {} + constructor() {} + protected K() {} + protected static H() {} + private static I() {} + protected static B: string = ''; + private static C: string = ''; + protected E: string = ''; + private F: string = ''; +}; + `, options: [ { default: [ @@ -3433,28 +3438,28 @@ const foo = class { rank: 'method', }, line: 8, - column: 5, + column: 3, }, ], }, { code: ` const foo = class { - public J() {} - private static I() {} - public static G() {} - protected static H() {} - protected K() {} - private L() {} - constructor() {} - public static A: string; - private F: string = ""; - protected static B: string = ""; - public D: string = ""; - private static C: string = ""; - protected E: string = ""; -} - `, + public J() {} + private static I() {} + public static G() {} + protected static H() {} + protected K() {} + private L() {} + constructor() {} + public static A: string; + private F: string = ''; + protected static B: string = ''; + public D: string = ''; + private static C: string = ''; + protected E: string = ''; +}; + `, options: [ { classExpressions: [ @@ -3476,7 +3481,7 @@ const foo = class { rank: 'private static method', }, line: 5, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -3485,29 +3490,28 @@ const foo = class { rank: 'private static method', }, line: 6, - column: 5, + column: 3, }, ], }, { code: ` const foo = class { - private static I() {} - protected static H() {} - protected static B: string = ""; - public static G() {} - public J() {} - protected K() {} - private static C: string = ""; - private L() {} - private F: string = ""; - protected E: string = ""; - public static A: string; - public D: string = ""; - constructor() {} - -} - `, + private static I() {} + protected static H() {} + protected static B: string = ''; + public static G() {} + public J() {} + protected K() {} + private static C: string = ''; + private L() {} + private F: string = ''; + protected E: string = ''; + public static A: string; + public D: string = ''; + constructor() {} +}; + `, options: [ { classExpressions: [ @@ -3524,29 +3528,28 @@ const foo = class { rank: 'protected static field', }, line: 10, - column: 5, + column: 3, }, ], }, { code: ` const foo = class { - private L() {} - private static I() {} - protected static H() {} - public static G() {} - protected static B: string = ""; - public J() {} - protected K() {} - private static C: string = ""; - private F: string = ""; - protected E: string = ""; - public static A: string; - public D: string = ""; - constructor() {} - -} - `, + private L() {} + private static I() {} + protected static H() {} + public static G() {} + protected static B: string = ''; + public J() {} + protected K() {} + private static C: string = ''; + private F: string = ''; + protected E: string = ''; + public static A: string; + public D: string = ''; + constructor() {} +}; + `, options: [ { default: ['public-instance-method', 'protected-static-field'], @@ -3560,20 +3563,20 @@ const foo = class { rank: 'protected static field', }, line: 8, - column: 5, + column: 3, }, ], }, { code: ` class Foo { - K = () => {} - A: string; - constructor () {} - [Z: string]: any; - J() {} + K = () => {}; + A: string; + constructor() {} + [Z: string]: any; + J() {} } - `, + `, errors: [ { messageId: 'incorrectGroupOrder', @@ -3582,7 +3585,7 @@ class Foo { rank: 'public instance method', }, line: 4, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -3591,7 +3594,7 @@ class Foo { rank: 'public instance method', }, line: 5, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -3600,20 +3603,20 @@ class Foo { rank: 'public instance method', }, line: 6, - column: 5, + column: 3, }, ], }, { code: ` class Foo { - J() {} - constructor () {} - K = () => {} - A: string; - [Z: string]: any; + J() {} + constructor() {} + K = () => {}; + A: string; + [Z: string]: any; } - `, + `, options: [{ default: ['method', 'constructor', 'field', 'signature'] }], errors: [ { @@ -3623,20 +3626,20 @@ class Foo { rank: 'constructor', }, line: 5, - column: 5, + column: 3, }, ], }, { code: ` class Foo { - J() {} - constructor () {} - K = () => {} - L: () => {} - A: string; + J() {} + constructor() {} + K = () => {}; + L: () => {}; + A: string; } - `, + `, options: [{ default: ['method', 'constructor', 'field'] }], errors: [ { @@ -3646,18 +3649,18 @@ class Foo { rank: 'constructor', }, line: 5, - column: 5, + column: 3, }, ], }, { code: ` interface Foo { - K: () => {} - J(); - A: string; + K: () => {}; + J(); + A: string; } - `, + `, errors: [ { messageId: 'incorrectGroupOrder', @@ -3666,18 +3669,18 @@ interface Foo { rank: 'method', }, line: 5, - column: 5, + column: 3, }, ], }, { code: ` type Foo = { - K: () => {} - J(); - A: string; -} - `, + K: () => {}; + J(); + A: string; +}; + `, errors: [ { messageId: 'incorrectGroupOrder', @@ -3686,18 +3689,18 @@ type Foo = { rank: 'method', }, line: 5, - column: 5, + column: 3, }, ], }, { code: ` type Foo = { - A: string; - K: () => {} - J(); -} - `, + A: string; + K: () => {}; + J(); +}; + `, options: [{ default: ['method', 'constructor', 'field'] }], errors: [ { @@ -3707,17 +3710,17 @@ type Foo = { rank: 'field', }, line: 5, - column: 5, + column: 3, }, ], }, { code: ` abstract class Foo { - abstract A(): void; - B: string; + abstract A(): void; + B: string; } - `, + `, errors: [ { messageId: 'incorrectGroupOrder', @@ -3726,17 +3729,17 @@ abstract class Foo { rank: 'public abstract method', }, line: 4, - column: 5, + column: 3, }, ], }, { code: ` abstract class Foo { - abstract A: () => {}; - B: string; + abstract A: () => {}; + B: string; } - `, + `, errors: [ { messageId: 'incorrectGroupOrder', @@ -3745,20 +3748,20 @@ abstract class Foo { rank: 'public abstract field', }, line: 4, - column: 5, + column: 3, }, ], }, { code: ` abstract class Foo { - abstract A: () => {}; - B: string; - public C() {}; - private D() {}; - abstract E() {}; + abstract A: () => {}; + B: string; + public C() {} + private D() {} + abstract E() {} } - `, + `, errors: [ { messageId: 'incorrectGroupOrder', @@ -3767,19 +3770,19 @@ abstract class Foo { rank: 'public abstract field', }, line: 4, - column: 5, + column: 3, }, ], }, { code: ` class Foo { - C: number; - [A:string]: number; - public static D(): {}; - private static [B:string]: number; + C: number; + [A: string]: number; + public static D(): {}; + private static [B: string]: number; } - `, + `, options: [ { default: [ @@ -3799,18 +3802,18 @@ class Foo { rank: 'signature', }, line: 5, - column: 5, + column: 3, }, ], }, { code: ` abstract class Foo { - abstract B: string; - abstract A(): void; - public C(): {}; + abstract B: string; + abstract A(): void; + public C(): {}; } - `, + `, options: [{ default: ['method', 'constructor', 'field'] }], errors: [ { @@ -3820,7 +3823,7 @@ abstract class Foo { rank: 'field', }, line: 4, - column: 5, + column: 3, }, { messageId: 'incorrectGroupOrder', @@ -3829,7 +3832,7 @@ abstract class Foo { rank: 'field', }, line: 5, - column: 5, + column: 3, }, ], }, @@ -3837,13 +3840,14 @@ abstract class Foo { code: ` // no accessibility === public class Foo { - B: string; - @Dec() A: string = ""; - C: string = ""; - constructor() {} - D() {} - E() {} -} `, + B: string; + @Dec() A: string = ''; + C: string = ''; + constructor() {} + D() {} + E() {} +} + `, options: [{ default: ['decorated-field', 'field'] }], errors: [ { @@ -3853,18 +3857,19 @@ class Foo { rank: 'field', }, line: 5, - column: 5, + column: 3, }, ], }, { code: ` class Foo { - A() {} + A() {} - @Decorator() - B() {} -} `, + @Decorator() + B() {} +} + `, options: [{ default: ['decorated-method', 'method'] }], errors: [ { @@ -3874,16 +3879,17 @@ class Foo { rank: 'method', }, line: 5, // Symbol starts at the line with decorator - column: 5, + column: 3, }, ], }, { code: ` class Foo { - @Decorator() C() {} - A() {} -} `, + @Decorator() C() {} + A() {} +} + `, options: [{ default: ['public-method', 'decorated-method'] }], errors: [ { @@ -3893,19 +3899,20 @@ class Foo { rank: 'decorated method', }, line: 4, - column: 5, + column: 3, }, ], }, { code: ` class Foo { - A(): void; - B(): void; - private C() {} - constructor() {} - @Dec() private D() {} -} `, + A(): void; + B(): void; + private C() {} + constructor() {} + @Dec() private D() {} +} + `, options: [ { classes: ['public-method', 'decorated-method', 'private-method'], @@ -3919,21 +3926,22 @@ class Foo { rank: 'private method', }, line: 7, - column: 5, + column: 3, }, ], }, { code: ` class Foo { - A: string; - get B() {} - constructor() {} - set B() {} - get C() {} - set C() {} - D(): void; -} `, + A: string; + get B() {} + constructor() {} + set B() {} + get C() {} + set C() {} + D(): void; +} + `, options: [ { default: ['field', 'constructor', ['get', 'set'], 'method'], @@ -3947,20 +3955,21 @@ class Foo { rank: 'get, set', }, line: 5, - column: 5, + column: 3, }, ], }, { code: ` class Foo { - A: string; - private C(): void; - constructor() {} - @Dec() private B: string; - set D() {} - E(): void; -} `, + A: string; + private C(): void; + constructor() {} + @Dec() private B: string; + set D() {} + E(): void; +} + `, options: [ { default: [ @@ -3979,21 +3988,22 @@ class Foo { rank: 'private decorated field, public set, private method', }, line: 5, - column: 5, + column: 3, }, ], }, { code: ` class Foo { - A: string; - constructor() {} - get B() {} - set B() {} - get C() {} - set C() {} - D(): void; -} `, + A: string; + constructor() {} + get B() {} + set B() {} + get C() {} + set C() {} + D(): void; +} + `, options: [ { default: ['field', 'constructor', 'get', ['set'], 'method'], @@ -4007,7 +4017,7 @@ class Foo { rank: 'set', }, line: 7, - column: 5, + column: 3, }, ], }, @@ -4018,7 +4028,7 @@ class Foo { m() {} f = 1; } - `, + `, options: [{ default: ['method', 'field', 'static-initialization'] }], errors: [ { @@ -4048,7 +4058,7 @@ class Foo { f = 1; static {} } - `, + `, options: [{ default: ['static-initialization', 'method', 'field'] }], errors: [ { @@ -4069,7 +4079,7 @@ class Foo { static {} m() {} } - `, + `, options: [{ default: ['static-initialization', 'field', 'method'] }], errors: [ { @@ -4090,7 +4100,7 @@ class Foo { f = 1; m() {} } - `, + `, options: [{ default: ['field', 'static-initialization', 'method'] }], errors: [ { @@ -4113,7 +4123,7 @@ class Foo { @dec md() {} } - `, + `, options: [ { default: ['decorated-method', 'static-initialization', 'method'] }, ], diff --git a/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-alphabetically-case-insensitive-order.test.ts b/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-alphabetically-case-insensitive-order.test.ts index 3eecfc999c9..07db08e0e86 100644 --- a/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-alphabetically-case-insensitive-order.test.ts +++ b/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-alphabetically-case-insensitive-order.test.ts @@ -1,23 +1,22 @@ -import type { TSESLint } from '@typescript-eslint/utils'; - import type { MessageIds, Options } from '../../../src/rules/member-ordering'; import rule, { defaultOrder } from '../../../src/rules/member-ordering'; +import type { RunTests } from '../../RuleTester'; import { RuleTester } from '../../RuleTester'; const ruleTester = new RuleTester({ parser: '@typescript-eslint/parser', }); -const sortedCiWithoutGrouping: TSESLint.RunTests = { +const sortedCiWithoutGrouping: RunTests = { valid: [ // default option + interface + lower/upper case { code: ` interface Foo { - a : b; - B : b; + a: b; + B: b; } - `, + `, options: [ { default: { @@ -32,10 +31,10 @@ interface Foo { { code: ` type Foo = { - a : b; - B : b; -} - `, + a: b; + B: b; +}; + `, options: [ { default: { @@ -50,10 +49,10 @@ type Foo = { { code: ` class Foo { - public static a : string; - public static B : string; + public static a: string; + public static B: string; } - `, + `, options: [ { default: { @@ -68,10 +67,10 @@ class Foo { { code: ` const foo = class Foo { - public static a : string; - public static B : string; -} - `, + public static a: string; + public static B: string; +}; + `, options: [ { default: { @@ -86,11 +85,11 @@ const foo = class Foo { { code: ` class Foo { - public static a : string; - @Dec() static B : string; - public static c : string; + public static a: string; + @Dec() static B: string; + public static c: string; } - `, + `, options: [ { default: { @@ -106,11 +105,11 @@ class Foo { { code: ` interface Foo { - c : string; - B : string; - a : string; + c: string; + B: string; + a: string; } - `, + `, options: [ { default: { @@ -141,10 +140,10 @@ interface Foo { { code: ` interface Foo { - B : b; - a : b; + B: b; + a: b; } - `, + `, options: [ { default: { @@ -168,10 +167,10 @@ interface Foo { { code: ` type Foo = { - B : b; - a : b; -} - `, + B: b; + a: b; +}; + `, options: [ { default: { @@ -195,10 +194,10 @@ type Foo = { { code: ` class Foo { - public static B : string; - public static a : string; + public static B: string; + public static a: string; } - `, + `, options: [ { default: { @@ -222,10 +221,10 @@ class Foo { { code: ` const foo = class Foo { - public static B : string; - public static a : string; -} - `, + public static B: string; + public static a: string; +}; + `, options: [ { default: { @@ -247,27 +246,27 @@ const foo = class Foo { ], }; -const sortedCiWithGrouping: TSESLint.RunTests = { +const sortedCiWithGrouping: RunTests = { valid: [ // default option + interface + default order + alphabetically { code: ` interface Foo { - [a: string] : number; + [a: string]: number; - () : Baz; + (): Baz; - a : x; - B : x; - c : x; + a: x; + B: x; + c: x; - new () : Bar; + new (): Bar; - a() : void; - B() : void; - c() : void; + a(): void; + B(): void; + c(): void; } - `, + `, options: [ { default: { @@ -282,20 +281,20 @@ interface Foo { { code: ` interface Foo { - new () : Bar; + new (): Bar; - a() : void; - B() : void; - c() : void; + a(): void; + B(): void; + c(): void; - a : x; - B : x; - c : x; + a: x; + B: x; + c: x; - [a: string] : number; - () : Baz; + [a: string]: number; + (): Baz; } - `, + `, options: [ { default: { @@ -310,21 +309,21 @@ interface Foo { { code: ` type Foo = { - [a: string] : number; + [a: string]: number; - () : Baz; + (): Baz; - a : x; - B : x; - c : x; + a: x; + B: x; + c: x; - new () : Bar; + new (): Bar; - a() : void; - B() : void; - c() : void; -} - `, + a(): void; + B(): void; + c(): void; +}; + `, options: [ { default: { @@ -339,21 +338,21 @@ type Foo = { { code: ` type Foo = { - [a: string] : number; + [a: string]: number; - new () : Bar; + new (): Bar; - a() : void; - B() : void; - c() : void; + a(): void; + B(): void; + c(): void; - a : x; - B : x; - c : x; + a: x; + B: x; + c: x; - () : Baz; -} - `, + (): Baz; +}; + `, options: [ { default: { @@ -369,16 +368,16 @@ type Foo = { code: ` class Foo { public static a: string; - protected static b: string = ""; - private static c: string = ""; + protected static b: string = ''; + private static c: string = ''; - public d: string = ""; - protected E: string = ""; - private f: string = ""; + public d: string = ''; + protected E: string = ''; + private f: string = ''; constructor() {} } - `, + `, options: [ { default: { @@ -393,20 +392,20 @@ class Foo { code: ` class Foo { public static a: string; - protected static b: string = ""; - private static c: string = ""; + protected static b: string = ''; + private static c: string = ''; @Dec() public d: string; @Dec() protected E: string; @Dec() private f: string; - public g: string = ""; - protected h: string = ""; - private i: string = ""; + public g: string = ''; + protected h: string = ''; + private i: string = ''; constructor() {} } - `, + `, options: [ { default: { @@ -423,15 +422,15 @@ class Foo { class Foo { constructor() {} - public d: string = ""; - protected E: string = ""; - private f: string = ""; + public d: string = ''; + protected E: string = ''; + private f: string = ''; public static a: string; - protected static b: string = ""; - private static c: string = ""; + protected static b: string = ''; + private static c: string = ''; } - `, + `, options: [ { default: { @@ -447,16 +446,16 @@ class Foo { code: ` const foo = class Foo { public static a: string; - protected static b: string = ""; - private static c: string = ""; + protected static b: string = ''; + private static c: string = ''; - public d: string = ""; - protected E: string = ""; - private f: string = ""; + public d: string = ''; + protected E: string = ''; + private f: string = ''; constructor() {} -} - `, +}; + `, options: [ { default: { @@ -473,15 +472,15 @@ const foo = class Foo { const foo = class Foo { constructor() {} - public d: string = ""; - protected E: string = ""; - private f: string = ""; + public d: string = ''; + protected E: string = ''; + private f: string = ''; public static a: string; - protected static b: string = ""; - private static c: string = ""; -} - `, + protected static b: string = ''; + private static c: string = ''; +}; + `, options: [ { default: { @@ -499,7 +498,7 @@ class Foo { static {} static {} } - `, + `, options: [ { default: { @@ -515,21 +514,21 @@ class Foo { { code: ` interface Foo { - [a: string] : number; + [a: string]: number; - a : x; - B : x; - c : x; + a: x; + B: x; + c: x; - c() : void; - B() : void; - a() : void; + c(): void; + B(): void; + a(): void; - () : Baz; + (): Baz; - new () : Bar; + new (): Bar; } - `, + `, options: [ { default: { @@ -560,21 +559,21 @@ interface Foo { { code: ` type Foo = { - [a: string] : number; + [a: string]: number; - a : x; - B : x; - c : x; + a: x; + B: x; + c: x; - c() : void; - B() : void; - a() : void; + c(): void; + B(): void; + a(): void; - () : Baz; + (): Baz; - new () : Bar; -} - `, + new (): Bar; +}; + `, options: [ { default: { @@ -605,15 +604,15 @@ type Foo = { { code: ` class Foo { - public static c: string = ""; - public static B: string = ""; + public static c: string = ''; + public static B: string = ''; public static a: string; constructor() {} - public d: string = ""; + public d: string = ''; } - `, + `, options: [ { default: { @@ -637,15 +636,15 @@ class Foo { { code: ` const foo = class Foo { - public static c: string = ""; - public static B: string = ""; + public static c: string = ''; + public static B: string = ''; public static a: string; constructor() {} - public d: string = ""; -} - `, + public d: string = ''; +}; + `, options: [ { default: { diff --git a/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-alphabetically-order.test.ts b/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-alphabetically-order.test.ts index afa1a5df810..b7b5da85910 100644 --- a/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-alphabetically-order.test.ts +++ b/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-alphabetically-order.test.ts @@ -1,16 +1,12 @@ -import type { TSESLint } from '@typescript-eslint/utils'; - import type { MessageIds, Options } from '../../../src/rules/member-ordering'; import rule, { defaultOrder } from '../../../src/rules/member-ordering'; +import type { RunTests } from '../../RuleTester'; import { RuleTester } from '../../RuleTester'; const ruleTester = new RuleTester({ parser: '@typescript-eslint/parser', }); -const sortedWithoutGroupingDefaultOption: TSESLint.RunTests< - MessageIds, - Options -> = { +const sortedWithoutGroupingDefaultOption: RunTests = { valid: [ // default option + interface + multiple types { @@ -20,7 +16,7 @@ interface Foo { a(): Foo; b(): Foo; } - `, + `, options: [ { default: { memberTypes: defaultOrder, order: 'alphabetically' } }, ], @@ -30,10 +26,10 @@ interface Foo { { code: ` interface Foo { - A : b; - a : b; + A: b; + a: b; } - `, + `, options: [{ default: { memberTypes: 'never', order: 'alphabetically' } }], }, @@ -41,10 +37,10 @@ interface Foo { { code: ` interface Foo { - a1 : b; - aa : b; + a1: b; + aa: b; } - `, + `, options: [{ default: { memberTypes: 'never', order: 'alphabetically' } }], }, @@ -52,11 +48,11 @@ interface Foo { { code: ` interface Foo { - a : Foo; - 'b.c' : Foo; - "b.d" : Foo; + a: Foo; + 'b.c': Foo; + 'b.d': Foo; } - `, + `, options: [{ default: { order: 'alphabetically' } }], }, @@ -64,13 +60,13 @@ interface Foo { { code: ` type Foo = { - a : b; - [a: string] : number; - b() : void; - () : Baz; - new () : Bar; -} - `, + a: b; + [a: string]: number; + b(): void; + (): Baz; + new (): Bar; +}; + `, options: [{ default: { memberTypes: 'never', order: 'alphabetically' } }], }, @@ -78,10 +74,10 @@ type Foo = { { code: ` type Foo = { - A : b; - a : b; -} - `, + A: b; + a: b; +}; + `, options: [{ default: { memberTypes: 'never', order: 'alphabetically' } }], }, @@ -89,10 +85,10 @@ type Foo = { { code: ` type Foo = { - a1 : b; - aa : b; -} - `, + a1: b; + aa: b; +}; + `, options: [{ default: { memberTypes: 'never', order: 'alphabetically' } }], }, @@ -100,11 +96,11 @@ type Foo = { { code: ` type Foo = { - a : Foo; - 'b.c' : Foo; - "b.d" : Foo; -} - `, + a: Foo; + 'b.c': Foo; + 'b.d': Foo; +}; + `, options: [{ default: { order: 'alphabetically' } }], }, @@ -112,17 +108,17 @@ type Foo = { { code: ` class Foo { - public static a : string; - protected static b : string = ""; - private static c : string = ""; + public static a: string; + protected static b: string = ''; + private static c: string = ''; constructor() {} @Dec() d: string; - public e : string = ""; - @Dec() f : string = ""; - protected g : string = ""; - private h : string = ""; + public e: string = ''; + @Dec() f: string = ''; + protected g: string = ''; + private h: string = ''; } - `, + `, options: [{ default: { memberTypes: 'never', order: 'alphabetically' } }], }, @@ -130,10 +126,10 @@ class Foo { { code: ` class Foo { - public static A : string; - public static a : string; + public static A: string; + public static a: string; } - `, + `, options: [{ default: { memberTypes: 'never', order: 'alphabetically' } }], }, @@ -141,10 +137,10 @@ class Foo { { code: ` class Foo { - public static a1 : string; - public static aa : string; + public static a1: string; + public static aa: string; } - `, + `, options: [{ default: { memberTypes: 'never', order: 'alphabetically' } }], }, @@ -152,15 +148,15 @@ class Foo { { code: ` const foo = class Foo { - public static a : string; - protected static b : string = ""; - private static c : string = ""; + public static a: string; + protected static b: string = ''; + private static c: string = ''; constructor() {} - public d : string = ""; - protected e : string = ""; - private f : string = ""; -} - `, + public d: string = ''; + protected e: string = ''; + private f: string = ''; +}; + `, options: [{ default: { memberTypes: 'never', order: 'alphabetically' } }], }, @@ -168,10 +164,10 @@ const foo = class Foo { { code: ` const foo = class Foo { - public static A : string; - public static a : string; -} - `, + public static A: string; + public static a: string; +}; + `, options: [{ default: { memberTypes: 'never', order: 'alphabetically' } }], }, @@ -179,10 +175,10 @@ const foo = class Foo { { code: ` const foo = class Foo { - public static a1 : string; - public static aa : string; -} - `, + public static a1: string; + public static aa: string; +}; + `, options: [{ default: { memberTypes: 'never', order: 'alphabetically' } }], }, @@ -190,11 +186,11 @@ const foo = class Foo { { code: ` class Foo { - public static a : string; - @Dec() static b : string; - public static c : string; + public static a: string; + @Dec() static b: string; + public static c: string; } - `, + `, options: [{ default: { memberTypes: 'never', order: 'alphabetically' } }], }, @@ -217,13 +213,13 @@ class Foo { { code: ` interface Foo { - b() : void; - a : b; - [a: string] : number; - new () : Bar; - () : Baz; + b(): void; + a: b; + [a: string]: number; + new (): Bar; + (): Baz; } - `, + `, options: [{ default: { memberTypes: 'never', order: 'alphabetically' } }], errors: [ { @@ -247,11 +243,11 @@ interface Foo { { code: ` interface Foo { - "b.d" : Foo; - 'b.c' : Foo; - a : Foo; + 'b.d': Foo; + 'b.c': Foo; + a: Foo; } - `, + `, options: [{ default: { order: 'alphabetically' } }], errors: [ { @@ -275,11 +271,11 @@ interface Foo { { code: ` interface Foo { - c : string; - b : string; - a : string; + c: string; + b: string; + a: string; } - `, + `, options: [{ default: { memberTypes: 'never', order: 'alphabetically' } }], errors: [ { @@ -303,13 +299,13 @@ interface Foo { { code: ` type Foo = { - b() : void; - a : b; - [a: string] : number; - new () : Bar; - () : Baz; -} - `, + b(): void; + a: b; + [a: string]: number; + new (): Bar; + (): Baz; +}; + `, options: [{ default: { memberTypes: 'never', order: 'alphabetically' } }], errors: [ { @@ -333,11 +329,11 @@ type Foo = { { code: ` type Foo = { - "b.d" : Foo; - 'b.c' : Foo; - a : Foo; -} - `, + 'b.d': Foo; + 'b.c': Foo; + a: Foo; +}; + `, options: [{ default: { order: 'alphabetically' } }], errors: [ { @@ -361,11 +357,11 @@ type Foo = { { code: ` type Foo = { - c : string; - b : string; - a : string; -} - `, + c: string; + b: string; + a: string; +}; + `, options: [{ default: { memberTypes: 'never', order: 'alphabetically' } }], errors: [ { @@ -389,15 +385,15 @@ type Foo = { { code: ` class Foo { - protected static b : string = ""; - public static a : string; - private static c : string = ""; + protected static b: string = ''; + public static a: string; + private static c: string = ''; constructor() {} - public d : string = ""; - protected e : string = ""; - private f : string = ""; + public d: string = ''; + protected e: string = ''; + private f: string = ''; } - `, + `, options: [{ default: { memberTypes: 'never', order: 'alphabetically' } }], errors: [ { @@ -418,7 +414,7 @@ class Foo { public static b: string; public static a: string; } - `, + `, options: [{ default: { memberTypes: 'never', order: 'alphabetically' } }], errors: [ { @@ -442,15 +438,15 @@ class Foo { { code: ` const foo = class Foo { - protected static b : string = ""; - public static a : string; - private static c : string = ""; + protected static b: string = ''; + public static a: string; + private static c: string = ''; constructor() {} - public d : string = ""; - protected e : string = ""; - private f : string = ""; -} - `, + public d: string = ''; + protected e: string = ''; + private f: string = ''; +}; + `, options: [{ default: { memberTypes: 'never', order: 'alphabetically' } }], errors: [ { @@ -470,8 +466,8 @@ const foo = class Foo { public static c: string; public static b: string; public static a: string; -} - `, +}; + `, options: [{ default: { memberTypes: 'never', order: 'alphabetically' } }], errors: [ { @@ -493,22 +489,19 @@ const foo = class Foo { ], }; -const sortedWithoutGroupingClassesOption: TSESLint.RunTests< - MessageIds, - Options -> = { +const sortedWithoutGroupingClassesOption: RunTests = { valid: [ // classes option + interface + multiple types --> Only member group order is checked (default config) { code: ` interface Foo { - [a: string] : number; - () : Baz; - c : b; - new () : Bar; - b() : void; + [a: string]: number; + (): Baz; + c: b; + new (): Bar; + b(): void; } - `, + `, options: [{ classes: { memberTypes: 'never', order: 'alphabetically' } }], }, @@ -516,10 +509,10 @@ interface Foo { { code: ` interface Foo { - a : b; - A : b; + a: b; + A: b; } - `, + `, options: [{ classes: { memberTypes: 'never', order: 'alphabetically' } }], }, @@ -527,10 +520,10 @@ interface Foo { { code: ` interface Foo { - aa : b; - a1 : b; + aa: b; + a1: b; } - `, + `, options: [{ classes: { memberTypes: 'never', order: 'alphabetically' } }], }, @@ -538,13 +531,13 @@ interface Foo { { code: ` type Foo = { - [a: string] : number; - () : Baz; - c : b; - new () : Bar; - b() : void; -} - `, + [a: string]: number; + (): Baz; + c: b; + new (): Bar; + b(): void; +}; + `, options: [{ classes: { memberTypes: 'never', order: 'alphabetically' } }], }, @@ -552,10 +545,10 @@ type Foo = { { code: ` type Foo = { - a : b; - A : b; -} - `, + a: b; + A: b; +}; + `, options: [{ classes: { memberTypes: 'never', order: 'alphabetically' } }], }, @@ -563,10 +556,10 @@ type Foo = { { code: ` type Foo = { - aa : b; - a1 : b; -} - `, + aa: b; + a1: b; +}; + `, options: [{ classes: { memberTypes: 'never', order: 'alphabetically' } }], }, @@ -574,16 +567,16 @@ type Foo = { { code: ` class Foo { - public static a : string; - protected static b : string = ""; - @Dec() private static c : string = ""; + public static a: string; + protected static b: string = ''; + @Dec() private static c: string = ''; constructor() {} - public d : string = ""; - protected e : string = ""; + public d: string = ''; + protected e: string = ''; @Dec() - private f : string = ""; + private f: string = ''; } - `, + `, options: [{ classes: { memberTypes: 'never', order: 'alphabetically' } }], }, @@ -591,10 +584,10 @@ class Foo { { code: ` class Foo { - public static A : string; - public static a : string; + public static A: string; + public static a: string; } - `, + `, options: [{ classes: { memberTypes: 'never', order: 'alphabetically' } }], }, @@ -602,10 +595,10 @@ class Foo { { code: ` class Foo { - public static a1 : string; - public static aa : string; + public static a1: string; + public static aa: string; } - `, + `, options: [{ classes: { memberTypes: 'never', order: 'alphabetically' } }], }, @@ -613,15 +606,15 @@ class Foo { { code: ` const foo = class Foo { - public static a : string; - protected static b : string = ""; - private static c : string = ""; - public d : string = ""; - protected e : string = ""; - private f : string = ""; + public static a: string; + protected static b: string = ''; + private static c: string = ''; + public d: string = ''; + protected e: string = ''; + private f: string = ''; constructor() {} -} - `, +}; + `, options: [{ classes: { memberTypes: 'never', order: 'alphabetically' } }], }, @@ -629,10 +622,10 @@ const foo = class Foo { { code: ` const foo = class Foo { - public static a : string; - public static A : string; -} - `, + public static a: string; + public static A: string; +}; + `, options: [{ classes: { memberTypes: 'never', order: 'alphabetically' } }], }, @@ -640,10 +633,10 @@ const foo = class Foo { { code: ` const foo = class Foo { - public static aa : string; - public static a1 : string; -} - `, + public static aa: string; + public static a1: string; +}; + `, options: [{ classes: { memberTypes: 'never', order: 'alphabetically' } }], }, ], @@ -652,15 +645,15 @@ const foo = class Foo { { code: ` class Foo { - protected static b : string = ""; - public static a : string; - private static c : string = ""; + protected static b: string = ''; + public static a: string; + private static c: string = ''; constructor() {} - public d : string = ""; - protected e : string = ""; - private f : string = ""; + public d: string = ''; + protected e: string = ''; + private f: string = ''; } - `, + `, options: [{ classes: { memberTypes: 'never', order: 'alphabetically' } }], errors: [ { @@ -681,7 +674,7 @@ class Foo { public static b: string; public static a: string; } - `, + `, options: [{ classes: { memberTypes: 'never', order: 'alphabetically' } }], errors: [ { @@ -703,7 +696,7 @@ class Foo { ], }; -const sortedWithoutGroupingClassExpressionsOption: TSESLint.RunTests< +const sortedWithoutGroupingClassExpressionsOption: RunTests< MessageIds, Options > = { @@ -712,13 +705,13 @@ const sortedWithoutGroupingClassExpressionsOption: TSESLint.RunTests< { code: ` interface Foo { - [a: string] : number; - () : Baz; - c : b; - new () : Bar; - b() : void; + [a: string]: number; + (): Baz; + c: b; + new (): Bar; + b(): void; } - `, + `, options: [ { classExpressions: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -728,10 +721,10 @@ interface Foo { { code: ` interface Foo { - a : b; - A : b; + a: b; + A: b; } - `, + `, options: [ { classExpressions: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -741,10 +734,10 @@ interface Foo { { code: ` interface Foo { - aa : b; - a1 : b; + aa: b; + a1: b; } - `, + `, options: [ { classExpressions: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -754,13 +747,13 @@ interface Foo { { code: ` type Foo = { - [a: string] : number; - () : Baz; - c : b; - new () : Bar; - b() : void; -} - `, + [a: string]: number; + (): Baz; + c: b; + new (): Bar; + b(): void; +}; + `, options: [ { classExpressions: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -770,10 +763,10 @@ type Foo = { { code: ` type Foo = { - a : b; - A : b; -} - `, + a: b; + A: b; +}; + `, options: [ { classExpressions: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -783,10 +776,10 @@ type Foo = { { code: ` type Foo = { - aa : b; - a1 : b; -} - `, + aa: b; + a1: b; +}; + `, options: [ { classExpressions: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -796,15 +789,15 @@ type Foo = { { code: ` class Foo { - public static a : string; - protected static b : string = ""; - private static c : string = ""; - public d : string = ""; - protected e : string = ""; - private f : string = ""; + public static a: string; + protected static b: string = ''; + private static c: string = ''; + public d: string = ''; + protected e: string = ''; + private f: string = ''; constructor() {} } - `, + `, options: [ { classExpressions: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -814,10 +807,10 @@ class Foo { { code: ` class Foo { - public static a : string; - public static A : string; + public static a: string; + public static A: string; } - `, + `, options: [ { classExpressions: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -827,10 +820,10 @@ class Foo { { code: ` class Foo { - public static aa : string; - public static a1 : string; + public static aa: string; + public static a1: string; } - `, + `, options: [ { classExpressions: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -840,15 +833,15 @@ class Foo { { code: ` const foo = class Foo { - public static a : string; - protected static b : string = ""; - private static c : string = ""; + public static a: string; + protected static b: string = ''; + private static c: string = ''; constructor() {} - public d : string = ""; - protected e : string = ""; - private f : string = ""; -} - `, + public d: string = ''; + protected e: string = ''; + private f: string = ''; +}; + `, options: [ { classExpressions: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -858,10 +851,10 @@ const foo = class Foo { { code: ` const foo = class Foo { - public static A : string; - public static a : string; -} - `, + public static A: string; + public static a: string; +}; + `, options: [ { classExpressions: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -871,10 +864,10 @@ const foo = class Foo { { code: ` const foo = class Foo { - public static a1 : string; - public static aa : string; -} - `, + public static a1: string; + public static aa: string; +}; + `, options: [ { classExpressions: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -885,15 +878,15 @@ const foo = class Foo { { code: ` const foo = class Foo { - protected static b : string = ""; - public static a : string; - private static c : string = ""; + protected static b: string = ''; + public static a: string; + private static c: string = ''; constructor() {} - public d : string = ""; - protected e : string = ""; - private f : string = ""; -} - `, + public d: string = ''; + protected e: string = ''; + private f: string = ''; +}; + `, options: [ { classExpressions: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -915,8 +908,8 @@ const foo = class Foo { public static c: string; public static b: string; public static a: string; -} - `, +}; + `, options: [ { classExpressions: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -940,22 +933,19 @@ const foo = class Foo { ], }; -const sortedWithoutGroupingInterfacesOption: TSESLint.RunTests< - MessageIds, - Options -> = { +const sortedWithoutGroupingInterfacesOption: RunTests = { valid: [ // interfaces option + interface + multiple types { code: ` interface Foo { - [a: string] : number; - a : b; - b() : void; - () : Baz; - new () : Bar; + [a: string]: number; + a: b; + b(): void; + (): Baz; + new (): Bar; } - `, + `, options: [ { interfaces: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -965,10 +955,10 @@ interface Foo { { code: ` interface Foo { - A : b; - a : b; + A: b; + a: b; } - `, + `, options: [ { interfaces: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -978,10 +968,10 @@ interface Foo { { code: ` interface Foo { - a1 : b; - aa : b; + a1: b; + aa: b; } - `, + `, options: [ { interfaces: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -991,13 +981,13 @@ interface Foo { { code: ` type Foo = { - [a: string] : number; - () : Baz; - c : b; - new () : Bar; - b() : void; -} - `, + [a: string]: number; + (): Baz; + c: b; + new (): Bar; + b(): void; +}; + `, options: [ { interfaces: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -1007,10 +997,10 @@ type Foo = { { code: ` type Foo = { - a : b; - A : b; -} - `, + a: b; + A: b; +}; + `, options: [ { interfaces: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -1020,10 +1010,10 @@ type Foo = { { code: ` type Foo = { - aa : b; - a1 : b; -} - `, + aa: b; + a1: b; +}; + `, options: [ { interfaces: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -1033,15 +1023,15 @@ type Foo = { { code: ` class Foo { - public static a : string; - protected static b : string = ""; - private static c : string = ""; - public d : string = ""; - protected e : string = ""; - private f : string = ""; + public static a: string; + protected static b: string = ''; + private static c: string = ''; + public d: string = ''; + protected e: string = ''; + private f: string = ''; constructor() {} } - `, + `, options: [ { interfaces: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -1051,10 +1041,10 @@ class Foo { { code: ` class Foo { - public static a : string; - public static A : string; + public static a: string; + public static A: string; } - `, + `, options: [ { interfaces: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -1064,10 +1054,10 @@ class Foo { { code: ` class Foo { - public static aa : string; - public static a1 : string; + public static aa: string; + public static a1: string; } - `, + `, options: [ { interfaces: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -1077,15 +1067,15 @@ class Foo { { code: ` const foo = class Foo { - public static a : string; - protected static b : string = ""; - private static c : string = ""; - public d : string = ""; - protected e : string = ""; - private f : string = ""; + public static a: string; + protected static b: string = ''; + private static c: string = ''; + public d: string = ''; + protected e: string = ''; + private f: string = ''; constructor() {} -} - `, +}; + `, options: [ { interfaces: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -1095,10 +1085,10 @@ const foo = class Foo { { code: ` const foo = class Foo { - public static a : string; - public static A : string; -} - `, + public static a: string; + public static A: string; +}; + `, options: [ { interfaces: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -1108,10 +1098,10 @@ const foo = class Foo { { code: ` const foo = class Foo { - public static aa : string; - public static a1 : string; -} - `, + public static aa: string; + public static a1: string; +}; + `, options: [ { interfaces: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -1122,13 +1112,13 @@ const foo = class Foo { { code: ` interface Foo { - b() : void; - a : b; - [a: string] : number; - new () : Bar; - () : Baz; + b(): void; + a: b; + [a: string]: number; + new (): Bar; + (): Baz; } - `, + `, options: [ { interfaces: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -1154,11 +1144,11 @@ interface Foo { { code: ` interface Foo { - c : string; - b : string; - a : string; + c: string; + b: string; + a: string; } - `, + `, options: [ { interfaces: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -1182,22 +1172,19 @@ interface Foo { ], }; -const sortedWithoutGroupingTypeLiteralsOption: TSESLint.RunTests< - MessageIds, - Options -> = { +const sortedWithoutGroupingTypeLiteralsOption: RunTests = { valid: [ // typeLiterals option + interface + multiple types --> Only member group order is checked (default config) { code: ` interface Foo { - [a: string] : number; - () : Baz; - c : b; - new () : Bar; - b() : void; + [a: string]: number; + (): Baz; + c: b; + new (): Bar; + b(): void; } - `, + `, options: [ { typeLiterals: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -1207,10 +1194,10 @@ interface Foo { { code: ` interface Foo { - a : b; - A : b; + a: b; + A: b; } - `, + `, options: [ { typeLiterals: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -1220,10 +1207,10 @@ interface Foo { { code: ` interface Foo { - aa : b; - a1 : b; + aa: b; + a1: b; } - `, + `, options: [ { typeLiterals: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -1233,13 +1220,13 @@ interface Foo { { code: ` type Foo = { - [a: string] : number; - a : b; - b() : void; - () : Baz; - new () : Bar; -} - `, + [a: string]: number; + a: b; + b(): void; + (): Baz; + new (): Bar; +}; + `, options: [ { typeLiterals: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -1249,10 +1236,10 @@ type Foo = { { code: ` type Foo = { - A : b; - a : b; -} - `, + A: b; + a: b; +}; + `, options: [ { typeLiterals: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -1262,10 +1249,10 @@ type Foo = { { code: ` type Foo = { - a1 : b; - aa : b; -} - `, + a1: b; + aa: b; +}; + `, options: [ { typeLiterals: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -1275,15 +1262,15 @@ type Foo = { { code: ` class Foo { - public static a : string; - protected static b : string = ""; - private static c : string = ""; - public d : string = ""; - protected e : string = ""; - private f : string = ""; + public static a: string; + protected static b: string = ''; + private static c: string = ''; + public d: string = ''; + protected e: string = ''; + private f: string = ''; constructor() {} } - `, + `, options: [ { typeLiterals: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -1293,10 +1280,10 @@ class Foo { { code: ` class Foo { - public static a : string; - public static A : string; + public static a: string; + public static A: string; } - `, + `, options: [ { typeLiterals: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -1306,10 +1293,10 @@ class Foo { { code: ` class Foo { - public static aa : string; - public static a1 : string; + public static aa: string; + public static a1: string; } - `, + `, options: [ { typeLiterals: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -1319,15 +1306,15 @@ class Foo { { code: ` const foo = class Foo { - public static a : string; - protected static b : string = ""; - private static c : string = ""; - public d : string = ""; - protected e : string = ""; - private f : string = ""; + public static a: string; + protected static b: string = ''; + private static c: string = ''; + public d: string = ''; + protected e: string = ''; + private f: string = ''; constructor() {} -} - `, +}; + `, options: [ { typeLiterals: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -1337,10 +1324,10 @@ const foo = class Foo { { code: ` const foo = class Foo { - public static a : string; - public static A : string; -} - `, + public static a: string; + public static A: string; +}; + `, options: [ { typeLiterals: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -1350,10 +1337,10 @@ const foo = class Foo { { code: ` const foo = class Foo { - public static aa : string; - public static a1 : string; -} - `, + public static aa: string; + public static a1: string; +}; + `, options: [ { typeLiterals: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -1364,13 +1351,13 @@ const foo = class Foo { { code: ` type Foo = { - b() : void; - a : b; - [a: string] : number; - new () : Bar; - () : Baz; -} - `, + b(): void; + a: b; + [a: string]: number; + new (): Bar; + (): Baz; +}; + `, options: [ { typeLiterals: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -1396,11 +1383,11 @@ type Foo = { { code: ` type Foo = { - c : string; - b : string; - a : string; -} - `, + c: string; + b: string; + a: string; +}; + `, options: [ { typeLiterals: { memberTypes: 'never', order: 'alphabetically' } }, ], @@ -1424,145 +1411,144 @@ type Foo = { ], }; -const sortedWithGroupingDefaultOption: TSESLint.RunTests = - { - valid: [ - // default option + interface + default order + alphabetically - { - code: ` +const sortedWithGroupingDefaultOption: RunTests = { + valid: [ + // default option + interface + default order + alphabetically + { + code: ` interface Foo { - [a: string] : number; + [a: string]: number; - () : Baz; + (): Baz; - a : x; - b : x; - c : x; + a: x; + b: x; + c: x; - new () : Bar; + new (): Bar; - a() : void; - b() : void; - c() : void; + a(): void; + b(): void; + c(): void; } - `, - options: [ - { default: { memberTypes: defaultOrder, order: 'alphabetically' } }, - ], - }, + `, + options: [ + { default: { memberTypes: defaultOrder, order: 'alphabetically' } }, + ], + }, - // default option + interface + custom order + alphabetically - { - code: ` + // default option + interface + custom order + alphabetically + { + code: ` interface Foo { - new () : Bar; + new (): Bar; - a() : void; - b() : void; - c() : void; + a(): void; + b(): void; + c(): void; - a : x; - b : x; - c : x; + a: x; + b: x; + c: x; - [a: string] : number; - () : Baz; + [a: string]: number; + (): Baz; } - `, - options: [ - { - default: { - memberTypes: ['constructor', 'method', 'field'], - order: 'alphabetically', - }, + `, + options: [ + { + default: { + memberTypes: ['constructor', 'method', 'field'], + order: 'alphabetically', }, - ], - }, + }, + ], + }, - // default option + type literal + default order + alphabetically - { - code: ` + // default option + type literal + default order + alphabetically + { + code: ` type Foo = { - [a: string] : number; + [a: string]: number; - () : Baz; + (): Baz; - a : x; - b : x; - c : x; + a: x; + b: x; + c: x; - new () : Bar; + new (): Bar; - a() : void; - b() : void; - c() : void; -} - `, - options: [ - { default: { memberTypes: defaultOrder, order: 'alphabetically' } }, - ], - }, + a(): void; + b(): void; + c(): void; +}; + `, + options: [ + { default: { memberTypes: defaultOrder, order: 'alphabetically' } }, + ], + }, - // default option + type literal + custom order + alphabetically - { - code: ` + // default option + type literal + custom order + alphabetically + { + code: ` type Foo = { - [a: string] : number; + [a: string]: number; - new () : Bar; + new (): Bar; - a() : void; - b() : void; - c() : void; + a(): void; + b(): void; + c(): void; - a : x; - b : x; - c : x; + a: x; + b: x; + c: x; - () : Baz; -} - `, - options: [ - { - default: { - memberTypes: ['constructor', 'method', 'field'], - order: 'alphabetically', - }, + (): Baz; +}; + `, + options: [ + { + default: { + memberTypes: ['constructor', 'method', 'field'], + order: 'alphabetically', }, - ], - }, + }, + ], + }, - // default option + class + default order + alphabetically - { - code: ` + // default option + class + default order + alphabetically + { + code: ` class Foo { public static a: string; - protected static b: string = ""; - private static c: string = ""; + protected static b: string = ''; + private static c: string = ''; - public d: string = ""; - protected e: string = ""; - private f: string = ""; + public d: string = ''; + protected e: string = ''; + private f: string = ''; constructor() {} } - `, - options: [ - { default: { memberTypes: defaultOrder, order: 'alphabetically' } }, - ], - }, + `, + options: [ + { default: { memberTypes: defaultOrder, order: 'alphabetically' } }, + ], + }, - // default option + class + defaultOrder + alphabetically - { - code: ` + // default option + class + defaultOrder + alphabetically + { + code: ` class Foo { public static a: string; - protected static b: string = ""; - private static c: string = ""; + protected static b: string = ''; + private static c: string = ''; - public d: string = ""; - protected e: string = ""; - private f: string = ""; + public d: string = ''; + protected e: string = ''; + private f: string = ''; constructor() {} @@ -1570,20 +1556,20 @@ class Foo { set g() {} } - `, - options: [ - { - default: { - memberTypes: defaultOrder, - order: 'alphabetically', - }, + `, + options: [ + { + default: { + memberTypes: defaultOrder, + order: 'alphabetically', }, - ], - }, + }, + ], + }, - // default option + class + custom + alphabetically - { - code: ` + // default option + class + custom + alphabetically + { + code: ` class Foo { get a() {} @@ -1595,141 +1581,141 @@ class Foo { @Bar set d() {} } - `, - options: [ - { - default: { - memberTypes: ['get', 'decorated-get', 'set', 'decorated-set'], - order: 'alphabetically', - }, + `, + options: [ + { + default: { + memberTypes: ['get', 'decorated-get', 'set', 'decorated-set'], + order: 'alphabetically', }, - ], - }, + }, + ], + }, - // default option + class + decorators + default order + alphabetically - { - code: ` + // default option + class + decorators + default order + alphabetically + { + code: ` class Foo { public static a: string; - protected static b: string = ""; - private static c: string = ""; + protected static b: string = ''; + private static c: string = ''; @Dec() public d: string; @Dec() protected e: string; @Dec() private f: string; - public g: string = ""; - protected h: string = ""; - private i: string = ""; + public g: string = ''; + protected h: string = ''; + private i: string = ''; constructor() {} } - `, - options: [ - { default: { memberTypes: defaultOrder, order: 'alphabetically' } }, - ], - }, + `, + options: [ + { default: { memberTypes: defaultOrder, order: 'alphabetically' } }, + ], + }, - // default option + class + custom order + alphabetically - { - code: ` + // default option + class + custom order + alphabetically + { + code: ` class Foo { constructor() {} - public d: string = ""; - protected e: string = ""; - private f: string = ""; + public d: string = ''; + protected e: string = ''; + private f: string = ''; public static a: string; - protected static b: string = ""; - private static c: string = ""; + protected static b: string = ''; + private static c: string = ''; } - `, - options: [ - { - default: { - memberTypes: ['constructor', 'instance-field', 'static-field'], - order: 'alphabetically', - }, + `, + options: [ + { + default: { + memberTypes: ['constructor', 'instance-field', 'static-field'], + order: 'alphabetically', }, - ], - }, + }, + ], + }, - // default option + class expression + default order + alphabetically - { - code: ` + // default option + class expression + default order + alphabetically + { + code: ` const foo = class Foo { public static a: string; - protected static b: string = ""; - private static c: string = ""; + protected static b: string = ''; + private static c: string = ''; - public d: string = ""; - protected e: string = ""; - private f: string = ""; + public d: string = ''; + protected e: string = ''; + private f: string = ''; constructor() {} -} - `, - options: [ - { default: { memberTypes: defaultOrder, order: 'alphabetically' } }, - ], - }, +}; + `, + options: [ + { default: { memberTypes: defaultOrder, order: 'alphabetically' } }, + ], + }, - // default option + class expression + custom order + alphabetically - { - code: ` + // default option + class expression + custom order + alphabetically + { + code: ` const foo = class Foo { constructor() {} - public d: string = ""; - protected e: string = ""; - private f: string = ""; + public d: string = ''; + protected e: string = ''; + private f: string = ''; public static a: string; - protected static b: string = ""; - private static c: string = ""; -} - `, - options: [ - { - default: { - memberTypes: ['constructor', 'instance-field', 'static-field'], - order: 'alphabetically', - }, + protected static b: string = ''; + private static c: string = ''; +}; + `, + options: [ + { + default: { + memberTypes: ['constructor', 'instance-field', 'static-field'], + order: 'alphabetically', }, - ], - }, + }, + ], + }, - // default option + static blocks; should always be valid - { - code: ` + // default option + static blocks; should always be valid + { + code: ` class Foo { static {} static {} } - `, - options: [ - { - default: { - memberTypes: 'never', - order: 'alphabetically', - }, + `, + options: [ + { + default: { + memberTypes: 'never', + order: 'alphabetically', }, - ], - }, - ], - invalid: [ - // default option + class + wrong order within group and wrong group order + alphabetically - { - code: ` + }, + ], + }, + ], + invalid: [ + // default option + class + wrong order within group and wrong group order + alphabetically + { + code: ` class FooTestGetter { public static a: string; - protected static b: string = ""; - private static c: string = ""; + protected static b: string = ''; + private static c: string = ''; - public d: string = ""; - protected e: string = ""; - private f: string = ""; + public d: string = ''; + protected e: string = ''; + private f: string = ''; get h() {} @@ -1737,29 +1723,29 @@ class FooTestGetter { constructor() {} } - `, - options: [ - { - default: { - memberTypes: defaultOrder, - order: 'alphabetically', - }, + `, + options: [ + { + default: { + memberTypes: defaultOrder, + order: 'alphabetically', }, - ], - errors: [ - { - messageId: 'incorrectGroupOrder', - data: { - name: 'constructor', - rank: 'public instance get', - }, + }, + ], + errors: [ + { + messageId: 'incorrectGroupOrder', + data: { + name: 'constructor', + rank: 'public instance get', }, - ], - }, + }, + ], + }, - // default option + class + custom + alphabetically - { - code: ` + // default option + class + custom + alphabetically + { + code: ` class Foo { @Bar get a() {} @@ -1771,44 +1757,44 @@ class Foo { set d() {} } - `, - options: [ - { - default: { - memberTypes: ['get', 'decorated-get', 'set', 'decorated-set'], - order: 'alphabetically', - }, + `, + options: [ + { + default: { + memberTypes: ['get', 'decorated-get', 'set', 'decorated-set'], + order: 'alphabetically', }, - ], - errors: [ - { - messageId: 'incorrectGroupOrder', - data: { - name: 'b', - rank: 'decorated get', - }, + }, + ], + errors: [ + { + messageId: 'incorrectGroupOrder', + data: { + name: 'b', + rank: 'decorated get', }, - { - messageId: 'incorrectGroupOrder', - data: { - name: 'd', - rank: 'decorated set', - }, + }, + { + messageId: 'incorrectGroupOrder', + data: { + name: 'd', + rank: 'decorated set', }, - ], - }, + }, + ], + }, - // default option + class + wrong order within group and wrong group order + alphabetically - { - code: ` + // default option + class + wrong order within group and wrong group order + alphabetically + { + code: ` class FooTestGetter { public static a: string; - protected static b: string = ""; - private static c: string = ""; + protected static b: string = ''; + private static c: string = ''; - public d: string = ""; - protected e: string = ""; - private f: string = ""; + public d: string = ''; + protected e: string = ''; + private f: string = ''; set g() {} @@ -1816,489 +1802,341 @@ class FooTestGetter { get h() {} } - `, - options: [ - { - default: { - memberTypes: defaultOrder, - order: 'alphabetically', - }, + `, + options: [ + { + default: { + memberTypes: defaultOrder, + order: 'alphabetically', }, - ], - errors: [ - { - messageId: 'incorrectGroupOrder', - data: { - name: 'constructor', - rank: 'public instance set', - }, + }, + ], + errors: [ + { + messageId: 'incorrectGroupOrder', + data: { + name: 'constructor', + rank: 'public instance set', }, - { - messageId: 'incorrectGroupOrder', - data: { - name: 'h', - rank: 'public instance set', - }, + }, + { + messageId: 'incorrectGroupOrder', + data: { + name: 'h', + rank: 'public instance set', }, - ], - }, + }, + ], + }, - // default option + interface + wrong order within group and wrong group order + alphabetically - { - code: ` + // default option + interface + wrong order within group and wrong group order + alphabetically + { + code: ` interface Foo { - [a: string] : number; + [a: string]: number; - a : x; - b : x; - c : x; + a: x; + b: x; + c: x; - c() : void; - b() : void; - a() : void; + c(): void; + b(): void; + a(): void; - () : Baz; + (): Baz; - new () : Bar; + new (): Bar; } - `, - options: [ - { default: { memberTypes: defaultOrder, order: 'alphabetically' } }, - ], - errors: [ - { - messageId: 'incorrectGroupOrder', - data: { - name: 'call', - rank: 'field', - }, + `, + options: [ + { default: { memberTypes: defaultOrder, order: 'alphabetically' } }, + ], + errors: [ + { + messageId: 'incorrectGroupOrder', + data: { + name: 'call', + rank: 'field', }, - { - messageId: 'incorrectGroupOrder', - data: { - name: 'new', - rank: 'method', - }, + }, + { + messageId: 'incorrectGroupOrder', + data: { + name: 'new', + rank: 'method', }, - ], - }, + }, + ], + }, - // default option + type literal + wrong order within group and wrong group order + alphabetically - { - code: ` + // default option + type literal + wrong order within group and wrong group order + alphabetically + { + code: ` type Foo = { - [a: string] : number; + [a: string]: number; - a : x; - b : x; - c : x; + a: x; + b: x; + c: x; - c() : void; - b() : void; - a() : void; + c(): void; + b(): void; + a(): void; - () : Baz; + (): Baz; - new () : Bar; -} - `, - options: [ - { default: { memberTypes: defaultOrder, order: 'alphabetically' } }, - ], - errors: [ - { - messageId: 'incorrectGroupOrder', - data: { - name: 'call', - rank: 'field', - }, - }, - { - messageId: 'incorrectGroupOrder', - data: { - name: 'new', - rank: 'method', - }, - }, - ], - }, - - // default option + class + wrong order within group and wrong group order + alphabetically - { - code: ` -class Foo { - public static c: string = ""; - public static b: string = ""; - public static a: string; - - constructor() {} - - public d: string = ""; -} - `, - options: [ - { default: { memberTypes: defaultOrder, order: 'alphabetically' } }, - ], - errors: [ - { - messageId: 'incorrectGroupOrder', - data: { - name: 'd', - rank: 'public constructor', - }, - }, - ], - }, - - // default option + class expression + wrong order within group and wrong group order + alphabetically - { - code: ` -const foo = class Foo { - public static c: string = ""; - public static b: string = ""; - public static a: string; - - constructor() {} - - public d: string = ""; -} - `, - options: [ - { default: { memberTypes: defaultOrder, order: 'alphabetically' } }, - ], - errors: [ - { - messageId: 'incorrectGroupOrder', - data: { - name: 'd', - rank: 'public constructor', - }, - }, - ], - }, - // default option + class + decorators + custom order + wrong order within group and wrong group order + alphabetically - { - code: ` -class Foo { - @Dec() a1: string; - @Dec() - a3: string; - @Dec() - a2: string; - - constructor() {} - - b1: string; - b2: string; - - public c(): void; - @Dec() d(): void -} - `, - options: [ - { - default: { - memberTypes: [ - 'decorated-field', - 'field', - 'constructor', - 'decorated-method', - ], - order: 'alphabetically', - }, - }, - ], - errors: [ - { - messageId: 'incorrectGroupOrder', - data: { - name: 'b1', - rank: 'constructor', - }, + new (): Bar; +}; + `, + options: [ + { default: { memberTypes: defaultOrder, order: 'alphabetically' } }, + ], + errors: [ + { + messageId: 'incorrectGroupOrder', + data: { + name: 'call', + rank: 'field', }, - { - messageId: 'incorrectGroupOrder', - data: { - name: 'b2', - rank: 'constructor', - }, + }, + { + messageId: 'incorrectGroupOrder', + data: { + name: 'new', + rank: 'method', }, - ], - }, - ], - }; - -const sortedWithGroupingClassesOption: TSESLint.RunTests = - { - valid: [ - // classes option + interface + alphabetically --> Default order applies - { - code: ` -interface Foo { - [a: string] : number; - - () : Baz; - - c : x; - b : x; - a : x; - - new () : Bar; - - c() : void; - b() : void; - a() : void; -} - `, - options: [{ classes: { order: 'alphabetically' } }], - }, - - // classes option + type literal + alphabetically --> Default order applies - { - code: ` -type Foo = { - [a: string] : number; - - () : Baz; - - c : x; - b : x; - a : x; - - new () : Bar; - - c() : void; - b() : void; - a() : void; -} - `, - options: [{ classes: { order: 'alphabetically' } }], - }, + }, + ], + }, - // classes option + class + default order + alphabetically - { - code: ` + // default option + class + wrong order within group and wrong group order + alphabetically + { + code: ` class Foo { + public static c: string = ''; + public static b: string = ''; public static a: string; - protected static b: string = ""; - private static c: string = ""; - - public d: string = ""; - protected e: string = ""; - private f: string = ""; - - constructor() {} -} - `, - options: [ - { classes: { memberTypes: defaultOrder, order: 'alphabetically' } }, - ], - }, - - // classes option + class + custom order + alphabetically - { - code: ` -class Foo { - constructor() {} - public d: string = ""; - protected e: string = ""; - private f: string = ""; + constructor() {} - public static a: string; - protected static b: string = ""; - private static c: string = ""; + public d: string = ''; } - `, - options: [ - { - classes: { - memberTypes: ['constructor', 'instance-field', 'static-field'], - order: 'alphabetically', - }, + `, + options: [ + { default: { memberTypes: defaultOrder, order: 'alphabetically' } }, + ], + errors: [ + { + messageId: 'incorrectGroupOrder', + data: { + name: 'd', + rank: 'public constructor', }, - ], - }, + }, + ], + }, - // classes option + class expression + alphabetically --> Default order applies - { - code: ` + // default option + class expression + wrong order within group and wrong group order + alphabetically + { + code: ` const foo = class Foo { + public static c: string = ''; + public static b: string = ''; public static a: string; - protected static b: string = ""; - private static c: string = ""; - - public d: string = ""; - protected e: string = ""; - private f: string = ""; constructor() {} -} - `, - options: [{ classes: { order: 'alphabetically' } }], - }, - ], - invalid: [ - // default option + class + wrong order within group and wrong group order + alphabetically - { - code: ` + + public d: string = ''; +}; + `, + options: [ + { default: { memberTypes: defaultOrder, order: 'alphabetically' } }, + ], + errors: [ + { + messageId: 'incorrectGroupOrder', + data: { + name: 'd', + rank: 'public constructor', + }, + }, + ], + }, + // default option + class + decorators + custom order + wrong order within group and wrong group order + alphabetically + { + code: ` class Foo { - public static c: string = ""; - public static b: string = ""; - public static a: string; + @Dec() a1: string; + @Dec() + a3: string; + @Dec() + a2: string; constructor() {} - public d: string = ""; + b1: string; + b2: string; + + public c(): void; + @Dec() d(): void; } - `, - options: [ - { default: { memberTypes: defaultOrder, order: 'alphabetically' } }, - ], - errors: [ - { - messageId: 'incorrectGroupOrder', - data: { - name: 'd', - rank: 'public constructor', - }, + `, + options: [ + { + default: { + memberTypes: [ + 'decorated-field', + 'field', + 'constructor', + 'decorated-method', + ], + order: 'alphabetically', }, - ], - }, - ], - }; + }, + ], + errors: [ + { + messageId: 'incorrectGroupOrder', + data: { + name: 'b1', + rank: 'constructor', + }, + }, + { + messageId: 'incorrectGroupOrder', + data: { + name: 'b2', + rank: 'constructor', + }, + }, + ], + }, + ], +}; -const sortedWithGroupingClassExpressionsOption: TSESLint.RunTests< - MessageIds, - Options -> = { +const sortedWithGroupingClassesOption: RunTests = { valid: [ - // classExpressions option + interface + alphabetically --> Default order applies + // classes option + interface + alphabetically --> Default order applies { code: ` interface Foo { - [a: string] : number; + [a: string]: number; - () : Baz; + (): Baz; - c : x; - b : x; - a : x; + c: x; + b: x; + a: x; - new () : Bar; + new (): Bar; - c() : void; - b() : void; - a() : void; + c(): void; + b(): void; + a(): void; } - `, - options: [{ classExpressions: { order: 'alphabetically' } }], + `, + options: [{ classes: { order: 'alphabetically' } }], }, - // classExpressions option + type literal + alphabetically --> Default order applies + // classes option + type literal + alphabetically --> Default order applies { code: ` type Foo = { - [a: string] : number; + [a: string]: number; - () : Baz; + (): Baz; - c : x; - b : x; - a : x; + c: x; + b: x; + a: x; - new () : Bar; + new (): Bar; - c() : void; - b() : void; - a() : void; -} - `, - options: [{ classExpressions: { order: 'alphabetically' } }], + c(): void; + b(): void; + a(): void; +}; + `, + options: [{ classes: { order: 'alphabetically' } }], }, - // classExpressions option + class + alphabetically --> Default order applies + // classes option + class + default order + alphabetically { code: ` class Foo { public static a: string; - protected static b: string = ""; - private static c: string = ""; + protected static b: string = ''; + private static c: string = ''; - public d: string = ""; - protected e: string = ""; - private f: string = ""; + public d: string = ''; + protected e: string = ''; + private f: string = ''; constructor() {} } - `, - options: [{ classExpressions: { order: 'alphabetically' } }], + `, + options: [ + { classes: { memberTypes: defaultOrder, order: 'alphabetically' } }, + ], }, - // classExpressions option + class expression + default order + alphabetically + // classes option + class + custom order + alphabetically { code: ` -const foo = class Foo { - public static a: string; - protected static b: string = ""; - private static c: string = ""; +class Foo { + constructor() {} - public d: string = ""; - protected e: string = ""; - private f: string = ""; + public d: string = ''; + protected e: string = ''; + private f: string = ''; - constructor() {} + public static a: string; + protected static b: string = ''; + private static c: string = ''; } - `, + `, options: [ { - classExpressions: { - memberTypes: defaultOrder, + classes: { + memberTypes: ['constructor', 'instance-field', 'static-field'], order: 'alphabetically', }, }, ], }, - // classExpressions option + class expression + custom order + alphabetically + // classes option + class expression + alphabetically --> Default order applies { code: ` const foo = class Foo { - constructor() {} + public static a: string; + protected static b: string = ''; + private static c: string = ''; - public d: string = ""; - protected e: string = ""; - private f: string = ""; + public d: string = ''; + protected e: string = ''; + private f: string = ''; - public static a: string; - protected static b: string = ""; - private static c: string = ""; -} - `, - options: [ - { - classExpressions: { - memberTypes: ['constructor', 'instance-field', 'static-field'], - order: 'alphabetically', - }, - }, - ], + constructor() {} +}; + `, + options: [{ classes: { order: 'alphabetically' } }], }, ], invalid: [ - // default option + class expression + wrong order within group and wrong group order + alphabetically + // default option + class + wrong order within group and wrong group order + alphabetically { code: ` -const foo = class Foo { - public static c: string = ""; - public static b: string = ""; +class Foo { + public static c: string = ''; + public static b: string = ''; public static a: string; constructor() {} - public d: string = ""; + public d: string = ''; } - `, + `, options: [ { default: { memberTypes: defaultOrder, order: 'alphabetically' } }, ], @@ -2315,30 +2153,172 @@ const foo = class Foo { ], }; -const sortedWithGroupingInterfacesOption: TSESLint.RunTests< - MessageIds, - Options -> = { +const sortedWithGroupingClassExpressionsOption: RunTests = + { + valid: [ + // classExpressions option + interface + alphabetically --> Default order applies + { + code: ` +interface Foo { + [a: string]: number; + + (): Baz; + + c: x; + b: x; + a: x; + + new (): Bar; + + c(): void; + b(): void; + a(): void; +} + `, + options: [{ classExpressions: { order: 'alphabetically' } }], + }, + + // classExpressions option + type literal + alphabetically --> Default order applies + { + code: ` +type Foo = { + [a: string]: number; + + (): Baz; + + c: x; + b: x; + a: x; + + new (): Bar; + + c(): void; + b(): void; + a(): void; +}; + `, + options: [{ classExpressions: { order: 'alphabetically' } }], + }, + + // classExpressions option + class + alphabetically --> Default order applies + { + code: ` +class Foo { + public static a: string; + protected static b: string = ''; + private static c: string = ''; + + public d: string = ''; + protected e: string = ''; + private f: string = ''; + + constructor() {} +} + `, + options: [{ classExpressions: { order: 'alphabetically' } }], + }, + + // classExpressions option + class expression + default order + alphabetically + { + code: ` +const foo = class Foo { + public static a: string; + protected static b: string = ''; + private static c: string = ''; + + public d: string = ''; + protected e: string = ''; + private f: string = ''; + + constructor() {} +}; + `, + options: [ + { + classExpressions: { + memberTypes: defaultOrder, + order: 'alphabetically', + }, + }, + ], + }, + + // classExpressions option + class expression + custom order + alphabetically + { + code: ` +const foo = class Foo { + constructor() {} + + public d: string = ''; + protected e: string = ''; + private f: string = ''; + + public static a: string; + protected static b: string = ''; + private static c: string = ''; +}; + `, + options: [ + { + classExpressions: { + memberTypes: ['constructor', 'instance-field', 'static-field'], + order: 'alphabetically', + }, + }, + ], + }, + ], + invalid: [ + // default option + class expression + wrong order within group and wrong group order + alphabetically + { + code: ` +const foo = class Foo { + public static c: string = ''; + public static b: string = ''; + public static a: string; + + constructor() {} + + public d: string = ''; +}; + `, + options: [ + { default: { memberTypes: defaultOrder, order: 'alphabetically' } }, + ], + errors: [ + { + messageId: 'incorrectGroupOrder', + data: { + name: 'd', + rank: 'public constructor', + }, + }, + ], + }, + ], + }; + +const sortedWithGroupingInterfacesOption: RunTests = { valid: [ // interfaces option + interface + default order + alphabetically { code: ` interface Foo { - [a: string] : number; + [a: string]: number; - a : x; - b : x; - c : x; + a: x; + b: x; + c: x; - a() : void; - b() : void; - c() : void; + a(): void; + b(): void; + c(): void; - new () : Bar; + new (): Bar; - () : Baz; + (): Baz; } - `, + `, options: [ { interfaces: { @@ -2353,20 +2333,20 @@ interface Foo { { code: ` interface Foo { - new () : Bar; + new (): Bar; - a() : void; - b() : void; - c() : void; + a(): void; + b(): void; + c(): void; - a : x; - b : x; - c : x; + a: x; + b: x; + c: x; - [a: string] : number; - () : Baz; + [a: string]: number; + (): Baz; } - `, + `, options: [ { interfaces: { @@ -2381,21 +2361,21 @@ interface Foo { { code: ` type Foo = { - [a: string] : number; + [a: string]: number; - () : Baz; + (): Baz; - c : x; - b : x; - a : x; + c: x; + b: x; + a: x; - new () : Bar; + new (): Bar; - c() : void; - b() : void; - a() : void; -} - `, + c(): void; + b(): void; + a(): void; +}; + `, options: [{ interfaces: { order: 'alphabetically' } }], }, @@ -2404,16 +2384,16 @@ type Foo = { code: ` class Foo { public static a: string; - protected static b: string = ""; - private static c: string = ""; + protected static b: string = ''; + private static c: string = ''; - public d: string = ""; - protected e: string = ""; - private f: string = ""; + public d: string = ''; + protected e: string = ''; + private f: string = ''; constructor() {} } - `, + `, options: [{ interfaces: { order: 'alphabetically' } }], }, @@ -2422,16 +2402,16 @@ class Foo { code: ` const foo = class Foo { public static a: string; - protected static b: string = ""; - private static c: string = ""; + protected static b: string = ''; + private static c: string = ''; - public d: string = ""; - protected e: string = ""; - private f: string = ""; + public d: string = ''; + protected e: string = ''; + private f: string = ''; constructor() {} -} - `, +}; + `, options: [{ interfaces: { order: 'alphabetically' } }], }, ], @@ -2440,21 +2420,21 @@ const foo = class Foo { { code: ` interface Foo { - [a: string] : number; + [a: string]: number; - a : x; - b : x; - c : x; + a: x; + b: x; + c: x; - c() : void; - b() : void; - a() : void; + c(): void; + b(): void; + a(): void; - () : Baz; + (): Baz; - new () : Bar; + new (): Bar; } - `, + `, options: [ { default: { memberTypes: defaultOrder, order: 'alphabetically' } }, ], @@ -2478,30 +2458,27 @@ interface Foo { ], }; -const sortedWithGroupingTypeLiteralsOption: TSESLint.RunTests< - MessageIds, - Options -> = { +const sortedWithGroupingTypeLiteralsOption: RunTests = { valid: [ // typeLiterals option + interface + alphabetically --> Default order applies { code: ` interface Foo { - [a: string] : number; + [a: string]: number; - () : Baz; + (): Baz; - c : x; - b : x; - a : x; + c: x; + b: x; + a: x; - new () : Bar; + new (): Bar; - c() : void; - b() : void; - a() : void; + c(): void; + b(): void; + a(): void; } - `, + `, options: [{ typeLiterals: { order: 'alphabetically' } }], }, @@ -2509,21 +2486,21 @@ interface Foo { { code: ` type Foo = { - [a: string] : number; + [a: string]: number; - a : x; - b : x; - c : x; + a: x; + b: x; + c: x; - a() : void; - b() : void; - c() : void; + a(): void; + b(): void; + c(): void; - new () : Bar; + new (): Bar; - () : Baz; -} - `, + (): Baz; +}; + `, options: [ { typeLiterals: { @@ -2538,20 +2515,20 @@ type Foo = { { code: ` type Foo = { - new () : Bar; + new (): Bar; - a() : void; - b() : void; - c() : void; + a(): void; + b(): void; + c(): void; - a : x; - b : x; - c : x; + a: x; + b: x; + c: x; - [a: string] : number; - () : Baz; -} - `, + [a: string]: number; + (): Baz; +}; + `, options: [ { typeLiterals: { @@ -2567,16 +2544,16 @@ type Foo = { code: ` class Foo { public static a: string; - protected static b: string = ""; - private static c: string = ""; + protected static b: string = ''; + private static c: string = ''; - public d: string = ""; - protected e: string = ""; - private f: string = ""; + public d: string = ''; + protected e: string = ''; + private f: string = ''; constructor() {} } - `, + `, options: [{ typeLiterals: { order: 'alphabetically' } }], }, @@ -2585,16 +2562,16 @@ class Foo { code: ` const foo = class Foo { public static a: string; - protected static b: string = ""; - private static c: string = ""; + protected static b: string = ''; + private static c: string = ''; - public d: string = ""; - protected e: string = ""; - private f: string = ""; + public d: string = ''; + protected e: string = ''; + private f: string = ''; constructor() {} -} - `, +}; + `, options: [{ typeLiterals: { order: 'alphabetically' } }], }, ], @@ -2603,21 +2580,21 @@ const foo = class Foo { { code: ` type Foo = { - [a: string] : number; + [a: string]: number; - a : x; - b : x; - c : x; + a: x; + b: x; + c: x; - c() : void; - b() : void; - a() : void; + c(): void; + b(): void; + a(): void; - () : Baz; + (): Baz; - new () : Bar; -} - `, + new (): Bar; +}; + `, options: [ { default: { memberTypes: defaultOrder, order: 'alphabetically' } }, ], @@ -2667,7 +2644,7 @@ class Foo { ], }; -const sortedWithoutGrouping = { +const sortedWithoutGrouping: RunTests = { valid: [ ...sortedWithoutGroupingDefaultOption.valid, ...sortedWithoutGroupingClassesOption.valid, @@ -2684,7 +2661,7 @@ const sortedWithoutGrouping = { ], }; -const sortedWithGrouping = { +const sortedWithGrouping: RunTests = { valid: [ ...sortedWithGroupingDefaultOption.valid, ...sortedWithGroupingClassesOption.valid, From 2d9a33cfb2db53d76246a59253daaf2abb19ee57 Mon Sep 17 00:00:00 2001 From: Sviatoslav Miller Date: Thu, 3 Nov 2022 01:42:34 +0300 Subject: [PATCH 089/193] fix(eslint-plugin): isTypeReadonly stack overflow (#5875) (#5876) Co-authored-by: Josh Goldberg --- .../prefer-readonly-parameter-types.test.ts | 21 ++++++++++++++++++ packages/type-utils/src/isTypeReadonly.ts | 2 +- .../type-utils/tests/isTypeReadonly.test.ts | 22 ++++++++++++++++++- 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/packages/eslint-plugin/tests/rules/prefer-readonly-parameter-types.test.ts b/packages/eslint-plugin/tests/rules/prefer-readonly-parameter-types.test.ts index b6b499b0efd..7cd0527b2cf 100644 --- a/packages/eslint-plugin/tests/rules/prefer-readonly-parameter-types.test.ts +++ b/packages/eslint-plugin/tests/rules/prefer-readonly-parameter-types.test.ts @@ -380,6 +380,27 @@ ruleTester.run('prefer-readonly-parameter-types', rule, { }, ], }, + { + name: 'circular readonly types (Bug: #5875)', + code: ` + interface Obj1 { + readonly [K: string]: Obj2; + } + + interface Obj2 { + readonly [K: string]: Obj1; + } + + function foo(event: Obj1): void {} + `, + options: [ + { + checkParameterProperties: true, + ignoreInferredTypes: false, + ...readonlynessOptionsDefaults, + }, + ], + }, ], invalid: [ // arrays diff --git a/packages/type-utils/src/isTypeReadonly.ts b/packages/type-utils/src/isTypeReadonly.ts index cac7690ea3a..7ba2b300089 100644 --- a/packages/type-utils/src/isTypeReadonly.ts +++ b/packages/type-utils/src/isTypeReadonly.ts @@ -113,7 +113,7 @@ function isTypeReadonlyObject( return Readonlyness.Mutable; } - if (indexInfo.type === type) { + if (indexInfo.type === type || seenTypes.has(indexInfo.type)) { return Readonlyness.Readonly; } diff --git a/packages/type-utils/tests/isTypeReadonly.test.ts b/packages/type-utils/tests/isTypeReadonly.test.ts index 77d9f65b2f9..382091a2375 100644 --- a/packages/type-utils/tests/isTypeReadonly.test.ts +++ b/packages/type-utils/tests/isTypeReadonly.test.ts @@ -139,6 +139,11 @@ describe('isTypeReadonly', () => { it('handles circular readonly PropertySignature inside a readonly IndexSignature', () => runTests('interface Test { readonly [key: string]: Test };')); + + it('handles circular readonly PropertySignature inside interdependent objects', () => + runTests( + 'interface Test1 { readonly [key: string]: Test } interface Test { readonly [key: string]: Test1 }', + )); }); describe('is not readonly', () => { @@ -156,8 +161,23 @@ describe('isTypeReadonly', () => { describe('is not readonly circular', () => { const runTests = runTestIsNotReadonly; - it('handles circular mutable PropertySignature inside a readonly IndexSignature', () => + it('handles circular mutable PropertySignature', () => runTests('interface Test { [key: string]: Test };')); + + it.each([ + [ + 'interface Test1 { [key: string]: Test } interface Test { readonly [key: string]: Test1 }', + ], + [ + 'interface Test1 { readonly [key: string]: Test } interface Test { [key: string]: Test1 }', + ], + [ + 'interface Test1 { [key: string]: Test } interface Test { [key: string]: Test1 }', + ], + ])( + 'handles circular mutable PropertySignature inside interdependent objects', + runTests, + ); }); }); From 9c130ccbb05935d0969af6a97b7fb590abdf83d9 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Thu, 3 Nov 2022 13:43:35 +0000 Subject: [PATCH 090/193] docs: add maintainer guide (take two) (#5874) * docs: add maintainer guide * Went over docs again * Also updated .github/replies.yml * Added docs/MAITENANCE.md too * Apply suggestions from code review Co-authored-by: Joshua Chen * Tweaked issues ordering and intro * Split up releases and versions; reworked * Apply suggestions from code review Co-authored-by: Brad Zacher * Update docs/maintenance/RELEASES.md * Ran Prettier on RELEASES.md * Update docs/development/architecture/PACKAGES.md Co-authored-by: Brad Zacher Co-authored-by: Joshua Chen --- .cspell.json | 1 + .github/replies.yml | 19 ++++ docs/MAINTENANCE.md | 12 +++ docs/maintenance/ISSUES.md | 103 ++++++++++++++++++++++ docs/maintenance/RELEASES.md | 88 ++++++++++++++++++ docs/maintenance/VERSIONING.md | 72 +++++++++++++++ packages/website/sidebars/sidebar.base.js | 14 +++ 7 files changed, 309 insertions(+) create mode 100644 docs/MAINTENANCE.md create mode 100644 docs/maintenance/ISSUES.md create mode 100644 docs/maintenance/RELEASES.md create mode 100644 docs/maintenance/VERSIONING.md diff --git a/.cspell.json b/.cspell.json index c9be4caedb7..f6bb6c5cd87 100644 --- a/.cspell.json +++ b/.cspell.json @@ -106,6 +106,7 @@ "transpiled", "transpiles", "transpiling", + "triaging", "tsconfigs", "tsutils", "tsvfs", diff --git a/.github/replies.yml b/.github/replies.yml index 0522dfc445c..64f02ca54ed 100644 --- a/.github/replies.yml +++ b/.github/replies.yml @@ -17,6 +17,25 @@ replies: \ If you need it sooner, please try the `canary` tag on NPM. name: Fix Has Been Merged + - body: | + Thanks for the report @!\ + This might be a valid issue, but we can't tell because you haven't filled in enough information.\ + Please fill in the rest of the issue template so we can take a look.\ + Thanks! + name: Needs More Info + - body: | + Thanks for the report @!\ + I can't reproduce the issue using the repository you provided.\ + Could you please comment with instructions on how to reproduce the issue?\ + Thanks! + name: Needs Full Reproduction + - body: | + Thanks for the report @!\ + I can't reproduce the issue using the code you provided.\ + Could you please create an isolated reproduction in our playground (https://typescript-eslint.io/play) and comment back when you've got one?\ + We prefer an isolated reproduction so that we as volunteer maintainers can quickly reproduce the issue and more easily find the cause.\ + Thanks! + name: Needs Playground Reproduction - body: | With any issue opened in this project — it either has visible progress in the form of an attached PR, or it has no progress.\ \ diff --git a/docs/MAINTENANCE.md b/docs/MAINTENANCE.md new file mode 100644 index 00000000000..75f1030c015 --- /dev/null +++ b/docs/MAINTENANCE.md @@ -0,0 +1,12 @@ +--- +id: maintenance +sidebar_label: Maintenance Guide +title: Maintenance Guide +--- + +This is the maintainers guide to working on typescript-eslint. +It's intended for use by contributors who have been given access to at least triage issues and pull requests. +We keep it in the open for visibility into our processes. + +> If you're reading this as a new maintainer: welcome! +> We're happy to have you! ❤️‍🔥 diff --git a/docs/maintenance/ISSUES.md b/docs/maintenance/ISSUES.md new file mode 100644 index 00000000000..55d1cee6e62 --- /dev/null +++ b/docs/maintenance/ISSUES.md @@ -0,0 +1,103 @@ +--- +id: issues +sidebar_label: Issue Management +title: Issue Management +--- + +This document serves as a guide for how you might manage issues, also known as issue triaging. + +Use your best judgement when triaging issues, and most of all remember to be **kind, friendly, and encouraging** when responding to users. +Many users are new to open source and/or typed linting. +It's imperative we give them a positive, uplifting experience. + +:::tip +If you're ever unsure on any part of issue management, don't hesitate to loop in a maintainer that has more context to help! +::: + +## Issue Flow + +:::note +We include a set of common responses to issues in [`.github/replies.yml`](https://github.com/typescript-eslint/typescript-eslint/blob/main/.github/replies.yml), intended to be used with the [Refined Saved Replies](https://github.com/JoshuaKGoldberg/refined-saved-replies) extension. +Don't treat these as exact responses you must use: they're just a starting copy+paste helper. +Please do adopt your specific responses to your personal tone and to match the thread for non-straightforward issues. +::: + +[Issues pending triage](https://github.com/typescript-eslint/typescript-eslint/issues?q=is%3Aopen+is%3Aissue+label%3Atriage) are searchable the `triage` label. +That label is added automatically when a new issue is created. +Most issues go through the following review flow when created or updated: + +1. A maintainer ensures the issue is valid: + - If the poster didn't fill out an appropriate template with enough information: + - Add the `please fill out the template` and `awaiting response` labels + - Ask the poster for more information using a _Needs More Info_ response + - If it's a duplicate of an issue that already exists: + - Add the `duplicate` label and remove the `bug` label + - If it's an obvious duplicate, post a _Clearly Duplicate Issue_ response + - If it's not an obvious duplicate, link to the existing issue and explain why + - If the code is working as intended: + - Add the `working as intended` label and remove the `bug` and `triage` labels + - If the behavior is due to the user doing something wrong, such as an incorrect config: + - Add the `fix: user error` label + - [This issue search has some examples of closing comments](https://github.com/typescript-eslint/typescript-eslint/issues?q=is%3Aissue+sort%3Aupdated-desc+label%3A%22fix%3A+user+error%22+is%3Aclosed) + - If the behavior is otherwise expected, [this issue search has some examples of closing comments](https://github.com/typescript-eslint/typescript-eslint/issues?q=is%3Aissue+sort%3Aupdated-desc+label%3A%22working+as+intended%22+-label%3A%22fix%3A+user+error%22+is%3Aclosed+) + - You needn't go into too much detail in your comment - just enough to explain it +2. If the report is valid, add the `accepting prs` label and remove the `triage` label +3. If you know the rough steps for a fix, consider writing a comment with links to codebase to help someone put together a fix +4. If you think that the fix is relatively straightforward, consider also adding the `good first issue` label + +Whenever an issue is waiting for the reporter to provide more information, it should be given the `awaiting response` label. +When more information is provided: + +- If you have time to go through the triage flow again, do so +- If you don't have time, add the `triage` label and remove the `awaiting response` label + +:::tip +If your link is both a "permalink" (includes a commit hash instead of a branch name) and has a line number/line range then GitHub will embed the code in your comment. +When viewing a file in GitHub pressing `y` will update the URL to a "permalink" with the current commit hash, then you can select the relevant lines and paste that URL into the comment. +::: + +### Determining Whether Code is Working As Intended + +As you become more familiar with the codebase and how everything works, this will be easier to do intuitively, but to begin with, this will likely involve investigating the documentation, code, and tests to determine if it's a bug or working as intended. +In general, if there is a passing test or documented example that is the same as or similar to the repro code — that indicates it's working as intended. +If you can't find anything that matches, use your best judgement based on the spirit of the code. + +### Looking for Duplicates + +It's worth noting that, occasionally, a user will intentionally raise a duplicate issue because they feel the original issue was closed when it shouldn't have been. +If this is the case, you should read the original issue to gather context, understand the reason for it being closed, and determine if the new issue raises any new or relevant point that requires addressing. + +## Skipping Steps + +As you become more familiar with the codebase and how it's supposed to behave you'll be able to skip steps or do things out of order as you see fit. +For example, you may be able to identify if a bug report is "working as intended", or you might recognize an issue as a duplicate without having a completely filled-out issue. +In such cases you can forgo the back-and-forth and just skip to the closing steps. + +## Specific Issue Types + +### 🐛 Bug Reports + +#### 🐞 "Simple" Bugs + +A simple bug is a bug that can be reproduced in a single TS file plus an ESLint config (and possibly a TSConfig) - i.e. an issue reproducible on https://typescript-eslint.io/play. +The vast majority of bug reports fall into this category. + +If you cannot reproduce the issue as described using the issue's provided playground reproduction, it has not provided enough information. +Consider using a specific response like the _Needs Playground Reproduction_ response. + +#### 🦟 "Complex" Bugs + +A complex bug is a bug that requires multiple files to reproduce. +This is the rarer case, but does happen when people are using library types or if there are issues when types are imported. + +These bugs should be reported with a link to a GitHub repository that can be checked out to reproduce the issue. +If you cannot reproduce the issue as described using repository's README.md and issue description, it has not provided enough information. +Consider using a specific response like the _Needs Full Reproduction_ response. + +### ✨ Rule Enhancements + +TODO: This will be filled out... soon! + +### 🚀 New Rules + +TODO: This will be filled out... soon! diff --git a/docs/maintenance/RELEASES.md b/docs/maintenance/RELEASES.md new file mode 100644 index 00000000000..211294d488b --- /dev/null +++ b/docs/maintenance/RELEASES.md @@ -0,0 +1,88 @@ +--- +id: releases +sidebar_label: Releases +title: Releases +--- + +## Canary + +We release a canary version for each commit to `main` that passes all required checks. This release is performed automatically by the [`publish_canary_version` step](https://github.com/typescript-eslint/typescript-eslint/blob/5feb2dba9da2bd5e233451b7b0f1c99414b5aef9/.github/workflows/ci.yml#L234-L263). + +This release is goes to the `canary` tag on npm and it is versioned as an incremental canary patch release on top of the current `latest` version. I.e. if the current version is `5.6.1`, then the first canary version will be `5.6.2-alpha.0`, the second `5.6.2-alpha.1`, and so on. + +## Latest + +We release a latest version every Monday at 1pm US Eastern time using the latest commit to `main` at that time. This release is performed automatically by a Github action located in a private repository. This release goes to the standard `latest` tag on npm. + +See the [versioning](#versioning) section below for how the version number is calculated. + +If there have been no commits that impact public-facing packages then a patch-level release shall be released. + +Latest releases shall only ever be "minor" or "patch" releases. + +## Major Releases + +We currently do not have a set schedule around when major releases shall be performed; instead they are done as the need arises. + +We keep a backlog of breaking issues as a milestone on GitHub that is named in the form `${major}.0.0`. +When we do do a major release, we release a release candidate version to the `rc-v${major}` tag on npm for each commit to the major branch. + +### Major Release Steps + +Our releases go through three groups of steps: + +1. [Pre-Release Preparation] +1. [Merging Breaking Changes] +1. [Releasing the Version] + +#### 1. Pre-Release Preparation + +1. Create a milestone by the name of the release [example: [Milestone 6.0.0](https://github.com/typescript-eslint/typescript-eslint/milestone/8)]. +1. If an issue for changes to recommended rule configs doesn't yet exist, create one [example: [Changes to the `recommended` sets for 5.0.0](https://github.com/typescript-eslint/typescript-eslint/issues/5900)]. +1. Add any breaking changes intended for the release to that milestone. +1. Create two new branches off `main` in the project repository (not a personal fork): + - `v${major}` + - `v${major}-canary-auto-release` +1. Raise a PR from `v${major}-canary-auto-release` to `main` modifying the [`ci.yml` workflow](https://github.com/typescript-eslint/typescript-eslint/blob/main/.github/workflows/ci.yml) [example: [chore: add auto-canary release for v6](https://github.com/typescript-eslint/typescript-eslint/pull/5883)]: + - Under `pushes:` at the beginning of the file, add an `- v${major}` list item. + - Add a `publish_canary_version_v${major}` step the same as `publish_canary_version` except: + - Add the condition: `if: github.ref == 'refs/heads/v${major}'`. + - Its publish command should be `npx lerna publish premajor --loglevel=verbose --canary --exact --force-publish --yes --dist-tag rc-v${major}`. + - Merge this into `main` once reviewed and rebase the `v${major}` branch. + +#### 2. Merging Breaking Changes + +1. Send a PR from `v${major}` to `main` [example: [v6.0.0](https://github.com/typescript-eslint/typescript-eslint/pull/5886)]. +1. Change all [breaking change PRs](https://github.com/typescript-eslint/typescript-eslint/issues?q=is%3Aissue+is%3Aopen+label%3A%22breaking+change%22) to target the `v${major}` branch. + - To signify these changes as breaking, the first line of the PR description must read as `BREAKING CHANGE:`, and second line should briefly summarize the changes. + - It is important to note that when merged the commit message must also include `BREAKING CHANGE:` as the first line in order for lerna to recognize it as a breaking change in the release notes. If you miss this it just means more manual work when writing the release documentation. +1. Wait until all required PRs have been merged +1. Let the release wait for **at least 1 week** to allow time for early adopters to help test it and discuss the changes. + - Promote it on the [`@tseslint`](https://twitter.com/tseslint) twitter to get some additional attention. +1. Once discussions have settled, rebase merge the PR on top of `main`. + +:::note +_Non_-breaking changes can be merged to `main` or the major branch. +They don't need any special treatment. +::: + +#### 3. Releasing the Version + +1. Discuss with the maintainers to be ready for an [out-of-band](#out-of-band) release. Doing this manually helps ensure someone is on-hand to action any issues that might arise from the major release. +1. Prepare the release notes. Lerna will automatically generate the release notes on GitHub, however this will be disorganized and unhelpful for users. We need to reorganize the release notes so that breaking changes are placed at the top to make them most visible. If any migrations are required, we must list the steps to make it easy for users. + +- Example release notes: [`v5.0.0`](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v5.0.0), [`v4.0.0`](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v4.0.0), [`v3.0.0`](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v3.0.0) + +1. Finally, tweet the release on the `@tseslint` twitter with a link to the GitHub release. Make sure you include additional information about the highlights of the release! + +## Out-of-Band + +We will do releases "out-of-band" (outside the [latest](#latest) schedule) for rare emergencies. +We assess need on a case-by-case basis though generally an emergency is defined as a critical regression specifically introduced in the latest release. + +These releases are done manually by a maintainer with the required access privileges. + +## Back-Porting Releases + +We **_do not_** back port releases to previously released major/minor versions. +We only ever release forward. diff --git a/docs/maintenance/VERSIONING.md b/docs/maintenance/VERSIONING.md new file mode 100644 index 00000000000..514215d1136 --- /dev/null +++ b/docs/maintenance/VERSIONING.md @@ -0,0 +1,72 @@ +--- +id: versioning +sidebar_label: Versioning +title: Versioning +--- + +We follow [semantic versioning (semver)](https://semver.org). +This page exists to help set guidelines around when what we consider to fall within each of the semver categories. + +All of the packages in this project are published with the same version number to make it easier to coordinate both releases and installations. + +When considering whether a change should be counted as "breaking" we first need to consider what package(s) it impacts. For example breaking changes for the parser packages have a different standard to those for the ESLint plugins. This is because not only do they have _very_ different API surfaces, they also are consumed in very different ways. + +Please note that the lists provided below are non-exhaustive and are intended to serve as examples to help guide maintainers when planning and reviewing changes. + +## Internal packages + +Any packages in this project that are not part of our public API surface (such as `eslint-plugin-internal` or `website`) shall not be considered when calculating new package versions. + +## `ast-spec` and `visitor-keys` + +A change to the AST **_shall_** be considered breaking if it: + +- Removes or renames an existing AST Node. +- Removes or renames an existing property on an AST Node. +- Changes a type in a non-refining way (i.e. `string` to `number`). + +A change to the AST **_shall not_** be considered breaking if it: + +- Adds a new property to the AST. +- Adds a new node type to the AST. +- Adds a new node type to an existing union type. +- Refines a type to be more specific (i.e. `string` to `'literal' | 'union'`). +- Removes a type from a union that was erroneously added and did not match the runtime AST. + +## `eslint-plugin` and `eslint-plugin-tslint` + +A change to the plugins **_shall_** be considered breaking if it will require the user to change their config. More specifically: + +- Removes or renames an option. +- Changes the default option of a rule. +- Changes a rule's schema to be stricter. +- Consumes type information to a rule that did not previously consume it. +- Removes or renames a rule. +- Changes any of the recommended configurations. +- Changes the default behavior of a rule in such a way that causes new reports in a large set of cases in an average codebase. + +A change to the plugins **_shall not_** be considered breaking if it: + +- Adds an option that by default does not remove existing functionality. +- Adds a rule. +- Deprecates a rule. +- Adds additional checks to an existing rule that causes new reports in a small-to-medium set of cases in an average codebase. +- Refactors a rule's code in a way that does not introduce additional reports. +- Changes to a rule's description or other metadata. +- Adds a fixer or suggestion fixer. +- Removes a fixer or suggestion fixer. +- Fixes incorrect behavior in a rule that may or may not introduce additional reports. + +### `parser`, `typescript-estree`, `scope-manager`, `types`, `type-utils`, `utils` + +A change to these packages **_shall_** be considered breaking if it: + +- Changes the API surface in a backwards-incompatible way (remove or rename functions, types, etc). + +A change to these packages **_shall not_** be considered breaking if it: + +- Adds to the API surface (add functions, types, etc). +- Deprecates parts of the API surface. +- Adds **_optional_** arguments to functions or properties to input types. +- Adds additional properties to output types. +- Adds documentation in the form of JSDoc comments. diff --git a/packages/website/sidebars/sidebar.base.js b/packages/website/sidebars/sidebar.base.js index 339ea39e95c..fbdc1f28e6b 100644 --- a/packages/website/sidebars/sidebar.base.js +++ b/packages/website/sidebars/sidebar.base.js @@ -52,5 +52,19 @@ module.exports = { 'development/custom-rules', ], }, + { + collapsible: false, + items: [ + 'maintenance/issues', + 'maintenance/releases', + 'maintenance/versioning', + ], + label: 'Maintenance', + link: { + id: 'maintenance', + type: 'doc', + }, + type: 'category', + }, ], }; From bdb6bed8a37c07a86af0544013b56f6c4f293cf2 Mon Sep 17 00:00:00 2001 From: "typescript-eslint[bot]" <53356952+typescript-eslint[bot]@users.noreply.github.com> Date: Mon, 7 Nov 2022 01:49:59 +0000 Subject: [PATCH 091/193] chore: update sponsors (#5933) Co-authored-by: typescript-eslint[bot] --- packages/website/data/sponsors.json | 80 +++++++++++++++++------------ 1 file changed, 48 insertions(+), 32 deletions(-) diff --git a/packages/website/data/sponsors.json b/packages/website/data/sponsors.json index a4aa0623e04..fd44d68e52b 100644 --- a/packages/website/data/sponsors.json +++ b/packages/website/data/sponsors.json @@ -12,7 +12,7 @@ "image": "https://images.opencollective.com/nx/0efbe42/logo.png", "name": "Nx (by Nrwl)", "tier": "sponsor", - "totalDonations": 525000, + "totalDonations": 550000, "website": "https://nx.dev" }, { @@ -20,7 +20,7 @@ "image": "https://images.opencollective.com/eslint/96b09dc/logo.png", "name": "ESLint", "tier": "sponsor", - "totalDonations": 200000, + "totalDonations": 215000, "website": "https://eslint.org/" }, { @@ -28,7 +28,7 @@ "image": "https://images.opencollective.com/airbnb/d327d66/logo.png", "name": "Airbnb", "tier": "sponsor", - "totalDonations": 135800, + "totalDonations": 140800, "website": "https://www.airbnb.com/" }, { @@ -39,6 +39,14 @@ "totalDonations": 120000, "website": "https://blog.coinbase.com/engineering-and-security/home" }, + { + "id": "n8n.io - n8n GmbH", + "image": "https://images.opencollective.com/n8n/dca2f0c/logo.png", + "name": "n8n.io - n8n GmbH", + "tier": "sponsor", + "totalDonations": 115000, + "website": "https://n8n.io" + }, { "id": "Sentry", "image": "https://images.opencollective.com/sentry/9620d33/logo.png", @@ -47,28 +55,20 @@ "totalDonations": 114800, "website": "https://sentry.io/welcome/" }, - { - "id": "n8n.io - n8n GmbH", - "image": "https://images.opencollective.com/n8n/dca2f0c/logo.png", - "name": "n8n.io - n8n GmbH", - "tier": "sponsor", - "totalDonations": 110000, - "website": "https://n8n.io" - }, { "id": "GitBook", "image": "https://images.opencollective.com/gitbook/d35a8e7/logo.png", "name": "GitBook", "tier": "sponsor", - "totalDonations": 100000, + "totalDonations": 110000, "website": "https://www.gitbook.com" }, { "id": "Codecademy", "image": "https://images.opencollective.com/codecademy/d56a48d/logo.png", "name": "Codecademy", - "tier": "supporter", - "totalDonations": 90000, + "tier": "sponsor", + "totalDonations": 100000, "website": "https://codecademy.com" }, { @@ -87,6 +87,14 @@ "totalDonations": 54000, "website": "https://www.future-processing.com/" }, + { + "id": "Sourcegraph", + "image": "https://images.opencollective.com/sourcegraph/67e40ff/logo.png", + "name": "Sourcegraph", + "tier": "supporter", + "totalDonations": 50000, + "website": "https://about.sourcegraph.com" + }, { "id": "Whitebox", "image": "https://images.opencollective.com/whiteboxinc/ef0d11d/logo.png", @@ -95,14 +103,6 @@ "totalDonations": 40000, "website": "https://whitebox.com" }, - { - "id": "Sourcegraph", - "image": "https://images.opencollective.com/sourcegraph/67e40ff/logo.png", - "name": "Sourcegraph", - "tier": "contributor", - "totalDonations": 40000, - "website": "https://about.sourcegraph.com" - }, { "id": "Monito", "image": "https://images.opencollective.com/monito/50fc878/logo.png", @@ -111,12 +111,20 @@ "totalDonations": 30000, "website": "https://www.monito.com" }, + { + "id": "Codiga", + "image": "https://images.opencollective.com/codiga/1065f9f/logo.png", + "name": "Codiga", + "tier": "contributor", + "totalDonations": 30000, + "website": "https://www.codiga.io" + }, { "id": "STORIS", "image": "https://images.opencollective.com/storis/dfb0e13/logo.png", "name": "STORIS", "tier": "contributor", - "totalDonations": 25500, + "totalDonations": 27000, "website": "https://www.storis.com/" }, { @@ -135,20 +143,12 @@ "totalDonations": 22000, "website": "https://twitter.com/nevir" }, - { - "id": "Codiga", - "image": "https://images.opencollective.com/codiga/1065f9f/logo.png", - "name": "Codiga", - "tier": "contributor", - "totalDonations": 20000, - "website": "https://www.codiga.io" - }, { "id": "David Johnston", "image": "https://images.opencollective.com/blacksheepcode/976d69a/avatar.png", "name": "David Johnston", "tier": "contributor", - "totalDonations": 14500, + "totalDonations": 15000, "website": "https://blacksheepcode.com" }, { @@ -167,6 +167,14 @@ "totalDonations": 10000, "website": "http://gian.xyz" }, + { + "id": "Evil Martians", + "image": "https://images.opencollective.com/evilmartians/707ab4d/logo.png", + "name": "Evil Martians", + "tier": "contributor", + "totalDonations": 10000, + "website": "https://evilmartians.com/" + }, { "id": "The Guardian", "image": "https://images.opencollective.com/gdndevelopers/0b72bf0/logo.png", @@ -175,6 +183,14 @@ "totalDonations": 10000, "website": "https://www.theguardian.com/" }, + { + "id": "Balsa", + "image": "https://images.opencollective.com/balsa/77de498/logo.png", + "name": "Balsa", + "tier": "contributor", + "totalDonations": 10000, + "website": "https://balsa.com" + }, { "id": "Laserhub", "image": "https://images.opencollective.com/laserhub/bae6275/logo.png", From b8b24c211695c00317c93e1da1bf80b6d9c6837c Mon Sep 17 00:00:00 2001 From: "typescript-eslint[bot]" Date: Mon, 7 Nov 2022 17:28:33 +0000 Subject: [PATCH 092/193] chore: publish v5.42.1 --- CHANGELOG.md | 7 +++++++ lerna.json | 2 +- packages/ast-spec/CHANGELOG.md | 6 ++++++ packages/ast-spec/package.json | 2 +- packages/eslint-plugin-internal/CHANGELOG.md | 4 ++++ packages/eslint-plugin-internal/package.json | 8 ++++---- packages/eslint-plugin-tslint/CHANGELOG.md | 4 ++++ packages/eslint-plugin-tslint/package.json | 6 +++--- packages/eslint-plugin/CHANGELOG.md | 6 ++++++ packages/eslint-plugin/package.json | 8 ++++---- packages/experimental-utils/CHANGELOG.md | 4 ++++ packages/experimental-utils/package.json | 4 ++-- packages/parser/CHANGELOG.md | 4 ++++ packages/parser/package.json | 8 ++++---- packages/scope-manager/CHANGELOG.md | 4 ++++ packages/scope-manager/package.json | 8 ++++---- packages/shared-fixtures/CHANGELOG.md | 4 ++++ packages/shared-fixtures/package.json | 2 +- packages/type-utils/CHANGELOG.md | 6 ++++++ packages/type-utils/package.json | 8 ++++---- packages/types/CHANGELOG.md | 4 ++++ packages/types/package.json | 2 +- packages/typescript-estree/CHANGELOG.md | 4 ++++ packages/typescript-estree/package.json | 8 ++++---- packages/utils/CHANGELOG.md | 4 ++++ packages/utils/package.json | 10 +++++----- packages/visitor-keys/CHANGELOG.md | 4 ++++ packages/visitor-keys/package.json | 4 ++-- packages/website-eslint/CHANGELOG.md | 4 ++++ packages/website-eslint/package.json | 16 ++++++++-------- packages/website/CHANGELOG.md | 4 ++++ packages/website/package.json | 8 ++++---- 32 files changed, 125 insertions(+), 52 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f4685ce8dae..c4db2f119aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) + +### Bug Fixes + +- **ast-spec:** correct misnamed ExportNamedDeclaration AST type ([#5913](https://github.com/typescript-eslint/typescript-eslint/issues/5913)) ([e88f4fa](https://github.com/typescript-eslint/typescript-eslint/commit/e88f4fa1d0127ba0ddeff578ec67f2e66a1de68b)) +- **eslint-plugin:** isTypeReadonly stack overflow ([#5875](https://github.com/typescript-eslint/typescript-eslint/issues/5875)) ([#5876](https://github.com/typescript-eslint/typescript-eslint/issues/5876)) ([2d9a33c](https://github.com/typescript-eslint/typescript-eslint/commit/2d9a33cfb2db53d76246a59253daaf2abb19ee57)) + # [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) ### Bug Fixes diff --git a/lerna.json b/lerna.json index 47974603d99..0b0cd5d3c7d 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "5.42.0", + "version": "5.42.1", "npmClient": "yarn", "useWorkspaces": true, "stream": true diff --git a/packages/ast-spec/CHANGELOG.md b/packages/ast-spec/CHANGELOG.md index 4b069d345df..12b5e0818ea 100644 --- a/packages/ast-spec/CHANGELOG.md +++ b/packages/ast-spec/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) + +### Bug Fixes + +- **ast-spec:** correct misnamed ExportNamedDeclaration AST type ([#5913](https://github.com/typescript-eslint/typescript-eslint/issues/5913)) ([e88f4fa](https://github.com/typescript-eslint/typescript-eslint/commit/e88f4fa1d0127ba0ddeff578ec67f2e66a1de68b)) + # [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) ### Bug Fixes diff --git a/packages/ast-spec/package.json b/packages/ast-spec/package.json index 4b35b75dff2..bc441599d3a 100644 --- a/packages/ast-spec/package.json +++ b/packages/ast-spec/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/ast-spec", - "version": "5.42.0", + "version": "5.42.1", "description": "TypeScript-ESTree AST spec", "private": true, "keywords": [ diff --git a/packages/eslint-plugin-internal/CHANGELOG.md b/packages/eslint-plugin-internal/CHANGELOG.md index 150635d9f22..52726f2a2fa 100644 --- a/packages/eslint-plugin-internal/CHANGELOG.md +++ b/packages/eslint-plugin-internal/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) + +**Note:** Version bump only for package @typescript-eslint/eslint-plugin-internal + # [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) **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 1603397279a..899b0c144f9 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": "5.42.0", + "version": "5.42.1", "private": true, "main": "dist/index.js", "scripts": { @@ -14,9 +14,9 @@ }, "dependencies": { "@types/prettier": "*", - "@typescript-eslint/scope-manager": "5.42.0", - "@typescript-eslint/type-utils": "5.42.0", - "@typescript-eslint/utils": "5.42.0", + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/type-utils": "5.42.1", + "@typescript-eslint/utils": "5.42.1", "prettier": "*" } } diff --git a/packages/eslint-plugin-tslint/CHANGELOG.md b/packages/eslint-plugin-tslint/CHANGELOG.md index 758874fd110..105df78c12f 100644 --- a/packages/eslint-plugin-tslint/CHANGELOG.md +++ b/packages/eslint-plugin-tslint/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) + +**Note:** Version bump only for package @typescript-eslint/eslint-plugin-tslint + # [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) **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 feeedacebe6..143cda6b820 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": "5.42.0", + "version": "5.42.1", "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/utils": "5.42.0", + "@typescript-eslint/utils": "5.42.1", "lodash": "^4.17.21" }, "peerDependencies": { @@ -48,6 +48,6 @@ }, "devDependencies": { "@types/lodash": "*", - "@typescript-eslint/parser": "5.42.0" + "@typescript-eslint/parser": "5.42.1" } } diff --git a/packages/eslint-plugin/CHANGELOG.md b/packages/eslint-plugin/CHANGELOG.md index 609763b480e..8c5ef968f8a 100644 --- a/packages/eslint-plugin/CHANGELOG.md +++ b/packages/eslint-plugin/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) + +### Bug Fixes + +- **eslint-plugin:** isTypeReadonly stack overflow ([#5875](https://github.com/typescript-eslint/typescript-eslint/issues/5875)) ([#5876](https://github.com/typescript-eslint/typescript-eslint/issues/5876)) ([2d9a33c](https://github.com/typescript-eslint/typescript-eslint/commit/2d9a33cfb2db53d76246a59253daaf2abb19ee57)) + # [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) ### Bug Fixes diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index f3afe646a16..baf09fbe480 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/eslint-plugin", - "version": "5.42.0", + "version": "5.42.1", "description": "TypeScript plugin for ESLint", "keywords": [ "eslint", @@ -44,9 +44,9 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/scope-manager": "5.42.0", - "@typescript-eslint/type-utils": "5.42.0", - "@typescript-eslint/utils": "5.42.0", + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/type-utils": "5.42.1", + "@typescript-eslint/utils": "5.42.1", "debug": "^4.3.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", diff --git a/packages/experimental-utils/CHANGELOG.md b/packages/experimental-utils/CHANGELOG.md index 7334d6b80b4..90849052a8b 100644 --- a/packages/experimental-utils/CHANGELOG.md +++ b/packages/experimental-utils/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) + +**Note:** Version bump only for package @typescript-eslint/experimental-utils + # [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) **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 618afe32e04..a8beecad680 100644 --- a/packages/experimental-utils/package.json +++ b/packages/experimental-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/experimental-utils", - "version": "5.42.0", + "version": "5.42.1", "description": "(Experimental) Utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -38,7 +38,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/utils": "5.42.0" + "@typescript-eslint/utils": "5.42.1" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" diff --git a/packages/parser/CHANGELOG.md b/packages/parser/CHANGELOG.md index 689b11e8227..f289c94422c 100644 --- a/packages/parser/CHANGELOG.md +++ b/packages/parser/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) + +**Note:** Version bump only for package @typescript-eslint/parser + # [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) ### Features diff --git a/packages/parser/package.json b/packages/parser/package.json index 8ef9a0cf359..3cab6296e24 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/parser", - "version": "5.42.0", + "version": "5.42.1", "description": "An ESLint custom parser which leverages TypeScript ESTree", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -45,9 +45,9 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "dependencies": { - "@typescript-eslint/scope-manager": "5.42.0", - "@typescript-eslint/types": "5.42.0", - "@typescript-eslint/typescript-estree": "5.42.0", + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/typescript-estree": "5.42.1", "debug": "^4.3.4" }, "devDependencies": { diff --git a/packages/scope-manager/CHANGELOG.md b/packages/scope-manager/CHANGELOG.md index a4601cd80b3..a05c850fb59 100644 --- a/packages/scope-manager/CHANGELOG.md +++ b/packages/scope-manager/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) + +**Note:** Version bump only for package @typescript-eslint/scope-manager + # [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) ### Features diff --git a/packages/scope-manager/package.json b/packages/scope-manager/package.json index 34ffe2f86e9..805f5263089 100644 --- a/packages/scope-manager/package.json +++ b/packages/scope-manager/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/scope-manager", - "version": "5.42.0", + "version": "5.42.1", "description": "TypeScript scope analyser for ESLint", "keywords": [ "eslint", @@ -38,12 +38,12 @@ "typecheck": "cd ../../ && nx typecheck @typescript-eslint/scope-manager" }, "dependencies": { - "@typescript-eslint/types": "5.42.0", - "@typescript-eslint/visitor-keys": "5.42.0" + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1" }, "devDependencies": { "@types/glob": "*", - "@typescript-eslint/typescript-estree": "5.42.0", + "@typescript-eslint/typescript-estree": "5.42.1", "glob": "*", "jest-specific-snapshot": "*", "make-dir": "*", diff --git a/packages/shared-fixtures/CHANGELOG.md b/packages/shared-fixtures/CHANGELOG.md index 6011551b73e..ab596d7e657 100644 --- a/packages/shared-fixtures/CHANGELOG.md +++ b/packages/shared-fixtures/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) + +**Note:** Version bump only for package @typescript-eslint/shared-fixtures + # [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) **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 5c8bb352ba3..ca455a0baa7 100644 --- a/packages/shared-fixtures/package.json +++ b/packages/shared-fixtures/package.json @@ -1,5 +1,5 @@ { "name": "@typescript-eslint/shared-fixtures", - "version": "5.42.0", + "version": "5.42.1", "private": true } diff --git a/packages/type-utils/CHANGELOG.md b/packages/type-utils/CHANGELOG.md index 09af50ebb31..05d63922d7b 100644 --- a/packages/type-utils/CHANGELOG.md +++ b/packages/type-utils/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) + +### Bug Fixes + +- **eslint-plugin:** isTypeReadonly stack overflow ([#5875](https://github.com/typescript-eslint/typescript-eslint/issues/5875)) ([#5876](https://github.com/typescript-eslint/typescript-eslint/issues/5876)) ([2d9a33c](https://github.com/typescript-eslint/typescript-eslint/commit/2d9a33cfb2db53d76246a59253daaf2abb19ee57)) + # [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) **Note:** Version bump only for package @typescript-eslint/type-utils diff --git a/packages/type-utils/package.json b/packages/type-utils/package.json index 6150b2d27c9..d7c59969f23 100644 --- a/packages/type-utils/package.json +++ b/packages/type-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/type-utils", - "version": "5.42.0", + "version": "5.42.1", "description": "Type utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -39,13 +39,13 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/typescript-estree": "5.42.0", - "@typescript-eslint/utils": "5.42.0", + "@typescript-eslint/typescript-estree": "5.42.1", + "@typescript-eslint/utils": "5.42.1", "debug": "^4.3.4", "tsutils": "^3.21.0" }, "devDependencies": { - "@typescript-eslint/parser": "5.42.0", + "@typescript-eslint/parser": "5.42.1", "typescript": "*" }, "peerDependencies": { diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index 48a98e9a16f..e40007997a1 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) + +**Note:** Version bump only for package @typescript-eslint/types + # [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) **Note:** Version bump only for package @typescript-eslint/types diff --git a/packages/types/package.json b/packages/types/package.json index d2347b6a48c..8d07f4e7f4c 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/types", - "version": "5.42.0", + "version": "5.42.1", "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 78cf8e7aefc..157724f1c61 100644 --- a/packages/typescript-estree/CHANGELOG.md +++ b/packages/typescript-estree/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) + +**Note:** Version bump only for package @typescript-eslint/typescript-estree + # [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) ### Bug Fixes diff --git a/packages/typescript-estree/package.json b/packages/typescript-estree/package.json index 1df5908ca03..ded0c0f77d6 100644 --- a/packages/typescript-estree/package.json +++ b/packages/typescript-estree/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/typescript-estree", - "version": "5.42.0", + "version": "5.42.1", "description": "A parser that converts TypeScript source code into an ESTree compatible form", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -42,8 +42,8 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "5.42.0", - "@typescript-eslint/visitor-keys": "5.42.0", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -59,7 +59,7 @@ "@types/is-glob": "*", "@types/semver": "*", "@types/tmp": "*", - "@typescript-eslint/shared-fixtures": "5.42.0", + "@typescript-eslint/shared-fixtures": "5.42.1", "glob": "*", "jest-specific-snapshot": "*", "make-dir": "*", diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md index 97a2797ea8a..0f90a7ba84d 100644 --- a/packages/utils/CHANGELOG.md +++ b/packages/utils/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) + +**Note:** Version bump only for package @typescript-eslint/utils + # [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) ### Features diff --git a/packages/utils/package.json b/packages/utils/package.json index 2de743ab01d..6fce0515843 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/utils", - "version": "5.42.0", + "version": "5.42.1", "description": "Utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -41,9 +41,9 @@ "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.42.0", - "@typescript-eslint/types": "5.42.0", - "@typescript-eslint/typescript-estree": "5.42.0", + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/typescript-estree": "5.42.1", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -52,7 +52,7 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "devDependencies": { - "@typescript-eslint/parser": "5.42.0", + "@typescript-eslint/parser": "5.42.1", "typescript": "*" }, "funding": { diff --git a/packages/visitor-keys/CHANGELOG.md b/packages/visitor-keys/CHANGELOG.md index 21700ddd1a3..c3f21858ae0 100644 --- a/packages/visitor-keys/CHANGELOG.md +++ b/packages/visitor-keys/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) + +**Note:** Version bump only for package @typescript-eslint/visitor-keys + # [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) **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 2068a094820..285fb30b312 100644 --- a/packages/visitor-keys/package.json +++ b/packages/visitor-keys/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/visitor-keys", - "version": "5.42.0", + "version": "5.42.1", "description": "Visitor keys used to help traverse the TypeScript-ESTree AST", "keywords": [ "eslint", @@ -39,7 +39,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/types": "5.42.1", "eslint-visitor-keys": "^3.3.0" }, "devDependencies": { diff --git a/packages/website-eslint/CHANGELOG.md b/packages/website-eslint/CHANGELOG.md index 5c65303053e..08eac0b5451 100644 --- a/packages/website-eslint/CHANGELOG.md +++ b/packages/website-eslint/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) + +**Note:** Version bump only for package @typescript-eslint/website-eslint + # [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) **Note:** Version bump only for package @typescript-eslint/website-eslint diff --git a/packages/website-eslint/package.json b/packages/website-eslint/package.json index 5384c756758..7f0d3551d71 100644 --- a/packages/website-eslint/package.json +++ b/packages/website-eslint/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/website-eslint", - "version": "5.42.0", + "version": "5.42.1", "private": true, "description": "ESLint which works in browsers.", "engines": { @@ -16,19 +16,19 @@ "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore" }, "dependencies": { - "@typescript-eslint/types": "5.42.0", - "@typescript-eslint/utils": "5.42.0" + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/utils": "5.42.1" }, "devDependencies": { "@rollup/plugin-commonjs": "^23.0.0", "@rollup/plugin-json": "^5.0.0", "@rollup/plugin-node-resolve": "^15.0.0", "@rollup/pluginutils": "^5.0.0", - "@typescript-eslint/eslint-plugin": "5.42.0", - "@typescript-eslint/parser": "5.42.0", - "@typescript-eslint/scope-manager": "5.42.0", - "@typescript-eslint/typescript-estree": "5.42.0", - "@typescript-eslint/visitor-keys": "5.42.0", + "@typescript-eslint/eslint-plugin": "5.42.1", + "@typescript-eslint/parser": "5.42.1", + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/typescript-estree": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1", "eslint": "*", "rollup": "^2.75.4", "rollup-plugin-terser": "^7.0.2", diff --git a/packages/website/CHANGELOG.md b/packages/website/CHANGELOG.md index 472da3ec4f2..45dc82b46b2 100644 --- a/packages/website/CHANGELOG.md +++ b/packages/website/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) + +**Note:** Version bump only for package website + # [5.42.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.41.0...v5.42.0) (2022-10-31) ### Bug Fixes diff --git a/packages/website/package.json b/packages/website/package.json index 7ca8f69a3d7..b59791a71e9 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -1,6 +1,6 @@ { "name": "website", - "version": "5.42.0", + "version": "5.42.1", "private": true, "scripts": { "build": "docusaurus build", @@ -21,8 +21,8 @@ "@docusaurus/remark-plugin-npm2yarn": "~2.2.0", "@docusaurus/theme-common": "~2.2.0", "@mdx-js/react": "1.6.22", - "@typescript-eslint/parser": "5.42.0", - "@typescript-eslint/website-eslint": "5.42.0", + "@typescript-eslint/parser": "5.42.1", + "@typescript-eslint/website-eslint": "5.42.1", "clsx": "^1.1.1", "eslint": "*", "json-schema": "^0.4.0", @@ -48,7 +48,7 @@ "@types/react": "^18.0.9", "@types/react-helmet": "^6.1.5", "@types/react-router-dom": "^5.3.3", - "@typescript-eslint/eslint-plugin": "5.42.0", + "@typescript-eslint/eslint-plugin": "5.42.1", "copy-webpack-plugin": "^11.0.0", "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-react": "^7.29.4", From 923d486c8c9c9096deac425e7a6cb0b6457eacbd Mon Sep 17 00:00:00 2001 From: Omri Luzon Date: Mon, 7 Nov 2022 23:00:38 +0200 Subject: [PATCH 093/193] feat(eslint-plugin): [prefer-optional-chain] support suggesting `!foo || !foo.bar` as a valid match for the rule (#5594) * feat/issue5245-negated-or-optional-chaining---fixed * Not supported mixing with TSNonNullExpression * complex computed properties * CR fix comment on unsupported cases and remove TODO comments * CR: Remove unreachable uncovered check --- .../docs/rules/prefer-optional-chain.md | 12 +- .../src/rules/prefer-optional-chain.ts | 350 ++++++++++++++---- .../tests/rules/prefer-optional-chain.test.ts | 175 +++++++++ 3 files changed, 455 insertions(+), 82 deletions(-) diff --git a/packages/eslint-plugin/docs/rules/prefer-optional-chain.md b/packages/eslint-plugin/docs/rules/prefer-optional-chain.md index cff46dfdf49..4a9ada8b08f 100644 --- a/packages/eslint-plugin/docs/rules/prefer-optional-chain.md +++ b/packages/eslint-plugin/docs/rules/prefer-optional-chain.md @@ -1,5 +1,5 @@ --- -description: 'Enforce using concise optional chain expressions instead of chained logical ands.' +description: 'Enforce using concise optional chain expressions instead of chained logical ands, negated logical ors, or empty objects.' --- > 🛑 This file is source code, not the primary documentation location! 🛑 @@ -23,9 +23,15 @@ foo && foo.a && foo.a.b && foo.a.b.c; foo && foo['a'] && foo['a'].b && foo['a'].b.c; foo && foo.a && foo.a.b && foo.a.b.method && foo.a.b.method(); +// With empty objects (((foo || {}).a || {}).b || {}).c; (((foo || {})['a'] || {}).b || {}).c; +// With negated `or`s +!foo || !foo.bar; +!foo || !foo[bar]; +!foo || !foo.bar || !foo.bar.baz || !foo.bar.baz(); + // this rule also supports converting chained strict nullish checks: foo && foo.a != null && @@ -43,6 +49,10 @@ foo?.['a']?.b?.c; foo?.a?.b?.method?.(); foo?.a?.b?.c?.d?.e; + +!foo?.bar; +!foo?.[bar]; +!foo?.bar?.baz?.(); ``` diff --git a/packages/eslint-plugin/src/rules/prefer-optional-chain.ts b/packages/eslint-plugin/src/rules/prefer-optional-chain.ts index dc9b514e353..89eb72094b6 100644 --- a/packages/eslint-plugin/src/rules/prefer-optional-chain.ts +++ b/packages/eslint-plugin/src/rules/prefer-optional-chain.ts @@ -35,7 +35,7 @@ export default util.createRule({ type: 'suggestion', docs: { description: - 'Enforce using concise optional chain expressions instead of chained logical ands', + 'Enforce using concise optional chain expressions instead of chained logical ands, negated logical ors, or empty objects', recommended: 'strict', }, hasSuggestions: true, @@ -111,6 +111,81 @@ export default util.createRule({ ], }); }, + [[ + 'LogicalExpression[operator="||"] > UnaryExpression[operator="!"] > Identifier', + 'LogicalExpression[operator="||"] > UnaryExpression[operator="!"] > MemberExpression', + 'LogicalExpression[operator="||"] > UnaryExpression[operator="!"] > ChainExpression > MemberExpression', + ].join(',')]( + initialIdentifierOrNotEqualsExpr: + | TSESTree.Identifier + | TSESTree.MemberExpression, + ): void { + // selector guarantees this cast + const initialExpression = ( + initialIdentifierOrNotEqualsExpr.parent!.type === + AST_NODE_TYPES.ChainExpression + ? initialIdentifierOrNotEqualsExpr.parent.parent + : initialIdentifierOrNotEqualsExpr.parent + )!.parent as TSESTree.LogicalExpression; + + if ( + initialExpression.left.type !== AST_NODE_TYPES.UnaryExpression || + initialExpression.left.argument !== initialIdentifierOrNotEqualsExpr + ) { + // the node(identifier or member expression) is not the deepest left node + return; + } + + // walk up the tree to figure out how many logical expressions we can include + let previous: TSESTree.LogicalExpression = initialExpression; + let current: TSESTree.Node = initialExpression; + let previousLeftText = getText(initialIdentifierOrNotEqualsExpr); + let optionallyChainedCode = previousLeftText; + let expressionCount = 1; + while (current.type === AST_NODE_TYPES.LogicalExpression) { + if ( + current.right.type !== AST_NODE_TYPES.UnaryExpression || + !isValidChainTarget( + current.right.argument, + // only allow unary '!' with identifiers for the first chain - !foo || !foo() + expressionCount === 1, + ) + ) { + break; + } + const { rightText, shouldBreak } = breakIfInvalid({ + rightNode: current.right.argument, + previousLeftText, + }); + if (shouldBreak) { + break; + } + + ({ + expressionCount, + previousLeftText, + optionallyChainedCode, + previous, + current, + } = normalizeRepeatingPatterns( + rightText, + expressionCount, + previousLeftText, + optionallyChainedCode, + previous, + current, + )); + } + + reportIfMoreThanOne({ + expressionCount, + previous, + optionallyChainedCode, + sourceCode, + context, + shouldHandleChainedAnds: false, + }); + }, [[ 'LogicalExpression[operator="&&"] > Identifier', 'LogicalExpression[operator="&&"] > MemberExpression', @@ -155,94 +230,76 @@ export default util.createRule({ ) { break; } - - const leftText = previousLeftText; - const rightText = getText(current.right); - // can't just use startsWith because of cases like foo && fooBar.baz; - const matchRegex = new RegExp( - `^${ - // escape regex characters - leftText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') - }[^a-zA-Z0-9_$]`, - ); - if ( - !matchRegex.test(rightText) && - // handle redundant cases like foo.bar && foo.bar - leftText !== rightText - ) { + const { rightText, shouldBreak } = breakIfInvalid({ + rightNode: current.right, + previousLeftText, + }); + if (shouldBreak) { break; } - // omit weird doubled up expression that make no sense like foo.bar && foo.bar - if (rightText !== leftText) { - expressionCount += 1; - previousLeftText = rightText; - - /* - Diff the left and right text to construct the fix string - There are the following cases: - 1) - rightText === 'foo.bar.baz.buzz' - leftText === 'foo.bar.baz' - diff === '.buzz' - 2) - rightText === 'foo.bar.baz.buzz()' - leftText === 'foo.bar.baz' - diff === '.buzz()' - 3) - rightText === 'foo.bar.baz.buzz()' - leftText === 'foo.bar.baz.buzz' - diff === '()' - 4) - rightText === 'foo.bar.baz[buzz]' - leftText === 'foo.bar.baz' - diff === '[buzz]' - 5) - rightText === 'foo.bar.baz?.buzz' - leftText === 'foo.bar.baz' - diff === '?.buzz' - */ - const diff = rightText.replace(leftText, ''); - if (diff.startsWith('?')) { - // item was "pre optional chained" - optionallyChainedCode += diff; - } else { - const needsDot = diff.startsWith('(') || diff.startsWith('['); - optionallyChainedCode += `?${needsDot ? '.' : ''}${diff}`; - } - } - - previous = current; - current = util.nullThrows( - current.parent, - util.NullThrowsReasons.MissingParent, - ); + ({ + expressionCount, + previousLeftText, + optionallyChainedCode, + previous, + current, + } = normalizeRepeatingPatterns( + rightText, + expressionCount, + previousLeftText, + optionallyChainedCode, + previous, + current, + )); } - if (expressionCount > 1) { - if (previous.right.type === AST_NODE_TYPES.BinaryExpression) { - // case like foo && foo.bar !== someValue - optionallyChainedCode += ` ${ - previous.right.operator - } ${sourceCode.getText(previous.right.right)}`; - } - - context.report({ - node: previous, - messageId: 'preferOptionalChain', - suggest: [ - { - messageId: 'optionalChainSuggest', - fix: (fixer): TSESLint.RuleFix[] => [ - fixer.replaceText(previous, optionallyChainedCode), - ], - }, - ], - }); - } + reportIfMoreThanOne({ + expressionCount, + previous, + optionallyChainedCode, + sourceCode, + context, + shouldHandleChainedAnds: true, + }); }, }; + interface BreakIfInvalidResult { + leftText: string; + rightText: string; + shouldBreak: boolean; + } + + interface BreakIfInvalidOptions { + previousLeftText: string; + rightNode: ValidChainTarget; + } + + function breakIfInvalid({ + previousLeftText, + rightNode, + }: BreakIfInvalidOptions): BreakIfInvalidResult { + let shouldBreak = false; + + const rightText = getText(rightNode); + // can't just use startsWith because of cases like foo && fooBar.baz; + const matchRegex = new RegExp( + `^${ + // escape regex characters + previousLeftText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + }[^a-zA-Z0-9_$]`, + ); + if ( + !matchRegex.test(rightText) && + // handle redundant cases like foo.bar && foo.bar + previousLeftText !== rightText + ) { + shouldBreak = true; + } + return { shouldBreak, leftText: previousLeftText, rightText }; + } + function getText(node: ValidChainTarget): string { if (node.type === AST_NODE_TYPES.BinaryExpression) { return getText( @@ -299,6 +356,11 @@ export default util.createRule({ return getText(node.expression); } + if (node.object.type === AST_NODE_TYPES.TSNonNullExpression) { + // Not supported mixing with TSNonNullExpression + return ''; + } + return getMemberExpressionText(node); } @@ -389,6 +451,132 @@ const ALLOWED_NON_COMPUTED_PROP_TYPES: ReadonlySet = new Set([ AST_NODE_TYPES.Identifier, ]); +interface ReportIfMoreThanOneOptions { + expressionCount: number; + previous: TSESTree.LogicalExpression; + optionallyChainedCode: string; + sourceCode: Readonly; + context: Readonly< + TSESLint.RuleContext< + 'preferOptionalChain' | 'optionalChainSuggest', + never[] + > + >; + shouldHandleChainedAnds: boolean; +} + +function reportIfMoreThanOne({ + expressionCount, + previous, + optionallyChainedCode, + sourceCode, + context, + shouldHandleChainedAnds, +}: ReportIfMoreThanOneOptions): void { + if (expressionCount > 1) { + if ( + shouldHandleChainedAnds && + previous.right.type === AST_NODE_TYPES.BinaryExpression + ) { + // case like foo && foo.bar !== someValue + optionallyChainedCode += ` ${ + previous.right.operator + } ${sourceCode.getText(previous.right.right)}`; + } + + context.report({ + node: previous, + messageId: 'preferOptionalChain', + suggest: [ + { + messageId: 'optionalChainSuggest', + fix: (fixer): TSESLint.RuleFix[] => [ + fixer.replaceText( + previous, + `${shouldHandleChainedAnds ? '' : '!'}${optionallyChainedCode}`, + ), + ], + }, + ], + }); + } +} + +interface NormalizedPattern { + expressionCount: number; + previousLeftText: string; + optionallyChainedCode: string; + previous: TSESTree.LogicalExpression; + current: TSESTree.Node; +} + +function normalizeRepeatingPatterns( + rightText: string, + expressionCount: number, + previousLeftText: string, + optionallyChainedCode: string, + previous: TSESTree.Node, + current: TSESTree.Node, +): NormalizedPattern { + const leftText = previousLeftText; + // omit weird doubled up expression that make no sense like foo.bar && foo.bar + if (rightText !== previousLeftText) { + expressionCount += 1; + previousLeftText = rightText; + + /* + Diff the left and right text to construct the fix string + There are the following cases: + + 1) + rightText === 'foo.bar.baz.buzz' + leftText === 'foo.bar.baz' + diff === '.buzz' + + 2) + rightText === 'foo.bar.baz.buzz()' + leftText === 'foo.bar.baz' + diff === '.buzz()' + + 3) + rightText === 'foo.bar.baz.buzz()' + leftText === 'foo.bar.baz.buzz' + diff === '()' + + 4) + rightText === 'foo.bar.baz[buzz]' + leftText === 'foo.bar.baz' + diff === '[buzz]' + + 5) + rightText === 'foo.bar.baz?.buzz' + leftText === 'foo.bar.baz' + diff === '?.buzz' + */ + const diff = rightText.replace(leftText, ''); + if (diff.startsWith('?')) { + // item was "pre optional chained" + optionallyChainedCode += diff; + } else { + const needsDot = diff.startsWith('(') || diff.startsWith('['); + optionallyChainedCode += `?${needsDot ? '.' : ''}${diff}`; + } + } + + previous = current as TSESTree.LogicalExpression; + current = util.nullThrows( + current.parent, + util.NullThrowsReasons.MissingParent, + ); + return { + expressionCount, + previousLeftText, + optionallyChainedCode, + previous, + current, + }; +} + function isValidChainTarget( node: TSESTree.Node, allowIdentifier: boolean, diff --git a/packages/eslint-plugin/tests/rules/prefer-optional-chain.test.ts b/packages/eslint-plugin/tests/rules/prefer-optional-chain.test.ts index 0358c065870..58b309edcc8 100644 --- a/packages/eslint-plugin/tests/rules/prefer-optional-chain.test.ts +++ b/packages/eslint-plugin/tests/rules/prefer-optional-chain.test.ts @@ -65,6 +65,16 @@ const baseCases = [ code: 'foo && foo[bar].baz && foo[bar].baz.buzz', output: 'foo?.[bar].baz?.buzz', }, + // case with a property access in computed property + { + code: 'foo && foo[bar.baz] && foo[bar.baz].buzz', + output: 'foo?.[bar.baz]?.buzz', + }, + // case with this keyword + { + code: 'foo[this.bar] && foo[this.bar].baz', + output: 'foo[this.bar]?.baz', + }, // chained calls { code: 'foo && foo.bar && foo.bar.baz && foo.bar.baz.buzz()', @@ -147,6 +157,14 @@ const baseCases = [ ruleTester.run('prefer-optional-chain', rule, { valid: [ + '!a || !b;', + '!a || a.b;', + '!a && a.b;', + '!a && !a.b;', + '!a.b || a.b?.();', + '!a.b || a.b();', + '!foo() || !foo().bar;', + 'foo || {};', 'foo || ({} as any);', '(foo || {})?.bar;', @@ -180,6 +198,17 @@ ruleTester.run('prefer-optional-chain', rule, { 'foo && foo[bar as string] && foo[bar as string].baz;', 'foo && foo[1 + 2] && foo[1 + 2].baz;', 'foo && foo[typeof bar] && foo[typeof bar].baz;', + '!foo || !foo[bar as string] || !foo[bar as string].baz;', + '!foo || !foo[1 + 2] || !foo[1 + 2].baz;', + '!foo || !foo[typeof bar] || !foo[typeof bar].baz;', + // currently do not handle 'this' as the first part of a chain + 'this && this.foo;', + '!this || !this.foo;', + // intentionally do not handle mixed TSNonNullExpression in properties + '!entity.__helper!.__initialized || options.refresh;', + '!foo!.bar || !foo!.bar.baz;', + '!foo!.bar!.baz || !foo!.bar!.baz!.paz;', + '!foo.bar!.baz || !foo.bar!.baz!.paz;', ], invalid: [ ...baseCases, @@ -447,6 +476,22 @@ foo?.bar(/* comment */a, }, ], }, + // case with this keyword at the start of expression + { + code: 'this.bar && this.bar.baz;', + output: null, + errors: [ + { + messageId: 'preferOptionalChain', + suggestions: [ + { + messageId: 'optionalChainSuggest', + output: 'this.bar?.baz;', + }, + ], + }, + ], + }, // other weird cases { code: 'foo && foo?.();', @@ -1144,5 +1189,135 @@ foo?.bar(/* comment */a, }, ], }, + { + code: '(this || {}).foo;', + errors: [ + { + messageId: 'optionalChainSuggest', + suggestions: [ + { + messageId: 'optionalChainSuggest', + output: 'this?.foo;', + }, + ], + }, + ], + }, + ...baseCases.map(c => ({ + ...c, + code: c.code.replace(/foo/g, '!foo').replace(/&&/g, '||'), + errors: [ + { + ...c.errors[0], + suggestions: [ + { + ...c.errors[0].suggestions![0], + output: `!${c.errors[0].suggestions![0].output}`, + }, + ], + }, + ], + })), + // case with this keyword at the start of expression + { + code: '!this.bar || !this.bar.baz;', + output: null, + errors: [ + { + messageId: 'preferOptionalChain', + suggestions: [ + { + messageId: 'optionalChainSuggest', + output: '!this.bar?.baz;', + }, + ], + }, + ], + }, + { + code: '!a.b || !a.b();', + output: null, + errors: [ + { + messageId: 'preferOptionalChain', + suggestions: [ + { + messageId: 'optionalChainSuggest', + output: '!a.b?.();', + }, + ], + }, + ], + }, + { + code: '!foo.bar || !foo.bar.baz;', + output: null, + errors: [ + { + messageId: 'preferOptionalChain', + suggestions: [ + { + messageId: 'optionalChainSuggest', + output: '!foo.bar?.baz;', + }, + ], + }, + ], + }, + { + code: '!foo[bar] || !foo[bar]?.[baz];', + output: null, + errors: [ + { + messageId: 'preferOptionalChain', + suggestions: [ + { + messageId: 'optionalChainSuggest', + output: '!foo[bar]?.[baz];', + }, + ], + }, + ], + }, + { + code: '!foo || !foo?.bar.baz;', + output: null, + errors: [ + { + messageId: 'preferOptionalChain', + suggestions: [ + { + messageId: 'optionalChainSuggest', + output: '!foo?.bar.baz;', + }, + ], + }, + ], + }, + // two errors + { + code: noFormat`(!foo || !foo.bar || !foo.bar.baz) && (!baz || !baz.bar || !baz.bar.foo);`, + output: null, + errors: [ + { + messageId: 'preferOptionalChain', + suggestions: [ + { + messageId: 'optionalChainSuggest', + output: noFormat`(!foo?.bar?.baz) && (!baz || !baz.bar || !baz.bar.foo);`, + }, + ], + }, + { + messageId: 'preferOptionalChain', + suggestions: [ + { + messageId: 'optionalChainSuggest', + output: noFormat`(!foo || !foo.bar || !foo.bar.baz) && (!baz?.bar?.foo);`, + }, + ], + }, + ], + }, ], }); From c759da169390ba490eee9ef773cc9edc88a32817 Mon Sep 17 00:00:00 2001 From: eliasm307 <13420359+eliasm307@users.noreply.github.com> Date: Mon, 7 Nov 2022 22:15:57 +0100 Subject: [PATCH 094/193] feat(eslint-plugin): [naming-convention] add support for "override" and "async" modifiers (#5310) (#5610) * feat(eslint-plugin): [naming-convention] add support for "override" and "async" modifiers (#5310) * apply pr feedback ie remove test case util, split tests by type, remove abstract getter change, remove override for variable selector in docs * remove async parameter logic which is impossible Co-authored-by: Josh Goldberg --- .../docs/rules/naming-convention.md | 23 +- .../rules/naming-convention-utils/enums.ts | 4 + .../rules/naming-convention-utils/schema.ts | 21 +- .../src/rules/naming-convention.ts | 49 ++ .../naming-convention.test.ts | 446 ++++++++++++++++++ 5 files changed, 530 insertions(+), 13 deletions(-) diff --git a/packages/eslint-plugin/docs/rules/naming-convention.md b/packages/eslint-plugin/docs/rules/naming-convention.md index 50bd1751518..ef273df8f16 100644 --- a/packages/eslint-plugin/docs/rules/naming-convention.md +++ b/packages/eslint-plugin/docs/rules/naming-convention.md @@ -171,7 +171,8 @@ If these are provided, the identifier must start with one of the provided values - `unused` - matches anything that is not used. - `requiresQuotes` - matches any name that requires quotes as it is not a valid identifier (i.e. has a space, a dash, etc in it). - `public` - matches any member that is either explicitly declared as `public`, or has no visibility modifier (i.e. implicitly public). - - `readonly`, `static`, `abstract`, `protected`, `private` - matches any member explicitly declared with the given modifier. + - `readonly`, `static`, `abstract`, `protected`, `private`, `override` - matches any member explicitly declared with the given modifier. + - `async` - matches any method, function, or function variable which is async via the `async` keyword (e.g. does not match functions that return promises without using `async` keyword) - `types` allows you to specify which types to match. This option supports simple, primitive types only (`boolean`, `string`, `number`, `array`, `function`). - The name must match _one_ of the types. - **_NOTE - Using this option will require that you lint with type information._** @@ -194,16 +195,16 @@ There are two types of selectors, individual selectors, and grouped selectors. Individual Selectors match specific, well-defined sets. There is no overlap between each of the individual selectors. - `variable` - matches any `var` / `let` / `const` variable name. - - Allowed `modifiers`: `const`, `destructured`, `global`, `exported`, `unused`. + - Allowed `modifiers`: `const`, `destructured`, `global`, `exported`, `unused`, `async`. - Allowed `types`: `boolean`, `string`, `number`, `function`, `array`. - `function` - matches any named function declaration or named function expression. - - Allowed `modifiers`: `global`, `exported`, `unused`. + - Allowed `modifiers`: `global`, `exported`, `unused`, `async`. - Allowed `types`: none. - `parameter` - matches any function parameter. Does not match parameter properties. - Allowed `modifiers`: `destructured`, `unused`. - Allowed `types`: `boolean`, `string`, `number`, `function`, `array`. - `classProperty` - matches any class property. Does not match properties that have direct function expression or arrow function expression values. - - Allowed `modifiers`: `abstract`, `private`, `protected`, `public`, `readonly`, `requiresQuotes`, `static`. + - Allowed `modifiers`: `abstract`, `private`, `protected`, `public`, `readonly`, `requiresQuotes`, `static`, `override`. - Allowed `types`: `boolean`, `string`, `number`, `function`, `array`. - `objectLiteralProperty` - matches any object literal property. Does not match properties that have direct function expression or arrow function expression values. - Allowed `modifiers`: `public`, `requiresQuotes`. @@ -215,16 +216,16 @@ Individual Selectors match specific, well-defined sets. There is no overlap betw - Allowed `modifiers`: `private`, `protected`, `public`, `readonly`. - Allowed `types`: `boolean`, `string`, `number`, `function`, `array`. - `classMethod` - matches any class method. Also matches properties that have direct function expression or arrow function expression values. Does not match accessors. - - Allowed `modifiers`: `abstract`, `private`, `protected`, `public`, `requiresQuotes`, `static`. + - Allowed `modifiers`: `abstract`, `private`, `protected`, `public`, `requiresQuotes`, `static`, `override`, `async`. - Allowed `types`: none. - `objectLiteralMethod` - matches any object literal method. Also matches properties that have direct function expression or arrow function expression values. Does not match accessors. - - Allowed `modifiers`: `public`, `requiresQuotes`. + - Allowed `modifiers`: `public`, `requiresQuotes`, `async`. - Allowed `types`: none. - `typeMethod` - matches any object type method. Also matches properties that have direct function expression or arrow function expression values. Does not match accessors. - Allowed `modifiers`: `public`, `requiresQuotes`. - Allowed `types`: none. - `accessor` - matches any accessor. - - Allowed `modifiers`: `abstract`, `private`, `protected`, `public`, `requiresQuotes`, `static`. + - Allowed `modifiers`: `abstract`, `private`, `protected`, `public`, `requiresQuotes`, `static`, `override`. - Allowed `types`: `boolean`, `string`, `number`, `function`, `array`. - `enumMember` - matches any enum member. - Allowed `modifiers`: `requiresQuotes`. @@ -253,19 +254,19 @@ Group Selectors are provided for convenience, and essentially bundle up sets of - Allowed `modifiers`: all modifiers. - Allowed `types`: none. - `variableLike` - matches the same as `variable`, `function` and `parameter`. - - Allowed `modifiers`: `unused`. + - Allowed `modifiers`: `unused`, `async`. - Allowed `types`: none. - `memberLike` - matches the same as `property`, `parameterProperty`, `method`, `accessor`, `enumMember`. - - Allowed `modifiers`: `private`, `protected`, `public`, `static`, `readonly`, `abstract`, `requiresQuotes`. + - Allowed `modifiers`: `private`, `protected`, `public`, `static`, `readonly`, `abstract`, `requiresQuotes`, `override`, `async`. - Allowed `types`: none. - `typeLike` - matches the same as `class`, `interface`, `typeAlias`, `enum`, `typeParameter`. - Allowed `modifiers`: `abstract`, `unused`. - Allowed `types`: none. - `property` - matches the same as `classProperty`, `objectLiteralProperty`, `typeProperty`. - - Allowed `modifiers`: `private`, `protected`, `public`, `static`, `readonly`, `abstract`, `requiresQuotes`. + - Allowed `modifiers`: `private`, `protected`, `public`, `static`, `readonly`, `abstract`, `requiresQuotes`, `override`, `async`. - Allowed `types`: `boolean`, `string`, `number`, `function`, `array`. - `method` - matches the same as `classMethod`, `objectLiteralMethod`, `typeMethod`. - - Allowed `modifiers`: `private`, `protected`, `public`, `static`, `readonly`, `abstract`, `requiresQuotes`. + - Allowed `modifiers`: `private`, `protected`, `public`, `static`, `readonly`, `abstract`, `requiresQuotes`, `override`, `async`. - Allowed `types`: none. ## FAQ diff --git a/packages/eslint-plugin/src/rules/naming-convention-utils/enums.ts b/packages/eslint-plugin/src/rules/naming-convention-utils/enums.ts index c9460305847..bc2547ffa3f 100644 --- a/packages/eslint-plugin/src/rules/naming-convention-utils/enums.ts +++ b/packages/eslint-plugin/src/rules/naming-convention-utils/enums.ts @@ -102,6 +102,10 @@ enum Modifiers { unused = 1 << 10, // properties that require quoting requiresQuotes = 1 << 11, + // class members that are overridden + override = 1 << 12, + // class methods, object function properties, or functions that are async via the `async` keyword + async = 1 << 13, // make sure TypeModifiers starts at Modifiers + 1 or else sorting won't work } diff --git a/packages/eslint-plugin/src/rules/naming-convention-utils/schema.ts b/packages/eslint-plugin/src/rules/naming-convention-utils/schema.ts index fab1d1bc2b6..179b6dd7f43 100644 --- a/packages/eslint-plugin/src/rules/naming-convention-utils/schema.ts +++ b/packages/eslint-plugin/src/rules/naming-convention-utils/schema.ts @@ -170,15 +170,21 @@ const SCHEMA: JSONSchema.JSONSchema4 = { selectorsSchema(), ...selectorSchema('default', false, util.getEnumNames(Modifiers)), - ...selectorSchema('variableLike', false, ['unused']), + ...selectorSchema('variableLike', false, ['unused', 'async']), ...selectorSchema('variable', true, [ 'const', 'destructured', 'exported', 'global', 'unused', + 'async', + ]), + ...selectorSchema('function', false, [ + 'exported', + 'global', + 'unused', + 'async', ]), - ...selectorSchema('function', false, ['exported', 'global', 'unused']), ...selectorSchema('parameter', true, ['destructured', 'unused']), ...selectorSchema('memberLike', false, [ @@ -189,6 +195,8 @@ const SCHEMA: JSONSchema.JSONSchema4 = { 'readonly', 'requiresQuotes', 'static', + 'override', + 'async', ]), ...selectorSchema('classProperty', true, [ 'abstract', @@ -198,6 +206,7 @@ const SCHEMA: JSONSchema.JSONSchema4 = { 'readonly', 'requiresQuotes', 'static', + 'override', ]), ...selectorSchema('objectLiteralProperty', true, [ 'public', @@ -222,6 +231,8 @@ const SCHEMA: JSONSchema.JSONSchema4 = { 'readonly', 'requiresQuotes', 'static', + 'override', + 'async', ]), ...selectorSchema('classMethod', false, [ @@ -231,10 +242,13 @@ const SCHEMA: JSONSchema.JSONSchema4 = { 'public', 'requiresQuotes', 'static', + 'override', + 'async', ]), ...selectorSchema('objectLiteralMethod', false, [ 'public', 'requiresQuotes', + 'async', ]), ...selectorSchema('typeMethod', false, ['public', 'requiresQuotes']), ...selectorSchema('method', false, [ @@ -244,6 +258,8 @@ const SCHEMA: JSONSchema.JSONSchema4 = { 'public', 'requiresQuotes', 'static', + 'override', + 'async', ]), ...selectorSchema('accessor', true, [ 'abstract', @@ -252,6 +268,7 @@ const SCHEMA: JSONSchema.JSONSchema4 = { 'public', 'requiresQuotes', 'static', + 'override', ]), ...selectorSchema('enumMember', false, ['requiresQuotes']), diff --git a/packages/eslint-plugin/src/rules/naming-convention.ts b/packages/eslint-plugin/src/rules/naming-convention.ts index 2984c49f5a2..05f3dd0f2a6 100644 --- a/packages/eslint-plugin/src/rules/naming-convention.ts +++ b/packages/eslint-plugin/src/rules/naming-convention.ts @@ -138,6 +138,9 @@ export default util.createRule({ if ('readonly' in node && node.readonly) { modifiers.add(Modifiers.readonly); } + if ('override' in node && node.override) { + modifiers.add(Modifiers.override); + } if ( node.type === AST_NODE_TYPES.TSAbstractPropertyDefinition || node.type === AST_NODE_TYPES.TSAbstractMethodDefinition @@ -182,6 +185,34 @@ export default util.createRule({ ); } + function isAsyncMemberOrProperty( + propertyOrMemberNode: + | TSESTree.PropertyNonComputedName + | TSESTree.TSMethodSignatureNonComputedName + | TSESTree.PropertyDefinitionNonComputedName + | TSESTree.TSAbstractPropertyDefinitionNonComputedName + | TSESTree.MethodDefinitionNonComputedName + | TSESTree.TSAbstractMethodDefinitionNonComputedName, + ): boolean { + return Boolean( + 'value' in propertyOrMemberNode && + propertyOrMemberNode.value && + 'async' in propertyOrMemberNode.value && + propertyOrMemberNode.value.async, + ); + } + + function isAsyncVariableIdentifier(id: TSESTree.Identifier): boolean { + return Boolean( + id.parent && + (('async' in id.parent && id.parent.async) || + ('init' in id.parent && + id.parent.init && + 'async' in id.parent.init && + id.parent.init.async)), + ); + } + return { // #region variable @@ -219,6 +250,10 @@ export default util.createRule({ modifiers.add(Modifiers.unused); } + if (isAsyncVariableIdentifier(id)) { + modifiers.add(Modifiers.async); + } + validator(id, modifiers); }); }, @@ -254,6 +289,10 @@ export default util.createRule({ modifiers.add(Modifiers.unused); } + if (node.async) { + modifiers.add(Modifiers.async); + } + validator(node.id, modifiers); }, @@ -360,6 +399,11 @@ export default util.createRule({ | TSESTree.TSMethodSignatureNonComputedName, ): void { const modifiers = new Set([Modifiers.public]); + + if (isAsyncMemberOrProperty(node)) { + modifiers.add(Modifiers.async); + } + handleMember(validators.objectLiteralMethod, node, modifiers); }, @@ -376,6 +420,11 @@ export default util.createRule({ | TSESTree.TSAbstractMethodDefinitionNonComputedName, ): void { const modifiers = getMemberModifiers(node); + + if (isAsyncMemberOrProperty(node)) { + modifiers.add(Modifiers.async); + } + handleMember(validators.classMethod, node, modifiers); }, diff --git a/packages/eslint-plugin/tests/rules/naming-convention/naming-convention.test.ts b/packages/eslint-plugin/tests/rules/naming-convention/naming-convention.test.ts index 4c496b6c127..9917aec3cb7 100644 --- a/packages/eslint-plugin/tests/rules/naming-convention/naming-convention.test.ts +++ b/packages/eslint-plugin/tests/rules/naming-convention/naming-convention.test.ts @@ -768,6 +768,105 @@ ruleTester.run('naming-convention', rule, { }, ], }, + { + code: ` + const obj = { + Bar() { + return 42; + }, + async async_bar() { + return 42; + }, + }; + class foo { + public Bar() { + return 42; + } + public async async_bar() { + return 42; + } + } + abstract class foo { + public abstract Bar() { + return 42; + } + public abstract async async_bar() { + return 42; + } + } + `, + parserOptions, + options: [ + { + selector: 'memberLike', + format: ['camelCase'], + }, + { + selector: ['method', 'objectLiteralMethod'], + format: ['snake_case'], + modifiers: ['async'], + }, + { + selector: 'method', + format: ['PascalCase'], + }, + ], + }, + { + code: ` + const async_bar1 = async () => {}; + async function async_bar2() {} + const async_bar3 = async function async_bar4() {}; + `, + parserOptions, + options: [ + { + selector: 'memberLike', + format: ['camelCase'], + }, + { + selector: 'method', + format: ['PascalCase'], + }, + { + selector: ['variable'], + format: ['snake_case'], + modifiers: ['async'], + }, + ], + }, + { + code: ` + class foo extends bar { + public someAttribute = 1; + public override some_attribute_override = 1; + public someMethod() { + return 42; + } + public override some_method_override2() { + return 42; + } + } + abstract class foo extends bar { + public abstract someAttribute: string; + public abstract override some_attribute_override: string; + public abstract someMethod(): string; + public abstract override some_method_override2(): string; + } + `, + parserOptions, + options: [ + { + selector: 'memberLike', + format: ['camelCase'], + }, + { + selector: ['memberLike'], + modifiers: ['override'], + format: ['snake_case'], + }, + ], + }, ], invalid: [ { @@ -1526,5 +1625,352 @@ ruleTester.run('naming-convention', rule, { // 6, not 7 because 'foo' is valid errors: Array(6).fill({ messageId: 'doesNotMatchFormat' }), }, + { + code: ` + class foo { + public Bar() { + return 42; + } + public async async_bar() { + return 42; + } + // ❌ error + public async asyncBar() { + return 42; + } + // ❌ error + public AsyncBar2 = async () => { + return 42; + }; + // ❌ error + public AsyncBar3 = async function () { + return 42; + }; + } + abstract class foo { + public abstract Bar(): number; + public abstract async async_bar(): number; + // ❌ error + public abstract async ASYNC_BAR(): number; + } + `, + parserOptions, + options: [ + { + selector: 'memberLike', + format: ['camelCase'], + }, + { + selector: 'method', + format: ['PascalCase'], + }, + { + selector: ['method', 'objectLiteralMethod'], + format: ['snake_case'], + modifiers: ['async'], + }, + ], + errors: [ + { + messageId: 'doesNotMatchFormat', + data: { + type: 'Class Method', + name: 'asyncBar', + formats: 'snake_case', + }, + }, + { + messageId: 'doesNotMatchFormat', + data: { + type: 'Class Method', + name: 'AsyncBar2', + formats: 'snake_case', + }, + }, + { + messageId: 'doesNotMatchFormat', + data: { + type: 'Class Method', + name: 'AsyncBar3', + formats: 'snake_case', + }, + }, + { + messageId: 'doesNotMatchFormat', + data: { + type: 'Class Method', + name: 'ASYNC_BAR', + formats: 'snake_case', + }, + }, + ], + }, + { + code: ` + const obj = { + Bar() { + return 42; + }, + async async_bar() { + return 42; + }, + // ❌ error + async AsyncBar() { + return 42; + }, + // ❌ error + AsyncBar2: async () => { + return 42; + }, + // ❌ error + AsyncBar3: async function () { + return 42; + }, + }; + `, + parserOptions, + options: [ + { + selector: 'memberLike', + format: ['camelCase'], + }, + { + selector: 'method', + format: ['PascalCase'], + }, + { + selector: ['method', 'objectLiteralMethod'], + format: ['snake_case'], + modifiers: ['async'], + }, + ], + errors: [ + { + messageId: 'doesNotMatchFormat', + data: { + type: 'Object Literal Method', + name: 'AsyncBar', + formats: 'snake_case', + }, + }, + { + messageId: 'doesNotMatchFormat', + data: { + type: 'Object Literal Method', + name: 'AsyncBar2', + formats: 'snake_case', + }, + }, + { + messageId: 'doesNotMatchFormat', + data: { + type: 'Object Literal Method', + name: 'AsyncBar3', + formats: 'snake_case', + }, + }, + ], + }, + { + code: ` + const syncbar1 = () => {}; + function syncBar2() {} + const syncBar3 = function syncBar4() {}; + + // ❌ error + const AsyncBar1 = async () => {}; + const async_bar1 = async () => {}; + const async_bar3 = async function async_bar4() {}; + async function async_bar2() {} + // ❌ error + const asyncBar5 = async function async_bar6() {}; + `, + parserOptions, + options: [ + { + selector: 'variableLike', + format: ['camelCase'], + }, + { + selector: ['variableLike'], + modifiers: ['async'], + format: ['snake_case'], + }, + ], + errors: [ + { + messageId: 'doesNotMatchFormat', + data: { + type: 'Variable', + name: 'AsyncBar1', + formats: 'snake_case', + }, + }, + { + messageId: 'doesNotMatchFormat', + data: { + type: 'Variable', + name: 'asyncBar5', + formats: 'snake_case', + }, + }, + ], + }, + { + code: ` + const syncbar1 = () => {}; + function syncBar2() {} + const syncBar3 = function syncBar4() {}; + + const async_bar1 = async () => {}; + // ❌ error + async function asyncBar2() {} + const async_bar3 = async function async_bar4() {}; + async function async_bar2() {} + // ❌ error + const async_bar3 = async function ASYNC_BAR4() {}; + `, + parserOptions, + options: [ + { + selector: 'variableLike', + format: ['camelCase'], + }, + { + selector: ['variableLike'], + modifiers: ['async'], + format: ['snake_case'], + }, + ], + errors: [ + { + messageId: 'doesNotMatchFormat', + data: { + type: 'Function', + name: 'asyncBar2', + formats: 'snake_case', + }, + }, + { + messageId: 'doesNotMatchFormat', + data: { + type: 'Function', + name: 'ASYNC_BAR4', + formats: 'snake_case', + }, + }, + ], + }, + { + code: ` + class foo extends bar { + public someAttribute = 1; + public override some_attribute_override = 1; + // ❌ error + public override someAttributeOverride = 1; + } + `, + parserOptions, + options: [ + { + selector: 'memberLike', + format: ['camelCase'], + }, + { + selector: ['memberLike'], + modifiers: ['override'], + format: ['snake_case'], + }, + ], + errors: [ + { + messageId: 'doesNotMatchFormat', + data: { + type: 'Class Property', + name: 'someAttributeOverride', + formats: 'snake_case', + }, + }, + ], + }, + { + code: ` + class foo extends bar { + public override some_method_override() { + return 42; + } + // ❌ error + public override someMethodOverride() { + return 42; + } + } + `, + parserOptions, + options: [ + { + selector: 'memberLike', + format: ['camelCase'], + }, + { + selector: ['memberLike'], + modifiers: ['override'], + format: ['snake_case'], + }, + ], + errors: [ + { + messageId: 'doesNotMatchFormat', + data: { + type: 'Class Method', + name: 'someMethodOverride', + formats: 'snake_case', + }, + }, + ], + }, + { + code: ` + class foo extends bar { + public get someGetter(): string; + public override get some_getter_override(): string; + // ❌ error + public override get someGetterOverride(): string; + public set someSetter(val: string); + public override set some_setter_override(val: string); + // ❌ error + public override set someSetterOverride(val: string); + } + `, + parserOptions, + options: [ + { + selector: 'memberLike', + format: ['camelCase'], + }, + { + selector: ['memberLike'], + modifiers: ['override'], + format: ['snake_case'], + }, + ], + errors: [ + { + messageId: 'doesNotMatchFormat', + data: { + type: 'Accessor', + name: 'someGetterOverride', + formats: 'snake_case', + }, + }, + { + messageId: 'doesNotMatchFormat', + data: { + type: 'Accessor', + name: 'someSetterOverride', + formats: 'snake_case', + }, + }, + ], + }, ], }); From 75dcdf164d206c5530ba7cc095c4599ec90abe35 Mon Sep 17 00:00:00 2001 From: Scott Newcomer Date: Mon, 7 Nov 2022 17:49:40 -0600 Subject: [PATCH 095/193] feat(eslint-plugin): [consistent-type-imports] support fixing to inline types (#5050) * feat(eslint-plugin): [consistent-type-imports] support fixing to inline types * first pass fix to simpler fixer * cleanup pass 2 * add test for default import * add some docs * add moar test cases * add failing test * use aImportIsOnlyTypes instead of inlineTypes message * wip * fix for default import inline * fix another case with as * simplify by using existing typeOverValue func * add some commentse * add another test for two imports from same source * better doc with link to 4.5 * fix lint * cleanup comments * Update packages/eslint-plugin/docs/rules/consistent-type-imports.md Co-authored-by: Josh Goldberg * Update packages/eslint-plugin/docs/rules/consistent-type-imports.md Co-authored-by: Josh Goldberg * Update packages/eslint-plugin/docs/rules/consistent-type-imports.md Co-authored-by: Josh Goldberg * Update packages/eslint-plugin/src/rules/consistent-type-imports.ts Co-authored-by: Josh Goldberg * Update packages/eslint-plugin/src/rules/consistent-type-imports.ts Co-authored-by: Josh Goldberg * fix changelog formatting * Update packages/eslint-plugin/docs/rules/consistent-type-imports.md Co-authored-by: Josh Goldberg * try single quotest * cleanup not valid comment anymore * Update packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts Co-authored-by: Josh Goldberg * Update packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts Co-authored-by: Josh Goldberg * rm comment * improve documentation with feedback * add tabs Co-authored-by: Josh Goldberg Co-authored-by: Josh Goldberg --- .../docs/rules/consistent-type-imports.md | 40 +- .../src/rules/consistent-type-imports.ts | 169 +++++++-- .../rules/consistent-type-imports.test.ts | 359 ++++++++++++++++++ 3 files changed, 536 insertions(+), 32 deletions(-) diff --git a/packages/eslint-plugin/docs/rules/consistent-type-imports.md b/packages/eslint-plugin/docs/rules/consistent-type-imports.md index 745930d0d54..4ea1f755994 100644 --- a/packages/eslint-plugin/docs/rules/consistent-type-imports.md +++ b/packages/eslint-plugin/docs/rules/consistent-type-imports.md @@ -15,7 +15,7 @@ This allows transpilers to drop imports without knowing the types of the depende This option defines the expected import kind for type-only imports. Valid values for `prefer` are: -- `type-imports` will enforce that you always use `import type Foo from '...'` except referenced by metadata of decorators. It is default. +- `type-imports` will enforce that you always use `import type Foo from '...'` except referenced by metadata of decorators. It is the default. - `no-type-imports` will enforce that you always use `import Foo from '...'`. Examples of **correct** code with `{prefer: 'type-imports'}`, and **incorrect** code with `{prefer: 'no-type-imports'}`. @@ -36,6 +36,44 @@ type T = Foo; const x: Bar = 1; ``` +### `fixStyle` + +This option defines the expected type modifier to be added when an import is detected as used only in the type position. Valid values for `fixStyle` are: + +- `separate-type-imports` will add the type keyword after the import keyword `import type { A } from '...'`. It is the default. +- `inline-type-imports` will inline the type keyword `import { type A } from '...'` and is only available in TypeScript 4.5 and onwards. See [documentation here](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-5.html#type-modifiers-on-import-names 'TypeScript 4.5 documentation on type modifiers and import names'). + + + +#### ❌ Incorrect + +```ts +import { Foo } from 'Foo'; +import Bar from 'Bar'; +type T = Foo; +const x: Bar = 1; +``` + +#### ✅ With `separate-type-imports` + +```ts +import type { Foo } from 'Foo'; +import type Bar from 'Bar'; +type T = Foo; +const x: Bar = 1; +``` + +#### ✅ With `inline-type-imports` + +```ts +import { type Foo } from 'Foo'; +import type Bar from 'Bar'; +type T = Foo; +const x: Bar = 1; +``` + + + ### `disallowTypeAnnotations` If `true`, type imports in type annotations (`import()`) are not allowed. diff --git a/packages/eslint-plugin/src/rules/consistent-type-imports.ts b/packages/eslint-plugin/src/rules/consistent-type-imports.ts index 1817018fe7b..a812116f2f8 100644 --- a/packages/eslint-plugin/src/rules/consistent-type-imports.ts +++ b/packages/eslint-plugin/src/rules/consistent-type-imports.ts @@ -4,11 +4,13 @@ import { AST_NODE_TYPES, AST_TOKEN_TYPES } from '@typescript-eslint/utils'; import * as util from '../util'; type Prefer = 'type-imports' | 'no-type-imports'; +type FixStyle = 'separate-type-imports' | 'inline-type-imports'; type Options = [ { prefer?: Prefer; disallowTypeAnnotations?: boolean; + fixStyle?: FixStyle; }, ]; @@ -19,6 +21,8 @@ interface SourceImports { typeOnlyNamedImport: TSESTree.ImportDeclaration | null; // ImportDeclaration for value-only import only with named imports. valueOnlyNamedImport: TSESTree.ImportDeclaration | null; + // ImportDeclaration for value-only import only with default imports and/or named imports. + valueImport: TSESTree.ImportDeclaration | null; } interface ReportValueImport { node: TSESTree.ImportDeclaration; @@ -79,6 +83,9 @@ export default util.createRule({ disallowTypeAnnotations: { type: 'boolean', }, + fixStyle: { + enum: ['separate-type-imports', 'inline-type-imports'], + }, }, additionalProperties: false, }, @@ -90,12 +97,14 @@ export default util.createRule({ { prefer: 'type-imports', disallowTypeAnnotations: true, + fixStyle: 'separate-type-imports', }, ], create(context, [option]) { const prefer = option.prefer ?? 'type-imports'; const disallowTypeAnnotations = option.disallowTypeAnnotations !== false; + const fixStyle = option.fixStyle ?? 'separate-type-imports'; const sourceCode = context.getSourceCode(); const sourceImportsMap: { [key: string]: SourceImports } = {}; @@ -106,13 +115,15 @@ export default util.createRule({ // prefer type imports ImportDeclaration(node): void { const source = node.source.value; + // sourceImports is the object containing all the specifics for a particular import source, type or value const sourceImports = sourceImportsMap[source] ?? (sourceImportsMap[source] = { source, - reportValueImports: [], - typeOnlyNamedImport: null, - valueOnlyNamedImport: null, + reportValueImports: [], // if there is a mismatch where type importKind but value specifiers + typeOnlyNamedImport: null, // if only type imports + valueOnlyNamedImport: null, // if only value imports with named specifiers + valueImport: null, // if only value imports }); if (node.importKind === 'type') { if ( @@ -122,6 +133,7 @@ export default util.createRule({ specifier.type === AST_NODE_TYPES.ImportSpecifier, ) ) { + // definitely import type { TypeX } sourceImports.typeOnlyNamedImport = node; } } else { @@ -133,6 +145,15 @@ export default util.createRule({ ) ) { sourceImports.valueOnlyNamedImport = node; + sourceImports.valueImport = node; + } else if ( + !sourceImports.valueImport && + node.specifiers.some( + specifier => + specifier.type === AST_NODE_TYPES.ImportDefaultSpecifier, + ) + ) { + sourceImports.valueImport = node; } } @@ -243,14 +264,15 @@ export default util.createRule({ 'Program:exit'(): void { for (const sourceImports of Object.values(sourceImportsMap)) { if (sourceImports.reportValueImports.length === 0) { + // nothing to fix. value specifiers and type specifiers are correctly written continue; } for (const report of sourceImports.reportValueImports) { if ( report.valueSpecifiers.length === 0 && - report.unusedSpecifiers.length === 0 + report.unusedSpecifiers.length === 0 && + report.node.importKind !== 'type' ) { - // import is all type-only, convert the entire import to `import type` context.report({ node: report.node, messageId: 'typeOverValue', @@ -265,12 +287,13 @@ export default util.createRule({ } else { const isTypeImport = report.node.importKind === 'type'; - // we have a mixed type/value import, so we need to split them out into multiple exports + // we have a mixed type/value import or just value imports, so we need to split them out into multiple imports if separate-type-imports is configured const importNames = ( isTypeImport - ? report.valueSpecifiers + ? report.valueSpecifiers // import type { A } from 'roo'; // WHERE A is used in value position : report.typeSpecifiers - ).map(specifier => `"${specifier.local.name}"`); + ) // import { A, B } from 'roo'; // WHERE A is used in type position and B is in value position + .map(specifier => `"${specifier.local.name}"`); const message = ((): { messageId: MessageIds; @@ -294,12 +317,12 @@ export default util.createRule({ if (isTypeImport) { return { messageId: 'someImportsInDecoMeta', - data: { typeImports }, + data: { typeImports }, // typeImports are all the value specifiers that are in the type position }; } else { return { messageId: 'someImportsAreOnlyTypes', - data: { typeImports }, + data: { typeImports }, // typeImports are all the type specifiers in the value position }; } } @@ -310,12 +333,14 @@ export default util.createRule({ ...message, *fix(fixer) { if (isTypeImport) { + // take all the valueSpecifiers and put them on a new line yield* fixToValueImportDeclaration( fixer, report, sourceImports, ); } else { + // take all the typeSpecifiers and put them on a new line yield* fixToTypeImportDeclaration( fixer, report, @@ -396,12 +421,12 @@ export default util.createRule({ } /** - * Returns information for fixing named specifiers. + * Returns information for fixing named specifiers, type or value */ function getFixesNamedSpecifiers( fixer: TSESLint.RuleFixer, node: TSESTree.ImportDeclaration, - typeNamedSpecifiers: TSESTree.ImportSpecifier[], + subsetNamedSpecifiers: TSESTree.ImportSpecifier[], allNamedSpecifiers: TSESTree.ImportSpecifier[], ): { typeNamedSpecifiersText: string; @@ -415,12 +440,12 @@ export default util.createRule({ } const typeNamedSpecifiersTexts: string[] = []; const removeTypeNamedSpecifiers: TSESLint.RuleFix[] = []; - if (typeNamedSpecifiers.length === allNamedSpecifiers.length) { + if (subsetNamedSpecifiers.length === allNamedSpecifiers.length) { // import Foo, {Type1, Type2} from 'foo' // import DefType, {Type1, Type2} from 'foo' const openingBraceToken = util.nullThrows( sourceCode.getTokenBefore( - typeNamedSpecifiers[0], + subsetNamedSpecifiers[0], util.isOpeningBraceToken, ), util.NullThrowsReasons.MissingToken('{', node.type), @@ -451,20 +476,20 @@ export default util.createRule({ ), ); } else { - const typeNamedSpecifierGroups: TSESTree.ImportSpecifier[][] = []; + const namedSpecifierGroups: TSESTree.ImportSpecifier[][] = []; let group: TSESTree.ImportSpecifier[] = []; for (const namedSpecifier of allNamedSpecifiers) { - if (typeNamedSpecifiers.includes(namedSpecifier)) { + if (subsetNamedSpecifiers.includes(namedSpecifier)) { group.push(namedSpecifier); } else if (group.length) { - typeNamedSpecifierGroups.push(group); + namedSpecifierGroups.push(group); group = []; } } if (group.length) { - typeNamedSpecifierGroups.push(group); + namedSpecifierGroups.push(group); } - for (const namedSpecifiers of typeNamedSpecifierGroups) { + for (const namedSpecifiers of namedSpecifierGroups) { const { removeRange, textRange } = getNamedSpecifierRanges( namedSpecifiers, allNamedSpecifiers, @@ -541,7 +566,53 @@ export default util.createRule({ if (!util.isCommaToken(before) && !util.isOpeningBraceToken(before)) { insertText = `,${insertText}`; } - return fixer.insertTextBefore(closingBraceToken, `${insertText}`); + return fixer.insertTextBefore(closingBraceToken, insertText); + } + + /** + * insert type keyword to named import node. + * e.g. + * import ADefault, { Already, type Type1, type Type2 } from 'foo' + * ^^^^ insert + */ + function* fixInsertTypeKeywordInNamedSpecifierList( + fixer: TSESLint.RuleFixer, + typeSpecifiers: TSESTree.ImportSpecifier[], + ): IterableIterator { + for (const spec of typeSpecifiers) { + const insertText = sourceCode.text.slice(...spec.range); + yield fixer.replaceTextRange(spec.range, `type ${insertText}`); + } + } + + function* fixInlineTypeImportDeclaration( + fixer: TSESLint.RuleFixer, + report: ReportValueImport, + sourceImports: SourceImports, + ): IterableIterator { + const { node } = report; + // For a value import, will only add an inline type to named specifiers + const { namedSpecifiers } = classifySpecifier(node); + const typeNamedSpecifiers = namedSpecifiers.filter(specifier => + report.typeSpecifiers.includes(specifier), + ); + + if (sourceImports.valueImport) { + // add import named type specifiers to its value import + // import ValueA, { type A } + // ^^^^ insert + const { namedSpecifiers: valueImportNamedSpecifiers } = + classifySpecifier(sourceImports.valueImport); + if ( + sourceImports.valueOnlyNamedImport || + valueImportNamedSpecifiers.length + ) { + yield* fixInsertTypeKeywordInNamedSpecifierList( + fixer, + typeNamedSpecifiers, + ); + } + } } function* fixToTypeImportDeclaration( @@ -567,13 +638,31 @@ export default util.createRule({ // import Type from 'foo' yield* fixInsertTypeSpecifierForImportDeclaration(fixer, node, true); return; + } else if ( + fixStyle === 'inline-type-imports' && + !report.typeSpecifiers.includes(defaultSpecifier) && + namedSpecifiers.length > 0 && + !namespaceSpecifier + ) { + // if there is a default specifier but it isn't a type specifier, then just add the inline type modifier to the named specifiers + // import AValue, {BValue, Type1, Type2} from 'foo' + yield* fixInlineTypeImportDeclaration(fixer, report, sourceImports); + return; } - } else { + } else if (!namespaceSpecifier) { if ( + fixStyle === 'inline-type-imports' && + namedSpecifiers.some(specifier => + report.typeSpecifiers.includes(specifier), + ) + ) { + // import {AValue, Type1, Type2} from 'foo' + yield* fixInlineTypeImportDeclaration(fixer, report, sourceImports); + return; + } else if ( namedSpecifiers.every(specifier => report.typeSpecifiers.includes(specifier), - ) && - !namespaceSpecifier + ) ) { // import {Type1, Type2} from 'foo' yield* fixInsertTypeSpecifierForImportDeclaration(fixer, node, false); @@ -606,12 +695,25 @@ export default util.createRule({ afterFixes.push(insertTypeNamedSpecifiers); } } else { - yield fixer.insertTextBefore( - node, - `import type {${ - fixesNamedSpecifiers.typeNamedSpecifiersText - }} from ${sourceCode.getText(node.source)};\n`, - ); + // The import is both default and named. Insert named on new line because can't mix default type import and named type imports + if (fixStyle === 'inline-type-imports') { + yield fixer.insertTextBefore( + node, + `import {${typeNamedSpecifiers + .map(spec => { + const insertText = sourceCode.text.slice(...spec.range); + return `type ${insertText}`; + }) + .join(', ')}} from ${sourceCode.getText(node.source)};\n`, + ); + } else { + yield fixer.insertTextBefore( + node, + `import type {${ + fixesNamedSpecifiers.typeNamedSpecifiersText + }} from ${sourceCode.getText(node.source)};\n`, + ); + } } } @@ -736,8 +838,6 @@ export default util.createRule({ closingBraceToken.range[1], ); if (node.specifiers.length > 1) { - // import type Foo from 'foo' - // import type {...} from 'foo' // <- insert yield fixer.insertTextAfter( node, `\nimport type${specifiersText} from ${sourceCode.getText( @@ -794,6 +894,9 @@ export default util.createRule({ } } + // we have some valueSpecifiers intermixed in types that need to be put on their own line + // import type { Type1, A } from 'foo' + // import type { A } from 'foo' const valueNamedSpecifiers = namedSpecifiers.filter(specifier => report.valueSpecifiers.includes(specifier), ); @@ -819,6 +922,8 @@ export default util.createRule({ afterFixes.push(insertTypeNamedSpecifiers); } } else { + // some are types. + // Add new value import and later remove those value specifiers from import type yield fixer.insertTextBefore( node, `import {${ @@ -862,6 +967,8 @@ export default util.createRule({ fixer: TSESLint.RuleFixer, node: TSESTree.ImportSpecifier, ): IterableIterator { + // import { type Foo } from 'foo' + // ^^^^ remove const typeToken = util.nullThrows( sourceCode.getFirstToken(node, isTypeToken), util.NullThrowsReasons.MissingToken('type', node.type), diff --git a/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts b/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts index b1389b26e6b..ee01b29c1b0 100644 --- a/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts +++ b/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts @@ -118,11 +118,80 @@ ruleTester.run('consistent-type-imports', rule, { `, options: [{ prefer: 'no-type-imports' }], }, + ` + import { type A } from 'foo'; + type T = A; + `, ` import { type A, B } from 'foo'; type T = A; const b = B; `, + ` + import { type A, type B } from 'foo'; + type T = A; + type Z = B; + `, + ` + import { B } from 'foo'; + import { type A } from 'foo'; + type T = A; + const b = B; + `, + { + code: ` + import { B, type A } from 'foo'; + type T = A; + const b = B; + `, + options: [{ fixStyle: 'inline-type-imports' }], + }, + { + code: ` + import { B } from 'foo'; + import type A from 'baz'; + type T = A; + const b = B; + `, + options: [{ fixStyle: 'inline-type-imports' }], + }, + { + code: ` + import { type B } from 'foo'; + import type { A } from 'foo'; + type T = A; + const b = B; + `, + options: [{ fixStyle: 'inline-type-imports' }], + }, + { + code: ` + import { B, type C } from 'foo'; + import type A from 'baz'; + type T = A; + type Z = C; + const b = B; + `, + options: [{ prefer: 'type-imports', fixStyle: 'inline-type-imports' }], + }, + { + code: ` + import { B } from 'foo'; + import type { A } from 'foo'; + type T = A; + const b = B; + `, + options: [{ prefer: 'type-imports', fixStyle: 'inline-type-imports' }], + }, + { + code: ` + import { B } from 'foo'; + import { A } from 'foo'; + type T = A; + const b = B; + `, + options: [{ prefer: 'no-type-imports', fixStyle: 'inline-type-imports' }], + }, // exports ` import Type from 'foo'; @@ -512,6 +581,24 @@ export type Y = { }, ], }, + { + code: ` + import Foo from 'foo'; + let foo: Foo; + `, + output: ` + import type Foo from 'foo'; + let foo: Foo; + `, + options: [{ prefer: 'type-imports', fixStyle: 'inline-type-imports' }], + errors: [ + { + messageId: 'typeOverValue', + line: 2, + column: 9, + }, + ], + }, { code: ` import { A, B } from 'foo'; @@ -1833,5 +1920,277 @@ const b = B; }, ], }, + + // inline-type-imports + { + code: ` + import { A, B } from 'foo'; + let foo: A; + let bar: B; + `, + output: ` + import { type A, type B } from 'foo'; + let foo: A; + let bar: B; + `, + options: [{ prefer: 'type-imports', fixStyle: 'inline-type-imports' }], + errors: [ + { + messageId: 'typeOverValue', + line: 2, + column: 9, + }, + ], + }, + { + code: ` + import { A, B } from 'foo'; + + let foo: A; + B(); + `, + output: ` + import { type A, B } from 'foo'; + + let foo: A; + B(); + `, + options: [{ prefer: 'type-imports', fixStyle: 'inline-type-imports' }], + errors: [ + { + messageId: 'aImportIsOnlyTypes', + line: 2, + column: 9, + }, + ], + }, + { + code: ` + import { A, B } from 'foo'; + type T = A; + B(); + `, + output: ` + import { type A, B } from 'foo'; + type T = A; + B(); + `, + options: [{ prefer: 'type-imports', fixStyle: 'inline-type-imports' }], + errors: [ + { + messageId: 'aImportIsOnlyTypes', + line: 2, + column: 9, + }, + ], + }, + { + code: ` + import { A } from 'foo'; + import { B } from 'foo'; + type T = A; + type U = B; + `, + output: ` + import { type A } from 'foo'; + import { type B } from 'foo'; + type T = A; + type U = B; + `, + options: [{ prefer: 'type-imports', fixStyle: 'inline-type-imports' }], + errors: [ + { + messageId: 'typeOverValue', + line: 2, + column: 9, + }, + { + messageId: 'typeOverValue', + line: 3, + column: 9, + }, + ], + }, + { + code: ` + import { A } from 'foo'; + import B from 'foo'; + type T = A; + type U = B; + `, + output: ` + import { type A } from 'foo'; + import type B from 'foo'; + type T = A; + type U = B; + `, + options: [{ prefer: 'type-imports', fixStyle: 'inline-type-imports' }], + errors: [ + { + messageId: 'typeOverValue', + line: 2, + column: 9, + }, + { + messageId: 'typeOverValue', + line: 3, + column: 9, + }, + ], + }, + { + code: ` +import A, { B, C } from 'foo'; +type T = B; +type U = C; +A(); + `, + output: ` +import A, { type B, type C } from 'foo'; +type T = B; +type U = C; +A(); + `, + options: [{ prefer: 'type-imports', fixStyle: 'inline-type-imports' }], + errors: [ + { + messageId: 'someImportsAreOnlyTypes', + line: 2, + column: 1, + }, + ], + }, + { + code: ` +import A, { B, C } from 'foo'; +type T = B; +type U = C; +type V = A; + `, + output: ` +import {type B, type C} from 'foo'; +import type A from 'foo'; +type T = B; +type U = C; +type V = A; + `, + options: [{ prefer: 'type-imports', fixStyle: 'inline-type-imports' }], + errors: [ + { + messageId: 'typeOverValue', + line: 2, + column: 1, + }, + ], + }, + { + code: ` +import A, { B, C as D } from 'foo'; +type T = B; +type U = D; +type V = A; + `, + output: ` +import {type B, type C as D} from 'foo'; +import type A from 'foo'; +type T = B; +type U = D; +type V = A; + `, + options: [{ prefer: 'type-imports', fixStyle: 'inline-type-imports' }], + errors: [ + { + messageId: 'typeOverValue', + line: 2, + column: 1, + }, + ], + }, + { + code: ` + import { /* comment */ A, B } from 'foo'; + type T = A; + `, + output: ` + import { /* comment */ type A, B } from 'foo'; + type T = A; + `, + options: [{ prefer: 'type-imports', fixStyle: 'inline-type-imports' }], + errors: [ + { + messageId: 'aImportIsOnlyTypes', + line: 2, + column: 9, + }, + ], + }, + { + code: ` + import { B, /* comment */ A } from 'foo'; + type T = A; + `, + output: ` + import { B, /* comment */ type A } from 'foo'; + type T = A; + `, + options: [{ prefer: 'type-imports', fixStyle: 'inline-type-imports' }], + errors: [ + { + messageId: 'aImportIsOnlyTypes', + line: 2, + column: 9, + }, + ], + }, + { + code: ` +import { A, B, C } from 'foo'; +import type { D } from 'deez'; + +const foo: A = B(); +let bar: C; +let baz: D; + `, + output: ` +import { type A, B, type C } from 'foo'; +import type { D } from 'deez'; + +const foo: A = B(); +let bar: C; +let baz: D; + `, + options: [{ prefer: 'type-imports', fixStyle: 'inline-type-imports' }], + errors: [ + { + messageId: 'someImportsAreOnlyTypes', + line: 2, + column: 1, + }, + ], + }, + { + code: ` +import { A, B, type C } from 'foo'; +import type { D } from 'deez'; +const foo: A = B(); +let bar: C; +let baz: D; + `, + output: ` +import { type A, B, type C } from 'foo'; +import type { D } from 'deez'; +const foo: A = B(); +let bar: C; +let baz: D; + `, + options: [{ prefer: 'type-imports', fixStyle: 'inline-type-imports' }], + errors: [ + { + messageId: 'aImportIsOnlyTypes', + line: 2, + column: 1, + }, + ], + }, ], }); From 832cec666d135fbf7e48142dcd5e0ee1013c4f53 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 10 Nov 2022 13:18:19 -0800 Subject: [PATCH 096/193] chore(deps): update dependency lerna to v6.0.3 (#5936) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 828 +++++++++++++++++++++++++-------------------------- 2 files changed, 415 insertions(+), 415 deletions(-) diff --git a/package.json b/package.json index 77e222ad7a8..4726e08400f 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "jest-diff": "^29.0.3", "jest-snapshot": "^29.0.3", "jest-specific-snapshot": "^5.0.0", - "lerna": "6.0.1", + "lerna": "6.0.3", "lint-staged": "^13.0.0", "make-dir": "^3.1.0", "markdownlint-cli": "^0.32.0", diff --git a/yarn.lock b/yarn.lock index 543fa9bbc68..d77fd4dcba5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2288,39 +2288,39 @@ resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== -"@lerna/add@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/add/-/add-6.0.1.tgz#6d71084fe7918c96c909bebdc5c27ed6006e09d6" - integrity sha512-cCQIlMODhi3KYyTDOp2WWL4Kj2dKK+MmCiaSf+USrbSWPVVXQGn5Eb11XOMUfYYq3Ula75sWL2urtYwuu8IbmA== - dependencies: - "@lerna/bootstrap" "6.0.1" - "@lerna/command" "6.0.1" - "@lerna/filter-options" "6.0.1" - "@lerna/npm-conf" "6.0.1" - "@lerna/validation-error" "6.0.1" +"@lerna/add@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/add/-/add-6.0.3.tgz#341927d00b79ad2a2c0e9aec239b203e5a04fa12" + integrity sha512-EM9hJExG6bV4Hg+XpHTg5nGCuZl3pUEdbYLtyXfMUj/7fpCrUkxB0oESIVhFINVbxHm2pdnUfOxPDHwFSyWBig== + dependencies: + "@lerna/bootstrap" "6.0.3" + "@lerna/command" "6.0.3" + "@lerna/filter-options" "6.0.3" + "@lerna/npm-conf" "6.0.3" + "@lerna/validation-error" "6.0.3" dedent "^0.7.0" npm-package-arg "8.1.1" p-map "^4.0.0" pacote "^13.6.1" semver "^7.3.4" -"@lerna/bootstrap@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-6.0.1.tgz#2af0b790b9ce426b78f12543159c8506d77afc28" - integrity sha512-a3DWchHFOiRmDN24VTdmTxKvAqw6Msp8pDCWXq4rgOQSFxqyYECd8BYvmy8dTW6LcC4EG0HqTGRguuEaKCasOw== - dependencies: - "@lerna/command" "6.0.1" - "@lerna/filter-options" "6.0.1" - "@lerna/has-npm-version" "6.0.1" - "@lerna/npm-install" "6.0.1" - "@lerna/package-graph" "6.0.1" - "@lerna/pulse-till-done" "6.0.1" - "@lerna/rimraf-dir" "6.0.1" - "@lerna/run-lifecycle" "6.0.1" - "@lerna/run-topologically" "6.0.1" - "@lerna/symlink-binary" "6.0.1" - "@lerna/symlink-dependencies" "6.0.1" - "@lerna/validation-error" "6.0.1" +"@lerna/bootstrap@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-6.0.3.tgz#806fae9955f25ef5468dd7752c5d5469e3253fa7" + integrity sha512-51eT07tAiH1oca9dNrrLXXH6PJZFY4zKEYDqLkx+zMCG/LsIUnzEfy4JBe1GXbFasXfM24pG8wLKoj1sj1CR3A== + dependencies: + "@lerna/command" "6.0.3" + "@lerna/filter-options" "6.0.3" + "@lerna/has-npm-version" "6.0.3" + "@lerna/npm-install" "6.0.3" + "@lerna/package-graph" "6.0.3" + "@lerna/pulse-till-done" "6.0.3" + "@lerna/rimraf-dir" "6.0.3" + "@lerna/run-lifecycle" "6.0.3" + "@lerna/run-topologically" "6.0.3" + "@lerna/symlink-binary" "6.0.3" + "@lerna/symlink-dependencies" "6.0.3" + "@lerna/validation-error" "6.0.3" "@npmcli/arborist" "5.3.0" dedent "^0.7.0" get-port "^5.1.1" @@ -2332,100 +2332,100 @@ p-waterfall "^2.1.1" semver "^7.3.4" -"@lerna/changed@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-6.0.1.tgz#58614a0c65bfab77fefd142d5edc8282e057ea83" - integrity sha512-b0KzqpNv25ZxH9M/7jtDQaXWUBhVzBVJ8DQ4PjjeoulOCQ+mA9tNQr8UVmeU1UZiaNtNz6Hcy55vyvVvNe07VA== +"@lerna/changed@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-6.0.3.tgz#9dfd7ff944b2409c7762a5e376607ea6e5533585" + integrity sha512-VhKl/vVnrY12z2q1it2FkPkRwC3kyZh++kWMNDbMuUqH1kDHuw7KWJjPw6H4LDpoFWj4Q0hPcNRXxJpNiRWD1g== dependencies: - "@lerna/collect-updates" "6.0.1" - "@lerna/command" "6.0.1" - "@lerna/listable" "6.0.1" - "@lerna/output" "6.0.1" + "@lerna/collect-updates" "6.0.3" + "@lerna/command" "6.0.3" + "@lerna/listable" "6.0.3" + "@lerna/output" "6.0.3" -"@lerna/check-working-tree@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-6.0.1.tgz#ad71d53941b5c85523499b283e5f44b52eca6276" - integrity sha512-9Ti1EuE3IiJUvvAtFk+Xr9Uw6KehT78ghnI4f/hi4uew5q0Mf2+DMaBNexbhOTpRFBeIq4ucDFhiN091pNkUNw== +"@lerna/check-working-tree@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-6.0.3.tgz#32fb77c5832926f7a66fd1a77bb81a5f46f4fbc5" + integrity sha512-ulAilI5AHvSVluH4QdcRPBbGH6lKU6OARfJFIgFYm8KoPyMESygYIBKBKuTUuyzfp5DOsASq2NiumBW4rpC7hg== dependencies: - "@lerna/collect-uncommitted" "6.0.1" - "@lerna/describe-ref" "6.0.1" - "@lerna/validation-error" "6.0.1" + "@lerna/collect-uncommitted" "6.0.3" + "@lerna/describe-ref" "6.0.3" + "@lerna/validation-error" "6.0.3" -"@lerna/child-process@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-6.0.1.tgz#2141f643a4ed7d38fa9270a80403467a353a3b39" - integrity sha512-5smM8Or/RQkHysNFrUYdrCYlhpr3buNpCYU7T2DPYzOWRPm+X5rCvt/dDOcS3UgYT2jEyS86S5Y7pK2X7eXtmg== +"@lerna/child-process@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-6.0.3.tgz#691040e5e3f64dfe7ef4f4b4d5e6d560e1bef8fc" + integrity sha512-WfFwWdtGA0wvbyq7FB78Gvkd5mVjCGhRoLQY0FIGPQrmZBv3uy7kz5KbRKJlEmoIhVUnFbbV1xURxdqLzNrxoA== dependencies: chalk "^4.1.0" execa "^5.0.0" strong-log-transformer "^2.1.0" -"@lerna/clean@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-6.0.1.tgz#e59f94140e577cbb66f76f78794b97778f78a246" - integrity sha512-ZaWPzzYNkJM7Ib2GWPLSELVBf5nRCGOGBtR9DSLKAore0Me876JLgi4h2R+Y2PVyCvT1kmoQKAclnjxdZbCONA== - dependencies: - "@lerna/command" "6.0.1" - "@lerna/filter-options" "6.0.1" - "@lerna/prompt" "6.0.1" - "@lerna/pulse-till-done" "6.0.1" - "@lerna/rimraf-dir" "6.0.1" +"@lerna/clean@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-6.0.3.tgz#f3519ef27a59b04b0f0f3553b53990d3fbe3ea48" + integrity sha512-4H+leVVVhwnc/GBOkFBIrLBia+MRm2ETZyXdCNckCJZ/e5tm6XHJLprGMSP2QwhJ0H20r+ciiQGzo3TGjQAEwQ== + dependencies: + "@lerna/command" "6.0.3" + "@lerna/filter-options" "6.0.3" + "@lerna/prompt" "6.0.3" + "@lerna/pulse-till-done" "6.0.3" + "@lerna/rimraf-dir" "6.0.3" p-map "^4.0.0" p-map-series "^2.1.0" p-waterfall "^2.1.1" -"@lerna/cli@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-6.0.1.tgz#8a92386702cff815f36104792ad5dc14f11a61a8" - integrity sha512-AuAnUXkBGdts/rmHltrkZucYy11OwYPb/4HM3zxLeq4O30w2ocZIytkOtSkuVKOMPWBZR8b37fNuZBzvxe5OmA== +"@lerna/cli@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-6.0.3.tgz#a5115e1af70817a8afc08a646d3a7ae80a179801" + integrity sha512-4J3dOmDGxl32FJJryE65wXR//FOMFRM0osURnr+sylzStpaEwYO24GN1oVl0YIlnGVBuPIBDpr7n0uyjvfn+2A== dependencies: - "@lerna/global-options" "6.0.1" + "@lerna/global-options" "6.0.3" dedent "^0.7.0" npmlog "^6.0.2" yargs "^16.2.0" -"@lerna/collect-uncommitted@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-6.0.1.tgz#b93f5acfa9c63fffe41bfaaac02a0efad9180b00" - integrity sha512-qPqwmIlSlf8XBJnqMc+6pz6qXQ0Pfjil70FB2IPvoWbfrLvMI6K3I/AXeub9X5fj5HYqNs1XtwhWHJcMFpJddw== +"@lerna/collect-uncommitted@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-6.0.3.tgz#645d24f60d2a47edebef7645cf65c6064cecc025" + integrity sha512-kMKL+U6fIMIHMENez6HrZEYZum+YObhmPzRr/5kkuaYqKPw2up/z1dHYQ/+w+tvzavGP15VKAWy/tZ0WsMuTWw== dependencies: - "@lerna/child-process" "6.0.1" + "@lerna/child-process" "6.0.3" chalk "^4.1.0" npmlog "^6.0.2" -"@lerna/collect-updates@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-6.0.1.tgz#7b4be193ee51a72ccedc20acf845fe32fdee9ee2" - integrity sha512-OwRcLqD1N5znlZM/Ctf031RDkodHVO62byiD35AbHGoGM2EI2TSYyIbqnJ8QsQJMB05/KhIBndL8Mpcdle7/rg== +"@lerna/collect-updates@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-6.0.3.tgz#fbfde0ec93b59c7868f49dc985a06d472e4f6dd1" + integrity sha512-qLuCHaHlVHu/tkdnncG6bQZHz9IFfZ6i7lexWfFnQnZ/aLEY7dVnFUde1jbsTFNMhJesKEbXJshXRcTcplDH6Q== dependencies: - "@lerna/child-process" "6.0.1" - "@lerna/describe-ref" "6.0.1" + "@lerna/child-process" "6.0.3" + "@lerna/describe-ref" "6.0.3" minimatch "^3.0.4" npmlog "^6.0.2" slash "^3.0.0" -"@lerna/command@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/command/-/command-6.0.1.tgz#a429e724237bc3c4a735e8eaef9816f2203cb7dc" - integrity sha512-V9w8M7pMU7KztxaL0+fetTSQYTa12bhTl86ll9VjlgYZ5qUAXk9E42Y8hbVThyYtHEhkRnIMinkWsmH/9YKU/A== - dependencies: - "@lerna/child-process" "6.0.1" - "@lerna/package-graph" "6.0.1" - "@lerna/project" "6.0.1" - "@lerna/validation-error" "6.0.1" - "@lerna/write-log-file" "6.0.1" +"@lerna/command@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/command/-/command-6.0.3.tgz#5c82c388cb2e2a401f1b00bf7454a15458a6c91e" + integrity sha512-iFkIQKLy+Ef2Kf20wOKBdkCA5J64Wjgr3XC62ZdrlDkx6wydfcfJMiXx2bhRqNKMe1cHxlBKGoRKzy8J+tBrHw== + dependencies: + "@lerna/child-process" "6.0.3" + "@lerna/package-graph" "6.0.3" + "@lerna/project" "6.0.3" + "@lerna/validation-error" "6.0.3" + "@lerna/write-log-file" "6.0.3" clone-deep "^4.0.1" dedent "^0.7.0" execa "^5.0.0" is-ci "^2.0.0" npmlog "^6.0.2" -"@lerna/conventional-commits@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-6.0.1.tgz#72dd55aadc7c20eca5af3d03cdcfb613964dafc4" - integrity sha512-6oIGEZKy1GpooW28C0aEDkZ/rVkqpX44knP8Jyb5//1054QogqPhGC5q6J0lZxyhun8dQkpF6XTHlIintI8xow== +"@lerna/conventional-commits@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-6.0.3.tgz#34ecf027b41b1d5182886b6b4c7b674d22897dd7" + integrity sha512-TZof9i0u9TK/Q7LEErjMQAMLf++MjO9NYG81sAuUaNKHMchUOmlFKtJmbT4/JjmgnBX5W0pCUF6DBxr/Bdjj9g== dependencies: - "@lerna/validation-error" "6.0.1" + "@lerna/validation-error" "6.0.3" conventional-changelog-angular "^5.0.12" conventional-changelog-core "^4.2.4" conventional-recommended-bump "^6.1.0" @@ -2436,24 +2436,24 @@ pify "^5.0.0" semver "^7.3.4" -"@lerna/create-symlink@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-6.0.1.tgz#5a9f75f8e5c0d83c39d70240f51284cc5d6770ad" - integrity sha512-ZmLx9SP5De6u1xkD7Z6gMMFuyLKCb+2bodreFe7ryOVP3cOLbmNOmgMgj+gtUgIwIv7BDwX3qFWlPY6B3VW3hQ== +"@lerna/create-symlink@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-6.0.3.tgz#e651eb4c304e921bb7f83cbeae7a1af6329f284d" + integrity sha512-myCpuQZ4yYJ5sD+xZiyQHfONBIWlQnM3crIlAvObRYs1U+HwniO9YWk0HcW9dyzplwaYo+Vn55mdi67pTdsdDg== dependencies: cmd-shim "^5.0.0" fs-extra "^9.1.0" npmlog "^6.0.2" -"@lerna/create@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/create/-/create-6.0.1.tgz#7905cef9196cb6a1caff5d7cd78a46fc7ea635a9" - integrity sha512-VuTdvBJDzvAaMBYoKTRMBQC+nfwnihxdA/ekUqBD+W8MMsqPLCGCneyl7JK9RaSSib/10LyRDEmfo79UAndcgQ== +"@lerna/create@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/create/-/create-6.0.3.tgz#525b2e5702a61cee7f44928fdf889474dfa6a615" + integrity sha512-mq3D5laUMe6DWhCoWS0mYJw9PZez/8up81860lk5m7Zojk1Ataa08ZWtGhBgP+p77piNRvmjN89hhjkWiXG6ng== dependencies: - "@lerna/child-process" "6.0.1" - "@lerna/command" "6.0.1" - "@lerna/npm-conf" "6.0.1" - "@lerna/validation-error" "6.0.1" + "@lerna/child-process" "6.0.3" + "@lerna/command" "6.0.3" + "@lerna/npm-conf" "6.0.3" + "@lerna/validation-error" "6.0.3" dedent "^0.7.0" fs-extra "^9.1.0" init-package-json "^3.0.2" @@ -2467,218 +2467,218 @@ validate-npm-package-name "^4.0.0" yargs-parser "20.2.4" -"@lerna/describe-ref@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-6.0.1.tgz#e9277bcc3c1c839fc7305b808f9dd02a5404aaf8" - integrity sha512-PcTVt4qgAXUPBtWHyqixtwE/eXe56+DFRnfTcJlb4x5F7LJ+7VNpdR/81qfP89Xj10U5IjELXbXmriz1KMwhfw== +"@lerna/describe-ref@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-6.0.3.tgz#f7e5603d686b8f58d836ddc0fb8612fceae9fe39" + integrity sha512-3gj6r9PK+c5SfHQr2j8MQ3qb6xQTrX8KvvGhe3YDW8h3jxx9SAGao8zuvzjI3tVpLx7ZSbxmHqMpyUmnLh5kuw== dependencies: - "@lerna/child-process" "6.0.1" + "@lerna/child-process" "6.0.3" npmlog "^6.0.2" -"@lerna/diff@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-6.0.1.tgz#e8c5d541d74a9aa13a4ac6745f2f0d9531207fd1" - integrity sha512-/pGXH9txA8wX1YJ/KOBXzx0Z2opADBW4HKPCxxHAu+6dTGMbKABDljVT5Np3UpfIrAGDE5fTuf0aGL4vkKUWrg== +"@lerna/diff@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-6.0.3.tgz#6d9bbde092a605e7aa2b9ab69ce6104eec5a0935" + integrity sha512-9syquyKF2oxg0fF736RWT2cf3Oyk4eRXRUNzT0hF0DL/8frQ98H+gF3ftIFVzz1bfPbXtubzBbLDi29bGEG3bQ== dependencies: - "@lerna/child-process" "6.0.1" - "@lerna/command" "6.0.1" - "@lerna/validation-error" "6.0.1" + "@lerna/child-process" "6.0.3" + "@lerna/command" "6.0.3" + "@lerna/validation-error" "6.0.3" npmlog "^6.0.2" -"@lerna/exec@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-6.0.1.tgz#d2d0785c46b7ceb3758fe75bb6d95d177a0a0ec3" - integrity sha512-x9puoI3091Alp45w7XOGRxThOw45p+tWGPR5TBCEQiiH7f8eF9Dc4WX5HXf31ooK6NmD40eKPYhBgy8oQnJY9w== - dependencies: - "@lerna/child-process" "6.0.1" - "@lerna/command" "6.0.1" - "@lerna/filter-options" "6.0.1" - "@lerna/profiler" "6.0.1" - "@lerna/run-topologically" "6.0.1" - "@lerna/validation-error" "6.0.1" +"@lerna/exec@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-6.0.3.tgz#01de1eed611879c73b3ec2b2385256a709ef7bd0" + integrity sha512-4xKTXPQe3/0hrwCao7evcQfaacfROhVkR2zfnQEA+rkKRiV6ILWdvu9jCxI7DMkzoh4DgABVuGAv84CeraunMg== + dependencies: + "@lerna/child-process" "6.0.3" + "@lerna/command" "6.0.3" + "@lerna/filter-options" "6.0.3" + "@lerna/profiler" "6.0.3" + "@lerna/run-topologically" "6.0.3" + "@lerna/validation-error" "6.0.3" p-map "^4.0.0" -"@lerna/filter-options@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-6.0.1.tgz#4dbd29a31fb2ac228f72c51b223f17623d1f2c71" - integrity sha512-6KxbBI/2skRl/yQdjugQ1PWrSLq19650z8mltF0HT7B686fj7LlDNtESFOtY6iZ8IPqKBkIavOP0DPmJZd7Szw== +"@lerna/filter-options@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-6.0.3.tgz#9362a2b517be5bc9851678bc7a972e3697d02aaf" + integrity sha512-6WjtXo1nNfOIYxjysGgjnCUqAbIqvoIIyQznLQYPsKN/6NN4U7sXr0P3nbaEgBZ2NHeV+seLWA/wraJ1zDaD4Q== dependencies: - "@lerna/collect-updates" "6.0.1" - "@lerna/filter-packages" "6.0.1" + "@lerna/collect-updates" "6.0.3" + "@lerna/filter-packages" "6.0.3" dedent "^0.7.0" npmlog "^6.0.2" -"@lerna/filter-packages@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-6.0.1.tgz#07f10dc78e852bbba44843b785ebc16f386cedaa" - integrity sha512-2bKhexeF07Urs2b0xYX2OgYUN0EzmS2FSgvw0KT6He48PGOkqgJjU7PIiWdPyOvZdukwm07qXTmJZulAHftceA== +"@lerna/filter-packages@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-6.0.3.tgz#db19b3d5f430ca2ae5bacb5b7e140798a905c3c9" + integrity sha512-UlLgondhCpy7mzZWpOoUy8OlLux8YIqw07Obba0TvVLzrVIGIPIeXhqleRchUGVRV1vfQJ2d3vCTx31s1e/V4g== dependencies: - "@lerna/validation-error" "6.0.1" + "@lerna/validation-error" "6.0.3" multimatch "^5.0.0" npmlog "^6.0.2" -"@lerna/get-npm-exec-opts@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-6.0.1.tgz#c766588d030c0ec7170650808957998e8ad70831" - integrity sha512-y2T+ODP8HNzHQn1ldrrPW+n823fGsN2sY0r78yURFxYZnxA9ZINyQ6IAejo5LqHrYN8Qhr++0RHo2tUisIHdKg== +"@lerna/get-npm-exec-opts@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-6.0.3.tgz#d92a6461a626b79167fd2bc11bae38ee6154b965" + integrity sha512-zmKmHkXzmFQIBh2k9rCwzSkearKD+Pz1GypdJ0hAehemnabtW5QQKoGFsGh+7i5mOP0JBUl5kXTYTnwRGOWmYQ== dependencies: npmlog "^6.0.2" -"@lerna/get-packed@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-6.0.1.tgz#d31c10ec10658eeee4306886c100cd9600d6dd78" - integrity sha512-Z/5J5vbjdeGqZcPvUSiszvyizHdsTRiFlpPORWK3YfIsHllUB7QZnVHLg92UnSJrpPE0O1gH+k6ByhhR+3qEdA== +"@lerna/get-packed@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-6.0.3.tgz#c5b016a5cbd9a9472b76a3d879b229982248dacf" + integrity sha512-NX/Ifi/A7iTXasfBioyv/nQ8+IC4gE1SEAuE39/ExGviOM3Jkk5EmeCqwAbhZyhYkxoDBQDJJvagQ5DobpfS7g== dependencies: fs-extra "^9.1.0" ssri "^9.0.1" tar "^6.1.0" -"@lerna/github-client@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-6.0.1.tgz#081d13c2debf312d0e5a2bb2fad6e0c69e1501d6" - integrity sha512-UA7V3XUunJnrfCL2eyW9QsCjBWShv4dCRGUITXmpQJrNIMZIqVbBJzqN9LVHDNc/hEVZGt0EjtHWdpFCgD4ypg== +"@lerna/github-client@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-6.0.3.tgz#3b6f0016a962d5790396a5b9b80f8b73aae46709" + integrity sha512-wMOKH3FIDdE5T8UF88gvhUEBEFD9IUseFHqYt19hgzQyZxAx/hQQE2lqAEosYThPXqtKntIPKQGAfl0gquAMFQ== dependencies: - "@lerna/child-process" "6.0.1" + "@lerna/child-process" "6.0.3" "@octokit/plugin-enterprise-rest" "^6.0.1" "@octokit/rest" "^19.0.3" git-url-parse "^13.1.0" npmlog "^6.0.2" -"@lerna/gitlab-client@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-6.0.1.tgz#1863b621a1530bc482113cac8791247664dedb2a" - integrity sha512-yyaBKf/OqBAau6xDk1tnMjfkxRpC/j3OwUyXFFGfJFSulWRHpbHoFSfvIgOn/hkjAr9FfHC7TXItRg8qdm38Wg== +"@lerna/gitlab-client@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-6.0.3.tgz#59b592572dc640f1aa4d89a1393e29478e45ddc8" + integrity sha512-dBZiTsiHJ1j3tkW9JKSqCCZCk6aBiYaU9R/dSnpoPb6ZRthgoMGxtnfdk/1CKZlDargAu12XLJmcXLi7+UbyPg== dependencies: node-fetch "^2.6.1" npmlog "^6.0.2" -"@lerna/global-options@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-6.0.1.tgz#83061d85759c105120ff55716959642ba6eb0eea" - integrity sha512-vzjDI3Bg2NR+cSgfjHWax2bF1HmQYjJF2tmZlT/hJbwhaVMIEnhzHnJ9Yycmm98cdV77xEMlbmk5YD7xgFdG2w== +"@lerna/global-options@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-6.0.3.tgz#e878d45b3ed4b14efecd37306f5e876779d8e2c8" + integrity sha512-XE22Mogzjh8w1rr07hALq40kmPuCr25cQ+K0OwYEiPsyH1dpOM7PSkP4qdT1l2UlWNM64LjgJtnjZ9hsx282VQ== -"@lerna/has-npm-version@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-6.0.1.tgz#ed27a27cad2090069feb3108b105ceec765bec5e" - integrity sha512-ol1onJaauMXK0cQsfRX2rvbhNRyNBY9Ne5trrRjfMROa7Tnr8c3I4+aKQs7m4z1JdWaGBV4xBH+NSZ/esPuaWA== +"@lerna/has-npm-version@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-6.0.3.tgz#db16127ead4819d6cec97cf0597e392def886ee3" + integrity sha512-azZJkKPUWmfZf4AR40t9L6+utZaaCcZcXHOw/vHhmpn9GpZuc8Ck5cM5+8w9bgMglz0YwvTTWvutY2/mCnN5jA== dependencies: - "@lerna/child-process" "6.0.1" + "@lerna/child-process" "6.0.3" semver "^7.3.4" -"@lerna/import@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/import/-/import-6.0.1.tgz#9e869d6bbe82446ee3620c4310ca6232881b7952" - integrity sha512-GrTtIWUCnDf+FqRjenV2OKWU+khoZj0h/etgfXus45PBO2+V/SkkzIY4xof23XphiydUYrSrYtwx2i1aEmk3Wg== - dependencies: - "@lerna/child-process" "6.0.1" - "@lerna/command" "6.0.1" - "@lerna/prompt" "6.0.1" - "@lerna/pulse-till-done" "6.0.1" - "@lerna/validation-error" "6.0.1" +"@lerna/import@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/import/-/import-6.0.3.tgz#d881cd2c4420cb91a701fc4fb43da3e70cb9335f" + integrity sha512-AWSwoS9e5udSrJ7E15rR+8V7Hnhli4+3IHh658bpvcGvsIntL7hBZucqWiKRMOmrsafncaBpLkfFgdiyGwy1Pw== + dependencies: + "@lerna/child-process" "6.0.3" + "@lerna/command" "6.0.3" + "@lerna/prompt" "6.0.3" + "@lerna/pulse-till-done" "6.0.3" + "@lerna/validation-error" "6.0.3" dedent "^0.7.0" fs-extra "^9.1.0" p-map-series "^2.1.0" -"@lerna/info@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/info/-/info-6.0.1.tgz#68395061ffbd81c7716d60b99b5220c90ade2862" - integrity sha512-QEW7JtJjoR1etUrcft7BnrwPZFHE2JPmt2DoSvSmLISLyy+HlmdXHK+p6Ej3g1ql8gS0GWCacgwmlRZ27CDp5A== +"@lerna/info@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/info/-/info-6.0.3.tgz#b22af49db401580d8e46bf99be07de5c71fab000" + integrity sha512-fqFGejIjjHN9obKUiWgmkknDJliyyRDbv/g6TMvQptxwiGfFBjR55TSPdKyUi9XslIQL5HWMYU7NWzZPiilk/A== dependencies: - "@lerna/command" "6.0.1" - "@lerna/output" "6.0.1" + "@lerna/command" "6.0.3" + "@lerna/output" "6.0.3" envinfo "^7.7.4" -"@lerna/init@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/init/-/init-6.0.1.tgz#babee56707bd19b3c1b82967e3360d1083c04cf9" - integrity sha512-zOMrSij09LSAVUUujpD3y32wkHp8dQ+/dVCp4USlfcGfI+kIPc5prkYCGDO8dEcqkze0pMfDMF23pVNvAf9g7w== +"@lerna/init@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/init/-/init-6.0.3.tgz#48e259c90712792bd5cdc21fa5602ae7083b143d" + integrity sha512-PmEmIJNNpXkGtEINBO5wfFrOlipAwY/4k674mbBWAfVJX+Affyx8yMcnMM28oDnFwe8gi12w5oRI0JcxcjpCFg== dependencies: - "@lerna/child-process" "6.0.1" - "@lerna/command" "6.0.1" - "@lerna/project" "6.0.1" + "@lerna/child-process" "6.0.3" + "@lerna/command" "6.0.3" + "@lerna/project" "6.0.3" fs-extra "^9.1.0" p-map "^4.0.0" write-json-file "^4.3.0" -"@lerna/link@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/link/-/link-6.0.1.tgz#a94cf3aead92538835d955c6de281c65097f3471" - integrity sha512-VXZ77AWsJCycTu219ZLUHyRzMd5hgivLk5ZyBD1s/emArFvdEmGLscj2RXn3P3w/951b+DNG2Zbi6nek0iJ6DA== +"@lerna/link@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/link/-/link-6.0.3.tgz#364387ba44a347e3dde41d4925d04e42aeb583d9" + integrity sha512-jVTk8QWoVb+gPSkLm6XLtEKdOyqH4WwpOatSZ5zMgiRfjGDiwxCc3dB994JFPJ5FEnr9qCwqXFKjIqef7POIyQ== dependencies: - "@lerna/command" "6.0.1" - "@lerna/package-graph" "6.0.1" - "@lerna/symlink-dependencies" "6.0.1" - "@lerna/validation-error" "6.0.1" + "@lerna/command" "6.0.3" + "@lerna/package-graph" "6.0.3" + "@lerna/symlink-dependencies" "6.0.3" + "@lerna/validation-error" "6.0.3" p-map "^4.0.0" slash "^3.0.0" -"@lerna/list@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/list/-/list-6.0.1.tgz#ab6d056c5d7b99ca0ed6a17d48bf907afd9d970a" - integrity sha512-M9Vneh866E1nlpU88rcUMLR+XTVi3VY0fLPr1OqXdYF+eTe6RkEHUQj8HIk94Rnt02HsWc4+FO31T4i5sf+PaA== +"@lerna/list@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/list/-/list-6.0.3.tgz#83c3fd2b6e4a31e804737a472df15e414819ed66" + integrity sha512-5cQHJ2GAeN2/GV6uMJ4CVIQa3YOcmuNGqzr0DWwatR+5tire6dxFu5uY9Kjn2PYjmFUlwFwVgZzqRrSKPPPiVw== dependencies: - "@lerna/command" "6.0.1" - "@lerna/filter-options" "6.0.1" - "@lerna/listable" "6.0.1" - "@lerna/output" "6.0.1" + "@lerna/command" "6.0.3" + "@lerna/filter-options" "6.0.3" + "@lerna/listable" "6.0.3" + "@lerna/output" "6.0.3" -"@lerna/listable@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-6.0.1.tgz#444e81f6642c198d116e9e6b86d96d10ddf2e147" - integrity sha512-+xEByVX0sbnBW3EBu3XCg71Bz9/dahncmCjNK0kVnZLnQZzfULCndaQeSt+f9KO0VCs8h1tnXdo2uLPm4lThnw== +"@lerna/listable@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-6.0.3.tgz#9460d5efce0850985a9ade03b277184c22d744be" + integrity sha512-7EDzDMc22A/U4O1tCfLzb7MoFQVwwfv6E4F8JSilRupd7mp+2tMi7kvrwS5Dk5imNlHia4e5T0fVWXDUnIO2Sg== dependencies: - "@lerna/query-graph" "6.0.1" + "@lerna/query-graph" "6.0.3" chalk "^4.1.0" columnify "^1.6.0" -"@lerna/log-packed@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-6.0.1.tgz#20fe38b5f18e65392b42bf84cfdda0afc0b62330" - integrity sha512-HTJdZzfBbb5jyk/QU2O6o+yaWRwLoaPruhK+Q3ESTzQ2mlNCr0CI4UKWDcWURWx0EsVsYqsoUHuPZInpIHqCnA== +"@lerna/log-packed@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-6.0.3.tgz#2bcd152613de9abb938e5acde0d62d9a7f1645da" + integrity sha512-MCGAaaywfs8Z0eeG4mhP1u1ma+ORO8c9gGgtpX0LkjJ9HlE23BkCznC8VrJSVTqChtU4tkVp/38hhwEzZmcPFA== dependencies: byte-size "^7.0.0" columnify "^1.6.0" has-unicode "^2.0.1" npmlog "^6.0.2" -"@lerna/npm-conf@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-6.0.1.tgz#fa242a36ef687c7b5207a9d9a85b9e7a4f38bdc5" - integrity sha512-VjxODCnl6QJGoQ8z8AWEID1GO9CtCr2yRyn6NoRdBOTYmzI5KhBBM+nWmyMSOUe0EZI+K5j04/GRzKHg2KXTAQ== +"@lerna/npm-conf@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-6.0.3.tgz#94f7c23fe19e5406913e08f160e244a89e309204" + integrity sha512-lX4nAJgScfDmmdPVM9rOO6AzwCY9UPjuNpY6ZpMYkg/FIr1dch5+MFjexpan4VL2KRBNMWUYpDk3U/e2V+7k/A== dependencies: config-chain "^1.1.12" pify "^5.0.0" -"@lerna/npm-dist-tag@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-6.0.1.tgz#4718bdedd82f375ba619319070b694f1113e627b" - integrity sha512-jJKDgnhj6xGqSWGcbwdcbPtoo2m4mHRwqu8iln9e3TMOEyUO9aA4uvd0/18tEAsboOMiLUhhcQ8709iKv21ZEA== +"@lerna/npm-dist-tag@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-6.0.3.tgz#7dda3da557c1c9a729c2942de5eda26e83497dfa" + integrity sha512-wjbVPZQq1bdfikldEJ6TICikKhVh8gOWPsqR0iTj5iCDRUAiQM5HscrCApTIrB/hASyKV2xG60ruCpMG2Qo6AQ== dependencies: - "@lerna/otplease" "6.0.1" + "@lerna/otplease" "6.0.3" npm-package-arg "8.1.1" npm-registry-fetch "^13.3.0" npmlog "^6.0.2" -"@lerna/npm-install@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-6.0.1.tgz#5d6f0c62b34f2bfeb8f20b81b08f01ca0d3ed60b" - integrity sha512-saDJSyhhl/wxgZSzRx2/pr0wsMR+hZpdhLGd1lZgo5XzLq3ogK+BxPFz3AK3xhRnNaMq96gDQ3xmeetoV53lwQ== +"@lerna/npm-install@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-6.0.3.tgz#6ea619ddbbe2c995477209ebf8d21fd46dd87ff5" + integrity sha512-mBypvdtt1feL7L6f8++/tChn/5bM+KbYX06WXjW3yUT81o9geg6p7aaZoxfP6A8ff5XVsTFFL7j86MwPxTsTQQ== dependencies: - "@lerna/child-process" "6.0.1" - "@lerna/get-npm-exec-opts" "6.0.1" + "@lerna/child-process" "6.0.3" + "@lerna/get-npm-exec-opts" "6.0.3" fs-extra "^9.1.0" npm-package-arg "8.1.1" npmlog "^6.0.2" signal-exit "^3.0.3" write-pkg "^4.0.0" -"@lerna/npm-publish@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-6.0.1.tgz#ffbca4be5b971df978a60917460ee8f28b1c62b7" - integrity sha512-hgzF9fOfp010z7PJtqNLxNXiHr6u4UDVwiX8g22rhJKBh9Ekrq7N9NS3mF0l+RcleRU/jJKYtZ0Ci3fICaaRUg== +"@lerna/npm-publish@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-6.0.3.tgz#6c34b566c65fb6131a2bf91e518b58be65ffda41" + integrity sha512-RpjnUy7wWIWu7DJB2NQJ8rNgKz+yPoIXpzYOktIjb7gUrL+Ks4KjfbrgGuYk2nWFUEAzJlsOSJ8ggAQUoNIL9Q== dependencies: - "@lerna/otplease" "6.0.1" - "@lerna/run-lifecycle" "6.0.1" + "@lerna/otplease" "6.0.3" + "@lerna/run-lifecycle" "6.0.3" fs-extra "^9.1.0" libnpmpublish "^6.0.4" npm-package-arg "8.1.1" @@ -2686,85 +2686,85 @@ pify "^5.0.0" read-package-json "^5.0.1" -"@lerna/npm-run-script@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-6.0.1.tgz#3a255aa6f37a5e2369a37a8ddcb2709f84019ed1" - integrity sha512-K+D4LEoVRuBoKRImprkVRHIORu0xouX+c6yI1B93KWHKJ60H8qCeB0gQkA30pFALx3qG07bXVnFmfK9SGQXD3Q== +"@lerna/npm-run-script@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-6.0.3.tgz#5a2054d8c9317d5cfe7f2437ad835ae3e9efae03" + integrity sha512-+IEo8BYBdyEzgdqHCw3sr4ZxAM9g7SoSdo+oskXyrwD8zScH+OadAZz+DukCad8kXlaSPWSNEc42biP2o611Ew== dependencies: - "@lerna/child-process" "6.0.1" - "@lerna/get-npm-exec-opts" "6.0.1" + "@lerna/child-process" "6.0.3" + "@lerna/get-npm-exec-opts" "6.0.3" npmlog "^6.0.2" -"@lerna/otplease@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-6.0.1.tgz#da5467c603565940c1f91e65d077abf25d96df7f" - integrity sha512-RrP8GtfE9yz37GuuCFqddR3mVIQc1ulUpAaaDNK4AOTb7gM0aCsTN7V2gCGBk1zdIsBuvNvNqt5jpWm4U6/EAA== +"@lerna/otplease@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-6.0.3.tgz#0523f396c83b4f2c3141824569b5827903489808" + integrity sha512-bNQn6IRrMJ8D6yF9v52KHiWD/XDB7ZkN2ziQjPwwOBcbzoVrDRCar91HQK7ygudPgmyjQNQZOrZqGlSTrh/wqA== dependencies: - "@lerna/prompt" "6.0.1" + "@lerna/prompt" "6.0.3" -"@lerna/output@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/output/-/output-6.0.1.tgz#5e301ad0bed607ee139cf207fd75ed1e5fac7908" - integrity sha512-4jZ3fgaCbnsTZ353/lXE/3w20Cge6G3iUoESVip+JE2yhZ8rWgPISG8RFR0YGEtSgq2yC9AgGnGlvmOnAc4SAQ== +"@lerna/output@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/output/-/output-6.0.3.tgz#582f6785193f2bb3d4e059f5276bcc7bfd8e01b5" + integrity sha512-/x7Bv4MVRwBJM6UVbfUYE1wjTGNUEnpFCHNc15MCUU3VY9O/Y1ZYq7iZHkYGMT9BmNeMS64fHBkDEwoqoJn/vA== dependencies: npmlog "^6.0.2" -"@lerna/pack-directory@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-6.0.1.tgz#4a0bf61b7cb1b1b3f1fb95afec987a7c63ff9f95" - integrity sha512-vNgS5Rs7s6khOYuHE5nTds0VDfHBH8YNGvV1s0yGAg/Zkivi7bOTs8jDQFiYhQX3HOTC1/85BLhGQ3zcDHlrew== +"@lerna/pack-directory@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-6.0.3.tgz#90b7e89420ffad96807b001455bee38ae04e449e" + integrity sha512-LVs/q6Dn1kXIxHA80e/Jo9AmAsesPs7TbBAxZ40lHXhJFvvFgx0r2bY+r3eV+77sziGmyKVBorgcbkEfFehfZw== dependencies: - "@lerna/get-packed" "6.0.1" - "@lerna/package" "6.0.1" - "@lerna/run-lifecycle" "6.0.1" - "@lerna/temp-write" "6.0.1" + "@lerna/get-packed" "6.0.3" + "@lerna/package" "6.0.3" + "@lerna/run-lifecycle" "6.0.3" + "@lerna/temp-write" "6.0.3" npm-packlist "^5.1.1" npmlog "^6.0.2" tar "^6.1.0" -"@lerna/package-graph@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-6.0.1.tgz#db72ab9ed45933d1518de7f7389a6c79e6059336" - integrity sha512-OMppRWpfSaI6HO/Tc5FVpNefgOsCc3/DzaMLme6QTTpbEwD3EhvQ3Xx0MgsGMPdmZhWp/WOoAJsVRnLa+l03gg== +"@lerna/package-graph@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-6.0.3.tgz#cc6452c9935569104ccf1ae600d48f325ca523b3" + integrity sha512-Xf4FxCpCFB2vSI+D/LR3k+ueSmam5Tx7LRbGiZnzdfXPvPqukZfcAXHLZbSzuJiv5NKVyG/VJjZk4SCogjrFTQ== dependencies: - "@lerna/prerelease-id-from-version" "6.0.1" - "@lerna/validation-error" "6.0.1" + "@lerna/prerelease-id-from-version" "6.0.3" + "@lerna/validation-error" "6.0.3" npm-package-arg "8.1.1" npmlog "^6.0.2" semver "^7.3.4" -"@lerna/package@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/package/-/package-6.0.1.tgz#cb950e574b1ea3ef5cd8cf62b3c4308f6c869122" - integrity sha512-vCwyiLVJ4K3SR6KZleglq1dUXIiYGmk3b+NrFWP/Z3dhVE0C+RqgxSsAS4aaUNMSO2KSI0dBdce7BT/D+FdpIQ== +"@lerna/package@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/package/-/package-6.0.3.tgz#7211f7e3d1e1b4a22c666b9abd2ebb4edebc9cfa" + integrity sha512-UbaZSRT3lTmncmPCws0V6XcZhc0GLRm8LtspxyLeDjhyP0EabKAbaB3HVCelPn69CM81UtP8CLkTh+NpUNH2Aw== dependencies: load-json-file "^6.2.0" npm-package-arg "8.1.1" write-pkg "^4.0.0" -"@lerna/prerelease-id-from-version@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-6.0.1.tgz#a47980aa6c78deaa36430d03b6300bc889960b50" - integrity sha512-aZBs/FinztKjNXlk0cW99FpABynZzZwlmJuW4h9nMrQPgWoaDAERfImbefIH/lcpxdRuuGtClyZUFBOSq8ppfg== +"@lerna/prerelease-id-from-version@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-6.0.3.tgz#17f50960fb7df1b3f8eb4e36b86c5917f1e0fab4" + integrity sha512-mgDo6L93mlcg7GDgWZfRGxHmR5xFPQSMQJZeyU/5VY6sCbTnwTDSpYOoce6m71E4v15iJ/G5EKIchq8yVUIBBw== dependencies: semver "^7.3.4" -"@lerna/profiler@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-6.0.1.tgz#2b7a043e6999823ad97a7ddaea0ed7f338032f92" - integrity sha512-vZrgF5pDhYWY/Gx7MjtyOgTVMA6swDV2+xPZwkvRD1Z0XpWEIn5d79zRN/1SBpdMNozC7Lj++1oEbCGNWhy/ow== +"@lerna/profiler@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-6.0.3.tgz#cc9ba5ce9bd78fcc47ad105380877341cba17b3b" + integrity sha512-tkFZEAALPtPOzcEZlH554SHH4rMORmpWH45mF3Py3mpy+HpQXLZmYlxot+wr3jPXkXQzwaIgDe0DMYJhhC8T9A== dependencies: fs-extra "^9.1.0" npmlog "^6.0.2" upath "^2.0.1" -"@lerna/project@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/project/-/project-6.0.1.tgz#0d4a6dbca1943478d554d4a3a610968caf9b303a" - integrity sha512-/n2QuAEgImbwUqrJND15FxYu29p/mLTUpL/8cSg6IUlOQRFyXteESRyl8A2Ex7Wj00FMbtB13vgbmTdkTgKL0A== +"@lerna/project@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/project/-/project-6.0.3.tgz#40f59c9c0063b1098c3af85d2b8a7aa9e321a4ff" + integrity sha512-YBSWZRnRlwAwDuLKx7M7f1HyiqDY/dH+eMadHgasWgFJ5yHhtkwMCZTNgHvMAXTdN6iGb/A6mkPAN5zWhcDYBw== dependencies: - "@lerna/package" "6.0.1" - "@lerna/validation-error" "6.0.1" + "@lerna/package" "6.0.3" + "@lerna/validation-error" "6.0.3" cosmiconfig "^7.0.0" dedent "^0.7.0" dot-prop "^6.0.1" @@ -2777,38 +2777,38 @@ resolve-from "^5.0.0" write-json-file "^4.3.0" -"@lerna/prompt@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-6.0.1.tgz#2a744b168ce4a29b7c66d500258a3f65b3f028e2" - integrity sha512-faR7oVdHBO3QTJ6o9kUEDPpyjCftd/CCa1rAC6q8f3vlLfCPrTym0qT+DcOBFGpDQh4m2dmGfJZgpXIVi6bMbg== +"@lerna/prompt@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-6.0.3.tgz#251ad1c80a15dbdfca0153cf02044ec455e471a4" + integrity sha512-M/3poJp9Nqr2xJ2nB9gE6qsCwxJqvVyEnM5mMPUzRpfCvAtVa6Rhx/x60I20GSogb8/J9Zapav3MNoX2rdv2UQ== dependencies: inquirer "^8.2.4" npmlog "^6.0.2" -"@lerna/publish@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-6.0.1.tgz#9448a35a87e2c986c8919114698f3a314a9a2574" - integrity sha512-xIleRwCuPHtShNSPc6RDH33Z+EO1E4O0LOhPq5qTwanNPYh5eL6bDHBsox44BbMD9dhhI4PUrqIGTu3AoKdDxg== - dependencies: - "@lerna/check-working-tree" "6.0.1" - "@lerna/child-process" "6.0.1" - "@lerna/collect-updates" "6.0.1" - "@lerna/command" "6.0.1" - "@lerna/describe-ref" "6.0.1" - "@lerna/log-packed" "6.0.1" - "@lerna/npm-conf" "6.0.1" - "@lerna/npm-dist-tag" "6.0.1" - "@lerna/npm-publish" "6.0.1" - "@lerna/otplease" "6.0.1" - "@lerna/output" "6.0.1" - "@lerna/pack-directory" "6.0.1" - "@lerna/prerelease-id-from-version" "6.0.1" - "@lerna/prompt" "6.0.1" - "@lerna/pulse-till-done" "6.0.1" - "@lerna/run-lifecycle" "6.0.1" - "@lerna/run-topologically" "6.0.1" - "@lerna/validation-error" "6.0.1" - "@lerna/version" "6.0.1" +"@lerna/publish@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-6.0.3.tgz#029b30d6bb877102beca153d81e305939bfcf859" + integrity sha512-Vv9aDQEQv+5NRfaIpZpBqXcgfXkb18kpIUqBI4bAnqC/t168Gn/UzOxxjVkl5wuAKJ2sj8tDoZTEIb/DVoV53Q== + dependencies: + "@lerna/check-working-tree" "6.0.3" + "@lerna/child-process" "6.0.3" + "@lerna/collect-updates" "6.0.3" + "@lerna/command" "6.0.3" + "@lerna/describe-ref" "6.0.3" + "@lerna/log-packed" "6.0.3" + "@lerna/npm-conf" "6.0.3" + "@lerna/npm-dist-tag" "6.0.3" + "@lerna/npm-publish" "6.0.3" + "@lerna/otplease" "6.0.3" + "@lerna/output" "6.0.3" + "@lerna/pack-directory" "6.0.3" + "@lerna/prerelease-id-from-version" "6.0.3" + "@lerna/prompt" "6.0.3" + "@lerna/pulse-till-done" "6.0.3" + "@lerna/run-lifecycle" "6.0.3" + "@lerna/run-topologically" "6.0.3" + "@lerna/validation-error" "6.0.3" + "@lerna/version" "6.0.3" fs-extra "^9.1.0" libnpmaccess "^6.0.3" npm-package-arg "8.1.1" @@ -2819,99 +2819,99 @@ pacote "^13.6.1" semver "^7.3.4" -"@lerna/pulse-till-done@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-6.0.1.tgz#d23985aea1ba25bb33cf74b39f36f2b7a5d21791" - integrity sha512-DK5Ylh/O7Vzn9ObEggvoHdLxc1hiXsDZ4fUvSmi50kc5QrMrk+xo6OyPgIaDBhYxj6lm3TQ1KkvWnRgiEynKAg== +"@lerna/pulse-till-done@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-6.0.3.tgz#d3ec687799023b8baccc6af003cce738a114ea9c" + integrity sha512-/HjvHtaDCr0qJuhJT6PuwoHFvPsZMB7f/GnEYGIzS0+ovwOTrbULD6ESo2lWcsFnxJ3tWv2OPIKEiHkJ0y1PCg== dependencies: npmlog "^6.0.2" -"@lerna/query-graph@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-6.0.1.tgz#f72b55f0ee4662d06167e639e975019e5c004c59" - integrity sha512-X8Z63Ax5a9nXgNBG+IAXEdCL4MG88akr7L4mBvKiTPrK5VgP46YzuZSaSoPI8bU67MlWBkSYQWAJJ5t0HEtKTw== +"@lerna/query-graph@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-6.0.3.tgz#302498ac354cb7a58f5447822d8524582fd0143f" + integrity sha512-Se3G4ZIckjleki/BWUEInITfLTuNIYkqeStq50KEz74xhQ9jQs7ZLAOWc/Qxn3EPngCTLe8WqhLVeHFOfxgjvw== dependencies: - "@lerna/package-graph" "6.0.1" + "@lerna/package-graph" "6.0.3" -"@lerna/resolve-symlink@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-6.0.1.tgz#30c3ccf4c730451754ce7aa002772f26dd757c20" - integrity sha512-btosycLN+2lpqou6pz0Oeq4XIKHDIn0NvdnuCBLxtuBOBNIkdlx5QWKCtZ31GYKbCUt55w1DSGL64kfVuejVQQ== +"@lerna/resolve-symlink@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-6.0.3.tgz#9dd4b2903e4a0bb11b000fb220efd11ce5909f28" + integrity sha512-9HkEl7kMQ4sZ3/+FEOhBt2rYoQP2cXQlhV7TNIej6SGaR0VtKe98ciM9bQAdkc/rOZtyZLc2cFBoUd10NEjzoA== dependencies: fs-extra "^9.1.0" npmlog "^6.0.2" read-cmd-shim "^3.0.0" -"@lerna/rimraf-dir@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-6.0.1.tgz#e52ba283a4c39ade75792c23d0c6dcec65dcbbf4" - integrity sha512-rBFkwrxEQWFfZV5IMiPfGVubOquvOTNsPJPUf5tZoPAqKHXVQi5iYZGB65VG8JA7eFenZxh5mVErX2gtWFh1Ew== +"@lerna/rimraf-dir@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-6.0.3.tgz#be12f791a7cf1d455d25ae0cdc70d45767ee343f" + integrity sha512-jyC/PVL3rqC83l5Wphog8pSOmDbe5CIAHn9TeHvV8f/zdJnNE3zKXWTNjvyLgB1aPneQ4i2V+3BgdfpeDVAtHQ== dependencies: - "@lerna/child-process" "6.0.1" + "@lerna/child-process" "6.0.3" npmlog "^6.0.2" path-exists "^4.0.0" rimraf "^3.0.2" -"@lerna/run-lifecycle@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-6.0.1.tgz#ab94838cf7daa1edd6228be0a161b38ec1a42a0b" - integrity sha512-gC7rnV3mrgFFIM8GlHc3d22ovYHoExu9CuIAxN26CVrMq7iEYxWoxYvweqVANsCHR7CVbs+dsDx8/TP1pQG8wg== +"@lerna/run-lifecycle@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-6.0.3.tgz#84dad555d56c3aa668e1cbdf2a5b98f8baabcc64" + integrity sha512-qnFOyp9de81FA2HSBuXtW7LSklF+T6WtFkYH9q3kOJY/EghZlgzFmQYFHgJ/xVYxNu75QDuv6fsfJu4EtrR7ag== dependencies: - "@lerna/npm-conf" "6.0.1" + "@lerna/npm-conf" "6.0.3" "@npmcli/run-script" "^4.1.7" npmlog "^6.0.2" p-queue "^6.6.2" -"@lerna/run-topologically@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-6.0.1.tgz#dcf26259e57b224d4aad2e3b259555ecd2f226ea" - integrity sha512-p4J9RvOUyDUjQ21tDh7Durci9YnuBu3T8WXD8xu5ZwcxVnawK1h5B8kP4V1R5L/jwNqkXsAnlLwikPVGQ5Iptw== +"@lerna/run-topologically@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-6.0.3.tgz#37d7ec11bafeb9be3f93a56a012444fec5982efc" + integrity sha512-nN0kcOO1TzWlxg5byM1V12tm4+lvchbawc1mNje1KsujdzE4gSwD84ub4SFRNkUUBmsPvTGysorhtXckQfqQWw== dependencies: - "@lerna/query-graph" "6.0.1" + "@lerna/query-graph" "6.0.3" p-queue "^6.6.2" -"@lerna/run@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/run/-/run-6.0.1.tgz#20d3c77fa8faad01b915214b95477ae5390c8b45" - integrity sha512-F1vvpaevsWCjaQs3NlBegH54izm3cO3Qbg/cRRzPZMK4Jo7gE1ddL7+zCIq0zGt6aeVqRGBOtUMk4SvNGkzI4w== - dependencies: - "@lerna/command" "6.0.1" - "@lerna/filter-options" "6.0.1" - "@lerna/npm-run-script" "6.0.1" - "@lerna/output" "6.0.1" - "@lerna/profiler" "6.0.1" - "@lerna/run-topologically" "6.0.1" - "@lerna/timer" "6.0.1" - "@lerna/validation-error" "6.0.1" +"@lerna/run@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/run/-/run-6.0.3.tgz#604c49708a348c72683c6cf1575d2e9b7ff9e07b" + integrity sha512-eiMF/Pfld/ngH+Emkwyxqf40WWEK6bQE2KhRtu0xyuSIFycFlZJursd72ylTnvZAX3Qx4P4drdHaFnfWyuglcw== + dependencies: + "@lerna/command" "6.0.3" + "@lerna/filter-options" "6.0.3" + "@lerna/npm-run-script" "6.0.3" + "@lerna/output" "6.0.3" + "@lerna/profiler" "6.0.3" + "@lerna/run-topologically" "6.0.3" + "@lerna/timer" "6.0.3" + "@lerna/validation-error" "6.0.3" fs-extra "^9.1.0" p-map "^4.0.0" -"@lerna/symlink-binary@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-6.0.1.tgz#b9278650c3360cc518e0d313d9999cd740a2c054" - integrity sha512-TcwxDMgU9w+hGl0EeYihPytVRKV0KTeZZW4Bq6NEtjTCIIuKWxZjcY5ocxW22i6BClBvfFAJqkf+e+i3Nixlhg== +"@lerna/symlink-binary@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-6.0.3.tgz#5f40b6e8e9f2230adefd87165c3e81420d25be25" + integrity sha512-bRrPPuZoYvEDc8eTGwhTLQwRmtjYfD/hBVElqhfAlUTPcuA36VrQwBkmhGAUKcIDmEHTVk6IHNiFb/JwuiOSYA== dependencies: - "@lerna/create-symlink" "6.0.1" - "@lerna/package" "6.0.1" + "@lerna/create-symlink" "6.0.3" + "@lerna/package" "6.0.3" fs-extra "^9.1.0" p-map "^4.0.0" -"@lerna/symlink-dependencies@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-6.0.1.tgz#28c01b3f910c1d13b1d447d27c47f5c76efd0096" - integrity sha512-ImyqjLjMBu0ORGO9gYHr9oDgN/5QeeGuELtYNweLS5vMNSH1dokQW9fqZSrgfCJPbxeCizBcDTi/Knqg17ebkA== +"@lerna/symlink-dependencies@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-6.0.3.tgz#552cd9a4dc81ad925d583c392022ae9321c065d0" + integrity sha512-4DmKLZkJ9oyQ8DXdXCMT6fns6w6G/7h9D2pXGNOYa/IFtjb4mKDMBfJ61XhmvTlxrEzjEc9CnqMeO7BQBXWt8A== dependencies: - "@lerna/create-symlink" "6.0.1" - "@lerna/resolve-symlink" "6.0.1" - "@lerna/symlink-binary" "6.0.1" + "@lerna/create-symlink" "6.0.3" + "@lerna/resolve-symlink" "6.0.3" + "@lerna/symlink-binary" "6.0.3" fs-extra "^9.1.0" p-map "^4.0.0" p-map-series "^2.1.0" -"@lerna/temp-write@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/temp-write/-/temp-write-6.0.1.tgz#84f8aa3f74b6150706a70430c68815517f5301cf" - integrity sha512-9eklYncDnwTnGF9o14GOrZU05ZK5n6/x5XYRQHbuLfK5T9pmOiUyl6sO1613cZygUMaWHHi7BLtBPiw2CklqXQ== +"@lerna/temp-write@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/temp-write/-/temp-write-6.0.3.tgz#b08e329ca122a24f4f9687f1f928b2022724baf5" + integrity sha512-ws+EHk7Bp4hR6liusGk8K+ybnh9iOSkCnHD6d+avwa2lMYtX28v93kle/Y5JbTghjumgDUF9/C+EQg51zIVQmw== dependencies: graceful-fs "^4.1.15" is-stream "^2.0.0" @@ -2919,37 +2919,37 @@ temp-dir "^1.0.0" uuid "^8.3.2" -"@lerna/timer@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-6.0.1.tgz#eb10242c48a1246e1bf216af305974fbd6332d39" - integrity sha512-FLoga8iprKmRkh9jO+LP4Bm7MZLO4wNHM4LML4Dlh9CPwcIOWTteI8wSgRXvEJpt33IRIoPOUnfL3iHh8WwaYA== +"@lerna/timer@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-6.0.3.tgz#73bb3e301c76c8fabcb35831b1d398f272287f5a" + integrity sha512-Ywfu3cGi0pV9vN4ki8oTu+qdJArMwrW3MiXL3/2fospKRdGL7sGCuXlS9Byd+aduMvmMwKbnX0EW+6R7Np+qSg== -"@lerna/validation-error@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-6.0.1.tgz#afcf6b193eae86d64df9561afb7698696257304f" - integrity sha512-kjAxfFY1pDltwoCTvMQCbnpBwMXBFuvE4hdi8qePhBQ1Lf0PlTOI4ZqMFIkaTud+oujzysDXraTJbYTjc+C+zw== +"@lerna/validation-error@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-6.0.3.tgz#9e0cc7fdb2117f82db9a73eaf287f6b46521f2c9" + integrity sha512-cWYKMFne/euWnW4w7ry+RvDkj8iVNYMrbRF86Px/609GXFOoOwEROJyvTlRp1BgCmC2/3KzidyBletN/R3JHEA== dependencies: npmlog "^6.0.2" -"@lerna/version@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/version/-/version-6.0.1.tgz#988675be8ea29f1548cb4554c257c2cc94b78084" - integrity sha512-d/addeHVsRFWx3fb/XZIh6f23KuEC9Fn3ytpaMzA8rlLF3Nob1opIR98ZfUz7Nf+skpIV1QiIbXdJTZzIKvd9g== - dependencies: - "@lerna/check-working-tree" "6.0.1" - "@lerna/child-process" "6.0.1" - "@lerna/collect-updates" "6.0.1" - "@lerna/command" "6.0.1" - "@lerna/conventional-commits" "6.0.1" - "@lerna/github-client" "6.0.1" - "@lerna/gitlab-client" "6.0.1" - "@lerna/output" "6.0.1" - "@lerna/prerelease-id-from-version" "6.0.1" - "@lerna/prompt" "6.0.1" - "@lerna/run-lifecycle" "6.0.1" - "@lerna/run-topologically" "6.0.1" - "@lerna/temp-write" "6.0.1" - "@lerna/validation-error" "6.0.1" +"@lerna/version@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/version/-/version-6.0.3.tgz#de44ecf9598e77e22b5088bd3a62b76a87bcf683" + integrity sha512-ssQhsK51IBMabB+RpQPIRn93iozwMRpvfh2vVIVdTs76j8r/1ljIs3gLXPDzLo9RbyLcou+VKi3c/7coCAwsdw== + dependencies: + "@lerna/check-working-tree" "6.0.3" + "@lerna/child-process" "6.0.3" + "@lerna/collect-updates" "6.0.3" + "@lerna/command" "6.0.3" + "@lerna/conventional-commits" "6.0.3" + "@lerna/github-client" "6.0.3" + "@lerna/gitlab-client" "6.0.3" + "@lerna/output" "6.0.3" + "@lerna/prerelease-id-from-version" "6.0.3" + "@lerna/prompt" "6.0.3" + "@lerna/run-lifecycle" "6.0.3" + "@lerna/run-topologically" "6.0.3" + "@lerna/temp-write" "6.0.3" + "@lerna/validation-error" "6.0.3" "@nrwl/devkit" ">=14.8.6 < 16" chalk "^4.1.0" dedent "^0.7.0" @@ -2964,10 +2964,10 @@ slash "^3.0.0" write-json-file "^4.3.0" -"@lerna/write-log-file@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-6.0.1.tgz#4335d5e08686f8250ebae9d7f56b64452bd90cd3" - integrity sha512-fJGDE8rlE35DwKSqV8M1VV2xw/vQlgwTwURjNOMvd1Ar23Aa9CkJC4XAwc9uUgIku34IsWUM8MNbw9ClSsJaqw== +"@lerna/write-log-file@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-6.0.3.tgz#21f4c2fcf6a41a3420c46a571dd52fb5c8a64242" + integrity sha512-xZFC9IgGkvuv1MUIC7EKD5ltlljgLlz7isbfQ2QHAqOmGJG6jPqa0Yo38pGe8wEDtGSVgtlUGkx7iHK22MawEA== dependencies: npmlog "^6.0.2" write-file-atomic "^4.0.1" @@ -9529,28 +9529,28 @@ latest-version@^5.1.0: dependencies: package-json "^6.3.0" -lerna@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-6.0.1.tgz#7b14f05d1e17dc628478d33f225a579a6088d317" - integrity sha512-aNodtj1jyuEqzYmkYh+vTfRuzLkG3RZkvYxFCuLeXXzIYD5pjMHtf+1q4m03SPsZt+cElhhwkgjdg6GjihraBw== - dependencies: - "@lerna/add" "6.0.1" - "@lerna/bootstrap" "6.0.1" - "@lerna/changed" "6.0.1" - "@lerna/clean" "6.0.1" - "@lerna/cli" "6.0.1" - "@lerna/command" "6.0.1" - "@lerna/create" "6.0.1" - "@lerna/diff" "6.0.1" - "@lerna/exec" "6.0.1" - "@lerna/import" "6.0.1" - "@lerna/info" "6.0.1" - "@lerna/init" "6.0.1" - "@lerna/link" "6.0.1" - "@lerna/list" "6.0.1" - "@lerna/publish" "6.0.1" - "@lerna/run" "6.0.1" - "@lerna/version" "6.0.1" +lerna@6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-6.0.3.tgz#0364eadeedbdf5ade375d8a6f0a87bb9003f6019" + integrity sha512-DzRCTZGoDI502daViNK1Ha+HPAVvTp72xshDOQ6o6SWCDTvnxFI3hGF6CBqGWnOoPwEOlQowHEIcPw5PjoMz8A== + dependencies: + "@lerna/add" "6.0.3" + "@lerna/bootstrap" "6.0.3" + "@lerna/changed" "6.0.3" + "@lerna/clean" "6.0.3" + "@lerna/cli" "6.0.3" + "@lerna/command" "6.0.3" + "@lerna/create" "6.0.3" + "@lerna/diff" "6.0.3" + "@lerna/exec" "6.0.3" + "@lerna/import" "6.0.3" + "@lerna/info" "6.0.3" + "@lerna/init" "6.0.3" + "@lerna/link" "6.0.3" + "@lerna/list" "6.0.3" + "@lerna/publish" "6.0.3" + "@lerna/run" "6.0.3" + "@lerna/version" "6.0.3" "@nrwl/devkit" ">=14.8.6 < 16" import-local "^3.0.2" inquirer "^8.2.4" From 0e1e71dcb3e4ce60b563ab54e56cee48871314f9 Mon Sep 17 00:00:00 2001 From: Bryan Mishkin <698306+bmish@users.noreply.github.com> Date: Fri, 11 Nov 2022 15:44:07 -0500 Subject: [PATCH 097/193] chore: enable `eslint-plugin/require-meta-docs-description` rule (#5969) chore: enable eslint-plugin/require-meta-docs-description rule --- .eslintrc.js | 5 +++++ .../src/rules/no-poorly-typed-ts-props.ts | 2 +- .../src/rules/no-typescript-default-import.ts | 2 +- .../src/rules/no-typescript-estree-import.ts | 2 +- .../src/rules/plugin-test-formatting.ts | 2 +- .../src/rules/prefer-ast-types-enum.ts | 2 +- packages/eslint-plugin-tslint/src/rules/config.ts | 2 +- 7 files changed, 11 insertions(+), 6 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index da7ff36fd3b..6dfb0c35362 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -257,6 +257,11 @@ module.exports = { './packages/eslint-plugin/src/rules/**/*.ts', ], rules: { + 'eslint-plugin/require-meta-docs-description': [ + 'error', + { pattern: '^(Enforce|Require|Disallow) .+[^. ]$' }, + ], + // specifically for rules - default exports makes the tooling easier 'import/no-default-export': 'off', }, diff --git a/packages/eslint-plugin-internal/src/rules/no-poorly-typed-ts-props.ts b/packages/eslint-plugin-internal/src/rules/no-poorly-typed-ts-props.ts index 6811c935bba..0c671d8432f 100644 --- a/packages/eslint-plugin-internal/src/rules/no-poorly-typed-ts-props.ts +++ b/packages/eslint-plugin-internal/src/rules/no-poorly-typed-ts-props.ts @@ -35,7 +35,7 @@ export default createRule({ type: 'problem', docs: { description: - "Enforces rules don't use TS API properties with known bad type definitions", + "Enforce that rules don't use TS API properties with known bad type definitions", recommended: 'error', requiresTypeChecking: true, }, diff --git a/packages/eslint-plugin-internal/src/rules/no-typescript-default-import.ts b/packages/eslint-plugin-internal/src/rules/no-typescript-default-import.ts index 34b911451e7..fd7279c3823 100644 --- a/packages/eslint-plugin-internal/src/rules/no-typescript-default-import.ts +++ b/packages/eslint-plugin-internal/src/rules/no-typescript-default-import.ts @@ -20,7 +20,7 @@ export default createRule({ type: 'problem', docs: { description: - "Enforces that packages rules don't do `import ts from 'typescript';`", + "Enforce that packages rules don't do `import ts from 'typescript';`", recommended: 'error', }, fixable: 'code', diff --git a/packages/eslint-plugin-internal/src/rules/no-typescript-estree-import.ts b/packages/eslint-plugin-internal/src/rules/no-typescript-estree-import.ts index 022fd98b7ca..28f7439472b 100644 --- a/packages/eslint-plugin-internal/src/rules/no-typescript-estree-import.ts +++ b/packages/eslint-plugin-internal/src/rules/no-typescript-estree-import.ts @@ -15,7 +15,7 @@ export default createRule({ meta: { type: 'problem', docs: { - description: `Enforces that eslint-plugin rules don't require anything from ${TSESTREE_NAME} or ${TYPES_NAME}`, + description: `Enforce that eslint-plugin rules don't require anything from ${TSESTREE_NAME} or ${TYPES_NAME}`, recommended: 'error', }, fixable: 'code', diff --git a/packages/eslint-plugin-internal/src/rules/plugin-test-formatting.ts b/packages/eslint-plugin-internal/src/rules/plugin-test-formatting.ts index 8cd85cce8e9..f86d4946836 100644 --- a/packages/eslint-plugin-internal/src/rules/plugin-test-formatting.ts +++ b/packages/eslint-plugin-internal/src/rules/plugin-test-formatting.ts @@ -107,7 +107,7 @@ export default createRule({ meta: { type: 'problem', docs: { - description: `Enforces that eslint-plugin test snippets are correctly formatted`, + description: `Enforce that eslint-plugin test snippets are correctly formatted`, recommended: 'error', requiresTypeChecking: true, }, diff --git a/packages/eslint-plugin-internal/src/rules/prefer-ast-types-enum.ts b/packages/eslint-plugin-internal/src/rules/prefer-ast-types-enum.ts index 4b74cbe09b9..4099e2f02be 100755 --- a/packages/eslint-plugin-internal/src/rules/prefer-ast-types-enum.ts +++ b/packages/eslint-plugin-internal/src/rules/prefer-ast-types-enum.ts @@ -15,7 +15,7 @@ export default createRule({ docs: { recommended: 'error', description: - 'Ensures consistent usage of `AST_NODE_TYPES`, `AST_TOKEN_TYPES` and `DefinitionType` enums.', + 'Enforce consistent usage of `AST_NODE_TYPES`, `AST_TOKEN_TYPES` and `DefinitionType` enums', }, messages: { preferEnum: 'Prefer {{ enumName }}.{{ literal }} over raw literal', diff --git a/packages/eslint-plugin-tslint/src/rules/config.ts b/packages/eslint-plugin-tslint/src/rules/config.ts index 5f20bcd4430..9fcfa844da1 100644 --- a/packages/eslint-plugin-tslint/src/rules/config.ts +++ b/packages/eslint-plugin-tslint/src/rules/config.ts @@ -64,7 +64,7 @@ export default createRule({ meta: { docs: { description: - 'Wraps a TSLint configuration and lints the whole source using TSLint', + 'Wraps a TSLint configuration and lints the whole source using TSLint', // eslint-disable-line eslint-plugin/require-meta-docs-description recommended: false, }, fixable: 'code', From 0eb78b348ca25a3493446bad30950d50fb9ebef2 Mon Sep 17 00:00:00 2001 From: Anna Aneychik Date: Fri, 11 Nov 2022 21:53:19 +0100 Subject: [PATCH 098/193] docs(eslint-plugin): [sort-type-union-intersection-members] fix link to new rule (#5970) docs(eslint-plugin): [sort-type-union-intersection-members] correct link to new rule --- .../docs/rules/sort-type-union-intersection-members.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/eslint-plugin/docs/rules/sort-type-union-intersection-members.md b/packages/eslint-plugin/docs/rules/sort-type-union-intersection-members.md index dbaf1807edf..edaa195df6b 100644 --- a/packages/eslint-plugin/docs/rules/sort-type-union-intersection-members.md +++ b/packages/eslint-plugin/docs/rules/sort-type-union-intersection-members.md @@ -8,7 +8,7 @@ description: 'Enforce members of a type union/intersection to be sorted alphabet :::danger Deprecated -This rule has been renamed to [`sort-type-union-intersection-members`](./sort-type-union-intersection-members.md). +This rule has been renamed to [`sort-type-constituents`](./sort-type-constituents.md). ::: Sorting union (`|`) and intersection (`&`) types can help: From 1b8f9ce5bc1f8d6fa7b0413e5c8d94e419fd8538 Mon Sep 17 00:00:00 2001 From: Bryan Mishkin <698306+bmish@users.noreply.github.com> Date: Sat, 12 Nov 2022 07:58:17 -0500 Subject: [PATCH 099/193] docs: use consistent auto-fixable rule emoji (#5966) --- packages/website/src/theme/MDXComponents/RuleAttributes.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/website/src/theme/MDXComponents/RuleAttributes.tsx b/packages/website/src/theme/MDXComponents/RuleAttributes.tsx index c7632e25a9f..e0351d743c7 100644 --- a/packages/website/src/theme/MDXComponents/RuleAttributes.tsx +++ b/packages/website/src/theme/MDXComponents/RuleAttributes.tsx @@ -62,7 +62,7 @@ export function RuleAttributes({ name }: { name: string }): React.ReactNode { . ), - emoji: '🛠', + emoji: '🔧', }); } From 91d71bcf6b2f822116d25b281e289fe1d5005401 Mon Sep 17 00:00:00 2001 From: vaishnav <84540554+vaishnav-mk@users.noreply.github.com> Date: Sat, 12 Nov 2022 17:48:47 +0300 Subject: [PATCH 100/193] docs(naming-conventions): Alphabetizing inline lists (#5940) Co-authored-by: Josh Goldberg --- .../docs/rules/naming-convention.md | 54 +++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/packages/eslint-plugin/docs/rules/naming-convention.md b/packages/eslint-plugin/docs/rules/naming-convention.md index ef273df8f16..f5922ba3653 100644 --- a/packages/eslint-plugin/docs/rules/naming-convention.md +++ b/packages/eslint-plugin/docs/rules/naming-convention.md @@ -149,7 +149,7 @@ The `leadingUnderscore` / `trailingUnderscore` options control whether leading/t The `prefix` / `suffix` options control which prefix/suffix strings must exist for the identifier. Accepts an array of strings. -If these are provided, the identifier must start with one of the provided values. For example, if you provide `{ prefix: ['IFace', 'Class', 'Type'] }`, then the following names are valid: `IFaceFoo`, `ClassBar`, `TypeBaz`, but the name `Bang` is not valid, as it contains none of the prefixes. +If these are provided, the identifier must start with one of the provided values. For example, if you provide `{ prefix: ['Class', 'IFace', 'Type'] }`, then the following names are valid: `ClassBar`, `IFaceFoo`, `TypeBaz`, but the name `Bang` is not valid, as it contains none of the prefixes. **Note:** As [documented above](#format-options), the prefix is trimmed before format is validated, therefore PascalCase must be used to allow variables such as `isEnabled` using the prefix `is`. @@ -157,11 +157,11 @@ If these are provided, the identifier must start with one of the provided values - `selector` allows you to specify what types of identifiers to target. - Accepts one or array of selectors to define an option block that applies to one or multiple selectors. - - For example, if you provide `{ selector: ['variable', 'function'] }`, then it will apply the same option to variable and function nodes. + - For example, if you provide `{ selector: ['function', 'variable'] }`, then it will apply the same option to variable and function nodes. - See [Allowed Selectors, Modifiers and Types](#allowed-selectors-modifiers-and-types) below for the complete list of allowed selectors. -- `modifiers` allows you to specify which modifiers to granularly apply to, such as the accessibility (`private`/`public`/`protected`), or if the thing is `static`, etc. +- `modifiers` allows you to specify which modifiers to granularly apply to, such as the accessibility (`private`/`protected`/`public`), or if the thing is `static`, etc. - The name must match _all_ of the modifiers. - - For example, if you provide `{ modifiers: ['private', 'static', 'readonly'] }`, then it will only match something that is `private static readonly`, and something that is just `private` will not match. + - For example, if you provide `{ modifiers: ['private','readonly','static'] }`, then it will only match something that is `private static readonly`, and something that is just `private` will not match. - The following `modifiers` are allowed: - `const` - matches a variable declared as being `const` (`const x = 1`). - `destructured` - matches a variable declared via an object destructuring pattern (`const {x, z = 2}`). @@ -171,9 +171,9 @@ If these are provided, the identifier must start with one of the provided values - `unused` - matches anything that is not used. - `requiresQuotes` - matches any name that requires quotes as it is not a valid identifier (i.e. has a space, a dash, etc in it). - `public` - matches any member that is either explicitly declared as `public`, or has no visibility modifier (i.e. implicitly public). - - `readonly`, `static`, `abstract`, `protected`, `private`, `override` - matches any member explicitly declared with the given modifier. + - `abstract`,`override`,`private`,`protected`,`readonly`,`static` - matches any member explicitly declared with the given modifier. - `async` - matches any method, function, or function variable which is async via the `async` keyword (e.g. does not match functions that return promises without using `async` keyword) -- `types` allows you to specify which types to match. This option supports simple, primitive types only (`boolean`, `string`, `number`, `array`, `function`). +- `types` allows you to specify which types to match. This option supports simple, primitive types only (`array`,`boolean`,`function`,`number`,`string`). - The name must match _one_ of the types. - **_NOTE - Using this option will require that you lint with type information._** - For example, this lets you do things like enforce that `boolean` variables are prefixed with a verb. @@ -194,39 +194,39 @@ There are two types of selectors, individual selectors, and grouped selectors. Individual Selectors match specific, well-defined sets. There is no overlap between each of the individual selectors. -- `variable` - matches any `var` / `let` / `const` variable name. - - Allowed `modifiers`: `const`, `destructured`, `global`, `exported`, `unused`, `async`. - - Allowed `types`: `boolean`, `string`, `number`, `function`, `array`. +- `variable` - matches any `let` / `const` / `var` variable name. + - Allowed `modifiers`: `async`, `const`, `destructured`, `exported`, `global`, `unused`. + - Allowed `types`: `array`, `boolean`, `function`, `number`, `string`. - `function` - matches any named function declaration or named function expression. - - Allowed `modifiers`: `global`, `exported`, `unused`, `async`. + - Allowed `modifiers`: `async`, `exported`, `global`, `unused`. - Allowed `types`: none. - `parameter` - matches any function parameter. Does not match parameter properties. - Allowed `modifiers`: `destructured`, `unused`. - Allowed `types`: `boolean`, `string`, `number`, `function`, `array`. - `classProperty` - matches any class property. Does not match properties that have direct function expression or arrow function expression values. - - Allowed `modifiers`: `abstract`, `private`, `protected`, `public`, `readonly`, `requiresQuotes`, `static`, `override`. - - Allowed `types`: `boolean`, `string`, `number`, `function`, `array`. + - Allowed `modifiers`: `abstract`, `override`, `private`, `protected`, `public`, `readonly`, `requiresQuotes`, `static`. + - Allowed `types`: `array`, `boolean`, `function`, `number`, `string`. - `objectLiteralProperty` - matches any object literal property. Does not match properties that have direct function expression or arrow function expression values. - Allowed `modifiers`: `public`, `requiresQuotes`. - - Allowed `types`: `boolean`, `string`, `number`, `function`, `array`. + - Allowed `types`: `array`, `boolean`, `function`, `number`, `string`. - `typeProperty` - matches any object type property. Does not match properties that have direct function expression or arrow function expression values. - Allowed `modifiers`: `public`, `readonly`, `requiresQuotes`. - - Allowed `types`: `boolean`, `string`, `number`, `function`, `array`. + - Allowed `types`: `array`, `boolean`, `function`, `number`, `string`. - `parameterProperty` - matches any parameter property. - Allowed `modifiers`: `private`, `protected`, `public`, `readonly`. - - Allowed `types`: `boolean`, `string`, `number`, `function`, `array`. + - Allowed `types`: `array`, `boolean`, `function`, `number`, `string`. - `classMethod` - matches any class method. Also matches properties that have direct function expression or arrow function expression values. Does not match accessors. - - Allowed `modifiers`: `abstract`, `private`, `protected`, `public`, `requiresQuotes`, `static`, `override`, `async`. + - Allowed `modifiers`: `abstract`, `async`, `override`, `private`, `protected`, `public`, `requiresQuotes`, `static`. - Allowed `types`: none. - `objectLiteralMethod` - matches any object literal method. Also matches properties that have direct function expression or arrow function expression values. Does not match accessors. - - Allowed `modifiers`: `public`, `requiresQuotes`, `async`. + - Allowed `modifiers`: `async`, `public`, `requiresQuotes`. - Allowed `types`: none. - `typeMethod` - matches any object type method. Also matches properties that have direct function expression or arrow function expression values. Does not match accessors. - Allowed `modifiers`: `public`, `requiresQuotes`. - Allowed `types`: none. - `accessor` - matches any accessor. - - Allowed `modifiers`: `abstract`, `private`, `protected`, `public`, `requiresQuotes`, `static`, `override`. - - Allowed `types`: `boolean`, `string`, `number`, `function`, `array`. + - Allowed `modifiers`: `abstract`, `override`, `private`, `protected`, `public`, `requiresQuotes`, `static`. + - Allowed `types`: `array`, `boolean`, `function`, `number`, `string`. - `enumMember` - matches any enum member. - Allowed `modifiers`: `requiresQuotes`. - Allowed `types`: none. @@ -253,20 +253,20 @@ Group Selectors are provided for convenience, and essentially bundle up sets of - `default` - matches everything. - Allowed `modifiers`: all modifiers. - Allowed `types`: none. -- `variableLike` - matches the same as `variable`, `function` and `parameter`. - - Allowed `modifiers`: `unused`, `async`. +- `variableLike` - matches the same as `function`, `parameter` and `variable`. + - Allowed `modifiers`: `async`, `unused`. - Allowed `types`: none. -- `memberLike` - matches the same as `property`, `parameterProperty`, `method`, `accessor`, `enumMember`. - - Allowed `modifiers`: `private`, `protected`, `public`, `static`, `readonly`, `abstract`, `requiresQuotes`, `override`, `async`. +- `memberLike` - matches the same as `accessor`, `enumMember`, `method`, `parameterProperty`, `property`. + - Allowed `modifiers`: `abstract`, `async`, `override`, `private`, `protected`, `public`, `readonly`, `requiresQuotes`, `static`. - Allowed `types`: none. -- `typeLike` - matches the same as `class`, `interface`, `typeAlias`, `enum`, `typeParameter`. +- `typeLike` - matches the same as `class`, `enum`, `interface`, `typeAlias`, `typeParameter`. - Allowed `modifiers`: `abstract`, `unused`. - Allowed `types`: none. - `property` - matches the same as `classProperty`, `objectLiteralProperty`, `typeProperty`. - - Allowed `modifiers`: `private`, `protected`, `public`, `static`, `readonly`, `abstract`, `requiresQuotes`, `override`, `async`. - - Allowed `types`: `boolean`, `string`, `number`, `function`, `array`. + - Allowed `modifiers`: `abstract`, `async`, `override`, `private`, `protected`, `public`, `readonly`, `requiresQuotes`, `static`. + - Allowed `types`: `array`, `boolean`, `function`, `number`, `string`. - `method` - matches the same as `classMethod`, `objectLiteralMethod`, `typeMethod`. - - Allowed `modifiers`: `private`, `protected`, `public`, `static`, `readonly`, `abstract`, `requiresQuotes`, `override`, `async`. + - Allowed `modifiers`: `abstract`, `async`, `override`, `private`, `protected`, `public`, `readonly`, `requiresQuotes`, `static`. - Allowed `types`: none. ## FAQ From 769e8c8b9a51cd3448e47d13c7b0dab0468ee23c Mon Sep 17 00:00:00 2001 From: YeonJuan Date: Mon, 14 Nov 2022 08:41:32 +0900 Subject: [PATCH 101/193] fix(eslint-plugin): [no-shadow] handle false positives on generics and parameters (#5902) * fix(eslint-plugin): [no-shadow] handle false positives on generics and parameters * Update packages/eslint-plugin/src/rules/no-shadow.ts Co-authored-by: Josh Goldberg --- packages/eslint-plugin/src/rules/no-shadow.ts | 5 +- .../tests/rules/no-shadow/no-shadow.test.ts | 75 +++++++++++++++++++ 2 files changed, 78 insertions(+), 2 deletions(-) diff --git a/packages/eslint-plugin/src/rules/no-shadow.ts b/packages/eslint-plugin/src/rules/no-shadow.ts index 1f746a3201c..7d8eff0b9e2 100644 --- a/packages/eslint-plugin/src/rules/no-shadow.ts +++ b/packages/eslint-plugin/src/rules/no-shadow.ts @@ -147,8 +147,9 @@ export default util.createRule({ return false; } - const id = variable.identifiers[0]; - return util.isFunctionType(id.parent); + return variable.defs.every( + def => def.node.type === AST_NODE_TYPES.TSFunctionType, + ); } function isGenericOfStaticMethod( diff --git a/packages/eslint-plugin/tests/rules/no-shadow/no-shadow.test.ts b/packages/eslint-plugin/tests/rules/no-shadow/no-shadow.test.ts index 1097f466a18..1616051f0e3 100644 --- a/packages/eslint-plugin/tests/rules/no-shadow/no-shadow.test.ts +++ b/packages/eslint-plugin/tests/rules/no-shadow/no-shadow.test.ts @@ -12,6 +12,25 @@ const ruleTester = new RuleTester({ ruleTester.run('no-shadow TS tests', rule, { valid: [ + 'function foo any>(arg: T) {}', + 'function foo any>(arg: T) {}', + 'function foo any>(arg: T) {}', + 'function foo any>(fn: T, args: any[]) {}', + 'function foo any>(fn: T, args: any[]) {}', + 'function foo any>(fn: T, ...args: any[]) {}', + 'function foo any>(fn: T, args: any[]) {}', + 'function foo any>(fn: T, args: any[]) {}', + 'function foo any>(fn: T, args: any) {}', + ` +function foo any>( + fn: T, + ...args: any[] +) {} + `, + ` +type Args = 1; +function foo void>(arg: T) {} + `, // nested conditional types ` export type ArrayInput = Func extends (arg0: Array) => any @@ -375,6 +394,22 @@ type T = 1; }, { code: ` +type T = 1; +function foo(arg: T) {} + `, + errors: [ + { + messageId: 'noShadow', + data: { + name: 'T', + shadowedLine: 2, + shadowedColumn: 6, + }, + }, + ], + }, + { + code: ` function foo() { return function () {}; } @@ -392,6 +427,22 @@ function foo() { }, { code: ` +type T = string; +function foo void>(arg: T) {} + `, + errors: [ + { + messageId: 'noShadow', + data: { + name: 'T', + shadowedLine: 2, + shadowedColumn: 6, + }, + }, + ], + }, + { + code: ` const x = 1; { type x = string; @@ -703,5 +754,29 @@ let y; }, ], }, + { + code: ` +function foo any>(fn: T, args: any[]) {} + `, + options: [ + { + ignoreTypeValueShadow: false, + builtinGlobals: true, + }, + ], + globals: { + args: 'writable', + }, + errors: [ + { + messageId: 'noShadowGlobal', + data: { + name: 'args', + shadowedLine: 2, + shadowedColumn: 5, + }, + }, + ], + }, ], }); From f25a94fa75e497a6b9ec29a008bcc89818eed60d Mon Sep 17 00:00:00 2001 From: YeonJuan Date: Mon, 14 Nov 2022 09:12:04 +0900 Subject: [PATCH 102/193] fix(eslint-plugin): [promise-function-async] handle keyword token (#5907) Co-authored-by: Josh Goldberg --- .../src/rules/promise-function-async.ts | 5 +- .../rules/promise-function-async.test.ts | 82 +++++++++++++++++++ 2 files changed, 86 insertions(+), 1 deletion(-) diff --git a/packages/eslint-plugin/src/rules/promise-function-async.ts b/packages/eslint-plugin/src/rules/promise-function-async.ts index ba3c3d9478f..4387bc52c9b 100644 --- a/packages/eslint-plugin/src/rules/promise-function-async.ts +++ b/packages/eslint-plugin/src/rules/promise-function-async.ts @@ -175,7 +175,10 @@ export default util.createRule({ } // if current token is a keyword like `static` or `public` then skip it - while (keyToken.type === AST_TOKEN_TYPES.Keyword) { + while ( + keyToken.type === AST_TOKEN_TYPES.Keyword && + keyToken.range[0] < method.key.range[0] + ) { keyToken = sourceCode.getTokenAfter(keyToken)!; } diff --git a/packages/eslint-plugin/tests/rules/promise-function-async.test.ts b/packages/eslint-plugin/tests/rules/promise-function-async.test.ts index 69b604c811c..ccf99b6afcb 100644 --- a/packages/eslint-plugin/tests/rules/promise-function-async.test.ts +++ b/packages/eslint-plugin/tests/rules/promise-function-async.test.ts @@ -102,6 +102,13 @@ const invalidAsyncModifiers = { constructor() {} } `, + ` +class Foo { + async catch(arg: Promise) { + return arg; + } +} + `, { code: ` function returnsAny(): any { @@ -670,5 +677,80 @@ class Test { } `, }, + // https://github.com/typescript-eslint/typescript-eslint/issues/5729 + { + code: ` +class Foo { + catch() { + return Promise.resolve(1); + } + + public default() { + return Promise.resolve(2); + } + + @decorator + private case() { + return Promise.resolve(3); + } +} + `, + output: ` +class Foo { + async catch() { + return Promise.resolve(1); + } + + public async default() { + return Promise.resolve(2); + } + + @decorator + private async case() { + return Promise.resolve(3); + } +} + `, + errors: [ + { + line: 3, + column: 3, + messageId, + }, + { + line: 7, + column: 3, + messageId, + }, + { + line: 12, + column: 3, + messageId, + }, + ], + }, + { + code: ` +const foo = { + catch() { + return Promise.resolve(1); + }, +}; + `, + output: ` +const foo = { + async catch() { + return Promise.resolve(1); + }, +}; + `, + errors: [ + { + line: 3, + column: 3, + messageId, + }, + ], + }, ], }); From ceddb34eeab5d4acb95725e723fd86d431ac3d65 Mon Sep 17 00:00:00 2001 From: Cparros <65684072+cparros@users.noreply.github.com> Date: Mon, 14 Nov 2022 08:57:39 -0700 Subject: [PATCH 103/193] chore(website): [prefer-nullish-coalescing] explicit notice for strictNullChecks (#5988) --- .../eslint-plugin/docs/rules/prefer-nullish-coalescing.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/eslint-plugin/docs/rules/prefer-nullish-coalescing.md b/packages/eslint-plugin/docs/rules/prefer-nullish-coalescing.md index 5be277ecc73..d2fc95f4066 100644 --- a/packages/eslint-plugin/docs/rules/prefer-nullish-coalescing.md +++ b/packages/eslint-plugin/docs/rules/prefer-nullish-coalescing.md @@ -11,6 +11,10 @@ Because the nullish coalescing operator _only_ coalesces when the original value This rule reports when an `||` operator can be safely replaced with a `??`. +:::caution +This rule will not work as expected if [`strictNullChecks`](https://www.typescriptlang.org/tsconfig#strictNullChecks) is not enabled. +::: + ## Options ### `ignoreTernaryTests` From 8af1b4d970438b27ea041717bddadc41af8fc72a Mon Sep 17 00:00:00 2001 From: "typescript-eslint[bot]" Date: Mon, 14 Nov 2022 17:32:30 +0000 Subject: [PATCH 104/193] chore: publish v5.43.0 --- CHANGELOG.md | 13 +++++++++++++ lerna.json | 2 +- packages/ast-spec/CHANGELOG.md | 4 ++++ packages/ast-spec/package.json | 2 +- packages/eslint-plugin-internal/CHANGELOG.md | 4 ++++ packages/eslint-plugin-internal/package.json | 8 ++++---- packages/eslint-plugin-tslint/CHANGELOG.md | 4 ++++ packages/eslint-plugin-tslint/package.json | 6 +++--- packages/eslint-plugin/CHANGELOG.md | 13 +++++++++++++ packages/eslint-plugin/package.json | 8 ++++---- packages/experimental-utils/CHANGELOG.md | 4 ++++ packages/experimental-utils/package.json | 4 ++-- packages/parser/CHANGELOG.md | 4 ++++ packages/parser/package.json | 8 ++++---- packages/scope-manager/CHANGELOG.md | 4 ++++ packages/scope-manager/package.json | 8 ++++---- packages/shared-fixtures/CHANGELOG.md | 4 ++++ packages/shared-fixtures/package.json | 2 +- packages/type-utils/CHANGELOG.md | 4 ++++ packages/type-utils/package.json | 8 ++++---- packages/types/CHANGELOG.md | 4 ++++ packages/types/package.json | 2 +- packages/typescript-estree/CHANGELOG.md | 4 ++++ packages/typescript-estree/package.json | 8 ++++---- packages/utils/CHANGELOG.md | 4 ++++ packages/utils/package.json | 10 +++++----- packages/visitor-keys/CHANGELOG.md | 4 ++++ packages/visitor-keys/package.json | 4 ++-- packages/website-eslint/CHANGELOG.md | 4 ++++ packages/website-eslint/package.json | 16 ++++++++-------- packages/website/CHANGELOG.md | 4 ++++ packages/website/package.json | 8 ++++---- 32 files changed, 134 insertions(+), 52 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c4db2f119aa..b400022f227 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,19 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) + +### Bug Fixes + +- **eslint-plugin:** [no-shadow] handle false positives on generics and parameters ([#5902](https://github.com/typescript-eslint/typescript-eslint/issues/5902)) ([769e8c8](https://github.com/typescript-eslint/typescript-eslint/commit/769e8c8b9a51cd3448e47d13c7b0dab0468ee23c)) +- **eslint-plugin:** [promise-function-async] handle keyword token ([#5907](https://github.com/typescript-eslint/typescript-eslint/issues/5907)) ([f25a94f](https://github.com/typescript-eslint/typescript-eslint/commit/f25a94fa75e497a6b9ec29a008bcc89818eed60d)) + +### Features + +- **eslint-plugin:** [consistent-type-imports] support fixing to inline types ([#5050](https://github.com/typescript-eslint/typescript-eslint/issues/5050)) ([75dcdf1](https://github.com/typescript-eslint/typescript-eslint/commit/75dcdf164d206c5530ba7cc095c4599ec90abe35)) +- **eslint-plugin:** [naming-convention] add support for "override" and "async" modifiers ([#5310](https://github.com/typescript-eslint/typescript-eslint/issues/5310)) ([#5610](https://github.com/typescript-eslint/typescript-eslint/issues/5610)) ([c759da1](https://github.com/typescript-eslint/typescript-eslint/commit/c759da169390ba490eee9ef773cc9edc88a32817)) +- **eslint-plugin:** [prefer-optional-chain] support suggesting `!foo || !foo.bar` as a valid match for the rule ([#5594](https://github.com/typescript-eslint/typescript-eslint/issues/5594)) ([923d486](https://github.com/typescript-eslint/typescript-eslint/commit/923d486c8c9c9096deac425e7a6cb0b6457eacbd)) + ## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) ### Bug Fixes diff --git a/lerna.json b/lerna.json index 0b0cd5d3c7d..e213821c090 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "5.42.1", + "version": "5.43.0", "npmClient": "yarn", "useWorkspaces": true, "stream": true diff --git a/packages/ast-spec/CHANGELOG.md b/packages/ast-spec/CHANGELOG.md index 12b5e0818ea..33f54422348 100644 --- a/packages/ast-spec/CHANGELOG.md +++ b/packages/ast-spec/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) + +**Note:** Version bump only for package @typescript-eslint/ast-spec + ## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) ### Bug Fixes diff --git a/packages/ast-spec/package.json b/packages/ast-spec/package.json index bc441599d3a..19a595262da 100644 --- a/packages/ast-spec/package.json +++ b/packages/ast-spec/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/ast-spec", - "version": "5.42.1", + "version": "5.43.0", "description": "TypeScript-ESTree AST spec", "private": true, "keywords": [ diff --git a/packages/eslint-plugin-internal/CHANGELOG.md b/packages/eslint-plugin-internal/CHANGELOG.md index 52726f2a2fa..3cb70bba497 100644 --- a/packages/eslint-plugin-internal/CHANGELOG.md +++ b/packages/eslint-plugin-internal/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) + +**Note:** Version bump only for package @typescript-eslint/eslint-plugin-internal + ## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) **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 899b0c144f9..b9047517e16 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": "5.42.1", + "version": "5.43.0", "private": true, "main": "dist/index.js", "scripts": { @@ -14,9 +14,9 @@ }, "dependencies": { "@types/prettier": "*", - "@typescript-eslint/scope-manager": "5.42.1", - "@typescript-eslint/type-utils": "5.42.1", - "@typescript-eslint/utils": "5.42.1", + "@typescript-eslint/scope-manager": "5.43.0", + "@typescript-eslint/type-utils": "5.43.0", + "@typescript-eslint/utils": "5.43.0", "prettier": "*" } } diff --git a/packages/eslint-plugin-tslint/CHANGELOG.md b/packages/eslint-plugin-tslint/CHANGELOG.md index 105df78c12f..77d0a23e05a 100644 --- a/packages/eslint-plugin-tslint/CHANGELOG.md +++ b/packages/eslint-plugin-tslint/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) + +**Note:** Version bump only for package @typescript-eslint/eslint-plugin-tslint + ## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) **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 143cda6b820..d69678024c8 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": "5.42.1", + "version": "5.43.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/utils": "5.42.1", + "@typescript-eslint/utils": "5.43.0", "lodash": "^4.17.21" }, "peerDependencies": { @@ -48,6 +48,6 @@ }, "devDependencies": { "@types/lodash": "*", - "@typescript-eslint/parser": "5.42.1" + "@typescript-eslint/parser": "5.43.0" } } diff --git a/packages/eslint-plugin/CHANGELOG.md b/packages/eslint-plugin/CHANGELOG.md index 8c5ef968f8a..9b989e2c870 100644 --- a/packages/eslint-plugin/CHANGELOG.md +++ b/packages/eslint-plugin/CHANGELOG.md @@ -3,6 +3,19 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) + +### Bug Fixes + +- **eslint-plugin:** [no-shadow] handle false positives on generics and parameters ([#5902](https://github.com/typescript-eslint/typescript-eslint/issues/5902)) ([769e8c8](https://github.com/typescript-eslint/typescript-eslint/commit/769e8c8b9a51cd3448e47d13c7b0dab0468ee23c)) +- **eslint-plugin:** [promise-function-async] handle keyword token ([#5907](https://github.com/typescript-eslint/typescript-eslint/issues/5907)) ([f25a94f](https://github.com/typescript-eslint/typescript-eslint/commit/f25a94fa75e497a6b9ec29a008bcc89818eed60d)) + +### Features + +- **eslint-plugin:** [consistent-type-imports] support fixing to inline types ([#5050](https://github.com/typescript-eslint/typescript-eslint/issues/5050)) ([75dcdf1](https://github.com/typescript-eslint/typescript-eslint/commit/75dcdf164d206c5530ba7cc095c4599ec90abe35)) +- **eslint-plugin:** [naming-convention] add support for "override" and "async" modifiers ([#5310](https://github.com/typescript-eslint/typescript-eslint/issues/5310)) ([#5610](https://github.com/typescript-eslint/typescript-eslint/issues/5610)) ([c759da1](https://github.com/typescript-eslint/typescript-eslint/commit/c759da169390ba490eee9ef773cc9edc88a32817)) +- **eslint-plugin:** [prefer-optional-chain] support suggesting `!foo || !foo.bar` as a valid match for the rule ([#5594](https://github.com/typescript-eslint/typescript-eslint/issues/5594)) ([923d486](https://github.com/typescript-eslint/typescript-eslint/commit/923d486c8c9c9096deac425e7a6cb0b6457eacbd)) + ## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) ### Bug Fixes diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index baf09fbe480..b4778013b7a 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/eslint-plugin", - "version": "5.42.1", + "version": "5.43.0", "description": "TypeScript plugin for ESLint", "keywords": [ "eslint", @@ -44,9 +44,9 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/scope-manager": "5.42.1", - "@typescript-eslint/type-utils": "5.42.1", - "@typescript-eslint/utils": "5.42.1", + "@typescript-eslint/scope-manager": "5.43.0", + "@typescript-eslint/type-utils": "5.43.0", + "@typescript-eslint/utils": "5.43.0", "debug": "^4.3.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", diff --git a/packages/experimental-utils/CHANGELOG.md b/packages/experimental-utils/CHANGELOG.md index 90849052a8b..dbf41b97191 100644 --- a/packages/experimental-utils/CHANGELOG.md +++ b/packages/experimental-utils/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) + +**Note:** Version bump only for package @typescript-eslint/experimental-utils + ## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) **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 a8beecad680..901b63d2f30 100644 --- a/packages/experimental-utils/package.json +++ b/packages/experimental-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/experimental-utils", - "version": "5.42.1", + "version": "5.43.0", "description": "(Experimental) Utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -38,7 +38,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/utils": "5.42.1" + "@typescript-eslint/utils": "5.43.0" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" diff --git a/packages/parser/CHANGELOG.md b/packages/parser/CHANGELOG.md index f289c94422c..c6013137c08 100644 --- a/packages/parser/CHANGELOG.md +++ b/packages/parser/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) + +**Note:** Version bump only for package @typescript-eslint/parser + ## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) **Note:** Version bump only for package @typescript-eslint/parser diff --git a/packages/parser/package.json b/packages/parser/package.json index 3cab6296e24..23ac485be0f 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/parser", - "version": "5.42.1", + "version": "5.43.0", "description": "An ESLint custom parser which leverages TypeScript ESTree", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -45,9 +45,9 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "dependencies": { - "@typescript-eslint/scope-manager": "5.42.1", - "@typescript-eslint/types": "5.42.1", - "@typescript-eslint/typescript-estree": "5.42.1", + "@typescript-eslint/scope-manager": "5.43.0", + "@typescript-eslint/types": "5.43.0", + "@typescript-eslint/typescript-estree": "5.43.0", "debug": "^4.3.4" }, "devDependencies": { diff --git a/packages/scope-manager/CHANGELOG.md b/packages/scope-manager/CHANGELOG.md index a05c850fb59..4707e539d1b 100644 --- a/packages/scope-manager/CHANGELOG.md +++ b/packages/scope-manager/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) + +**Note:** Version bump only for package @typescript-eslint/scope-manager + ## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) **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 805f5263089..bc611e14e68 100644 --- a/packages/scope-manager/package.json +++ b/packages/scope-manager/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/scope-manager", - "version": "5.42.1", + "version": "5.43.0", "description": "TypeScript scope analyser for ESLint", "keywords": [ "eslint", @@ -38,12 +38,12 @@ "typecheck": "cd ../../ && nx typecheck @typescript-eslint/scope-manager" }, "dependencies": { - "@typescript-eslint/types": "5.42.1", - "@typescript-eslint/visitor-keys": "5.42.1" + "@typescript-eslint/types": "5.43.0", + "@typescript-eslint/visitor-keys": "5.43.0" }, "devDependencies": { "@types/glob": "*", - "@typescript-eslint/typescript-estree": "5.42.1", + "@typescript-eslint/typescript-estree": "5.43.0", "glob": "*", "jest-specific-snapshot": "*", "make-dir": "*", diff --git a/packages/shared-fixtures/CHANGELOG.md b/packages/shared-fixtures/CHANGELOG.md index ab596d7e657..a96e2e63278 100644 --- a/packages/shared-fixtures/CHANGELOG.md +++ b/packages/shared-fixtures/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) + +**Note:** Version bump only for package @typescript-eslint/shared-fixtures + ## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) **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 ca455a0baa7..cec6cebc648 100644 --- a/packages/shared-fixtures/package.json +++ b/packages/shared-fixtures/package.json @@ -1,5 +1,5 @@ { "name": "@typescript-eslint/shared-fixtures", - "version": "5.42.1", + "version": "5.43.0", "private": true } diff --git a/packages/type-utils/CHANGELOG.md b/packages/type-utils/CHANGELOG.md index 05d63922d7b..86867d3cdde 100644 --- a/packages/type-utils/CHANGELOG.md +++ b/packages/type-utils/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) + +**Note:** Version bump only for package @typescript-eslint/type-utils + ## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) ### Bug Fixes diff --git a/packages/type-utils/package.json b/packages/type-utils/package.json index d7c59969f23..f72272dd349 100644 --- a/packages/type-utils/package.json +++ b/packages/type-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/type-utils", - "version": "5.42.1", + "version": "5.43.0", "description": "Type utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -39,13 +39,13 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/typescript-estree": "5.42.1", - "@typescript-eslint/utils": "5.42.1", + "@typescript-eslint/typescript-estree": "5.43.0", + "@typescript-eslint/utils": "5.43.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, "devDependencies": { - "@typescript-eslint/parser": "5.42.1", + "@typescript-eslint/parser": "5.43.0", "typescript": "*" }, "peerDependencies": { diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index e40007997a1..cede80aabc0 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) + +**Note:** Version bump only for package @typescript-eslint/types + ## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) **Note:** Version bump only for package @typescript-eslint/types diff --git a/packages/types/package.json b/packages/types/package.json index 8d07f4e7f4c..8b591cd2e0f 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/types", - "version": "5.42.1", + "version": "5.43.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 157724f1c61..c7f8b17bab4 100644 --- a/packages/typescript-estree/CHANGELOG.md +++ b/packages/typescript-estree/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) + +**Note:** Version bump only for package @typescript-eslint/typescript-estree + ## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) **Note:** Version bump only for package @typescript-eslint/typescript-estree diff --git a/packages/typescript-estree/package.json b/packages/typescript-estree/package.json index ded0c0f77d6..f28d6d17f76 100644 --- a/packages/typescript-estree/package.json +++ b/packages/typescript-estree/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/typescript-estree", - "version": "5.42.1", + "version": "5.43.0", "description": "A parser that converts TypeScript source code into an ESTree compatible form", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -42,8 +42,8 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "5.42.1", - "@typescript-eslint/visitor-keys": "5.42.1", + "@typescript-eslint/types": "5.43.0", + "@typescript-eslint/visitor-keys": "5.43.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -59,7 +59,7 @@ "@types/is-glob": "*", "@types/semver": "*", "@types/tmp": "*", - "@typescript-eslint/shared-fixtures": "5.42.1", + "@typescript-eslint/shared-fixtures": "5.43.0", "glob": "*", "jest-specific-snapshot": "*", "make-dir": "*", diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md index 0f90a7ba84d..3a925cebcb9 100644 --- a/packages/utils/CHANGELOG.md +++ b/packages/utils/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) + +**Note:** Version bump only for package @typescript-eslint/utils + ## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) **Note:** Version bump only for package @typescript-eslint/utils diff --git a/packages/utils/package.json b/packages/utils/package.json index 6fce0515843..ad353bce00e 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/utils", - "version": "5.42.1", + "version": "5.43.0", "description": "Utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -41,9 +41,9 @@ "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.42.1", - "@typescript-eslint/types": "5.42.1", - "@typescript-eslint/typescript-estree": "5.42.1", + "@typescript-eslint/scope-manager": "5.43.0", + "@typescript-eslint/types": "5.43.0", + "@typescript-eslint/typescript-estree": "5.43.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -52,7 +52,7 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "devDependencies": { - "@typescript-eslint/parser": "5.42.1", + "@typescript-eslint/parser": "5.43.0", "typescript": "*" }, "funding": { diff --git a/packages/visitor-keys/CHANGELOG.md b/packages/visitor-keys/CHANGELOG.md index c3f21858ae0..9ebb6b77f0b 100644 --- a/packages/visitor-keys/CHANGELOG.md +++ b/packages/visitor-keys/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) + +**Note:** Version bump only for package @typescript-eslint/visitor-keys + ## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) **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 285fb30b312..62a83136687 100644 --- a/packages/visitor-keys/package.json +++ b/packages/visitor-keys/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/visitor-keys", - "version": "5.42.1", + "version": "5.43.0", "description": "Visitor keys used to help traverse the TypeScript-ESTree AST", "keywords": [ "eslint", @@ -39,7 +39,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/types": "5.43.0", "eslint-visitor-keys": "^3.3.0" }, "devDependencies": { diff --git a/packages/website-eslint/CHANGELOG.md b/packages/website-eslint/CHANGELOG.md index 08eac0b5451..5ea048243ae 100644 --- a/packages/website-eslint/CHANGELOG.md +++ b/packages/website-eslint/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) + +**Note:** Version bump only for package @typescript-eslint/website-eslint + ## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) **Note:** Version bump only for package @typescript-eslint/website-eslint diff --git a/packages/website-eslint/package.json b/packages/website-eslint/package.json index 7f0d3551d71..0baf89601da 100644 --- a/packages/website-eslint/package.json +++ b/packages/website-eslint/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/website-eslint", - "version": "5.42.1", + "version": "5.43.0", "private": true, "description": "ESLint which works in browsers.", "engines": { @@ -16,19 +16,19 @@ "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore" }, "dependencies": { - "@typescript-eslint/types": "5.42.1", - "@typescript-eslint/utils": "5.42.1" + "@typescript-eslint/types": "5.43.0", + "@typescript-eslint/utils": "5.43.0" }, "devDependencies": { "@rollup/plugin-commonjs": "^23.0.0", "@rollup/plugin-json": "^5.0.0", "@rollup/plugin-node-resolve": "^15.0.0", "@rollup/pluginutils": "^5.0.0", - "@typescript-eslint/eslint-plugin": "5.42.1", - "@typescript-eslint/parser": "5.42.1", - "@typescript-eslint/scope-manager": "5.42.1", - "@typescript-eslint/typescript-estree": "5.42.1", - "@typescript-eslint/visitor-keys": "5.42.1", + "@typescript-eslint/eslint-plugin": "5.43.0", + "@typescript-eslint/parser": "5.43.0", + "@typescript-eslint/scope-manager": "5.43.0", + "@typescript-eslint/typescript-estree": "5.43.0", + "@typescript-eslint/visitor-keys": "5.43.0", "eslint": "*", "rollup": "^2.75.4", "rollup-plugin-terser": "^7.0.2", diff --git a/packages/website/CHANGELOG.md b/packages/website/CHANGELOG.md index 45dc82b46b2..6e050be87af 100644 --- a/packages/website/CHANGELOG.md +++ b/packages/website/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) + +**Note:** Version bump only for package website + ## [5.42.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.0...v5.42.1) (2022-11-07) **Note:** Version bump only for package website diff --git a/packages/website/package.json b/packages/website/package.json index b59791a71e9..5232068f58a 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -1,6 +1,6 @@ { "name": "website", - "version": "5.42.1", + "version": "5.43.0", "private": true, "scripts": { "build": "docusaurus build", @@ -21,8 +21,8 @@ "@docusaurus/remark-plugin-npm2yarn": "~2.2.0", "@docusaurus/theme-common": "~2.2.0", "@mdx-js/react": "1.6.22", - "@typescript-eslint/parser": "5.42.1", - "@typescript-eslint/website-eslint": "5.42.1", + "@typescript-eslint/parser": "5.43.0", + "@typescript-eslint/website-eslint": "5.43.0", "clsx": "^1.1.1", "eslint": "*", "json-schema": "^0.4.0", @@ -48,7 +48,7 @@ "@types/react": "^18.0.9", "@types/react-helmet": "^6.1.5", "@types/react-router-dom": "^5.3.3", - "@typescript-eslint/eslint-plugin": "5.42.1", + "@typescript-eslint/eslint-plugin": "5.43.0", "copy-webpack-plugin": "^11.0.0", "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-react": "^7.29.4", From 6a735e142ef67f3af6497f922cf83706867eb6b7 Mon Sep 17 00:00:00 2001 From: Omri Luzon Date: Tue, 15 Nov 2022 18:27:49 +0200 Subject: [PATCH 105/193] feat(eslint-plugin): [keyword-spacing] Support spacing in import-type syntax (#5977) * feat/issue5362-keyword-spacing---support-import-type-syntax * uncomment * Update packages/eslint-plugin/tests/rules/keyword-spacing.test.ts Co-authored-by: Josh Goldberg --- .../src/rules/keyword-spacing.ts | 32 ++++++++++++++++ .../tests/rules/keyword-spacing.test.ts | 38 +++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/packages/eslint-plugin/src/rules/keyword-spacing.ts b/packages/eslint-plugin/src/rules/keyword-spacing.ts index bcb90573836..6af42e5c2fb 100644 --- a/packages/eslint-plugin/src/rules/keyword-spacing.ts +++ b/packages/eslint-plugin/src/rules/keyword-spacing.ts @@ -1,3 +1,4 @@ +import type { TSESTree } from '@typescript-eslint/utils'; import { AST_TOKEN_TYPES } from '@typescript-eslint/utils'; import * as util from '../util'; @@ -50,6 +51,37 @@ export default util.createRule({ // make sure to reset the type afterward so we don't permanently mutate the AST asToken.type = oldTokenType; }, + 'ImportDeclaration[importKind=type]'( + node: TSESTree.ImportDeclaration, + ): void { + const typeToken = sourceCode.getFirstToken(node, { skip: 1 })!; + const punctuatorToken = sourceCode.getTokenAfter(typeToken)!; + const spacesBetweenTypeAndPunctuator = + punctuatorToken.range[0] - typeToken.range[1]; + if (context.options[0].after && spacesBetweenTypeAndPunctuator === 0) { + context.report({ + loc: punctuatorToken.loc, + messageId: 'expectedBefore', + data: { value: punctuatorToken.value }, + fix(fixer) { + return fixer.insertTextBefore(punctuatorToken, ' '); + }, + }); + } + if (!context.options[0].after && spacesBetweenTypeAndPunctuator > 0) { + context.report({ + loc: punctuatorToken.loc, + messageId: 'unexpectedBefore', + data: { value: punctuatorToken.value }, + fix(fixer) { + return fixer.removeRange([ + typeToken.range[1], + typeToken.range[1] + spacesBetweenTypeAndPunctuator, + ]); + }, + }); + } + }, }; }, }); diff --git a/packages/eslint-plugin/tests/rules/keyword-spacing.test.ts b/packages/eslint-plugin/tests/rules/keyword-spacing.test.ts index c2694829b35..b8a1a72d2ca 100644 --- a/packages/eslint-plugin/tests/rules/keyword-spacing.test.ts +++ b/packages/eslint-plugin/tests/rules/keyword-spacing.test.ts @@ -114,6 +114,16 @@ ruleTester.run('keyword-spacing', rule, { options: [{ overrides: { as: {} } }], parserOptions: { ecmaVersion: 6, sourceType: 'module' }, }, + { + code: 'import type { foo } from "foo";', + options: [{ overrides: { as: {} } }], + parserOptions: { ecmaVersion: 6, sourceType: 'module' }, + }, + { + code: "import type * as Foo from 'foo'", + options: [{ overrides: { as: {} } }], + parserOptions: { ecmaVersion: 6, sourceType: 'module' }, + }, ], invalid: [ //---------------------------------------------------------------------- @@ -152,5 +162,33 @@ ruleTester.run('keyword-spacing', rule, { parserOptions: { ecmaVersion: 6, sourceType: 'module' }, errors: expectedAfter('as'), }, + { + code: 'import type{ foo } from "foo";', + output: 'import type { foo } from "foo";', + options: [{ after: true, before: true }], + parserOptions: { ecmaVersion: 6, sourceType: 'module' }, + errors: [{ messageId: 'expectedBefore', data: { value: '{' } }], + }, + { + code: 'import type { foo } from"foo";', + output: 'import type{ foo } from"foo";', + options: [{ after: false, before: true }], + parserOptions: { ecmaVersion: 6, sourceType: 'module' }, + errors: [{ messageId: 'unexpectedBefore', data: { value: '{' } }], + }, + { + code: 'import type* as foo from "foo";', + output: 'import type * as foo from "foo";', + options: [{ after: true, before: true }], + parserOptions: { ecmaVersion: 6, sourceType: 'module' }, + errors: [{ messageId: 'expectedBefore', data: { value: '*' } }], + }, + { + code: 'import type * as foo from"foo";', + output: 'import type* as foo from"foo";', + options: [{ after: false, before: true }], + parserOptions: { ecmaVersion: 6, sourceType: 'module' }, + errors: [{ messageId: 'unexpectedBefore', data: { value: '*' } }], + }, ], }); From 5baad0893f9a90633d57fffac69af7523bd1501e Mon Sep 17 00:00:00 2001 From: YeonJuan Date: Wed, 16 Nov 2022 03:47:08 +0900 Subject: [PATCH 106/193] fix(eslint-plugin): [no-unnecessary-condition] handle index signature type (#5912) fix(eslint-plugin): [no-unnecessary-condition] handle mapped type --- .../src/rules/no-unnecessary-condition.ts | 7 ++- .../rules/no-unnecessary-condition.test.ts | 49 +++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/packages/eslint-plugin/src/rules/no-unnecessary-condition.ts b/packages/eslint-plugin/src/rules/no-unnecessary-condition.ts index 51d42f82926..030ed4fe188 100644 --- a/packages/eslint-plugin/src/rules/no-unnecessary-condition.ts +++ b/packages/eslint-plugin/src/rules/no-unnecessary-condition.ts @@ -554,7 +554,12 @@ export default createRule({ type, property.name, ); - return propType && isNullableType(propType, { allowUndefined: true }); + + if (propType) { + return isNullableType(propType, { allowUndefined: true }); + } + + return !!checker.getIndexInfoOfType(type, ts.IndexKind.String); }); return ( !isOwnNullable && isNullableType(prevType, { allowUndefined: true }) diff --git a/packages/eslint-plugin/tests/rules/no-unnecessary-condition.test.ts b/packages/eslint-plugin/tests/rules/no-unnecessary-condition.test.ts index f8401399a20..af8b189f899 100644 --- a/packages/eslint-plugin/tests/rules/no-unnecessary-condition.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unnecessary-condition.test.ts @@ -527,6 +527,24 @@ if (x) { tsconfigRootDir: path.join(rootPath, 'unstrict'), }, }, + ` +interface Foo { + [key: string]: [string] | undefined; +} + +type OptionalFoo = Foo | undefined; +declare const foo: OptionalFoo; +foo?.test?.length; + `, + ` +interface Foo { + [key: number]: [string] | undefined; +} + +type OptionalFoo = Foo | undefined; +declare const foo: OptionalFoo; +foo?.[1]?.length; + `, ], invalid: [ // Ensure that it's checking in all the right places @@ -1548,5 +1566,36 @@ if (x) { tsconfigRootDir: path.join(rootPath, 'unstrict'), }, }, + { + code: ` +interface Foo { + test: string; + [key: string]: [string] | undefined; +} + +type OptionalFoo = Foo | undefined; +declare const foo: OptionalFoo; +foo?.test?.length; + `, + output: ` +interface Foo { + test: string; + [key: string]: [string] | undefined; +} + +type OptionalFoo = Foo | undefined; +declare const foo: OptionalFoo; +foo?.test.length; + `, + errors: [ + { + messageId: 'neverOptionalChain', + line: 9, + endLine: 9, + column: 10, + endColumn: 12, + }, + ], + }, ], }); From 0fb44ba3f46cef0a35fbd1eb862808cd106287d0 Mon Sep 17 00:00:00 2001 From: Jonathan Flower Date: Tue, 15 Nov 2022 13:52:47 -0500 Subject: [PATCH 107/193] docs(website): help troubleshoot issues with multiple parsers (#5612) * Help troubleshoot issues with multiple parsers This might not be a perfect fit for the typescript-eslint docs, since this is specific to Vue. However, I expect the issue effects other custom parsers as well. Including multiple parsers like this is counter intuitive because it seems like a mistake to include two "parser"s. It would have been a huge help to me to have found this in the troubleshooting guide. more info: https://eslint.vuejs.org/user-guide/#how-to-use-a-custom-parser devs running into this issue: https://github.com/vuejs/vue-eslint-parser/issues/45#issuecomment-988625895 https://stackoverflow.com/questions/66597732/eslint-vue-3-parsing-error-expected-eslint * fix typos * grouping vue related questions * Apply suggestions from code review * More syntax highlighting Co-authored-by: Josh Goldberg --- docs/linting/TROUBLESHOOTING.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/docs/linting/TROUBLESHOOTING.md b/docs/linting/TROUBLESHOOTING.md index e477267c476..8c8319a1aaf 100644 --- a/docs/linting/TROUBLESHOOTING.md +++ b/docs/linting/TROUBLESHOOTING.md @@ -86,6 +86,21 @@ module.exports = { }; ``` +## I am running into errors when parsing TypeScript in my .vue files + +If you are running into issues parsing .vue files, it might be because parsers like [`vue-eslint-parser`](https://www.npmjs.com/package/vue-eslint-parser) are required to parse `.vue` files. In this case you can move `@typescript-eslint/parser` inside `parserOptions` and use `vue-eslint-parser` as the top level parser. + +```diff +- "parser": "@typescript-eslint/parser", ++ "parser": "vue-eslint-parser", + "parserOptions": { ++ "parser": "@typescript-eslint/parser", + "sourceType": "module" + } +``` + +The `parserOptions.parser` option can also specify an object to specify multiple parsers. See the [`vue-eslint-parser` usage guide](https://eslint.vuejs.org/user-guide/#usage) for more details. + ## One of my lint rules isn't working correctly on a pure JavaScript file This is to be expected - ESLint rules do not check file extensions on purpose, as it causes issues in environments that use non-standard extensions (for example, a `.vue` and a `.md` file can both contain TypeScript code to be linted). From 2778ff0c3db011148be93ed3bea5ce07af3c81ef Mon Sep 17 00:00:00 2001 From: Omri Luzon Date: Wed, 16 Nov 2022 03:50:21 +0200 Subject: [PATCH 108/193] fix(eslint-plugin): [prefer-optional-chain] handle binary expressions in negated or (#5992) * fix/issue5991-fix-prefer-optional-chain-BinaryExpression-in-negated-or * CR --- packages/eslint-plugin/src/rules/prefer-optional-chain.ts | 1 + .../eslint-plugin/tests/rules/prefer-optional-chain.test.ts | 2 ++ 2 files changed, 3 insertions(+) diff --git a/packages/eslint-plugin/src/rules/prefer-optional-chain.ts b/packages/eslint-plugin/src/rules/prefer-optional-chain.ts index 89eb72094b6..73fbcc27af3 100644 --- a/packages/eslint-plugin/src/rules/prefer-optional-chain.ts +++ b/packages/eslint-plugin/src/rules/prefer-optional-chain.ts @@ -400,6 +400,7 @@ export default util.createRule({ case AST_NODE_TYPES.Literal: case AST_NODE_TYPES.TemplateLiteral: + case AST_NODE_TYPES.BinaryExpression: propertyText = sourceCode.getText(node.property); break; diff --git a/packages/eslint-plugin/tests/rules/prefer-optional-chain.test.ts b/packages/eslint-plugin/tests/rules/prefer-optional-chain.test.ts index 58b309edcc8..e1a1467d80f 100644 --- a/packages/eslint-plugin/tests/rules/prefer-optional-chain.test.ts +++ b/packages/eslint-plugin/tests/rules/prefer-optional-chain.test.ts @@ -198,6 +198,8 @@ ruleTester.run('prefer-optional-chain', rule, { 'foo && foo[bar as string] && foo[bar as string].baz;', 'foo && foo[1 + 2] && foo[1 + 2].baz;', 'foo && foo[typeof bar] && foo[typeof bar].baz;', + '!foo[1 + 1] || !foo[1 + 2];', + '!foo[1 + 1] || !foo[1 + 1].foo;', '!foo || !foo[bar as string] || !foo[bar as string].baz;', '!foo || !foo[1 + 2] || !foo[1 + 2].baz;', '!foo || !foo[typeof bar] || !foo[typeof bar].baz;', From 81236b21b289d595d738591ee2c9374f2011bdf7 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Wed, 16 Nov 2022 00:44:24 -0500 Subject: [PATCH 109/193] chore: reduce issue+pr lock delay to 7 days (#5974) --- .github/workflows/lock.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lock.yml b/.github/workflows/lock.yml index fc8cea8a8ac..a7ef3bd4965 100644 --- a/.github/workflows/lock.yml +++ b/.github/workflows/lock.yml @@ -17,9 +17,9 @@ jobs: - uses: dessant/lock-threads@v3 with: github-token: ${{ github.token }} - issue-inactive-days: '30' + issue-inactive-days: '7' issue-lock-reason: 'resolved' issue-comment: '' - pr-inactive-days: '30' + pr-inactive-days: '7' pr-lock-reason: 'resolved' pr-comment: '' From 88d0316e60ee18bca5b74b87ad6efa6c1c418fb9 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Wed, 16 Nov 2022 00:47:27 -0500 Subject: [PATCH 110/193] chore(website): fix TSLint.md link casing in PACKAGES.md (#5976) --- docs/development/architecture/PACKAGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/development/architecture/PACKAGES.md b/docs/development/architecture/PACKAGES.md index f798e35b2e4..74ca39b3ae4 100644 --- a/docs/development/architecture/PACKAGES.md +++ b/docs/development/architecture/PACKAGES.md @@ -66,7 +66,7 @@ Any custom rules you write generally will be as well. [`@typescript-eslint/eslint-plugin-tslint`] is a separate ESLint plugin that allows running TSLint rules within ESLint to help you migrate from TSLint to ESLint. :::caution -**TSLint is deprecated.** It is in your best interest to migrate off it. See [Linting > Troubleshooting & FAQs > What About TSLint?](../../linting/troubleshooting/TSLINT.md). +**TSLint is deprecated.** It is in your best interest to migrate off it. See [Linting > Troubleshooting & FAQs > What About TSLint?](../../linting/troubleshooting/TSLint.md). ::: [`@typescript-eslint/eslint-plugin-tslint`]: https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin-tslint From 88b1ac7b4167c0ebb694dcefbe297a985cfb4df1 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Wed, 16 Nov 2022 00:49:42 -0500 Subject: [PATCH 111/193] docs(website): mention cross-file caching issues in FAQs (#5978) --- docs/linting/TROUBLESHOOTING.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/docs/linting/TROUBLESHOOTING.md b/docs/linting/TROUBLESHOOTING.md index 8c8319a1aaf..5001a0a16fa 100644 --- a/docs/linting/TROUBLESHOOTING.md +++ b/docs/linting/TROUBLESHOOTING.md @@ -220,6 +220,25 @@ For example: See [this issue comment](https://github.com/typescript-eslint/typescript-eslint/issues/4102#issuecomment-963265514) for more details. +## Changes to one file are not reflected when linting other files in my IDE + +> tl;dr: Restart your ESLint server to force an update. + +ESLint currently does not have any way of telling parsers such as ours when an arbitrary file is changed on disk. +That means if you change file A that is imported by file B, it won't update lint caches for file B -- even if file B's text contents have changed. +Sometimes the only solution is to restart your ESLint editor extension altogether. + +See [this issue comment](https://github.com/typescript-eslint/typescript-eslint/issues/5845#issuecomment-1283248238 'GitHub issue 5845, comment 1283248238: details on ESLint cross-file caching') for more information. + +:::tip +[VS Code's ESLint extension](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) provides an `ESLint: Restart ESLint Server` action. +::: + +### I get `no-unsafe-*` complaints for cross-file changes + +See [Changes to one file are not reflected in linting other files in my IDE](#changes-to-one-file-are-not-reflected-in-linting-other-files-in-my-ide). +Rules such as [`no-unsafe-argument`](https://typescript-eslint.io/rules/no-unsafe-argument), [`no-unsafe-assignment`](https://typescript-eslint.io/rules/no-unsafe-assignment), and [`no-unsafe-call`](https://typescript-eslint.io/rules/no-unsafe-call) are often impacted. + ## My linting feels really slow As mentioned in the [type-aware linting doc](./TYPED_LINTING.md), if you're using type-aware linting, your lint times should be roughly the same as your build times. From dd9b3faf645d3db878dc270b5fdc33f75923f6f2 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Wed, 16 Nov 2022 01:06:37 -0500 Subject: [PATCH 112/193] chore(eslint-plugin): switch generate-rules-lists to generate-breaking-changes (#5929) --- packages/eslint-plugin/package.json | 6 +- .../tools/generate-breaking-changes.ts | 156 ++++++++++++++++++ .../tools/generate-rules-lists.ts | 147 ----------------- packages/eslint-plugin/tsconfig.json | 9 +- yarn.lock | 5 + 5 files changed, 173 insertions(+), 150 deletions(-) create mode 100644 packages/eslint-plugin/tools/generate-breaking-changes.ts delete mode 100644 packages/eslint-plugin/tools/generate-rules-lists.ts diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index b4778013b7a..0e2ab6e436a 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -37,8 +37,8 @@ "clean": "tsc -b tsconfig.build.json --clean", "postclean": "rimraf dist && rimraf coverage", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", - "generate:configs": "../../node_modules/.bin/ts-node --files --transpile-only tools/generate-configs.ts", - "generate:rules-lists": "../../node_modules/.bin/ts-node --files --transpile-only tools/generate-rules-lists.ts", + "generate:breaking-changes": "../../node_modules/.bin/ts-node tools/generate-breaking-changes.ts", + "generate:configs": "../../node_modules/.bin/ts-node tools/generate-configs.ts", "lint": "eslint . --ignore-path ../../.eslintignore", "test": "jest --coverage", "typecheck": "tsc -p tsconfig.json --noEmit" @@ -61,7 +61,9 @@ "@types/natural-compare-lite": "^1.4.0", "@types/prettier": "*", "chalk": "^5.0.1", + "cross-fetch": "^3.1.5", "json-schema": "*", + "markdown-table": "^3.0.2", "marked": "^4.0.15", "prettier": "*", "title-case": "^3.0.3", diff --git a/packages/eslint-plugin/tools/generate-breaking-changes.ts b/packages/eslint-plugin/tools/generate-breaking-changes.ts new file mode 100644 index 00000000000..9b1ecafff4c --- /dev/null +++ b/packages/eslint-plugin/tools/generate-breaking-changes.ts @@ -0,0 +1,156 @@ +// eslint-disable-next-line @typescript-eslint/consistent-type-imports +type RulesFile = typeof import('../src/rules'); + +interface RulesObject { + default: RulesFile; +} + +async function main(): Promise { + const { + default: { default: rules }, + } = + // @ts-expect-error -- We don't support ESM imports of local code yet. + (await import('../dist/rules/index.js')) as RulesObject; + const { markdownTable } = await import('markdown-table'); + const { fetch } = await import('cross-fetch'); + + const newRuleNames = await getNewRulesAsOfMajorVersion('5.0.0'); + + console.log(`## Table Key + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ColumnDescriptionEmojis
StatusBeing added, deprecated, or removed +
    +
  • 🆕 = newly added to TypeScript-ESLint
  • +
  • 🙅 = deprecated in the next major
  • +
  • ➖️ = to be removed from the plugin in the next version
  • +
+
ExtExtension rule? +
    +
  • ☑️ = yes
  • +
+
RRecommended +
    +
  • ➕ = add to recommended this version
  • +
  • ⚠️ = recommended as warning
  • +
  • 🛑 = recommended as an error
  • +
  • ➖️ = remove from recommended this version
  • +
+
RWTRecommended-requiring-type-checking +
    +
  • ➕ = add to recommended-with-typechecking this version
  • +
  • ⚠️ = recommended as warning
  • +
  • 🛑 = recommended as an error
  • +
  • ➖️ = remove from recommended this version
  • +
+
StrictStrict +
    +
  • ➕ = add to strict this version
  • +
  • ⚠️ = recommended as warning
  • +
  • ➖️ = remove from strict this version
  • +
+
+ +## Recommendations Table + +> Hint: search for 🆕 to find newly added rules, and ➕ or ➖ to see config changes. +`); + + console.log( + markdownTable([ + ['Rule', 'Status', 'Ext', 'R', 'RWT', 'Strict', 'Comment'], + ...Object.entries(rules).map(([ruleName, { meta }]) => { + const { deprecated } = meta; + const { extendsBaseRule, recommended, requiresTypeChecking } = + meta.docs!; + + return [ + `[\`${ruleName}\`](https://typescript-eslint.io/rules/${ruleName})`, + newRuleNames.has(ruleName) ? '🆕' : deprecated ? '🙅' : '', + extendsBaseRule ? '☑️' : '', + recommended && + ['error', 'warn'].includes(recommended) && + !requiresTypeChecking + ? '🛑' + : '', + recommended && + ['error', 'warn'].includes(recommended) && + requiresTypeChecking + ? '🛑' + : '', + recommended === 'strict' ? '⚠️' : '', + meta.type === 'layout' ? 'layout 💩' : '(todo)', + ]; + }), + ]), + ); + + // Annotate which rules are new since version 5.0.0 + async function getNewRulesAsOfMajorVersion( + oldVersion: string, + ): Promise> { + // 1. Get the current list of rules (already done) + const newRuleNames = Object.keys(rules); + + // 2. Use some CDN thing for the 5.X version of typescript-eslint + const oldUrl = `https://unpkg.com/@typescript-eslint/eslint-plugin@${oldVersion}/dist/configs/all.js`; + const oldFileText = await (await fetch(oldUrl)).text(); + const oldObjectText = oldFileText.substring( + oldFileText.indexOf('{'), + oldFileText.lastIndexOf('}') + 1, + ); + // Normally we wouldn't condone using the 'eval' API... + // But this is an internal-only script and it's the easiest way to convert + // the JS raw text into a runtime object. 🤷 + let oldRulesObject!: { rules: RulesFile }; + eval('oldRulesObject = ' + oldObjectText); + const oldRuleNames = new Set(Object.keys(oldRulesObject.rules)); + + // 3. Get the keys that exist in (1) (new version) and not (2) (old version) + return new Set( + newRuleNames.filter( + newRuleName => !oldRuleNames.has(`@typescript-eslint/${newRuleName}`), + ), + ); + } + + await getNewRulesAsOfMajorVersion('5.0.0'); +} + +main().catch(error => { + console.error(error); +}); diff --git a/packages/eslint-plugin/tools/generate-rules-lists.ts b/packages/eslint-plugin/tools/generate-rules-lists.ts deleted file mode 100644 index ce806cc2e8d..00000000000 --- a/packages/eslint-plugin/tools/generate-rules-lists.ts +++ /dev/null @@ -1,147 +0,0 @@ -#!/usr/bin/env ts-node - -import type { TSESLint } from '@typescript-eslint/utils'; -import fs from 'fs'; -import path from 'path'; -import prettier from 'prettier'; - -import rules from '../src/rules'; - -interface RuleDetails { - name: string; - description: string; - recommended: TSESLint.RuleRecommendation; - fixable: boolean; - requiresTypeChecking: boolean; - extendsBaseRule: boolean; -} - -type RuleColumn = [ - string, - string, - ':lock:' | ':white_check_mark:' | '', - ':wrench:' | '', - ':thought_balloon:' | '', -]; - -const emojiKey = { - recommended: ':white_check_mark:', - strict: ':lock:', - fixable: ':wrench:', - requiresTypeChecking: ':thought_balloon:', -} as const; - -const staticElements = { - rulesListKey: [ - `**Key**: ${emojiKey.recommended} = recommended`, - `${emojiKey.strict} = strict`, - `${emojiKey.fixable} = fixable`, - `${emojiKey.requiresTypeChecking} = requires type information`, - ].join(', '), - listHeaderRow: [ - 'Name', - 'Description', - `${emojiKey.recommended}${emojiKey.strict}`, - emojiKey.fixable, - emojiKey.requiresTypeChecking, - ], - listSpacerRow: Array(5).fill('-'), -}; - -const returnEmojiIfTrue = ( - key: TKey, - obj: { [K in TKey]?: unknown }, -): typeof emojiKey[TKey] | '' => (obj[key] ? emojiKey[key] : ''); - -const createRuleLink = (ruleName: string, basePath: string): string => - `[\`@typescript-eslint/${ruleName}\`](${basePath}${ruleName}.md)`; - -const buildRuleRow = (rule: RuleDetails, basePath: string): RuleColumn => [ - createRuleLink(rule.name, basePath), - rule.description, - rule.recommended === 'strict' - ? emojiKey.strict - : returnEmojiIfTrue('recommended', rule), - returnEmojiIfTrue('fixable', rule), - returnEmojiIfTrue('requiresTypeChecking', rule), -]; - -const buildRulesTable = ( - rules: RuleDetails[], - basePath: string, -): string[][] => [ - staticElements.listHeaderRow, - staticElements.listSpacerRow, - ...rules - .sort(({ name: ruleNameA }, { name: ruleNameB }) => - ruleNameA.localeCompare(ruleNameB), - ) - .map(item => buildRuleRow(item, basePath)), -]; - -const generateRulesListMarkdown = ( - rules: RuleDetails[], - basePath: string, -): string => - [ - '', - staticElements.rulesListKey, - '', - ...buildRulesTable(rules, basePath).map(column => - [...column, ' '].join('|'), - ), - '', - ].join('\n'); - -const updateRulesList = ( - listName: 'base' | 'extension', - rules: RuleDetails[], - markdown: string, - basePath: string, -): string => { - const listBeginMarker = ``; - const listEndMarker = ``; - - const listStartIndex = markdown.indexOf(listBeginMarker); - const listEndIndex = markdown.indexOf(listEndMarker); - - if (listStartIndex === -1 || listEndIndex === -1) { - throw new Error(`cannot find start or end of ${listName} list`); - } - - return [ - markdown.substring(0, listStartIndex - 1), - listBeginMarker, - '', - generateRulesListMarkdown(rules, basePath), // - markdown.substring(listEndIndex), - ].join('\n'); -}; - -const rulesDetails: RuleDetails[] = Object.entries(rules) - .filter(([, rule]) => rule.meta.deprecated !== true) - .map(([name, rule]) => ({ - name, - description: rule.meta.docs?.description ?? '', - recommended: rule.meta.docs?.recommended ?? false, - fixable: !!rule.meta.fixable, - requiresTypeChecking: rule.meta.docs?.requiresTypeChecking ?? false, - extendsBaseRule: !!rule.meta.docs?.extendsBaseRule ?? false, - })); - -const baseRules = rulesDetails.filter(rule => !rule.extendsBaseRule); -const extensionRules = rulesDetails.filter(rule => rule.extendsBaseRule); - -function updateFile(file: string, basePath: string): void { - let readme = fs.readFileSync(file, 'utf8'); - - readme = updateRulesList('base', baseRules, readme, basePath); - readme = updateRulesList('extension', extensionRules, readme, basePath); - - readme = prettier.format(readme, { parser: 'markdown' }); - - fs.writeFileSync(file, readme, 'utf8'); -} - -updateFile(path.resolve(__dirname, '../README.md'), './docs/rules/'); -updateFile(path.resolve(__dirname, '../docs/rules/README.md'), './'); diff --git a/packages/eslint-plugin/tsconfig.json b/packages/eslint-plugin/tsconfig.json index 7801773b539..53deb3aa1bb 100644 --- a/packages/eslint-plugin/tsconfig.json +++ b/packages/eslint-plugin/tsconfig.json @@ -10,5 +10,12 @@ { "path": "../parser/tsconfig.build.json" }, { "path": "../scope-manager/tsconfig.build.json" }, { "path": "../type-utils/tsconfig.build.json" } - ] + ], + "ts-node": { + "compilerOptions": { + "module": "ESNext" + }, + "files": true, + "transpileOnly": true + } } diff --git a/yarn.lock b/yarn.lock index d77fd4dcba5..2a5699732e8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9923,6 +9923,11 @@ markdown-it@13.0.1: mdurl "^1.0.1" uc.micro "^1.0.5" +markdown-table@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.2.tgz#9b59eb2c1b22fe71954a65ff512887065a7bb57c" + integrity sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA== + markdownlint-cli@^0.32.0: version "0.32.2" resolved "https://registry.yarnpkg.com/markdownlint-cli/-/markdownlint-cli-0.32.2.tgz#b7b5c5808039aef4022aef603efaa607caf8e0de" From ac7669ec6c1226dd6a5647ff0e69d02afeabd816 Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Tue, 15 Nov 2022 23:52:58 -0800 Subject: [PATCH 113/193] docs(eslint-plugin): [no-shadow] add FAQ about enum members (#5986) Co-authored-by: Joshua Chen Co-authored-by: Josh Goldberg --- .../eslint-plugin/docs/rules/no-shadow.md | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/packages/eslint-plugin/docs/rules/no-shadow.md b/packages/eslint-plugin/docs/rules/no-shadow.md index 3adb286e317..1dfadba55aa 100644 --- a/packages/eslint-plugin/docs/rules/no-shadow.md +++ b/packages/eslint-plugin/docs/rules/no-shadow.md @@ -78,3 +78,24 @@ Examples of **correct** code with `{ ignoreFunctionTypeParameterNameValueShadow: const test = 1; type Func = (test: string) => typeof test; ``` + +## FAQ + +### Why does the rule report on enum members that share the same name as a variable in a parent scope? + +Reporting on this case isn't a bug - it is completely intentional and correct reporting! The rule reports due to a relatively unknown feature of enums - enum members create a variable within the enum scope so that they can be referenced within the enum without a qualifier. + +To illustrate this with an example: + +```ts +const A = 2; +enum Test { + A = 1, + B = A, +} + +console.log(Test.B); +// what should be logged? +``` + +Naively looking at the above code, it might look like the log should output `2`, because the outer variable `A`'s value is `2` - however, the code instead outputs `1`, which is the value of `Test.A`. This is because the unqualified code `B = A` is equivalent to the fully-qualified code `B = Test.A`. Due to this behavior, the enum member has **shadowed** the outer variable declaration. From e7085763fbaf66b05eece2d133e1c72a9869a57f Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Wed, 16 Nov 2022 08:56:01 -0500 Subject: [PATCH 114/193] chore(eslint-plugin): fix odd consistent-indexed-object-style docs phrasing (#5948) --- .../eslint-plugin/docs/rules/consistent-indexed-object-style.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/eslint-plugin/docs/rules/consistent-indexed-object-style.md b/packages/eslint-plugin/docs/rules/consistent-indexed-object-style.md index 529d0719655..d8d805df692 100644 --- a/packages/eslint-plugin/docs/rules/consistent-indexed-object-style.md +++ b/packages/eslint-plugin/docs/rules/consistent-indexed-object-style.md @@ -6,7 +6,7 @@ description: 'Require or disallow the `Record` type.' > > See **https://typescript-eslint.io/rules/consistent-indexed-object-style** for documentation. -TypeScript supports defining object show keys can be flexible using an index signature. TypeScript also has a builtin type named `Record` to create an empty object defining only an index signature. For example, the following types are equal: +TypeScript supports defining arbitrary object keys using an index signature. TypeScript also has a builtin type named `Record` to create an empty object defining only an index signature. For example, the following types are equal: ```ts interface Foo { From 49f623f5d35754abb1a98f2ce4485914963d80c0 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Wed, 16 Nov 2022 09:10:34 -0500 Subject: [PATCH 115/193] chore(website): revert "chore(website): fix TSLint.md link casing in PACKAGES.md" (#6001) Revert "chore(website): fix TSLint.md link casing in PACKAGES.md (#5976)" This reverts commit 88d0316e60ee18bca5b74b87ad6efa6c1c418fb9. --- docs/development/architecture/PACKAGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/development/architecture/PACKAGES.md b/docs/development/architecture/PACKAGES.md index 74ca39b3ae4..f798e35b2e4 100644 --- a/docs/development/architecture/PACKAGES.md +++ b/docs/development/architecture/PACKAGES.md @@ -66,7 +66,7 @@ Any custom rules you write generally will be as well. [`@typescript-eslint/eslint-plugin-tslint`] is a separate ESLint plugin that allows running TSLint rules within ESLint to help you migrate from TSLint to ESLint. :::caution -**TSLint is deprecated.** It is in your best interest to migrate off it. See [Linting > Troubleshooting & FAQs > What About TSLint?](../../linting/troubleshooting/TSLint.md). +**TSLint is deprecated.** It is in your best interest to migrate off it. See [Linting > Troubleshooting & FAQs > What About TSLint?](../../linting/troubleshooting/TSLINT.md). ::: [`@typescript-eslint/eslint-plugin-tslint`]: https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin-tslint From 530e0e618cdf4bb956149bf8a8484848e1b9a1f5 Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Wed, 16 Nov 2022 11:44:33 -0800 Subject: [PATCH 116/193] fix(typescript-estree): don't consider a cached program unless it's specified in the current `parserOptions.project` config (#5999) --- .../non-nullable-type-assertion-style.test.ts | 117 ++++++++++-------- .../src/create-program/createWatchProgram.ts | 10 ++ 2 files changed, 77 insertions(+), 50 deletions(-) diff --git a/packages/eslint-plugin/tests/rules/non-nullable-type-assertion-style.test.ts b/packages/eslint-plugin/tests/rules/non-nullable-type-assertion-style.test.ts index 4b0750c8c84..365de88c36a 100644 --- a/packages/eslint-plugin/tests/rules/non-nullable-type-assertion-style.test.ts +++ b/packages/eslint-plugin/tests/rules/non-nullable-type-assertion-style.test.ts @@ -1,14 +1,11 @@ -import path from 'path'; - import rule from '../../src/rules/non-nullable-type-assertion-style'; -import { RuleTester } from '../RuleTester'; +import { getFixturesRootDir, RuleTester } from '../RuleTester'; -const rootDir = path.resolve(__dirname, '../fixtures/'); const ruleTester = new RuleTester({ parserOptions: { sourceType: 'module', - tsconfigRootDir: rootDir, - project: './tsconfig.noUncheckedIndexedAccess.json', + tsconfigRootDir: getFixturesRootDir(), + project: './tsconfig.json', }, parser: '@typescript-eslint/parser', }); @@ -62,35 +59,6 @@ const x = 1 as 1; declare function foo(): T; const bar = foo() as number; `, - ` -function first(array: ArrayLike): T | null { - return array.length > 0 ? (array[0] as T) : null; -} - `, - ` -function first(array: ArrayLike): T | null { - return array.length > 0 ? (array[0] as T) : null; -} - `, - ` -function first(array: ArrayLike): T | null { - return array.length > 0 ? (array[0] as T) : null; -} - `, - ` -function first( - array: ArrayLike, -): T | null { - return array.length > 0 ? (array[0] as T) : null; -} - `, - ` -type A = 'a' | 'A'; -type B = 'b' | 'B'; -function first(array: ArrayLike): T | null { - return array.length > 0 ? (array[0] as T) : null; -} - `, ], invalid: [ @@ -229,24 +197,73 @@ declare const x: T; const y = x!; `, }, - { - code: ` -function first(array: ArrayLike): T | null { + ], +}); + +const ruleTesterWithNoUncheckedIndexAccess = new RuleTester({ + parserOptions: { + sourceType: 'module', + tsconfigRootDir: getFixturesRootDir(), + project: './tsconfig.noUncheckedIndexedAccess.json', + }, + parser: '@typescript-eslint/parser', +}); + +ruleTesterWithNoUncheckedIndexAccess.run( + 'non-nullable-type-assertion-style - noUncheckedIndexedAccess', + rule, + { + valid: [ + ` +function first(array: ArrayLike): T | null { return array.length > 0 ? (array[0] as T) : null; } `, - errors: [ - { - column: 30, - line: 3, - messageId: 'preferNonNullAssertion', - }, - ], - output: ` + ` +function first(array: ArrayLike): T | null { + return array.length > 0 ? (array[0] as T) : null; +} + `, + ` +function first(array: ArrayLike): T | null { + return array.length > 0 ? (array[0] as T) : null; +} + `, + ` +function first( + array: ArrayLike, +): T | null { + return array.length > 0 ? (array[0] as T) : null; +} + `, + ` +type A = 'a' | 'A'; +type B = 'b' | 'B'; +function first(array: ArrayLike): T | null { + return array.length > 0 ? (array[0] as T) : null; +} + `, + ], + invalid: [ + { + code: ` +function first(array: ArrayLike): T | null { + return array.length > 0 ? (array[0] as T) : null; +} + `, + errors: [ + { + column: 30, + line: 3, + messageId: 'preferNonNullAssertion', + }, + ], + output: ` function first(array: ArrayLike): T | null { return array.length > 0 ? (array[0]!) : null; } - `, - }, - ], -}); + `, + }, + ], + }, +); diff --git a/packages/typescript-estree/src/create-program/createWatchProgram.ts b/packages/typescript-estree/src/create-program/createWatchProgram.ts index 0e32f8ec1e5..d17835fff3c 100644 --- a/packages/typescript-estree/src/create-program/createWatchProgram.ts +++ b/packages/typescript-estree/src/create-program/createWatchProgram.ts @@ -159,11 +159,21 @@ function getProgramsForProjects(parseSettings: ParseSettings): ts.Program[] { ); } + const currentProjectsFromSettings = new Set(parseSettings.projects); + /* * before we go into the process of attempting to find and update every program * see if we know of a program that contains this file */ for (const [tsconfigPath, existingWatch] of knownWatchProgramMap.entries()) { + if (!currentProjectsFromSettings.has(tsconfigPath)) { + // the current parser run doesn't specify this tsconfig in parserOptions.project + // so we don't want to consider it for caching purposes. + // + // if we did consider it we might return a program for a project + // that wasn't specified in the current parser run (which is obv bad!). + continue; + } let fileList = programFileListCache.get(tsconfigPath); let updatedProgram: ts.Program | null = null; if (!fileList) { From 5f7ce69e8ab6d746143b055abfed2065d14468df Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Wed, 16 Nov 2022 18:16:06 -0500 Subject: [PATCH 117/193] chore(website): explained and auto-balanced homepage sponsors list (#5996) --- .github/SPONSORSHIPS.md | 20 +++++++++-- packages/website/data/sponsors.json | 25 ------------- .../FinancialContributors/Sponsors/index.tsx | 21 ++++++----- .../Sponsors/styles.module.css | 36 +++++++++++-------- .../FinancialContributors/index.tsx | 10 ++++-- tools/generate-sponsors.ts | 36 +++---------------- 6 files changed, 59 insertions(+), 89 deletions(-) diff --git a/.github/SPONSORSHIPS.md b/.github/SPONSORSHIPS.md index 15638be935c..48d8ae5fc74 100644 --- a/.github/SPONSORSHIPS.md +++ b/.github/SPONSORSHIPS.md @@ -15,6 +15,23 @@ Sponsoring TypeScript ESLint helps keep our development process running reliably - Fix bugs and add new features to existing rules - Write more advanced rules to solve more areas of application correctness +### Sponsorship Benefits + +In addition to benefitting the TypeScript ecosystem, sponsoring us on Open Collective helps promote your company and development brand. +Our top sponsors may have their link, logo, and/or name featured on the homepage of [typescript-eslint.io](https://typescript-eslint.io). + +At present, sponsors must have given at least $100 to be featured on the homepage. +Placement tiers are based on total donations: + +- Platinum sponsors: Top 6 donators +- Gold supporters: The next 10 donators +- Silver supporters: The next 18 donators + +You can always view all financial contributors on [opencollective.com/typescript-eslint](https://opencollective.com/typescript-eslint). + +> Got an idea for how to make sponsorship work for you? +> Let us know at `typescripteslint@gmail.com`! + ## Sponsorship Limitations ### Project Direction @@ -25,7 +42,6 @@ If you have a need to push forward an area of work in TypeScript ESLint more urg ### Website Placement -Our top sponsors may have their link, logo, and/or name featured on the homepage of https://typescript-eslint.io. We are inclusive by default and allow all organizations that newly meet a monetary threshold to be added. However, at our discretion, we may remove organizations we feel we cannot promote in good conscience. Organizations would most commonly be removed if their core charter and/or repeated organization-wide intentional activities: @@ -35,5 +51,3 @@ Organizations would most commonly be removed if their core charter and/or repeat - Finance and/or promote other organizations that match these issues If you disagree with a choice made by the maintenance team, or would like a refund for your sponsorship, please let us know by emailing `typescripteslint@gmail.com`. - -> You can always view all financial contributors on [opencollective.com/typescript-eslint](https://opencollective.com/typescript-eslint). diff --git a/packages/website/data/sponsors.json b/packages/website/data/sponsors.json index fd44d68e52b..49d7576bf77 100644 --- a/packages/website/data/sponsors.json +++ b/packages/website/data/sponsors.json @@ -3,7 +3,6 @@ "id": "Indeed", "image": "https://images.opencollective.com/indeed/4b8725e/logo.png", "name": "Indeed", - "tier": "sponsor", "totalDonations": 1005000, "website": "https://Indeed.com" }, @@ -11,7 +10,6 @@ "id": "Nx (by Nrwl)", "image": "https://images.opencollective.com/nx/0efbe42/logo.png", "name": "Nx (by Nrwl)", - "tier": "sponsor", "totalDonations": 550000, "website": "https://nx.dev" }, @@ -19,7 +17,6 @@ "id": "ESLint", "image": "https://images.opencollective.com/eslint/96b09dc/logo.png", "name": "ESLint", - "tier": "sponsor", "totalDonations": 215000, "website": "https://eslint.org/" }, @@ -27,7 +24,6 @@ "id": "Airbnb", "image": "https://images.opencollective.com/airbnb/d327d66/logo.png", "name": "Airbnb", - "tier": "sponsor", "totalDonations": 140800, "website": "https://www.airbnb.com/" }, @@ -35,7 +31,6 @@ "id": "Coinbase", "image": "https://images.opencollective.com/coinbase/a202856/logo.png", "name": "Coinbase", - "tier": "sponsor", "totalDonations": 120000, "website": "https://blog.coinbase.com/engineering-and-security/home" }, @@ -43,7 +38,6 @@ "id": "n8n.io - n8n GmbH", "image": "https://images.opencollective.com/n8n/dca2f0c/logo.png", "name": "n8n.io - n8n GmbH", - "tier": "sponsor", "totalDonations": 115000, "website": "https://n8n.io" }, @@ -51,7 +45,6 @@ "id": "Sentry", "image": "https://images.opencollective.com/sentry/9620d33/logo.png", "name": "Sentry", - "tier": "sponsor", "totalDonations": 114800, "website": "https://sentry.io/welcome/" }, @@ -59,7 +52,6 @@ "id": "GitBook", "image": "https://images.opencollective.com/gitbook/d35a8e7/logo.png", "name": "GitBook", - "tier": "sponsor", "totalDonations": 110000, "website": "https://www.gitbook.com" }, @@ -67,7 +59,6 @@ "id": "Codecademy", "image": "https://images.opencollective.com/codecademy/d56a48d/logo.png", "name": "Codecademy", - "tier": "sponsor", "totalDonations": 100000, "website": "https://codecademy.com" }, @@ -75,7 +66,6 @@ "id": "EY Doberman", "image": "https://images.opencollective.com/ey-doberman/b269462/logo.png", "name": "EY Doberman", - "tier": "supporter", "totalDonations": 80400, "website": "https://doberman.co" }, @@ -83,7 +73,6 @@ "id": "Future Processing", "image": "https://images.opencollective.com/future-processing/1410d26/logo.png", "name": "Future Processing", - "tier": "supporter", "totalDonations": 54000, "website": "https://www.future-processing.com/" }, @@ -91,7 +80,6 @@ "id": "Sourcegraph", "image": "https://images.opencollective.com/sourcegraph/67e40ff/logo.png", "name": "Sourcegraph", - "tier": "supporter", "totalDonations": 50000, "website": "https://about.sourcegraph.com" }, @@ -99,7 +87,6 @@ "id": "Whitebox", "image": "https://images.opencollective.com/whiteboxinc/ef0d11d/logo.png", "name": "Whitebox", - "tier": "contributor", "totalDonations": 40000, "website": "https://whitebox.com" }, @@ -107,7 +94,6 @@ "id": "Monito", "image": "https://images.opencollective.com/monito/50fc878/logo.png", "name": "Monito", - "tier": "contributor", "totalDonations": 30000, "website": "https://www.monito.com" }, @@ -115,7 +101,6 @@ "id": "Codiga", "image": "https://images.opencollective.com/codiga/1065f9f/logo.png", "name": "Codiga", - "tier": "contributor", "totalDonations": 30000, "website": "https://www.codiga.io" }, @@ -123,7 +108,6 @@ "id": "STORIS", "image": "https://images.opencollective.com/storis/dfb0e13/logo.png", "name": "STORIS", - "tier": "contributor", "totalDonations": 27000, "website": "https://www.storis.com/" }, @@ -131,7 +115,6 @@ "id": "revo.js", "image": "https://images.opencollective.com/revojsro/82623a7/logo.png", "name": "revo.js", - "tier": "contributor", "totalDonations": 23000, "website": "https://revojs.ro" }, @@ -139,7 +122,6 @@ "id": "Ian MacLeod", "image": "https://images.opencollective.com/nevir/35c52ef/avatar.png", "name": "Ian MacLeod", - "tier": "contributor", "totalDonations": 22000, "website": "https://twitter.com/nevir" }, @@ -147,7 +129,6 @@ "id": "David Johnston", "image": "https://images.opencollective.com/blacksheepcode/976d69a/avatar.png", "name": "David Johnston", - "tier": "contributor", "totalDonations": 15000, "website": "https://blacksheepcode.com" }, @@ -155,7 +136,6 @@ "id": "Joe Alden", "image": "https://images.opencollective.com/joealden/44a6738/avatar.png", "name": "Joe Alden", - "tier": "contributor", "totalDonations": 14000, "website": "https://joealden.com" }, @@ -163,7 +143,6 @@ "id": "Gianfranco Palumbo", "image": "https://images.opencollective.com/gianpaj/5d62d25/avatar.png", "name": "Gianfranco Palumbo", - "tier": "contributor", "totalDonations": 10000, "website": "http://gian.xyz" }, @@ -171,7 +150,6 @@ "id": "Evil Martians", "image": "https://images.opencollective.com/evilmartians/707ab4d/logo.png", "name": "Evil Martians", - "tier": "contributor", "totalDonations": 10000, "website": "https://evilmartians.com/" }, @@ -179,7 +157,6 @@ "id": "The Guardian", "image": "https://images.opencollective.com/gdndevelopers/0b72bf0/logo.png", "name": "The Guardian", - "tier": "contributor", "totalDonations": 10000, "website": "https://www.theguardian.com/" }, @@ -187,7 +164,6 @@ "id": "Balsa", "image": "https://images.opencollective.com/balsa/77de498/logo.png", "name": "Balsa", - "tier": "contributor", "totalDonations": 10000, "website": "https://balsa.com" }, @@ -195,7 +171,6 @@ "id": "Laserhub", "image": "https://images.opencollective.com/laserhub/bae6275/logo.png", "name": "Laserhub", - "tier": "contributor", "totalDonations": 10000, "website": "https://laserhub.com/" } diff --git a/packages/website/src/components/FinancialContributors/Sponsors/index.tsx b/packages/website/src/components/FinancialContributors/Sponsors/index.tsx index c175cdc2615..dfcdad8c7b9 100644 --- a/packages/website/src/components/FinancialContributors/Sponsors/index.tsx +++ b/packages/website/src/components/FinancialContributors/Sponsors/index.tsx @@ -1,36 +1,35 @@ -import sponsors from '@site/data/sponsors.json'; import clsx from 'clsx'; import React from 'react'; import { Sponsor } from '../Sponsor'; -import type { SponsorIncludeOptions } from '../types'; +import type { SponsorData, SponsorIncludeOptions } from '../types'; import styles from './styles.module.css'; interface SponsorsProps { className: string; include?: SponsorIncludeOptions; expanded?: boolean; - tier?: string; + sponsors: SponsorData[]; title: string; + tier: string; } export function Sponsors({ className, include, - tier, title, + tier, + sponsors, }: SponsorsProps): JSX.Element { return (

{title}

    - {sponsors - .filter(sponsor => sponsor.tier === tier) - .map(sponsor => ( -
  • - -
  • - ))} + {sponsors.map(sponsor => ( +
  • + +
  • + ))}
); diff --git a/packages/website/src/components/FinancialContributors/Sponsors/styles.module.css b/packages/website/src/components/FinancialContributors/Sponsors/styles.module.css index e740c76f8bd..08e99b16488 100644 --- a/packages/website/src/components/FinancialContributors/Sponsors/styles.module.css +++ b/packages/website/src/components/FinancialContributors/Sponsors/styles.module.css @@ -15,7 +15,7 @@ .sponsorsTier li { list-style: none; margin: 5px; - max-width: 120px; + max-width: 130px; } .sponsorsTier img { @@ -29,40 +29,42 @@ border: none; } -.tier-sponsor { +.tier-platinum-sponsor { gap: 32px 16px; } -.tier-sponsor img { +.tier-platinum-sponsor img { display: inline-block; - max-height: 120px; - max-width: 120px; - width: 120px; + max-height: 130px; + max-width: 130px; + width: 130px; } -.tier-supporter, -.tier-contributor { +.tier-gold-supporter, +.tier-silver-supporter { align-items: center; } -.tier-supporter { +.tier-gold-supporter { font-size: 0.95rem; line-height: 1; - gap: 24px; - padding-top: 16px; + gap: 12px; + padding-top: 12px; } -.tier-supporter img { +.tier-gold-supporter img { max-height: 75px; max-width: 75px; width: 75px; } -.tier-contributor { - gap: 4px 24px; +.tier-silver-supporter { + gap: 4px 16px; + margin: auto; + max-width: 75%; } -.tier-contributor img { +.tier-silver-supporter img { max-height: 45px; max-width: 45px; width: 45px; @@ -81,4 +83,8 @@ width: auto; padding: 0 60px; } + + .tier-gold-supporter { + margin-bottom: 0; + } } diff --git a/packages/website/src/components/FinancialContributors/index.tsx b/packages/website/src/components/FinancialContributors/index.tsx index 609de140c9a..f952a5a4235 100644 --- a/packages/website/src/components/FinancialContributors/index.tsx +++ b/packages/website/src/components/FinancialContributors/index.tsx @@ -1,4 +1,5 @@ import Link from '@docusaurus/Link'; +import sponsors from '@site/data/sponsors.json'; import clsx from 'clsx'; import React from 'react'; @@ -16,19 +17,22 @@ export function FinancialContributors(): JSX.Element {
diff --git a/tools/generate-sponsors.ts b/tools/generate-sponsors.ts index eadeb1bb450..cbec8141ddc 100644 --- a/tools/generate-sponsors.ts +++ b/tools/generate-sponsors.ts @@ -92,10 +92,6 @@ interface MemberAccount { website: string; } -interface MemberAccountAndTier extends MemberAccount { - tier?: Tier; -} - const excludedNames = new Set([ 'Guest', // Apparent anonymous donor equivalent without an avatar 'Josh Goldberg', // Team member 💖 @@ -121,13 +117,12 @@ async function main(): Promise { ]); const accountsById = account.orders.nodes.reduce< - Record + Record >((accumulator, account) => { const name = account.fromAccount.name || account.fromAccount.id; accumulator[name] = { ...accumulator[name], ...account.fromAccount, - tier: account.tier, }; return accumulator; }, {}); @@ -145,7 +140,7 @@ async function main(): Promise { const allSponsorsConfig = collective.members.nodes .map(member => { const name = member.account.name || member.account.id; - const fromAccount: MemberAccountAndTier = { + const fromAccount = { ...member.account, ...accountsById[name], }; @@ -156,14 +151,13 @@ async function main(): Promise { id: name, image: fromAccount.imageUrl, name: fromAccount.name, - tier: getReportedTierSlug(totalDonations, website), totalDonations, twitterHandle: fromAccount.twitterHandle, website, }; }) - .filter(({ id, tier }) => { - if (uniqueNames.has(id) || !tier) { + .filter(({ id, totalDonations, website }) => { + if (uniqueNames.has(id) || totalDonations < 10000 || !website) { return false; } @@ -196,28 +190,6 @@ async function stringifyObject( }); } -function getReportedTierSlug( - totalDonations: number, - website: string, -): string | undefined { - if (!website) { - return undefined; - } - - if (totalDonations >= 1_000_00) { - return 'sponsor'; - } - if (totalDonations >= 500_00) { - return 'supporter'; - } - - if (totalDonations >= 100_00) { - return 'contributor'; - } - - return undefined; -} - main().catch(error => { console.error(error); process.exitCode = 1; From 4d46e6512c4e26f87620623b0614d19e41fe0ca9 Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Wed, 16 Nov 2022 16:03:32 -0800 Subject: [PATCH 118/193] tests: add dependency constraints to eslint-plugin tests (#5916) --- .../rules/consistent-type-exports.test.ts | 21 +++++ .../rules/consistent-type-imports.test.ts | 13 +++ .../tests/rules/member-ordering.test.ts | 27 ++++++ ...habetically-case-insensitive-order.test.ts | 3 + ...mber-ordering-alphabetically-order.test.ts | 3 + .../rules/method-signature-style.test.ts | 44 ++++++++-- .../tests/rules/no-empty-function.test.ts | 6 ++ .../tests/rules/no-magic-numbers.test.ts | 3 + .../no-redundant-type-constituents.test.ts | 29 +++++-- .../tests/rules/no-shadow/no-shadow.test.ts | 15 ++++ .../tests/rules/no-type-alias.test.ts | 54 ++++++++++++ .../no-unnecessary-type-arguments.test.ts | 10 ++- .../no-unused-vars/no-unused-vars.test.ts | 57 +++++++++--- .../non-nullable-type-assertion-style.test.ts | 3 + .../restrict-template-expressions.test.ts | 5 ++ .../eslint-utils/rule-tester/RuleTester.ts | 19 ++-- .../rule-tester/RuleTester.test.ts | 87 ++----------------- 17 files changed, 287 insertions(+), 112 deletions(-) diff --git a/packages/eslint-plugin/tests/rules/consistent-type-exports.test.ts b/packages/eslint-plugin/tests/rules/consistent-type-exports.test.ts index 518050bebcf..e5f7bfbc2d3 100644 --- a/packages/eslint-plugin/tests/rules/consistent-type-exports.test.ts +++ b/packages/eslint-plugin/tests/rules/consistent-type-exports.test.ts @@ -266,6 +266,9 @@ export { type T, T }; type T = 1; export type { T, T }; `, + dependencyConstraints: { + typescript: '4.5', + }, errors: [ { messageId: 'typeOverValue', @@ -283,6 +286,9 @@ export { type/* */T, type /* */T, T }; type T = 1; export type { /* */T, /* */T, T }; `, + dependencyConstraints: { + typescript: '4.5', + }, errors: [ { messageId: 'typeOverValue', @@ -303,6 +309,9 @@ const x = 1; export type { T, T }; export { x }; `, + dependencyConstraints: { + typescript: '4.5', + }, errors: [ { messageId: 'singleExportIsType', @@ -322,6 +331,9 @@ type T = 1; const x = 1; export { type T, x }; `, + dependencyConstraints: { + typescript: '4.5', + }, options: [{ fixMixedExportsWithInlineTypeSpecifier: true }], errors: [ { @@ -340,6 +352,9 @@ export { type T, T }; type T = 1; export type { T, T }; `, + dependencyConstraints: { + typescript: '4.5', + }, options: [{ fixMixedExportsWithInlineTypeSpecifier: true }], errors: [ { @@ -362,6 +377,9 @@ export { export type { AnalyzeOptions, Definition as Foo, BlockScope as BScope } from '@typescript-eslint/scope-manager'; export { CatchScope as CScope } from '@typescript-eslint/scope-manager'; `, + dependencyConstraints: { + typescript: '4.5', + }, options: [{ fixMixedExportsWithInlineTypeSpecifier: false }], errors: [ { @@ -388,6 +406,9 @@ export { CatchScope as CScope, } from '@typescript-eslint/scope-manager'; `, + dependencyConstraints: { + typescript: '4.5', + }, options: [{ fixMixedExportsWithInlineTypeSpecifier: true }], errors: [ { diff --git a/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts b/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts index ee01b29c1b0..2d41b0c3f98 100644 --- a/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts +++ b/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts @@ -7,6 +7,10 @@ const ruleTester = new RuleTester({ ecmaVersion: 2020, sourceType: 'module', }, + // type-only imports were first added in TS3.8 + dependencyConstraints: { + typescript: '3.8', + }, }); const withMetaParserOptions = { @@ -191,6 +195,9 @@ ruleTester.run('consistent-type-imports', rule, { const b = B; `, options: [{ prefer: 'no-type-imports', fixStyle: 'inline-type-imports' }], + dependencyConstraints: { + typescript: '4.5', + }, }, // exports ` @@ -1891,6 +1898,9 @@ import { A, B } from 'foo'; type T = A; const b = B; `, + dependencyConstraints: { + typescript: '4.5', + }, options: [{ prefer: 'no-type-imports' }], errors: [ { @@ -1911,6 +1921,9 @@ import { B, type C } from 'foo'; type T = A | C; const b = B; `, + dependencyConstraints: { + typescript: '4.5', + }, options: [{ prefer: 'type-imports' }], errors: [ { diff --git a/packages/eslint-plugin/tests/rules/member-ordering.test.ts b/packages/eslint-plugin/tests/rules/member-ordering.test.ts index 538cfa733db..cfff3691476 100644 --- a/packages/eslint-plugin/tests/rules/member-ordering.test.ts +++ b/packages/eslint-plugin/tests/rules/member-ordering.test.ts @@ -29,6 +29,9 @@ interface Foo { } `, { + dependencyConstraints: { + typescript: '4.5', + }, code: ` // no accessibility === public interface Foo { @@ -1250,6 +1253,9 @@ class Foo { f = 1; } `, + dependencyConstraints: { + typescript: '4.4', + }, options: [{ default: ['static-initialization', 'method', 'field'] }], }, { @@ -1260,6 +1266,9 @@ class Foo { static {} } `, + dependencyConstraints: { + typescript: '4.4', + }, options: [{ default: ['method', 'field', 'static-initialization'] }], }, { @@ -1270,6 +1279,9 @@ class Foo { m() {} } `, + dependencyConstraints: { + typescript: '4.4', + }, options: [{ default: ['field', 'static-initialization', 'method'] }], }, ` @@ -4029,6 +4041,9 @@ class Foo { f = 1; } `, + dependencyConstraints: { + typescript: '4.4', + }, options: [{ default: ['method', 'field', 'static-initialization'] }], errors: [ { @@ -4059,6 +4074,9 @@ class Foo { static {} } `, + dependencyConstraints: { + typescript: '4.4', + }, options: [{ default: ['static-initialization', 'method', 'field'] }], errors: [ { @@ -4080,6 +4098,9 @@ class Foo { m() {} } `, + dependencyConstraints: { + typescript: '4.4', + }, options: [{ default: ['static-initialization', 'field', 'method'] }], errors: [ { @@ -4101,6 +4122,9 @@ class Foo { m() {} } `, + dependencyConstraints: { + typescript: '4.4', + }, options: [{ default: ['field', 'static-initialization', 'method'] }], errors: [ { @@ -4124,6 +4148,9 @@ class Foo { md() {} } `, + dependencyConstraints: { + typescript: '4.4', + }, options: [ { default: ['decorated-method', 'static-initialization', 'method'] }, ], diff --git a/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-alphabetically-case-insensitive-order.test.ts b/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-alphabetically-case-insensitive-order.test.ts index 07db08e0e86..fd10c55fe91 100644 --- a/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-alphabetically-case-insensitive-order.test.ts +++ b/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-alphabetically-case-insensitive-order.test.ts @@ -499,6 +499,9 @@ class Foo { static {} } `, + dependencyConstraints: { + typescript: '4.4', + }, options: [ { default: { diff --git a/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-alphabetically-order.test.ts b/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-alphabetically-order.test.ts index b7b5da85910..338b3a50ee9 100644 --- a/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-alphabetically-order.test.ts +++ b/packages/eslint-plugin/tests/rules/member-ordering/member-ordering-alphabetically-order.test.ts @@ -1694,6 +1694,9 @@ class Foo { static {} } `, + dependencyConstraints: { + typescript: '4.4', + }, options: [ { default: { diff --git a/packages/eslint-plugin/tests/rules/method-signature-style.test.ts b/packages/eslint-plugin/tests/rules/method-signature-style.test.ts index d2a88e9c02b..d9db8f5d6eb 100644 --- a/packages/eslint-plugin/tests/rules/method-signature-style.test.ts +++ b/packages/eslint-plugin/tests/rules/method-signature-style.test.ts @@ -32,22 +32,42 @@ interface Test { 'f!': (/* b */ x: any /* c */) => void; } `, - ` + { + code: ` interface Test { get f(): number; } - `, - ` + `, + dependencyConstraints: { + typescript: '4.3', + }, + }, + { + code: ` interface Test { set f(value: number): void; } - `, + `, + dependencyConstraints: { + typescript: '4.3', + }, + }, 'type Test = { readonly f: (a: string) => number };', "type Test = { ['f']?: (a: boolean) => void };", 'type Test = { readonly f?: (a?: T) => T };', "type Test = { readonly ['f']?: (a: T, b: T) => T };", - 'type Test = { get f(): number };', - 'type Test = { set f(value: number): void };', + { + code: 'type Test = { get f(): number };', + dependencyConstraints: { + typescript: '4.3', + }, + }, + { + code: 'type Test = { set f(value: number): void };', + dependencyConstraints: { + typescript: '4.3', + }, + }, ...batchedSingleLineTests({ options: ['method'], code: noFormat` @@ -56,15 +76,23 @@ interface Test { interface Test { f(a: T): T } interface Test { ['f'](a: T, b: T): T } interface Test { 'f!'(/* b */ x: any /* c */): void } - interface Test { get f(): number } - interface Test { set f(value: number): void } type Test = { readonly f(a: string): number } type Test = { ['f']?(a: boolean): void } type Test = { readonly f?(a?: T): T } type Test = { readonly ['f']?(a: T, b: T): T } + `, + }), + ...batchedSingleLineTests({ + options: ['method'], + code: noFormat` + interface Test { get f(): number } + interface Test { set f(value: number): void } type Test = { get f(): number } type Test = { set f(value: number): void } `, + dependencyConstraints: { + typescript: '4.3', + }, }), ], invalid: [ diff --git a/packages/eslint-plugin/tests/rules/no-empty-function.test.ts b/packages/eslint-plugin/tests/rules/no-empty-function.test.ts index 7d29b0fa5a2..7f35c79852c 100644 --- a/packages/eslint-plugin/tests/rules/no-empty-function.test.ts +++ b/packages/eslint-plugin/tests/rules/no-empty-function.test.ts @@ -78,6 +78,9 @@ class Foo extends Base { override foo() {} } `, + dependencyConstraints: { + typescript: '4.3', + }, options: [{ allow: ['overrideMethods'] }], }, ], @@ -206,6 +209,9 @@ class Foo extends Base { override foo() {} } `, + dependencyConstraints: { + typescript: '4.3', + }, errors: [ { messageId: 'unexpected', diff --git a/packages/eslint-plugin/tests/rules/no-magic-numbers.test.ts b/packages/eslint-plugin/tests/rules/no-magic-numbers.test.ts index 3be7590742a..d6aa21a799e 100644 --- a/packages/eslint-plugin/tests/rules/no-magic-numbers.test.ts +++ b/packages/eslint-plugin/tests/rules/no-magic-numbers.test.ts @@ -536,6 +536,9 @@ type Foo = { [K in keyof Other]: \`\${K & number}\`; }; `, + dependencyConstraints: { + typescript: '4.1', + }, options: [{ ignoreTypeIndexes: true }], errors: [ { diff --git a/packages/eslint-plugin/tests/rules/no-redundant-type-constituents.test.ts b/packages/eslint-plugin/tests/rules/no-redundant-type-constituents.test.ts index 454fb255f0e..29259f4b3f0 100644 --- a/packages/eslint-plugin/tests/rules/no-redundant-type-constituents.test.ts +++ b/packages/eslint-plugin/tests/rules/no-redundant-type-constituents.test.ts @@ -154,11 +154,21 @@ ruleTester.run('no-redundant-type-constituents', rule, { type B = string; type T = B & null; `, - 'type T = `${string}` & null;', - ` - type B = \`\${string}\`; - type T = B & null; - `, + { + code: 'type T = `${string}` & null;', + dependencyConstraints: { + typescript: '4.1', + }, + }, + { + code: ` + type B = \`\${string}\`; + type T = B & null; + `, + dependencyConstraints: { + typescript: '4.1', + }, + }, ], invalid: [ @@ -442,6 +452,9 @@ ruleTester.run('no-redundant-type-constituents', rule, { }, { code: 'type T = `a${number}c` | string;', + dependencyConstraints: { + typescript: '4.1', + }, errors: [ { column: 10, @@ -458,6 +471,9 @@ ruleTester.run('no-redundant-type-constituents', rule, { type B = \`a\${number}c\`; type T = B | string; `, + dependencyConstraints: { + typescript: '4.1', + }, errors: [ { column: 18, @@ -471,6 +487,9 @@ ruleTester.run('no-redundant-type-constituents', rule, { }, { code: 'type T = `${number}` | string;', + dependencyConstraints: { + typescript: '4.1', + }, errors: [ { column: 10, diff --git a/packages/eslint-plugin/tests/rules/no-shadow/no-shadow.test.ts b/packages/eslint-plugin/tests/rules/no-shadow/no-shadow.test.ts index 1616051f0e3..d55e85b3d8f 100644 --- a/packages/eslint-plugin/tests/rules/no-shadow/no-shadow.test.ts +++ b/packages/eslint-plugin/tests/rules/no-shadow/no-shadow.test.ts @@ -220,6 +220,9 @@ import { type foo } from './foo'; // 'foo' is already declared in the upper scope function doThing(foo: number) {} `, + dependencyConstraints: { + typescript: '4.5', + }, options: [{ ignoreTypeValueShadow: true }], }, { @@ -545,6 +548,9 @@ function doThing(foo: number) {} import { type foo } from './foo'; function doThing(foo: number) {} `, + dependencyConstraints: { + typescript: '4.5', + }, options: [{ ignoreTypeValueShadow: false }], errors: [ { @@ -672,6 +678,9 @@ declare module 'baz' { } } `, + dependencyConstraints: { + typescript: '4.5', + }, errors: [ { messageId: 'noShadow', @@ -692,6 +701,9 @@ declare module 'bar' { export type Foo = string; } `, + dependencyConstraints: { + typescript: '4.5', + }, errors: [ { messageId: 'noShadow', @@ -714,6 +726,9 @@ declare module 'bar' { } } `, + dependencyConstraints: { + typescript: '4.5', + }, errors: [ { messageId: 'noShadow', diff --git a/packages/eslint-plugin/tests/rules/no-type-alias.test.ts b/packages/eslint-plugin/tests/rules/no-type-alias.test.ts index 6a307454f51..ed2c00c9991 100644 --- a/packages/eslint-plugin/tests/rules/no-type-alias.test.ts +++ b/packages/eslint-plugin/tests/rules/no-type-alias.test.ts @@ -133,62 +133,107 @@ ruleTester.run('no-type-alias', rule, { }, { code: 'type Foo = `a-${number}`;', + dependencyConstraints: { + typescript: '4.1', + }, options: [{ allowAliases: 'always' }], }, { code: 'type Foo = `a-${number}` | `b-${number}`;', + dependencyConstraints: { + typescript: '4.1', + }, options: [{ allowAliases: 'always' }], }, { code: 'type Foo = `a-${number}` | `b-${number}`;', + dependencyConstraints: { + typescript: '4.1', + }, options: [{ allowAliases: 'in-unions-and-intersections' }], }, { code: 'type Foo = `a-${number}` | `b-${number}`;', + dependencyConstraints: { + typescript: '4.1', + }, options: [{ allowAliases: 'in-unions' }], }, { code: 'type Foo = `a-${number}` | `b-${number}` | `c-${number}`;', + dependencyConstraints: { + typescript: '4.1', + }, options: [{ allowAliases: 'always' }], }, { code: 'type Foo = `a-${number}` | `b-${number}` | `c-${number}`;', + dependencyConstraints: { + typescript: '4.1', + }, options: [{ allowAliases: 'in-unions-and-intersections' }], }, { code: 'type Foo = `a-${number}` | `b-${number}` | `c-${number}`;', + dependencyConstraints: { + typescript: '4.1', + }, options: [{ allowAliases: 'in-unions' }], }, { code: 'type Foo = `a-${number}` & `b-${number}`;', + dependencyConstraints: { + typescript: '4.1', + }, options: [{ allowAliases: 'always' }], }, { code: 'type Foo = `a-${number}` & `b-${number}`;', + dependencyConstraints: { + typescript: '4.1', + }, options: [{ allowAliases: 'in-unions-and-intersections' }], }, { code: 'type Foo = `a-${number}` & `b-${number}`;', + dependencyConstraints: { + typescript: '4.1', + }, options: [{ allowAliases: 'in-intersections' }], }, { code: 'type Foo = `a-${number}` & `b-${number}` & `c-${number}`;', + dependencyConstraints: { + typescript: '4.1', + }, options: [{ allowAliases: 'always' }], }, { code: 'type Foo = `a-${number}` & `b-${number}` & `c-${number}`;', + dependencyConstraints: { + typescript: '4.1', + }, options: [{ allowAliases: 'in-unions-and-intersections' }], }, { code: 'type Foo = `a-${number}` & `b-${number}` & `c-${number}`;', + dependencyConstraints: { + typescript: '4.1', + }, options: [{ allowAliases: 'in-intersections' }], }, { code: 'type Foo = `a-${number}` | (`b-${number}` & `c-${number}`);', + dependencyConstraints: { + typescript: '4.1', + }, options: [{ allowAliases: 'always' }], }, { code: 'type Foo = `a-${number}` | (`b-${number}` & `c-${number}`);', + dependencyConstraints: { + typescript: '4.1', + }, options: [{ allowAliases: 'in-unions-and-intersections' }], }, { @@ -3402,6 +3447,9 @@ type Foo = { }, { code: 'type Foo = `foo-${number}`;', + dependencyConstraints: { + typescript: '4.1', + }, errors: [ { messageId: 'noTypeAlias', @@ -3415,6 +3463,9 @@ type Foo = { }, { code: 'type Foo = `a-${number}` | `b-${number}`;', + dependencyConstraints: { + typescript: '4.1', + }, options: [{ allowAliases: 'never' }], errors: [ { @@ -3439,6 +3490,9 @@ type Foo = { }, { code: 'type Foo = `a-${number}` & `b-${number}`;', + dependencyConstraints: { + typescript: '4.1', + }, options: [{ allowAliases: 'never' }], errors: [ { diff --git a/packages/eslint-plugin/tests/rules/no-unnecessary-type-arguments.test.ts b/packages/eslint-plugin/tests/rules/no-unnecessary-type-arguments.test.ts index 512407474e6..abedc24d274 100644 --- a/packages/eslint-plugin/tests/rules/no-unnecessary-type-arguments.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unnecessary-type-arguments.test.ts @@ -127,11 +127,17 @@ class Foo extends Bar {} interface Bar {} class Foo implements Bar {} `, - ` + { + code: ` import { F } from './missing'; function bar() {} bar>(); - `, + `, + dependencyConstraints: { + // TS 4.5 improved type resolution for unresolved generics + typescript: '4.5', + }, + }, ` type A = T; type B = A; diff --git a/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars.test.ts b/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars.test.ts index 715d2e94385..ee2191a3f4c 100644 --- a/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars.test.ts @@ -402,7 +402,8 @@ export const map: { [name in Foo]: Bar } = { }; `, // 4.1 remapped mapped type - noFormat` + { + code: noFormat` type Foo = 'a' | 'b' | 'c'; type Bar = number; @@ -411,7 +412,11 @@ export const map: { [name in Foo as string]: Bar } = { b: 2, c: 3, }; - `, + `, + dependencyConstraints: { + typescript: '4.1', + }, + }, ` import { Nullable } from 'nullable'; class A { @@ -747,6 +752,9 @@ function foo(value: T): T { } export type Foo = typeof foo; `, + dependencyConstraints: { + typescript: '4.7', + }, }, // https://github.com/typescript-eslint/typescript-eslint/issues/2331 { @@ -922,7 +930,8 @@ export declare namespace Foo { } } `, - noFormat` + { + code: noFormat` class Foo { value: T; } @@ -930,7 +939,11 @@ class Bar { foo = Foo; } new Bar(); - `, + `, + dependencyConstraints: { + typescript: '4.7', + }, + }, { code: ` declare namespace A { @@ -946,21 +959,36 @@ declare function A(A: string): string; filename: 'foo.d.ts', }, // 4.1 template literal types - noFormat` + { + code: noFormat` type Color = 'red' | 'blue'; type Quantity = 'one' | 'two'; export type SeussFish = \`\${Quantity | Color} fish\`; - `, - noFormat` + `, + dependencyConstraints: { + typescript: '4.1', + }, + }, + { + code: noFormat` type VerticalAlignment = "top" | "middle" | "bottom"; type HorizontalAlignment = "left" | "center" | "right"; export declare function setAlignment(value: \`\${VerticalAlignment}-\${HorizontalAlignment}\`): void; - `, - noFormat` + `, + dependencyConstraints: { + typescript: '4.1', + }, + }, + { + code: noFormat` type EnthusiasticGreeting = \`\${Uppercase} - \${Lowercase} - \${Capitalize} - \${Uncapitalize}\`; export type HELLO = EnthusiasticGreeting<"heLLo">; - `, + `, + dependencyConstraints: { + typescript: '4.1', + }, + }, // https://github.com/typescript-eslint/typescript-eslint/issues/2714 { code: ` @@ -1028,7 +1056,8 @@ export class Foo { } } `, - ` + { + code: ` function foo() {} export class Foo { @@ -1038,7 +1067,11 @@ export class Foo { foo(); } } - `, + `, + dependencyConstraints: { + typescript: '4.4', + }, + }, ], invalid: [ diff --git a/packages/eslint-plugin/tests/rules/non-nullable-type-assertion-style.test.ts b/packages/eslint-plugin/tests/rules/non-nullable-type-assertion-style.test.ts index 365de88c36a..6826230b4fd 100644 --- a/packages/eslint-plugin/tests/rules/non-nullable-type-assertion-style.test.ts +++ b/packages/eslint-plugin/tests/rules/non-nullable-type-assertion-style.test.ts @@ -207,6 +207,9 @@ const ruleTesterWithNoUncheckedIndexAccess = new RuleTester({ project: './tsconfig.noUncheckedIndexedAccess.json', }, parser: '@typescript-eslint/parser', + dependencyConstraints: { + typescript: '4.1', + }, }); ruleTesterWithNoUncheckedIndexAccess.run( diff --git a/packages/eslint-plugin/tests/rules/restrict-template-expressions.test.ts b/packages/eslint-plugin/tests/rules/restrict-template-expressions.test.ts index b0322b290ab..7e80bdbdf5d 100644 --- a/packages/eslint-plugin/tests/rules/restrict-template-expressions.test.ts +++ b/packages/eslint-plugin/tests/rules/restrict-template-expressions.test.ts @@ -358,6 +358,11 @@ ruleTester.run('restrict-template-expressions', rule, { return \`arg = \${arg}\`; } `, + dependencyConstraints: { + // TS 4.5 improved type printing to print the type T as `T` + // before that it was printed as `any` + typescript: '4.5', + }, errors: [ { messageId: 'invalidType', diff --git a/packages/utils/src/eslint-utils/rule-tester/RuleTester.ts b/packages/utils/src/eslint-utils/rule-tester/RuleTester.ts index 54a645ccf25..7350de3a975 100644 --- a/packages/utils/src/eslint-utils/rule-tester/RuleTester.ts +++ b/packages/utils/src/eslint-utils/rule-tester/RuleTester.ts @@ -87,8 +87,11 @@ class RuleTester extends BaseRuleTester.RuleTester { } constructor(baseOptions: RuleTesterConfig) { + // eslint will hard-error if you include non-standard top-level properties + const { dependencyConstraints: _, ...baseOptionsSafeForESLint } = + baseOptions; super({ - ...baseOptions, + ...baseOptionsSafeForESLint, parserOptions: { ...baseOptions.parserOptions, warnOnUnsupportedTypeScriptVersion: @@ -204,14 +207,16 @@ class RuleTester extends BaseRuleTester.RuleTester { single test case. Hugely helps with the string-based valid test cases as it means they don't need to be made objects! + Also removes dependencyConstraints, which we support but ESLint core doesn't. */ - const addFilename = < + const normalizeTest = < T extends | ValidTestCase | InvalidTestCase, - >( - test: T, - ): T => { + >({ + dependencyConstraints: _, + ...test + }: T): Omit => { if (test.parser === TS_ESLINT_PARSER) { throw new Error(ERROR_MESSAGE); } @@ -223,8 +228,8 @@ class RuleTester extends BaseRuleTester.RuleTester { } return test; }; - tests.valid = tests.valid.map(addFilename); - tests.invalid = tests.invalid.map(addFilename); + tests.valid = tests.valid.map(normalizeTest); + tests.invalid = tests.invalid.map(normalizeTest); const hasOnly = ((): boolean => { for (const test of allTestsIterator) { diff --git a/packages/utils/tests/eslint-utils/rule-tester/RuleTester.test.ts b/packages/utils/tests/eslint-utils/rule-tester/RuleTester.test.ts index 2e620332942..57ac48b38c1 100644 --- a/packages/utils/tests/eslint-utils/rule-tester/RuleTester.test.ts +++ b/packages/utils/tests/eslint-utils/rule-tester/RuleTester.test.ts @@ -365,56 +365,32 @@ describe('RuleTester', () => { "invalid": [ { "code": "failing - major", - "dependencyConstraints": { - "totally-real-dependency": "999", - }, "errors": [], "filename": "file.ts", - "only": false, }, { "code": "failing - major.minor", - "dependencyConstraints": { - "totally-real-dependency": "999.0", - }, "errors": [], "filename": "file.ts", - "only": false, }, { "code": "failing - major.minor.patch", - "dependencyConstraints": { - "totally-real-dependency": "999.0.0", - }, "errors": [], "filename": "file.ts", - "only": false, }, ], "valid": [ { "code": "passing - major", - "dependencyConstraints": { - "totally-real-dependency": "10", - }, "filename": "file.ts", - "only": true, }, { "code": "passing - major.minor", - "dependencyConstraints": { - "totally-real-dependency": "10.0", - }, "filename": "file.ts", - "only": true, }, { "code": "passing - major.minor.patch", - "dependencyConstraints": { - "totally-real-dependency": "10.0.0", - }, "filename": "file.ts", - "only": true, }, ], } @@ -485,61 +461,28 @@ describe('RuleTester', () => { "invalid": [ { "code": "failing - major", - "dependencyConstraints": { - "totally-real-dependency": { - "range": "^999", - }, - }, "errors": [], "filename": "file.ts", - "only": false, }, { "code": "failing - major.minor", - "dependencyConstraints": { - "totally-real-dependency": { - "range": ">=999.0", - }, - }, "errors": [], "filename": "file.ts", - "only": false, }, { "code": "failing with options", - "dependencyConstraints": { - "totally-real-dependency-prerelease": { - "options": { - "includePrerelease": false, - }, - "range": "^10", - }, - }, "errors": [], "filename": "file.ts", - "only": false, }, ], "valid": [ { "code": "passing - major", - "dependencyConstraints": { - "totally-real-dependency": { - "range": "^10", - }, - }, "filename": "file.ts", - "only": true, }, { "code": "passing - major.minor", - "dependencyConstraints": { - "totally-real-dependency": { - "range": "<999", - }, - }, "filename": "file.ts", - "only": true, }, ], } @@ -595,49 +538,34 @@ describe('RuleTester', () => { "code": "no constraints is always run", "errors": [], "filename": "file.ts", - "only": true, }, { "code": "empty object is always run", - "dependencyConstraints": {}, "errors": [], "filename": "file.ts", - "only": true, }, { "code": "failing constraint", - "dependencyConstraints": { - "totally-real-dependency": "99999", - }, "errors": [], "filename": "file.ts", - "only": false, }, ], "valid": [ { "code": "string based is always run", "filename": "file.ts", - "only": true, }, { "code": "no constraints is always run", "filename": "file.ts", - "only": true, }, { "code": "empty object is always run", - "dependencyConstraints": {}, "filename": "file.ts", - "only": true, }, { "code": "passing constraint", - "dependencyConstraints": { - "totally-real-dependency": "10", - }, "filename": "file.ts", - "only": true, }, ], } @@ -690,11 +618,13 @@ describe('RuleTester', () => { expect(runSpy.mock.lastCall?.[2]).toMatchInlineSnapshot(` { "invalid": [ + { + "code": "failing", + "errors": [], + "filename": "file.ts", + }, { "code": "passing", - "dependencyConstraints": { - "totally-real-dependency": "10", - }, "errors": [], "filename": "file.ts", }, @@ -704,11 +634,12 @@ describe('RuleTester', () => { "code": "always passing string test", "filename": "file.ts", }, + { + "code": "failing", + "filename": "file.ts", + }, { "code": "passing", - "dependencyConstraints": { - "totally-real-dependency": "10", - }, "filename": "file.ts", }, ], From ab88f77acaee15a24d882131d77ac420899133db Mon Sep 17 00:00:00 2001 From: kmin-jeong <53456037+kmin-jeong@users.noreply.github.com> Date: Thu, 17 Nov 2022 15:30:04 +0900 Subject: [PATCH 119/193] chore(webpage): add id to homepage in h2 (#5951) * feat: add webpage id in h2 * fix: use Heading tag * fix:fix end typo * fix: add import heading * fix: separate className and Heading tag * fix: separate div className * fix:fix import * fix: add

tag * fix:fix id name and space * fix: use regex with - * fix: add replace regex about comma * fix:remove not use start --- packages/website/src/pages/index.tsx | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/website/src/pages/index.tsx b/packages/website/src/pages/index.tsx index 72939ebfce3..8dc318973cd 100644 --- a/packages/website/src/pages/index.tsx +++ b/packages/website/src/pages/index.tsx @@ -1,6 +1,7 @@ import Link from '@docusaurus/Link'; import useBaseUrl from '@docusaurus/useBaseUrl'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; +import Heading from '@theme/Heading'; import Layout from '@theme/Layout'; import clsx from 'clsx'; import React from 'react'; @@ -108,8 +109,15 @@ const features: FeatureItem[] = [ function Feature({ title, description }: FeatureItem): JSX.Element { return (

-

{title}

- {description} +
+ + {title} + +
+

{description}

Get Started @@ -161,7 +169,9 @@ function Home(): JSX.Element { ))}
-

Financial Contributors

+ + Financial Contributors +
From 97d3e56709ee19fdec39fd8b99d080db90b306e9 Mon Sep 17 00:00:00 2001 From: lsdsjy Date: Fri, 18 Nov 2022 01:17:21 +0800 Subject: [PATCH 120/193] feat(eslint-plugin): [adjacent-overload-signatures] check BlockStatement nodes (#5998) * fix(eslint-plugin): [adjacent-overload-signatures] check BlockStatement nodes * fix: test cases Co-authored-by: Josh Goldberg --- .../src/rules/adjacent-overload-signatures.ts | 5 +- .../adjacent-overload-signatures.test.ts | 52 +++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/packages/eslint-plugin/src/rules/adjacent-overload-signatures.ts b/packages/eslint-plugin/src/rules/adjacent-overload-signatures.ts index 81877d08b39..5f5ddfc0aad 100644 --- a/packages/eslint-plugin/src/rules/adjacent-overload-signatures.ts +++ b/packages/eslint-plugin/src/rules/adjacent-overload-signatures.ts @@ -8,7 +8,8 @@ type RuleNode = | TSESTree.Program | TSESTree.TSModuleBlock | TSESTree.TSTypeLiteral - | TSESTree.TSInterfaceBody; + | TSESTree.TSInterfaceBody + | TSESTree.BlockStatement; type Member = | TSESTree.ClassElement | TSESTree.ProgramStatement @@ -121,6 +122,7 @@ export default util.createRule({ case AST_NODE_TYPES.Program: case AST_NODE_TYPES.TSModuleBlock: case AST_NODE_TYPES.TSInterfaceBody: + case AST_NODE_TYPES.BlockStatement: return node.body; case AST_NODE_TYPES.TSTypeLiteral: @@ -172,6 +174,7 @@ export default util.createRule({ TSModuleBlock: checkBodyForOverloadMethods, TSTypeLiteral: checkBodyForOverloadMethods, TSInterfaceBody: checkBodyForOverloadMethods, + BlockStatement: checkBodyForOverloadMethods, }; }, }); diff --git a/packages/eslint-plugin/tests/rules/adjacent-overload-signatures.test.ts b/packages/eslint-plugin/tests/rules/adjacent-overload-signatures.test.ts index 12cf859a84a..9a20771b4af 100644 --- a/packages/eslint-plugin/tests/rules/adjacent-overload-signatures.test.ts +++ b/packages/eslint-plugin/tests/rules/adjacent-overload-signatures.test.ts @@ -250,12 +250,64 @@ class Test { '#private'(): void; '#private'(arg: number): void {} +} + `, + // block statement + ` +function wrap() { + function foo(s: string); + function foo(n: number); + function foo(sn: string | number) {} +} + `, + ` +if (true) { + function foo(s: string); + function foo(n: number); + function foo(sn: string | number) {} } `, ], invalid: [ { code: ` +function wrap() { + function foo(s: string); + function foo(n: number); + type bar = number; + function foo(sn: string | number) {} +} + `, + errors: [ + { + messageId: 'adjacentSignature', + data: { name: 'foo' }, + line: 6, + column: 3, + }, + ], + }, + { + code: ` +if (true) { + function foo(s: string); + function foo(n: number); + let a = 1; + function foo(sn: string | number) {} + foo(a); +} + `, + errors: [ + { + messageId: 'adjacentSignature', + data: { name: 'foo' }, + line: 6, + column: 3, + }, + ], + }, + { + code: ` export function foo(s: string); export function foo(n: number); export function bar(): void {} From 4d744ea10ba03c66eebcb63e8722e9f0165fbeed Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Fri, 18 Nov 2022 08:37:53 +0900 Subject: [PATCH 121/193] feat: update to TypeScript 4.9 (#5716) * feat: update typescript to 4.9.1 * fix: add patch file for 4.9.1-beta * feat(typescript-estree): update version range * feat: run `generate-lib` script * chore: update patch for typescript * fix: run `lint-fix` * feat: update to typescript 4.9.2-rc * chore: run patch-package * chore: update `@types/node` --- package.json | 8 +++---- packages/scope-manager/src/lib/dom.ts | 18 +++++++++----- packages/scope-manager/src/lib/es2019.intl.ts | 11 +++++++++ packages/scope-manager/src/lib/es2019.ts | 2 ++ packages/scope-manager/src/lib/index.ts | 2 ++ packages/scope-manager/src/lib/webworker.ts | 6 +++++ .../src/referencer/Referencer.ts | 2 +- packages/types/src/lib.ts | 1 + .../src/parseSettings/warnAboutTSVersion.ts | 4 ++-- ...+4.8.3.patch => typescript+4.9.2-rc.patch} | 24 +++++++++---------- yarn.lock | 16 ++++++------- 11 files changed, 61 insertions(+), 33 deletions(-) create mode 100644 packages/scope-manager/src/lib/es2019.intl.ts rename patches/{typescript+4.8.3.patch => typescript+4.9.2-rc.patch} (83%) diff --git a/package.json b/package.json index 4726e08400f..d739fdb0e90 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "@types/lodash": "^4.14.182", "@types/marked": "^4.0.3", "@types/ncp": "^2.0.5", - "@types/node": "^18.0.0", + "@types/node": "^18.11.9", "@types/prettier": "^2.6.0", "@types/rimraf": "^3.0.2", "@types/semver": "^7.3.9", @@ -104,11 +104,11 @@ "tmp": "^0.2.1", "ts-node": "^10.7.0", "tslint": "^6.1.3", - "typescript": ">=3.3.1 <4.9.0" + "typescript": ">=3.3.1 <4.8.3 || 4.9.2-rc" }, "resolutions": { - "typescript": "~4.8.3", - "@types/node": "^18.0.0", + "typescript": "~4.9.2-rc", + "@types/node": "^18.11.9", "//": "Pin jest to v29 across the repo", "@jest/create-cache-key-function": "^29", "@jest/reporters": "^29", diff --git a/packages/scope-manager/src/lib/dom.ts b/packages/scope-manager/src/lib/dom.ts index dd8523bc66e..d13afa2b57b 100644 --- a/packages/scope-manager/src/lib/dom.ts +++ b/packages/scope-manager/src/lib/dom.ts @@ -66,7 +66,7 @@ export const dom = { DeviceMotionEventInit: TYPE, DeviceMotionEventRotationRateInit: TYPE, DeviceOrientationEventInit: TYPE, - DisplayMediaStreamConstraints: TYPE, + DisplayMediaStreamOptions: TYPE, DocumentTimelineOptions: TYPE, DoubleRange: TYPE, DragEventInit: TYPE, @@ -143,7 +143,6 @@ export const dom = { MediaMetadataInit: TYPE, MediaPositionState: TYPE, MediaQueryListEventInit: TYPE, - MediaRecorderErrorEventInit: TYPE, MediaRecorderOptions: TYPE, MediaSessionActionDetails: TYPE, MediaStreamAudioSourceOptions: TYPE, @@ -184,6 +183,7 @@ export const dom = { PeriodicWaveConstraints: TYPE, PeriodicWaveOptions: TYPE, PermissionDescriptor: TYPE, + PictureInPictureEventInit: TYPE, PointerEventInit: TYPE, PopStateEventInit: TYPE, PositionOptions: TYPE, @@ -243,6 +243,7 @@ export const dom = { RTCStats: TYPE, RTCTrackEventInit: TYPE, RTCTransportStats: TYPE, + ReadableStreamGetReaderOptions: TYPE, ReadableStreamReadDoneResult: TYPE, ReadableStreamReadValueResult: TYPE, ReadableWritablePair: TYPE, @@ -284,6 +285,8 @@ export const dom = { TransitionEventInit: TYPE, UIEventInit: TYPE, ULongRange: TYPE, + UnderlyingByteSource: TYPE, + UnderlyingDefaultSource: TYPE, UnderlyingSink: TYPE, UnderlyingSource: TYPE, ValidityStateFlags: TYPE, @@ -350,10 +353,13 @@ export const dom = { CSSConditionRule: TYPE_VALUE, CSSCounterStyleRule: TYPE_VALUE, CSSFontFaceRule: TYPE_VALUE, + CSSFontPaletteValuesRule: TYPE_VALUE, CSSGroupingRule: TYPE_VALUE, CSSImportRule: TYPE_VALUE, CSSKeyframeRule: TYPE_VALUE, CSSKeyframesRule: TYPE_VALUE, + CSSLayerBlockRule: TYPE_VALUE, + CSSLayerStatementRule: TYPE_VALUE, CSSMediaRule: TYPE_VALUE, CSSNamespaceRule: TYPE_VALUE, CSSPageRule: TYPE_VALUE, @@ -449,6 +455,7 @@ export const dom = { EXT_frag_depth: TYPE, EXT_sRGB: TYPE, EXT_shader_texture_lod: TYPE, + EXT_texture_compression_bptc: TYPE, EXT_texture_compression_rgtc: TYPE, EXT_texture_filter_anisotropic: TYPE, ElementEventMap: TYPE, @@ -641,7 +648,6 @@ export const dom = { MediaQueryListEvent: TYPE_VALUE, MediaRecorderEventMap: TYPE, MediaRecorder: TYPE_VALUE, - MediaRecorderErrorEvent: TYPE_VALUE, MediaSession: TYPE_VALUE, MediaSourceEventMap: TYPE, MediaSource: TYPE_VALUE, @@ -724,6 +730,7 @@ export const dom = { PermissionStatusEventMap: TYPE, PermissionStatus: TYPE_VALUE, Permissions: TYPE_VALUE, + PictureInPictureEvent: TYPE_VALUE, PictureInPictureWindowEventMap: TYPE, PictureInPictureWindow: TYPE_VALUE, Plugin: TYPE_VALUE, @@ -1123,8 +1130,6 @@ export const dom = { TimerHandler: TYPE, Transferable: TYPE, Uint32List: TYPE, - UvmEntries: TYPE, - UvmEntry: TYPE, VibratePattern: TYPE, WindowProxy: TYPE, XMLHttpRequestBodyInit: TYPE, @@ -1227,7 +1232,6 @@ export const dom = { RTCIceCandidateType: TYPE, RTCIceComponent: TYPE, RTCIceConnectionState: TYPE, - RTCIceCredentialType: TYPE, RTCIceGathererState: TYPE, RTCIceGatheringState: TYPE, RTCIceProtocol: TYPE, @@ -1243,6 +1247,8 @@ export const dom = { RTCSignalingState: TYPE, RTCStatsIceCandidatePairState: TYPE, RTCStatsType: TYPE, + ReadableStreamReaderMode: TYPE, + ReadableStreamType: TYPE, ReadyState: TYPE, RecordingState: TYPE, ReferrerPolicy: TYPE, diff --git a/packages/scope-manager/src/lib/es2019.intl.ts b/packages/scope-manager/src/lib/es2019.intl.ts new file mode 100644 index 00000000000..64b46f40ebb --- /dev/null +++ b/packages/scope-manager/src/lib/es2019.intl.ts @@ -0,0 +1,11 @@ +// THIS CODE WAS AUTOMATICALLY GENERATED +// DO NOT EDIT THIS CODE BY HAND +// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE: +// npx nx generate-lib @typescript-eslint/scope-manager + +import type { ImplicitLibVariableOptions } from '../variable'; +import { TYPE_VALUE } from './base-config'; + +export const es2019_intl = { + Intl: TYPE_VALUE, +} as Record; diff --git a/packages/scope-manager/src/lib/es2019.ts b/packages/scope-manager/src/lib/es2019.ts index 43e55a27a3a..cd6d33c1f5d 100644 --- a/packages/scope-manager/src/lib/es2019.ts +++ b/packages/scope-manager/src/lib/es2019.ts @@ -6,6 +6,7 @@ import type { ImplicitLibVariableOptions } from '../variable'; import { es2018 } from './es2018'; import { es2019_array } from './es2019.array'; +import { es2019_intl } from './es2019.intl'; import { es2019_object } from './es2019.object'; import { es2019_string } from './es2019.string'; import { es2019_symbol } from './es2019.symbol'; @@ -16,4 +17,5 @@ export const es2019 = { ...es2019_object, ...es2019_string, ...es2019_symbol, + ...es2019_intl, } as Record; diff --git a/packages/scope-manager/src/lib/index.ts b/packages/scope-manager/src/lib/index.ts index 989857ba152..dfee880fa16 100644 --- a/packages/scope-manager/src/lib/index.ts +++ b/packages/scope-manager/src/lib/index.ts @@ -38,6 +38,7 @@ import { es2018_regexp } from './es2018.regexp'; import { es2019 } from './es2019'; import { es2019_array } from './es2019.array'; import { es2019_full } from './es2019.full'; +import { es2019_intl } from './es2019.intl'; import { es2019_object } from './es2019.object'; import { es2019_string } from './es2019.string'; import { es2019_symbol } from './es2019.symbol'; @@ -124,6 +125,7 @@ const lib = { 'es2019.object': es2019_object, 'es2019.string': es2019_string, 'es2019.symbol': es2019_symbol, + 'es2019.intl': es2019_intl, 'es2020.bigint': es2020_bigint, 'es2020.date': es2020_date, 'es2020.promise': es2020_promise, diff --git a/packages/scope-manager/src/lib/webworker.ts b/packages/scope-manager/src/lib/webworker.ts index e44ce52113c..ccbb3efd3c4 100644 --- a/packages/scope-manager/src/lib/webworker.ts +++ b/packages/scope-manager/src/lib/webworker.ts @@ -88,6 +88,7 @@ export const webworker = { QueuingStrategyInit: TYPE, RTCEncodedAudioFrameMetadata: TYPE, RTCEncodedVideoFrameMetadata: TYPE, + ReadableStreamGetReaderOptions: TYPE, ReadableStreamReadDoneResult: TYPE, ReadableStreamReadValueResult: TYPE, ReadableWritablePair: TYPE, @@ -108,6 +109,8 @@ export const webworker = { TextDecoderOptions: TYPE, TextEncoderEncodeIntoResult: TYPE, Transformer: TYPE, + UnderlyingByteSource: TYPE, + UnderlyingDefaultSource: TYPE, UnderlyingSink: TYPE, UnderlyingSource: TYPE, VideoColorSpaceInit: TYPE, @@ -157,6 +160,7 @@ export const webworker = { EXT_frag_depth: TYPE, EXT_sRGB: TYPE, EXT_shader_texture_lod: TYPE, + EXT_texture_compression_bptc: TYPE, EXT_texture_compression_rgtc: TYPE, EXT_texture_filter_anisotropic: TYPE, ErrorEvent: TYPE_VALUE, @@ -431,6 +435,8 @@ export const webworker = { PremultiplyAlpha: TYPE, PushEncryptionKeyName: TYPE, RTCEncodedVideoFrameType: TYPE, + ReadableStreamReaderMode: TYPE, + ReadableStreamType: TYPE, ReferrerPolicy: TYPE, RequestCache: TYPE, RequestCredentials: TYPE, diff --git a/packages/scope-manager/src/referencer/Referencer.ts b/packages/scope-manager/src/referencer/Referencer.ts index a69209e86c6..93b0270ebfb 100644 --- a/packages/scope-manager/src/referencer/Referencer.ts +++ b/packages/scope-manager/src/referencer/Referencer.ts @@ -675,7 +675,7 @@ class Referencer extends Visitor { member.id.type === AST_NODE_TYPES.Literal && typeof member.id.value === 'string' ) { - const name = member.id as TSESTree.StringLiteral; + const name = member.id; this.currentScope().defineLiteralIdentifier( name, new TSEnumMemberDefinition(name, member), diff --git a/packages/types/src/lib.ts b/packages/types/src/lib.ts index 0d92717fcb5..880bafe5b5e 100644 --- a/packages/types/src/lib.ts +++ b/packages/types/src/lib.ts @@ -46,6 +46,7 @@ type Lib = | 'es2019.object' | 'es2019.string' | 'es2019.symbol' + | 'es2019.intl' | 'es2020.bigint' | 'es2020.date' | 'es2020.promise' diff --git a/packages/typescript-estree/src/parseSettings/warnAboutTSVersion.ts b/packages/typescript-estree/src/parseSettings/warnAboutTSVersion.ts index 6bd890bdae9..343e324307a 100644 --- a/packages/typescript-estree/src/parseSettings/warnAboutTSVersion.ts +++ b/packages/typescript-estree/src/parseSettings/warnAboutTSVersion.ts @@ -6,13 +6,13 @@ import type { ParseSettings } from './index'; * This needs to be kept in sync with the top-level README.md in the * typescript-eslint monorepo */ -const SUPPORTED_TYPESCRIPT_VERSIONS = '>=3.3.1 <4.9.0'; +const SUPPORTED_TYPESCRIPT_VERSIONS = '>=3.3.1 <5.0.0'; /* * The semver package will ignore prerelease ranges, and we don't want to explicitly document every one * List them all separately here, so we can automatically create the full string */ -const SUPPORTED_PRERELEASE_RANGES: string[] = []; +const SUPPORTED_PRERELEASE_RANGES: string[] = ['4.9.2-rc']; const ACTIVE_TYPESCRIPT_VERSION = ts.version; const isRunningSupportedTypeScriptVersion = semver.satisfies( ACTIVE_TYPESCRIPT_VERSION, diff --git a/patches/typescript+4.8.3.patch b/patches/typescript+4.9.2-rc.patch similarity index 83% rename from patches/typescript+4.8.3.patch rename to patches/typescript+4.9.2-rc.patch index a33162f7dec..520a9fde936 100644 --- a/patches/typescript+4.8.3.patch +++ b/patches/typescript+4.9.2-rc.patch @@ -1,18 +1,18 @@ diff --git a/node_modules/typescript/lib/typescript.d.ts b/node_modules/typescript/lib/typescript.d.ts -index 0fd60ae..02f4fe7 100644 +index 54e4c65..aa00912 100644 --- a/node_modules/typescript/lib/typescript.d.ts +++ b/node_modules/typescript/lib/typescript.d.ts -@@ -425,8 +425,8 @@ declare namespace ts { - JSDocFunctionType = 317, - JSDocVariadicType = 318, - JSDocNamepathType = 319, +@@ -428,8 +428,8 @@ declare namespace ts { + JSDocFunctionType = 320, + JSDocVariadicType = 321, + JSDocNamepathType = 322, + /** @deprecated This was only added in 4.7 */ - JSDoc = 320, + JSDoc = 323, - /** @deprecated Use SyntaxKind.JSDoc */ - JSDocComment = 320, - JSDocText = 321, - JSDocTypeLiteral = 322, -@@ -4374,7 +4374,13 @@ declare namespace ts { + JSDocComment = 323, + JSDocText = 324, + JSDocTypeLiteral = 325, +@@ -4395,7 +4395,13 @@ declare namespace ts { function symbolName(symbol: Symbol): string; function getNameOfJSDocTypedef(declaration: JSDocTypedefTag): Identifier | PrivateIdentifier | undefined; function getNameOfDeclaration(declaration: Declaration | Expression | undefined): DeclarationName | undefined; @@ -26,7 +26,7 @@ index 0fd60ae..02f4fe7 100644 function getModifiers(node: HasModifiers): readonly Modifier[] | undefined; /** * Gets the JSDoc parameter tags for the node if present. -@@ -4834,7 +4840,13 @@ declare namespace ts { +@@ -4857,7 +4863,13 @@ declare namespace ts { } declare namespace ts { function setTextRange(range: T, location: TextRange | undefined): T; @@ -40,7 +40,7 @@ index 0fd60ae..02f4fe7 100644 function canHaveDecorators(node: Node): node is HasDecorators; } declare namespace ts { -@@ -7924,7 +7936,7 @@ declare namespace ts { +@@ -7958,7 +7970,7 @@ declare namespace ts { * const decorators = ts.canHaveDecorators(node) ? ts.getDecorators(node) : undefined; * ``` */ diff --git a/yarn.lock b/yarn.lock index 2a5699732e8..3dcb81cfb59 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4124,10 +4124,10 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@12.20.24", "@types/node@^17.0.5", "@types/node@^18.0.0": - version "18.8.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.8.3.tgz#ce750ab4017effa51aed6a7230651778d54e327c" - integrity sha512-0os9vz6BpGwxGe9LOhgP/ncvYN5Tx1fNcd2TM3rD/aCGBkysb+ZWpXEocG24h6ZzOi13+VB8HndAQFezsSOw1w== +"@types/node@*", "@types/node@12.20.24", "@types/node@^17.0.5", "@types/node@^18.11.9": + version "18.11.9" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.9.tgz#02d013de7058cea16d36168ef2fc653464cfbad4" + integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg== "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -13627,10 +13627,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@*, "typescript@>=3.3.1 <4.9.0", "typescript@^3 || ^4", typescript@next, typescript@~4.8.3, typescript@~4.8.4: - version "4.8.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" - integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== +typescript@*, "typescript@>=3.3.1 <4.8.3 || 4.9.2-rc", "typescript@^3 || ^4", typescript@next, typescript@~4.8.4, typescript@~4.9.2-rc: + version "4.9.2-rc" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.2-rc.tgz#3525dbeb8458a8c98ce7d60724e4a9380d7b46e7" + integrity sha512-Ly9UUxJBfiiFjfegI1gsW9FI8Xhw1cuwRMBJ4wdYg+UXZR4VnZvD1OnBDj/iQ2U+tWbWEjYqJ5xx1Cwr4Vsa4w== ua-parser-js@^0.7.30: version "0.7.31" From a40a311bb52a2b1cfac43851b201f8cfc96c8d5d Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Fri, 18 Nov 2022 10:17:28 +1030 Subject: [PATCH 122/193] chore: bump TS from 4.9RC to 4.9 --- package.json | 4 +-- .../scope-manager/src/lib/dom.iterable.ts | 1 + packages/scope-manager/src/lib/dom.ts | 10 +++++- .../src/lib/webworker.iterable.ts | 2 ++ packages/scope-manager/src/lib/webworker.ts | 34 ++++++++++++++++++- .../src/parseSettings/warnAboutTSVersion.ts | 2 +- ...+4.9.2-rc.patch => typescript+4.9.3.patch} | 0 yarn.lock | 8 ++--- 8 files changed, 52 insertions(+), 9 deletions(-) rename patches/{typescript+4.9.2-rc.patch => typescript+4.9.3.patch} (100%) diff --git a/package.json b/package.json index d739fdb0e90..f7c782af36e 100644 --- a/package.json +++ b/package.json @@ -104,10 +104,10 @@ "tmp": "^0.2.1", "ts-node": "^10.7.0", "tslint": "^6.1.3", - "typescript": ">=3.3.1 <4.8.3 || 4.9.2-rc" + "typescript": ">=3.3.1 <5.0.0" }, "resolutions": { - "typescript": "~4.9.2-rc", + "typescript": "~4.9.3", "@types/node": "^18.11.9", "//": "Pin jest to v29 across the repo", "@jest/create-cache-key-function": "^29", diff --git a/packages/scope-manager/src/lib/dom.iterable.ts b/packages/scope-manager/src/lib/dom.iterable.ts index d294d684ddc..1d43661478b 100644 --- a/packages/scope-manager/src/lib/dom.iterable.ts +++ b/packages/scope-manager/src/lib/dom.iterable.ts @@ -13,6 +13,7 @@ export const dom_iterable = { CSSRuleList: TYPE, CSSStyleDeclaration: TYPE, Cache: TYPE, + CanvasPath: TYPE, CanvasPathDrawingStyles: TYPE, DOMRectList: TYPE, DOMStringList: TYPE, diff --git a/packages/scope-manager/src/lib/dom.ts b/packages/scope-manager/src/lib/dom.ts index d13afa2b57b..1087a238dfc 100644 --- a/packages/scope-manager/src/lib/dom.ts +++ b/packages/scope-manager/src/lib/dom.ts @@ -292,7 +292,7 @@ export const dom = { ValidityStateFlags: TYPE, VideoColorSpaceInit: TYPE, VideoConfiguration: TYPE, - VideoFrameMetadata: TYPE, + VideoFrameCallbackMetadata: TYPE, WaveShaperOptions: TYPE, WebGLContextAttributes: TYPE, WebGLContextEventInit: TYPE, @@ -351,6 +351,7 @@ export const dom = { CDATASection: TYPE_VALUE, CSSAnimation: TYPE_VALUE, CSSConditionRule: TYPE_VALUE, + CSSContainerRule: TYPE_VALUE, CSSCounterStyleRule: TYPE_VALUE, CSSFontFaceRule: TYPE_VALUE, CSSFontPaletteValuesRule: TYPE_VALUE, @@ -458,6 +459,7 @@ export const dom = { EXT_texture_compression_bptc: TYPE, EXT_texture_compression_rgtc: TYPE, EXT_texture_filter_anisotropic: TYPE, + EXT_texture_norm16: TYPE, ElementEventMap: TYPE, Element: TYPE_VALUE, ElementCSSInlineStyle: TYPE, @@ -689,6 +691,7 @@ export const dom = { NonElementParentNode: TYPE, NotificationEventMap: TYPE, Notification: TYPE_VALUE, + OES_draw_buffers_indexed: TYPE, OES_element_index_uint: TYPE, OES_fbo_render_mipmap: TYPE, OES_standard_derivatives: TYPE, @@ -701,6 +704,9 @@ export const dom = { OfflineAudioCompletionEvent: TYPE_VALUE, OfflineAudioContextEventMap: TYPE, OfflineAudioContext: TYPE_VALUE, + OffscreenCanvasEventMap: TYPE, + OffscreenCanvas: TYPE_VALUE, + OffscreenCanvasRenderingContext2D: TYPE_VALUE, OscillatorNode: TYPE_VALUE, OverconstrainedError: TYPE_VALUE, PageTransitionEvent: TYPE_VALUE, @@ -1118,6 +1124,7 @@ export const dom = { MessageEventSource: TYPE, MutationRecordType: TYPE, NamedCurve: TYPE, + OffscreenRenderingContext: TYPE, OnBeforeUnloadEventHandler: TYPE, OnErrorEventHandler: TYPE, PerformanceEntryList: TYPE, @@ -1208,6 +1215,7 @@ export const dom = { NavigationTimingType: TYPE, NotificationDirection: TYPE, NotificationPermission: TYPE, + OffscreenRenderingContextId: TYPE, OrientationLockType: TYPE, OrientationType: TYPE, OscillatorType: TYPE, diff --git a/packages/scope-manager/src/lib/webworker.iterable.ts b/packages/scope-manager/src/lib/webworker.iterable.ts index e4b0fb8b940..5ff03255ece 100644 --- a/packages/scope-manager/src/lib/webworker.iterable.ts +++ b/packages/scope-manager/src/lib/webworker.iterable.ts @@ -8,6 +8,8 @@ import { TYPE } from './base-config'; export const webworker_iterable = { Cache: TYPE, + CanvasPath: TYPE, + CanvasPathDrawingStyles: TYPE, DOMStringList: TYPE, FileList: TYPE, FontFaceSet: TYPE, diff --git a/packages/scope-manager/src/lib/webworker.ts b/packages/scope-manager/src/lib/webworker.ts index ccbb3efd3c4..bddb6bf9aa4 100644 --- a/packages/scope-manager/src/lib/webworker.ts +++ b/packages/scope-manager/src/lib/webworker.ts @@ -132,9 +132,23 @@ export const webworker = { ByteLengthQueuingStrategy: TYPE_VALUE, Cache: TYPE_VALUE, CacheStorage: TYPE_VALUE, + CanvasCompositing: TYPE, + CanvasDrawImage: TYPE, + CanvasDrawPath: TYPE, + CanvasFillStrokeStyles: TYPE, + CanvasFilters: TYPE, CanvasGradient: TYPE_VALUE, + CanvasImageData: TYPE, + CanvasImageSmoothing: TYPE, CanvasPath: TYPE, + CanvasPathDrawingStyles: TYPE, CanvasPattern: TYPE_VALUE, + CanvasRect: TYPE, + CanvasShadowStyles: TYPE, + CanvasState: TYPE, + CanvasText: TYPE, + CanvasTextDrawingStyles: TYPE, + CanvasTransform: TYPE, Client: TYPE_VALUE, Clients: TYPE_VALUE, CloseEvent: TYPE_VALUE, @@ -163,6 +177,7 @@ export const webworker = { EXT_texture_compression_bptc: TYPE, EXT_texture_compression_rgtc: TYPE, EXT_texture_filter_anisotropic: TYPE, + EXT_texture_norm16: TYPE, ErrorEvent: TYPE_VALUE, Event: TYPE_VALUE, EventListener: TYPE, @@ -225,6 +240,7 @@ export const webworker = { NotificationEventMap: TYPE, Notification: TYPE_VALUE, NotificationEvent: TYPE_VALUE, + OES_draw_buffers_indexed: TYPE, OES_element_index_uint: TYPE, OES_fbo_render_mipmap: TYPE, OES_standard_derivatives: TYPE, @@ -234,7 +250,9 @@ export const webworker = { OES_texture_half_float_linear: TYPE, OES_vertex_array_object: TYPE, OVR_multiview2: TYPE, - OffscreenCanvas: TYPE, + OffscreenCanvasEventMap: TYPE, + OffscreenCanvas: TYPE_VALUE, + OffscreenCanvasRenderingContext2D: TYPE_VALUE, Path2D: TYPE_VALUE, PerformanceEventMap: TYPE, Performance: TYPE_VALUE, @@ -392,6 +410,7 @@ export const webworker = { Int32List: TYPE, MessageEventSource: TYPE, NamedCurve: TYPE, + OffscreenRenderingContext: TYPE, OnErrorEventHandler: TYPE, PerformanceEntryList: TYPE, PushMessageDataInit: TYPE, @@ -406,6 +425,16 @@ export const webworker = { VibratePattern: TYPE, XMLHttpRequestBodyInit: TYPE, BinaryType: TYPE, + CanvasDirection: TYPE, + CanvasFillRule: TYPE, + CanvasFontKerning: TYPE, + CanvasFontStretch: TYPE, + CanvasFontVariantCaps: TYPE, + CanvasLineCap: TYPE, + CanvasLineJoin: TYPE, + CanvasTextAlign: TYPE, + CanvasTextBaseline: TYPE, + CanvasTextRendering: TYPE, ClientTypes: TYPE, ColorGamut: TYPE, ColorSpaceConversion: TYPE, @@ -415,12 +444,14 @@ export const webworker = { FontFaceLoadStatus: TYPE, FontFaceSetLoadStatus: TYPE, FrameType: TYPE, + GlobalCompositeOperation: TYPE, HdrMetadataType: TYPE, IDBCursorDirection: TYPE, IDBRequestReadyState: TYPE, IDBTransactionDurability: TYPE, IDBTransactionMode: TYPE, ImageOrientation: TYPE, + ImageSmoothingQuality: TYPE, KeyFormat: TYPE, KeyType: TYPE, KeyUsage: TYPE, @@ -429,6 +460,7 @@ export const webworker = { MediaEncodingType: TYPE, NotificationDirection: TYPE, NotificationPermission: TYPE, + OffscreenRenderingContextId: TYPE, PermissionName: TYPE, PermissionState: TYPE, PredefinedColorSpace: TYPE, diff --git a/packages/typescript-estree/src/parseSettings/warnAboutTSVersion.ts b/packages/typescript-estree/src/parseSettings/warnAboutTSVersion.ts index 343e324307a..ad9a74157d6 100644 --- a/packages/typescript-estree/src/parseSettings/warnAboutTSVersion.ts +++ b/packages/typescript-estree/src/parseSettings/warnAboutTSVersion.ts @@ -12,7 +12,7 @@ const SUPPORTED_TYPESCRIPT_VERSIONS = '>=3.3.1 <5.0.0'; * The semver package will ignore prerelease ranges, and we don't want to explicitly document every one * List them all separately here, so we can automatically create the full string */ -const SUPPORTED_PRERELEASE_RANGES: string[] = ['4.9.2-rc']; +const SUPPORTED_PRERELEASE_RANGES: string[] = []; const ACTIVE_TYPESCRIPT_VERSION = ts.version; const isRunningSupportedTypeScriptVersion = semver.satisfies( ACTIVE_TYPESCRIPT_VERSION, diff --git a/patches/typescript+4.9.2-rc.patch b/patches/typescript+4.9.3.patch similarity index 100% rename from patches/typescript+4.9.2-rc.patch rename to patches/typescript+4.9.3.patch diff --git a/yarn.lock b/yarn.lock index 3dcb81cfb59..07d19a8fc38 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13627,10 +13627,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@*, "typescript@>=3.3.1 <4.8.3 || 4.9.2-rc", "typescript@^3 || ^4", typescript@next, typescript@~4.8.4, typescript@~4.9.2-rc: - version "4.9.2-rc" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.2-rc.tgz#3525dbeb8458a8c98ce7d60724e4a9380d7b46e7" - integrity sha512-Ly9UUxJBfiiFjfegI1gsW9FI8Xhw1cuwRMBJ4wdYg+UXZR4VnZvD1OnBDj/iQ2U+tWbWEjYqJ5xx1Cwr4Vsa4w== +typescript@*, "typescript@>=3.3.1 <5.0.0", "typescript@^3 || ^4", typescript@next, typescript@~4.8.4, typescript@~4.9.3: + version "4.9.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.3.tgz#3aea307c1746b8c384435d8ac36b8a2e580d85db" + integrity sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA== ua-parser-js@^0.7.30: version "0.7.31" From 20d7caee35ab84ae6381fdf04338c9e2b9e2bc48 Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Fri, 18 Nov 2022 09:33:47 +0900 Subject: [PATCH 123/193] feat: support parsing `satisfies` operators (#5717) Co-authored-by: Josh Goldberg Co-authored-by: Brad Zacher --- .prettierignore | 3 + README.md | 2 +- package.json | 12 +- packages/ast-spec/src/ast-node-types.ts | 1 + .../fixtures/array-array/fixture.ts | 1 + .../array-array/snapshots/1-TSESTree-AST.shot | 149 ++++++++++++++++ .../snapshots/2-TSESTree-Tokens.shot | 166 ++++++++++++++++++ .../array-array/snapshots/3-Babel-AST.shot | 149 ++++++++++++++++ .../array-array/snapshots/4-Babel-Tokens.shot | 166 ++++++++++++++++++ .../snapshots/5-AST-Alignment-AST.shot | 6 + .../snapshots/6-AST-Alignment-Tokens.shot | 6 + .../arrow-func-no-parentheses/fixture.ts | 1 + .../snapshots/1-TSESTree-AST.shot | 68 +++++++ .../snapshots/2-TSESTree-Tokens.shot | 66 +++++++ .../snapshots/3-Babel-AST.shot | 68 +++++++ .../snapshots/4-Babel-Tokens.shot | 66 +++++++ .../snapshots/5-AST-Alignment-AST.shot | 6 + .../snapshots/6-AST-Alignment-Tokens.shot | 6 + .../arrow-func-with-parentheses/fixture.ts | 1 + .../snapshots/1-TSESTree-AST.shot | 87 +++++++++ .../snapshots/2-TSESTree-Tokens.shot | 116 ++++++++++++ .../snapshots/3-Babel-AST.shot | 87 +++++++++ .../snapshots/4-Babel-Tokens.shot | 116 ++++++++++++ .../snapshots/5-AST-Alignment-AST.shot | 93 ++++++++++ .../snapshots/6-AST-Alignment-Tokens.shot | 6 + .../fixtures/chained-satisfies/fixture.ts | 1 + .../snapshots/1-TSESTree-AST.shot | 91 ++++++++++ .../snapshots/2-TSESTree-Tokens.shot | 66 +++++++ .../snapshots/3-Babel-AST.shot | 91 ++++++++++ .../snapshots/4-Babel-Tokens.shot | 66 +++++++ .../snapshots/5-AST-Alignment-AST.shot | 6 + .../snapshots/6-AST-Alignment-Tokens.shot | 6 + .../conditional-no-parentheses/fixture.ts | 1 + .../snapshots/1-TSESTree-AST.shot | 84 +++++++++ .../snapshots/2-TSESTree-Tokens.shot | 86 +++++++++ .../snapshots/3-Babel-AST.shot | 84 +++++++++ .../snapshots/4-Babel-Tokens.shot | 86 +++++++++ .../snapshots/5-AST-Alignment-AST.shot | 6 + .../snapshots/6-AST-Alignment-Tokens.shot | 6 + .../conditional-with-parentheses/fixture.ts | 1 + .../snapshots/1-TSESTree-AST.shot | 84 +++++++++ .../snapshots/2-TSESTree-Tokens.shot | 106 +++++++++++ .../snapshots/3-Babel-AST.shot | 84 +++++++++ .../snapshots/4-Babel-Tokens.shot | 106 +++++++++++ .../snapshots/5-AST-Alignment-AST.shot | 6 + .../snapshots/6-AST-Alignment-Tokens.shot | 6 + .../fixtures/identifier-keyword/fixture.ts | 1 + .../snapshots/1-TSESTree-AST.shot | 53 ++++++ .../snapshots/2-TSESTree-Tokens.shot | 46 +++++ .../snapshots/3-Babel-AST.shot | 53 ++++++ .../snapshots/4-Babel-Tokens.shot | 46 +++++ .../snapshots/5-AST-Alignment-AST.shot | 6 + .../snapshots/6-AST-Alignment-Tokens.shot | 6 + .../identifier-object-type/fixture.ts | 1 + .../snapshots/1-TSESTree-AST.shot | 104 +++++++++++ .../snapshots/2-TSESTree-Tokens.shot | 86 +++++++++ .../snapshots/3-Babel-AST.shot | 104 +++++++++++ .../snapshots/4-Babel-Tokens.shot | 86 +++++++++ .../snapshots/5-AST-Alignment-AST.shot | 6 + .../snapshots/6-AST-Alignment-Tokens.shot | 6 + .../fixtures/identifier-tuple-type/fixture.ts | 1 + .../snapshots/1-TSESTree-AST.shot | 115 ++++++++++++ .../snapshots/2-TSESTree-Tokens.shot | 106 +++++++++++ .../snapshots/3-Babel-AST.shot | 115 ++++++++++++ .../snapshots/4-Babel-Tokens.shot | 106 +++++++++++ .../snapshots/5-AST-Alignment-AST.shot | 6 + .../snapshots/6-AST-Alignment-Tokens.shot | 6 + .../logical-no-parentheses/fixture.ts | 1 + .../snapshots/1-TSESTree-AST.shot | 74 ++++++++ .../snapshots/2-TSESTree-Tokens.shot | 66 +++++++ .../snapshots/3-Babel-AST.shot | 74 ++++++++ .../snapshots/4-Babel-Tokens.shot | 66 +++++++ .../snapshots/5-AST-Alignment-AST.shot | 6 + .../snapshots/6-AST-Alignment-Tokens.shot | 6 + .../logical-with-parentheses/fixture.ts | 1 + .../snapshots/1-TSESTree-AST.shot | 74 ++++++++ .../snapshots/2-TSESTree-Tokens.shot | 86 +++++++++ .../snapshots/3-Babel-AST.shot | 74 ++++++++ .../snapshots/4-Babel-Tokens.shot | 86 +++++++++ .../snapshots/5-AST-Alignment-AST.shot | 6 + .../snapshots/6-AST-Alignment-Tokens.shot | 6 + .../fixture.ts | 1 + .../snapshots/1-TSESTree-AST.shot | 128 ++++++++++++++ .../snapshots/2-TSESTree-Tokens.shot | 146 +++++++++++++++ .../snapshots/3-Babel-AST.shot | 128 ++++++++++++++ .../snapshots/4-Babel-Tokens.shot | 146 +++++++++++++++ .../snapshots/5-AST-Alignment-AST.shot | 6 + .../snapshots/6-AST-Alignment-Tokens.shot | 6 + .../fixture.ts | 1 + .../snapshots/1-TSESTree-AST.shot | 128 ++++++++++++++ .../snapshots/2-TSESTree-Tokens.shot | 146 +++++++++++++++ .../snapshots/3-Babel-AST.shot | 128 ++++++++++++++ .../snapshots/4-Babel-Tokens.shot | 146 +++++++++++++++ .../snapshots/5-AST-Alignment-AST.shot | 6 + .../snapshots/6-AST-Alignment-Tokens.shot | 6 + .../expression/TSSatisfiesExpression/spec.ts | 10 ++ packages/ast-spec/src/expression/spec.ts | 1 + packages/ast-spec/src/unions/Expression.ts | 2 + packages/ast-spec/src/unions/Node.ts | 2 + .../tests/fixtures-with-differences-ast.shot | 1 + packages/typescript-estree/src/convert.ts | 8 + .../src/ts-estree/estree-to-ts-node-types.ts | 1 + .../src/ts-estree/ts-nodes.ts | 1 + .../tests/ast-alignment/fixtures-to-test.ts | 5 + packages/visitor-keys/src/visitor-keys.ts | 1 + yarn.lock | 118 ++++++++++++- 106 files changed, 5467 insertions(+), 11 deletions(-) create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/fixture.ts create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/1-TSESTree-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/2-TSESTree-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/3-Babel-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/4-Babel-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/5-AST-Alignment-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/6-AST-Alignment-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/fixture.ts create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/1-TSESTree-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/2-TSESTree-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/3-Babel-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/4-Babel-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/5-AST-Alignment-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/6-AST-Alignment-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/fixture.ts create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/1-TSESTree-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/2-TSESTree-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/3-Babel-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/4-Babel-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/5-AST-Alignment-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/6-AST-Alignment-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/fixture.ts create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/snapshots/1-TSESTree-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/snapshots/2-TSESTree-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/snapshots/3-Babel-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/snapshots/4-Babel-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/snapshots/5-AST-Alignment-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/snapshots/6-AST-Alignment-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/fixture.ts create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/1-TSESTree-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/2-TSESTree-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/3-Babel-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/4-Babel-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/5-AST-Alignment-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/6-AST-Alignment-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/fixture.ts create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/snapshots/1-TSESTree-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/snapshots/2-TSESTree-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/snapshots/3-Babel-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/snapshots/4-Babel-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/snapshots/5-AST-Alignment-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/snapshots/6-AST-Alignment-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/fixture.ts create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/snapshots/1-TSESTree-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/snapshots/2-TSESTree-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/snapshots/3-Babel-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/snapshots/4-Babel-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/snapshots/5-AST-Alignment-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/snapshots/6-AST-Alignment-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/fixture.ts create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/snapshots/1-TSESTree-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/snapshots/2-TSESTree-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/snapshots/3-Babel-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/snapshots/4-Babel-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/snapshots/5-AST-Alignment-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/snapshots/6-AST-Alignment-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/fixture.ts create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/snapshots/1-TSESTree-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/snapshots/2-TSESTree-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/snapshots/3-Babel-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/snapshots/4-Babel-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/snapshots/5-AST-Alignment-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/snapshots/6-AST-Alignment-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/fixture.ts create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/1-TSESTree-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/2-TSESTree-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/3-Babel-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/4-Babel-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/5-AST-Alignment-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/6-AST-Alignment-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/fixture.ts create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/snapshots/1-TSESTree-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/snapshots/2-TSESTree-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/snapshots/3-Babel-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/snapshots/4-Babel-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/snapshots/5-AST-Alignment-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/snapshots/6-AST-Alignment-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/fixture.ts create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/1-TSESTree-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/2-TSESTree-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/3-Babel-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/4-Babel-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/5-AST-Alignment-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/6-AST-Alignment-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/fixture.ts create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/snapshots/1-TSESTree-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/snapshots/2-TSESTree-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/snapshots/3-Babel-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/snapshots/4-Babel-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/snapshots/5-AST-Alignment-AST.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/snapshots/6-AST-Alignment-Tokens.shot create mode 100644 packages/ast-spec/src/expression/TSSatisfiesExpression/spec.ts diff --git a/.prettierignore b/.prettierignore index 637f32f77bf..88af276a1b2 100644 --- a/.prettierignore +++ b/.prettierignore @@ -12,6 +12,9 @@ packages/eslint-plugin/src/configs/*.json CONTRIBUTORS.md packages/ast-spec/src/*/*/fixtures/_error_/*/fixture.ts +# prettier doesn't yet support satisfies +packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/ + # Ignore CHANGELOG.md files to avoid issues with automated release job CHANGELOG.md diff --git a/README.md b/README.md index bddf59d198b..93bee2f66dc 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ The latest version under the `canary` tag **(latest commit to `main`)** is: ### Supported TypeScript Version -**The version range of TypeScript currently supported by this parser is `>=3.3.1 <4.9.0`.** +**The version range of TypeScript currently supported by this parser is `>=3.3.1 <5.0.0`.** These versions are what we test against. diff --git a/package.json b/package.json index f7c782af36e..e13d754021e 100644 --- a/package.json +++ b/package.json @@ -49,10 +49,11 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "devDependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/eslint-parser": "^7.18.2", - "@babel/parser": "^7.18.0", - "@babel/types": "^7.18.2", + "@babel/code-frame": "^7.18.6", + "@babel/core": "^7.20.2", + "@babel/eslint-parser": "^7.19.1", + "@babel/parser": "^7.20.3", + "@babel/types": "^7.20.2", "@nrwl/nx-cloud": "14.7.0", "@nrwl/workspace": "14.8.4", "@swc/core": "^1.3.1", @@ -109,7 +110,7 @@ "resolutions": { "typescript": "~4.9.3", "@types/node": "^18.11.9", - "//": "Pin jest to v29 across the repo", + "//": "Stub out unnecessary swc packages to improve install size and speed", "@jest/create-cache-key-function": "^29", "@jest/reporters": "^29", "@jest/test-result": "^29", @@ -121,7 +122,6 @@ "jest-snapshot": "^29", "jest-util": "^29", "pretty-format": "^29", - "//": "Stub out unnecessary swc packages to improve install size and speed", "@swc/core-android-arm-eabi": "npm:dummypkg-a@1.0.0", "@swc/core-android-arm64": "npm:dummypkg-a@1.0.0", "@swc/core-freebsd-x64": "npm:dummypkg-a@1.0.0", diff --git a/packages/ast-spec/src/ast-node-types.ts b/packages/ast-spec/src/ast-node-types.ts index ff90dd1ee18..dbed6723fed 100644 --- a/packages/ast-spec/src/ast-node-types.ts +++ b/packages/ast-spec/src/ast-node-types.ts @@ -145,6 +145,7 @@ export enum AST_NODE_TYPES { TSQualifiedName = 'TSQualifiedName', TSReadonlyKeyword = 'TSReadonlyKeyword', TSRestType = 'TSRestType', + TSSatisfiesExpression = 'TSSatisfiesExpression', TSStaticKeyword = 'TSStaticKeyword', TSStringKeyword = 'TSStringKeyword', TSSymbolKeyword = 'TSSymbolKeyword', diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/fixture.ts b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/fixture.ts new file mode 100644 index 00000000000..917317da825 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/fixture.ts @@ -0,0 +1 @@ +[1,2,3] satisfies [1, 2, 3]; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/1-TSESTree-AST.shot new file mode 100644 index 00000000000..8c0e41971ea --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/1-TSESTree-AST.shot @@ -0,0 +1,149 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression array-array TSESTree - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: ArrayExpression { + type: "ArrayExpression", + elements: Array [ + Literal { + type: "Literal", + raw: "1", + value: 1, + + range: [1, 2], + loc: { + start: { column: 1, line: 1 }, + end: { column: 2, line: 1 }, + }, + }, + Literal { + type: "Literal", + raw: "2", + value: 2, + + range: [3, 4], + loc: { + start: { column: 3, line: 1 }, + end: { column: 4, line: 1 }, + }, + }, + Literal { + type: "Literal", + raw: "3", + value: 3, + + range: [5, 6], + loc: { + start: { column: 5, line: 1 }, + end: { column: 6, line: 1 }, + }, + }, + ], + + range: [0, 7], + loc: { + start: { column: 0, line: 1 }, + end: { column: 7, line: 1 }, + }, + }, + typeAnnotation: TSTupleType { + type: "TSTupleType", + elementTypes: Array [ + TSLiteralType { + type: "TSLiteralType", + literal: Literal { + type: "Literal", + raw: "1", + value: 1, + + range: [19, 20], + loc: { + start: { column: 19, line: 1 }, + end: { column: 20, line: 1 }, + }, + }, + + range: [19, 20], + loc: { + start: { column: 19, line: 1 }, + end: { column: 20, line: 1 }, + }, + }, + TSLiteralType { + type: "TSLiteralType", + literal: Literal { + type: "Literal", + raw: "2", + value: 2, + + range: [22, 23], + loc: { + start: { column: 22, line: 1 }, + end: { column: 23, line: 1 }, + }, + }, + + range: [22, 23], + loc: { + start: { column: 22, line: 1 }, + end: { column: 23, line: 1 }, + }, + }, + TSLiteralType { + type: "TSLiteralType", + literal: Literal { + type: "Literal", + raw: "3", + value: 3, + + range: [25, 26], + loc: { + start: { column: 25, line: 1 }, + end: { column: 26, line: 1 }, + }, + }, + + range: [25, 26], + loc: { + start: { column: 25, line: 1 }, + end: { column: 26, line: 1 }, + }, + }, + ], + + range: [18, 27], + loc: { + start: { column: 18, line: 1 }, + end: { column: 27, line: 1 }, + }, + }, + + range: [0, 27], + loc: { + start: { column: 0, line: 1 }, + end: { column: 27, line: 1 }, + }, + }, + + range: [0, 28], + loc: { + start: { column: 0, line: 1 }, + end: { column: 28, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 29], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/2-TSESTree-Tokens.shot new file mode 100644 index 00000000000..1bde181188c --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/2-TSESTree-Tokens.shot @@ -0,0 +1,166 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression array-array TSESTree - Tokens 1`] = ` +Array [ + Punctuator { + type: "Punctuator", + value: "[", + + range: [0, 1], + loc: { + start: { column: 0, line: 1 }, + end: { column: 1, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "1", + + range: [1, 2], + loc: { + start: { column: 1, line: 1 }, + end: { column: 2, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ",", + + range: [2, 3], + loc: { + start: { column: 2, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "2", + + range: [3, 4], + loc: { + start: { column: 3, line: 1 }, + end: { column: 4, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ",", + + range: [4, 5], + loc: { + start: { column: 4, line: 1 }, + end: { column: 5, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "3", + + range: [5, 6], + loc: { + start: { column: 5, line: 1 }, + end: { column: 6, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "]", + + range: [6, 7], + loc: { + start: { column: 6, line: 1 }, + end: { column: 7, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [8, 17], + loc: { + start: { column: 8, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "[", + + range: [18, 19], + loc: { + start: { column: 18, line: 1 }, + end: { column: 19, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "1", + + range: [19, 20], + loc: { + start: { column: 19, line: 1 }, + end: { column: 20, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ",", + + range: [20, 21], + loc: { + start: { column: 20, line: 1 }, + end: { column: 21, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "2", + + range: [22, 23], + loc: { + start: { column: 22, line: 1 }, + end: { column: 23, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ",", + + range: [23, 24], + loc: { + start: { column: 23, line: 1 }, + end: { column: 24, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "3", + + range: [25, 26], + loc: { + start: { column: 25, line: 1 }, + end: { column: 26, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "]", + + range: [26, 27], + loc: { + start: { column: 26, line: 1 }, + end: { column: 27, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [27, 28], + loc: { + start: { column: 27, line: 1 }, + end: { column: 28, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/3-Babel-AST.shot new file mode 100644 index 00000000000..d7f5aec514e --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/3-Babel-AST.shot @@ -0,0 +1,149 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression array-array Babel - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: ArrayExpression { + type: "ArrayExpression", + elements: Array [ + Literal { + type: "Literal", + raw: "1", + value: 1, + + range: [1, 2], + loc: { + start: { column: 1, line: 1 }, + end: { column: 2, line: 1 }, + }, + }, + Literal { + type: "Literal", + raw: "2", + value: 2, + + range: [3, 4], + loc: { + start: { column: 3, line: 1 }, + end: { column: 4, line: 1 }, + }, + }, + Literal { + type: "Literal", + raw: "3", + value: 3, + + range: [5, 6], + loc: { + start: { column: 5, line: 1 }, + end: { column: 6, line: 1 }, + }, + }, + ], + + range: [0, 7], + loc: { + start: { column: 0, line: 1 }, + end: { column: 7, line: 1 }, + }, + }, + typeAnnotation: TSTupleType { + type: "TSTupleType", + elementTypes: Array [ + TSLiteralType { + type: "TSLiteralType", + literal: Literal { + type: "Literal", + raw: "1", + value: 1, + + range: [19, 20], + loc: { + start: { column: 19, line: 1 }, + end: { column: 20, line: 1 }, + }, + }, + + range: [19, 20], + loc: { + start: { column: 19, line: 1 }, + end: { column: 20, line: 1 }, + }, + }, + TSLiteralType { + type: "TSLiteralType", + literal: Literal { + type: "Literal", + raw: "2", + value: 2, + + range: [22, 23], + loc: { + start: { column: 22, line: 1 }, + end: { column: 23, line: 1 }, + }, + }, + + range: [22, 23], + loc: { + start: { column: 22, line: 1 }, + end: { column: 23, line: 1 }, + }, + }, + TSLiteralType { + type: "TSLiteralType", + literal: Literal { + type: "Literal", + raw: "3", + value: 3, + + range: [25, 26], + loc: { + start: { column: 25, line: 1 }, + end: { column: 26, line: 1 }, + }, + }, + + range: [25, 26], + loc: { + start: { column: 25, line: 1 }, + end: { column: 26, line: 1 }, + }, + }, + ], + + range: [18, 27], + loc: { + start: { column: 18, line: 1 }, + end: { column: 27, line: 1 }, + }, + }, + + range: [0, 27], + loc: { + start: { column: 0, line: 1 }, + end: { column: 27, line: 1 }, + }, + }, + + range: [0, 28], + loc: { + start: { column: 0, line: 1 }, + end: { column: 28, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 29], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/4-Babel-Tokens.shot new file mode 100644 index 00000000000..02abe5d8cba --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/4-Babel-Tokens.shot @@ -0,0 +1,166 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression array-array Babel - Tokens 1`] = ` +Array [ + Punctuator { + type: "Punctuator", + value: "[", + + range: [0, 1], + loc: { + start: { column: 0, line: 1 }, + end: { column: 1, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "1", + + range: [1, 2], + loc: { + start: { column: 1, line: 1 }, + end: { column: 2, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ",", + + range: [2, 3], + loc: { + start: { column: 2, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "2", + + range: [3, 4], + loc: { + start: { column: 3, line: 1 }, + end: { column: 4, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ",", + + range: [4, 5], + loc: { + start: { column: 4, line: 1 }, + end: { column: 5, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "3", + + range: [5, 6], + loc: { + start: { column: 5, line: 1 }, + end: { column: 6, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "]", + + range: [6, 7], + loc: { + start: { column: 6, line: 1 }, + end: { column: 7, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [8, 17], + loc: { + start: { column: 8, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "[", + + range: [18, 19], + loc: { + start: { column: 18, line: 1 }, + end: { column: 19, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "1", + + range: [19, 20], + loc: { + start: { column: 19, line: 1 }, + end: { column: 20, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ",", + + range: [20, 21], + loc: { + start: { column: 20, line: 1 }, + end: { column: 21, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "2", + + range: [22, 23], + loc: { + start: { column: 22, line: 1 }, + end: { column: 23, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ",", + + range: [23, 24], + loc: { + start: { column: 23, line: 1 }, + end: { column: 24, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "3", + + range: [25, 26], + loc: { + start: { column: 25, line: 1 }, + end: { column: 26, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "]", + + range: [26, 27], + loc: { + start: { column: 26, line: 1 }, + end: { column: 27, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [27, 28], + loc: { + start: { column: 27, line: 1 }, + end: { column: 28, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/5-AST-Alignment-AST.shot new file mode 100644 index 00000000000..3cf7cab2487 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/5-AST-Alignment-AST.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression array-array AST Alignment - AST 1`] = ` +"Snapshot Diff: +Compared values have no visual difference." +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/6-AST-Alignment-Tokens.shot new file mode 100644 index 00000000000..263f9da8e6c --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/6-AST-Alignment-Tokens.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression array-array AST Alignment - Token 1`] = ` +"Snapshot Diff: +Compared values have no visual difference." +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/fixture.ts b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/fixture.ts new file mode 100644 index 00000000000..8478834cb78 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/fixture.ts @@ -0,0 +1 @@ +() => 1 satisfies number diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/1-TSESTree-AST.shot new file mode 100644 index 00000000000..57067f8fbff --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/1-TSESTree-AST.shot @@ -0,0 +1,68 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression arrow-func-no-parentheses TSESTree - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: ArrowFunctionExpression { + type: "ArrowFunctionExpression", + async: false, + body: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: Literal { + type: "Literal", + raw: "1", + value: 1, + + range: [6, 7], + loc: { + start: { column: 6, line: 1 }, + end: { column: 7, line: 1 }, + }, + }, + typeAnnotation: TSNumberKeyword { + type: "TSNumberKeyword", + + range: [18, 24], + loc: { + start: { column: 18, line: 1 }, + end: { column: 24, line: 1 }, + }, + }, + + range: [6, 24], + loc: { + start: { column: 6, line: 1 }, + end: { column: 24, line: 1 }, + }, + }, + expression: true, + generator: false, + id: null, + params: Array [], + + range: [0, 24], + loc: { + start: { column: 0, line: 1 }, + end: { column: 24, line: 1 }, + }, + }, + + range: [0, 24], + loc: { + start: { column: 0, line: 1 }, + end: { column: 24, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 25], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/2-TSESTree-Tokens.shot new file mode 100644 index 00000000000..09102ae267b --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/2-TSESTree-Tokens.shot @@ -0,0 +1,66 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression arrow-func-no-parentheses TSESTree - Tokens 1`] = ` +Array [ + Punctuator { + type: "Punctuator", + value: "(", + + range: [0, 1], + loc: { + start: { column: 0, line: 1 }, + end: { column: 1, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ")", + + range: [1, 2], + loc: { + start: { column: 1, line: 1 }, + end: { column: 2, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "=>", + + range: [3, 5], + loc: { + start: { column: 3, line: 1 }, + end: { column: 5, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "1", + + range: [6, 7], + loc: { + start: { column: 6, line: 1 }, + end: { column: 7, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [8, 17], + loc: { + start: { column: 8, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "number", + + range: [18, 24], + loc: { + start: { column: 18, line: 1 }, + end: { column: 24, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/3-Babel-AST.shot new file mode 100644 index 00000000000..1ef0e54b35d --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/3-Babel-AST.shot @@ -0,0 +1,68 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression arrow-func-no-parentheses Babel - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: ArrowFunctionExpression { + type: "ArrowFunctionExpression", + async: false, + body: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: Literal { + type: "Literal", + raw: "1", + value: 1, + + range: [6, 7], + loc: { + start: { column: 6, line: 1 }, + end: { column: 7, line: 1 }, + }, + }, + typeAnnotation: TSNumberKeyword { + type: "TSNumberKeyword", + + range: [18, 24], + loc: { + start: { column: 18, line: 1 }, + end: { column: 24, line: 1 }, + }, + }, + + range: [6, 24], + loc: { + start: { column: 6, line: 1 }, + end: { column: 24, line: 1 }, + }, + }, + expression: true, + generator: false, + id: null, + params: Array [], + + range: [0, 24], + loc: { + start: { column: 0, line: 1 }, + end: { column: 24, line: 1 }, + }, + }, + + range: [0, 24], + loc: { + start: { column: 0, line: 1 }, + end: { column: 24, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 25], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/4-Babel-Tokens.shot new file mode 100644 index 00000000000..24cc5b2042e --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/4-Babel-Tokens.shot @@ -0,0 +1,66 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression arrow-func-no-parentheses Babel - Tokens 1`] = ` +Array [ + Punctuator { + type: "Punctuator", + value: "(", + + range: [0, 1], + loc: { + start: { column: 0, line: 1 }, + end: { column: 1, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ")", + + range: [1, 2], + loc: { + start: { column: 1, line: 1 }, + end: { column: 2, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "=>", + + range: [3, 5], + loc: { + start: { column: 3, line: 1 }, + end: { column: 5, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "1", + + range: [6, 7], + loc: { + start: { column: 6, line: 1 }, + end: { column: 7, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [8, 17], + loc: { + start: { column: 8, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "number", + + range: [18, 24], + loc: { + start: { column: 18, line: 1 }, + end: { column: 24, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/5-AST-Alignment-AST.shot new file mode 100644 index 00000000000..4697cea82c6 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/5-AST-Alignment-AST.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression arrow-func-no-parentheses AST Alignment - AST 1`] = ` +"Snapshot Diff: +Compared values have no visual difference." +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/6-AST-Alignment-Tokens.shot new file mode 100644 index 00000000000..7fd90338cb4 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/6-AST-Alignment-Tokens.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression arrow-func-no-parentheses AST Alignment - Token 1`] = ` +"Snapshot Diff: +Compared values have no visual difference." +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/fixture.ts b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/fixture.ts new file mode 100644 index 00000000000..15624b9aaf3 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/fixture.ts @@ -0,0 +1 @@ +(() => 1) satisfies () => number diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/1-TSESTree-AST.shot new file mode 100644 index 00000000000..7fa95a22000 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/1-TSESTree-AST.shot @@ -0,0 +1,87 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression arrow-func-with-parentheses TSESTree - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: ArrowFunctionExpression { + type: "ArrowFunctionExpression", + async: false, + body: Literal { + type: "Literal", + raw: "1", + value: 1, + + range: [7, 8], + loc: { + start: { column: 7, line: 1 }, + end: { column: 8, line: 1 }, + }, + }, + expression: true, + generator: false, + id: null, + params: Array [], + + range: [1, 8], + loc: { + start: { column: 1, line: 1 }, + end: { column: 8, line: 1 }, + }, + }, + typeAnnotation: TSFunctionType { + type: "TSFunctionType", + params: Array [], + returnType: TSTypeAnnotation { + type: "TSTypeAnnotation", + typeAnnotation: TSNumberKeyword { + type: "TSNumberKeyword", + + range: [26, 32], + loc: { + start: { column: 26, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, + + range: [23, 32], + loc: { + start: { column: 23, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, + + range: [20, 32], + loc: { + start: { column: 20, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, + + range: [0, 32], + loc: { + start: { column: 0, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, + + range: [0, 32], + loc: { + start: { column: 0, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 33], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/2-TSESTree-Tokens.shot new file mode 100644 index 00000000000..b590cfdea64 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/2-TSESTree-Tokens.shot @@ -0,0 +1,116 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression arrow-func-with-parentheses TSESTree - Tokens 1`] = ` +Array [ + Punctuator { + type: "Punctuator", + value: "(", + + range: [0, 1], + loc: { + start: { column: 0, line: 1 }, + end: { column: 1, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "(", + + range: [1, 2], + loc: { + start: { column: 1, line: 1 }, + end: { column: 2, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ")", + + range: [2, 3], + loc: { + start: { column: 2, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "=>", + + range: [4, 6], + loc: { + start: { column: 4, line: 1 }, + end: { column: 6, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "1", + + range: [7, 8], + loc: { + start: { column: 7, line: 1 }, + end: { column: 8, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ")", + + range: [8, 9], + loc: { + start: { column: 8, line: 1 }, + end: { column: 9, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [10, 19], + loc: { + start: { column: 10, line: 1 }, + end: { column: 19, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "(", + + range: [20, 21], + loc: { + start: { column: 20, line: 1 }, + end: { column: 21, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ")", + + range: [21, 22], + loc: { + start: { column: 21, line: 1 }, + end: { column: 22, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "=>", + + range: [23, 25], + loc: { + start: { column: 23, line: 1 }, + end: { column: 25, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "number", + + range: [26, 32], + loc: { + start: { column: 26, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/3-Babel-AST.shot new file mode 100644 index 00000000000..71627f35b04 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/3-Babel-AST.shot @@ -0,0 +1,87 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression arrow-func-with-parentheses Babel - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: ArrowFunctionExpression { + type: "ArrowFunctionExpression", + async: false, + body: Literal { + type: "Literal", + raw: "1", + value: 1, + + range: [7, 8], + loc: { + start: { column: 7, line: 1 }, + end: { column: 8, line: 1 }, + }, + }, + expression: true, + generator: false, + id: null, + params: Array [], + + range: [1, 8], + loc: { + start: { column: 1, line: 1 }, + end: { column: 8, line: 1 }, + }, + }, + typeAnnotation: TSFunctionType { + type: "TSFunctionType", + parameters: Array [], + typeAnnotation: TSTypeAnnotation { + type: "TSTypeAnnotation", + typeAnnotation: TSNumberKeyword { + type: "TSNumberKeyword", + + range: [26, 32], + loc: { + start: { column: 26, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, + + range: [23, 32], + loc: { + start: { column: 23, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, + + range: [20, 32], + loc: { + start: { column: 20, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, + + range: [0, 32], + loc: { + start: { column: 0, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, + + range: [0, 32], + loc: { + start: { column: 0, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 33], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/4-Babel-Tokens.shot new file mode 100644 index 00000000000..58d8821988a --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/4-Babel-Tokens.shot @@ -0,0 +1,116 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression arrow-func-with-parentheses Babel - Tokens 1`] = ` +Array [ + Punctuator { + type: "Punctuator", + value: "(", + + range: [0, 1], + loc: { + start: { column: 0, line: 1 }, + end: { column: 1, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "(", + + range: [1, 2], + loc: { + start: { column: 1, line: 1 }, + end: { column: 2, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ")", + + range: [2, 3], + loc: { + start: { column: 2, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "=>", + + range: [4, 6], + loc: { + start: { column: 4, line: 1 }, + end: { column: 6, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "1", + + range: [7, 8], + loc: { + start: { column: 7, line: 1 }, + end: { column: 8, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ")", + + range: [8, 9], + loc: { + start: { column: 8, line: 1 }, + end: { column: 9, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [10, 19], + loc: { + start: { column: 10, line: 1 }, + end: { column: 19, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "(", + + range: [20, 21], + loc: { + start: { column: 20, line: 1 }, + end: { column: 21, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ")", + + range: [21, 22], + loc: { + start: { column: 21, line: 1 }, + end: { column: 22, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "=>", + + range: [23, 25], + loc: { + start: { column: 23, line: 1 }, + end: { column: 25, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "number", + + range: [26, 32], + loc: { + start: { column: 26, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/5-AST-Alignment-AST.shot new file mode 100644 index 00000000000..b45b591c63d --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/5-AST-Alignment-AST.shot @@ -0,0 +1,93 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression arrow-func-with-parentheses AST Alignment - AST 1`] = ` +"Snapshot Diff: +- TSESTree ++ Babel + + Program { + type: 'Program', + body: Array [ + ExpressionStatement { + type: 'ExpressionStatement', + expression: TSSatisfiesExpression { + type: 'TSSatisfiesExpression', + expression: ArrowFunctionExpression { + type: 'ArrowFunctionExpression', + async: false, + body: Literal { + type: 'Literal', + raw: '1', + value: 1, + + range: [7, 8], + loc: { + start: { column: 7, line: 1 }, + end: { column: 8, line: 1 }, + }, + }, + expression: true, + generator: false, + id: null, + params: Array [], + + range: [1, 8], + loc: { + start: { column: 1, line: 1 }, + end: { column: 8, line: 1 }, + }, + }, + typeAnnotation: TSFunctionType { + type: 'TSFunctionType', +- params: Array [], +- returnType: TSTypeAnnotation { ++ parameters: Array [], ++ typeAnnotation: TSTypeAnnotation { + type: 'TSTypeAnnotation', + typeAnnotation: TSNumberKeyword { + type: 'TSNumberKeyword', + + range: [26, 32], + loc: { + start: { column: 26, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, + + range: [23, 32], + loc: { + start: { column: 23, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, + + range: [20, 32], + loc: { + start: { column: 20, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, + + range: [0, 32], + loc: { + start: { column: 0, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, + + range: [0, 32], + loc: { + start: { column: 0, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, + ], + sourceType: 'script', + + range: [0, 33], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, + }" +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/6-AST-Alignment-Tokens.shot new file mode 100644 index 00000000000..f3d317fb4b7 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/6-AST-Alignment-Tokens.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression arrow-func-with-parentheses AST Alignment - Token 1`] = ` +"Snapshot Diff: +Compared values have no visual difference." +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/fixture.ts b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/fixture.ts new file mode 100644 index 00000000000..65dcd3629bd --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/fixture.ts @@ -0,0 +1 @@ +foo satisfies bar satisfies baz; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/snapshots/1-TSESTree-AST.shot new file mode 100644 index 00000000000..508caf4b944 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/snapshots/1-TSESTree-AST.shot @@ -0,0 +1,91 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression chained-satisfies TSESTree - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: Identifier { + type: "Identifier", + name: "foo", + + range: [0, 3], + loc: { + start: { column: 0, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + typeAnnotation: TSTypeReference { + type: "TSTypeReference", + typeName: Identifier { + type: "Identifier", + name: "bar", + + range: [14, 17], + loc: { + start: { column: 14, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + + range: [14, 17], + loc: { + start: { column: 14, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + + range: [0, 17], + loc: { + start: { column: 0, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + typeAnnotation: TSTypeReference { + type: "TSTypeReference", + typeName: Identifier { + type: "Identifier", + name: "baz", + + range: [28, 31], + loc: { + start: { column: 28, line: 1 }, + end: { column: 31, line: 1 }, + }, + }, + + range: [28, 31], + loc: { + start: { column: 28, line: 1 }, + end: { column: 31, line: 1 }, + }, + }, + + range: [0, 31], + loc: { + start: { column: 0, line: 1 }, + end: { column: 31, line: 1 }, + }, + }, + + range: [0, 32], + loc: { + start: { column: 0, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 33], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/snapshots/2-TSESTree-Tokens.shot new file mode 100644 index 00000000000..dd0ebe5a72f --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/snapshots/2-TSESTree-Tokens.shot @@ -0,0 +1,66 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression chained-satisfies TSESTree - Tokens 1`] = ` +Array [ + Identifier { + type: "Identifier", + value: "foo", + + range: [0, 3], + loc: { + start: { column: 0, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [4, 13], + loc: { + start: { column: 4, line: 1 }, + end: { column: 13, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "bar", + + range: [14, 17], + loc: { + start: { column: 14, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [18, 27], + loc: { + start: { column: 18, line: 1 }, + end: { column: 27, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "baz", + + range: [28, 31], + loc: { + start: { column: 28, line: 1 }, + end: { column: 31, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [31, 32], + loc: { + start: { column: 31, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/snapshots/3-Babel-AST.shot new file mode 100644 index 00000000000..190d8d14fd0 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/snapshots/3-Babel-AST.shot @@ -0,0 +1,91 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression chained-satisfies Babel - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: Identifier { + type: "Identifier", + name: "foo", + + range: [0, 3], + loc: { + start: { column: 0, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + typeAnnotation: TSTypeReference { + type: "TSTypeReference", + typeName: Identifier { + type: "Identifier", + name: "bar", + + range: [14, 17], + loc: { + start: { column: 14, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + + range: [14, 17], + loc: { + start: { column: 14, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + + range: [0, 17], + loc: { + start: { column: 0, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + typeAnnotation: TSTypeReference { + type: "TSTypeReference", + typeName: Identifier { + type: "Identifier", + name: "baz", + + range: [28, 31], + loc: { + start: { column: 28, line: 1 }, + end: { column: 31, line: 1 }, + }, + }, + + range: [28, 31], + loc: { + start: { column: 28, line: 1 }, + end: { column: 31, line: 1 }, + }, + }, + + range: [0, 31], + loc: { + start: { column: 0, line: 1 }, + end: { column: 31, line: 1 }, + }, + }, + + range: [0, 32], + loc: { + start: { column: 0, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 33], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/snapshots/4-Babel-Tokens.shot new file mode 100644 index 00000000000..5afc144ecef --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/snapshots/4-Babel-Tokens.shot @@ -0,0 +1,66 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression chained-satisfies Babel - Tokens 1`] = ` +Array [ + Identifier { + type: "Identifier", + value: "foo", + + range: [0, 3], + loc: { + start: { column: 0, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [4, 13], + loc: { + start: { column: 4, line: 1 }, + end: { column: 13, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "bar", + + range: [14, 17], + loc: { + start: { column: 14, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [18, 27], + loc: { + start: { column: 18, line: 1 }, + end: { column: 27, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "baz", + + range: [28, 31], + loc: { + start: { column: 28, line: 1 }, + end: { column: 31, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [31, 32], + loc: { + start: { column: 31, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/snapshots/5-AST-Alignment-AST.shot new file mode 100644 index 00000000000..0d7d689095e --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/snapshots/5-AST-Alignment-AST.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression chained-satisfies AST Alignment - AST 1`] = ` +"Snapshot Diff: +Compared values have no visual difference." +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/snapshots/6-AST-Alignment-Tokens.shot new file mode 100644 index 00000000000..b7cbaaf6bb8 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/chained-satisfies/snapshots/6-AST-Alignment-Tokens.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression chained-satisfies AST Alignment - Token 1`] = ` +"Snapshot Diff: +Compared values have no visual difference." +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/fixture.ts b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/fixture.ts new file mode 100644 index 00000000000..6ead32331fa --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/fixture.ts @@ -0,0 +1 @@ +foo ? 1 : 0 satisfies number; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/1-TSESTree-AST.shot new file mode 100644 index 00000000000..5674f78acdf --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/1-TSESTree-AST.shot @@ -0,0 +1,84 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression conditional-no-parentheses TSESTree - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: ConditionalExpression { + type: "ConditionalExpression", + alternate: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: Literal { + type: "Literal", + raw: "0", + value: 0, + + range: [10, 11], + loc: { + start: { column: 10, line: 1 }, + end: { column: 11, line: 1 }, + }, + }, + typeAnnotation: TSNumberKeyword { + type: "TSNumberKeyword", + + range: [22, 28], + loc: { + start: { column: 22, line: 1 }, + end: { column: 28, line: 1 }, + }, + }, + + range: [10, 28], + loc: { + start: { column: 10, line: 1 }, + end: { column: 28, line: 1 }, + }, + }, + consequent: Literal { + type: "Literal", + raw: "1", + value: 1, + + range: [6, 7], + loc: { + start: { column: 6, line: 1 }, + end: { column: 7, line: 1 }, + }, + }, + test: Identifier { + type: "Identifier", + name: "foo", + + range: [0, 3], + loc: { + start: { column: 0, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + + range: [0, 28], + loc: { + start: { column: 0, line: 1 }, + end: { column: 28, line: 1 }, + }, + }, + + range: [0, 29], + loc: { + start: { column: 0, line: 1 }, + end: { column: 29, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 30], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/2-TSESTree-Tokens.shot new file mode 100644 index 00000000000..579fa0c0615 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/2-TSESTree-Tokens.shot @@ -0,0 +1,86 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression conditional-no-parentheses TSESTree - Tokens 1`] = ` +Array [ + Identifier { + type: "Identifier", + value: "foo", + + range: [0, 3], + loc: { + start: { column: 0, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "?", + + range: [4, 5], + loc: { + start: { column: 4, line: 1 }, + end: { column: 5, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "1", + + range: [6, 7], + loc: { + start: { column: 6, line: 1 }, + end: { column: 7, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ":", + + range: [8, 9], + loc: { + start: { column: 8, line: 1 }, + end: { column: 9, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "0", + + range: [10, 11], + loc: { + start: { column: 10, line: 1 }, + end: { column: 11, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [12, 21], + loc: { + start: { column: 12, line: 1 }, + end: { column: 21, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "number", + + range: [22, 28], + loc: { + start: { column: 22, line: 1 }, + end: { column: 28, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [28, 29], + loc: { + start: { column: 28, line: 1 }, + end: { column: 29, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/3-Babel-AST.shot new file mode 100644 index 00000000000..9c3ff77da55 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/3-Babel-AST.shot @@ -0,0 +1,84 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression conditional-no-parentheses Babel - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: ConditionalExpression { + type: "ConditionalExpression", + alternate: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: Literal { + type: "Literal", + raw: "0", + value: 0, + + range: [10, 11], + loc: { + start: { column: 10, line: 1 }, + end: { column: 11, line: 1 }, + }, + }, + typeAnnotation: TSNumberKeyword { + type: "TSNumberKeyword", + + range: [22, 28], + loc: { + start: { column: 22, line: 1 }, + end: { column: 28, line: 1 }, + }, + }, + + range: [10, 28], + loc: { + start: { column: 10, line: 1 }, + end: { column: 28, line: 1 }, + }, + }, + consequent: Literal { + type: "Literal", + raw: "1", + value: 1, + + range: [6, 7], + loc: { + start: { column: 6, line: 1 }, + end: { column: 7, line: 1 }, + }, + }, + test: Identifier { + type: "Identifier", + name: "foo", + + range: [0, 3], + loc: { + start: { column: 0, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + + range: [0, 28], + loc: { + start: { column: 0, line: 1 }, + end: { column: 28, line: 1 }, + }, + }, + + range: [0, 29], + loc: { + start: { column: 0, line: 1 }, + end: { column: 29, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 30], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/4-Babel-Tokens.shot new file mode 100644 index 00000000000..d9c69f96e5e --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/4-Babel-Tokens.shot @@ -0,0 +1,86 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression conditional-no-parentheses Babel - Tokens 1`] = ` +Array [ + Identifier { + type: "Identifier", + value: "foo", + + range: [0, 3], + loc: { + start: { column: 0, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "?", + + range: [4, 5], + loc: { + start: { column: 4, line: 1 }, + end: { column: 5, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "1", + + range: [6, 7], + loc: { + start: { column: 6, line: 1 }, + end: { column: 7, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ":", + + range: [8, 9], + loc: { + start: { column: 8, line: 1 }, + end: { column: 9, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "0", + + range: [10, 11], + loc: { + start: { column: 10, line: 1 }, + end: { column: 11, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [12, 21], + loc: { + start: { column: 12, line: 1 }, + end: { column: 21, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "number", + + range: [22, 28], + loc: { + start: { column: 22, line: 1 }, + end: { column: 28, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [28, 29], + loc: { + start: { column: 28, line: 1 }, + end: { column: 29, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/5-AST-Alignment-AST.shot new file mode 100644 index 00000000000..a35b55978ba --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/5-AST-Alignment-AST.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression conditional-no-parentheses AST Alignment - AST 1`] = ` +"Snapshot Diff: +Compared values have no visual difference." +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/6-AST-Alignment-Tokens.shot new file mode 100644 index 00000000000..220450772c1 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/6-AST-Alignment-Tokens.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression conditional-no-parentheses AST Alignment - Token 1`] = ` +"Snapshot Diff: +Compared values have no visual difference." +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/fixture.ts b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/fixture.ts new file mode 100644 index 00000000000..5c71ca2d0e6 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/fixture.ts @@ -0,0 +1 @@ +(foo ? 1 : 0) satisfies number; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/snapshots/1-TSESTree-AST.shot new file mode 100644 index 00000000000..2194d921890 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/snapshots/1-TSESTree-AST.shot @@ -0,0 +1,84 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression conditional-with-parentheses TSESTree - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: ConditionalExpression { + type: "ConditionalExpression", + alternate: Literal { + type: "Literal", + raw: "0", + value: 0, + + range: [11, 12], + loc: { + start: { column: 11, line: 1 }, + end: { column: 12, line: 1 }, + }, + }, + consequent: Literal { + type: "Literal", + raw: "1", + value: 1, + + range: [7, 8], + loc: { + start: { column: 7, line: 1 }, + end: { column: 8, line: 1 }, + }, + }, + test: Identifier { + type: "Identifier", + name: "foo", + + range: [1, 4], + loc: { + start: { column: 1, line: 1 }, + end: { column: 4, line: 1 }, + }, + }, + + range: [1, 12], + loc: { + start: { column: 1, line: 1 }, + end: { column: 12, line: 1 }, + }, + }, + typeAnnotation: TSNumberKeyword { + type: "TSNumberKeyword", + + range: [24, 30], + loc: { + start: { column: 24, line: 1 }, + end: { column: 30, line: 1 }, + }, + }, + + range: [0, 30], + loc: { + start: { column: 0, line: 1 }, + end: { column: 30, line: 1 }, + }, + }, + + range: [0, 31], + loc: { + start: { column: 0, line: 1 }, + end: { column: 31, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 32], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/snapshots/2-TSESTree-Tokens.shot new file mode 100644 index 00000000000..09ed0254895 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/snapshots/2-TSESTree-Tokens.shot @@ -0,0 +1,106 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression conditional-with-parentheses TSESTree - Tokens 1`] = ` +Array [ + Punctuator { + type: "Punctuator", + value: "(", + + range: [0, 1], + loc: { + start: { column: 0, line: 1 }, + end: { column: 1, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "foo", + + range: [1, 4], + loc: { + start: { column: 1, line: 1 }, + end: { column: 4, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "?", + + range: [5, 6], + loc: { + start: { column: 5, line: 1 }, + end: { column: 6, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "1", + + range: [7, 8], + loc: { + start: { column: 7, line: 1 }, + end: { column: 8, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ":", + + range: [9, 10], + loc: { + start: { column: 9, line: 1 }, + end: { column: 10, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "0", + + range: [11, 12], + loc: { + start: { column: 11, line: 1 }, + end: { column: 12, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ")", + + range: [12, 13], + loc: { + start: { column: 12, line: 1 }, + end: { column: 13, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [14, 23], + loc: { + start: { column: 14, line: 1 }, + end: { column: 23, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "number", + + range: [24, 30], + loc: { + start: { column: 24, line: 1 }, + end: { column: 30, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [30, 31], + loc: { + start: { column: 30, line: 1 }, + end: { column: 31, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/snapshots/3-Babel-AST.shot new file mode 100644 index 00000000000..39a9e9951ad --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/snapshots/3-Babel-AST.shot @@ -0,0 +1,84 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression conditional-with-parentheses Babel - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: ConditionalExpression { + type: "ConditionalExpression", + alternate: Literal { + type: "Literal", + raw: "0", + value: 0, + + range: [11, 12], + loc: { + start: { column: 11, line: 1 }, + end: { column: 12, line: 1 }, + }, + }, + consequent: Literal { + type: "Literal", + raw: "1", + value: 1, + + range: [7, 8], + loc: { + start: { column: 7, line: 1 }, + end: { column: 8, line: 1 }, + }, + }, + test: Identifier { + type: "Identifier", + name: "foo", + + range: [1, 4], + loc: { + start: { column: 1, line: 1 }, + end: { column: 4, line: 1 }, + }, + }, + + range: [1, 12], + loc: { + start: { column: 1, line: 1 }, + end: { column: 12, line: 1 }, + }, + }, + typeAnnotation: TSNumberKeyword { + type: "TSNumberKeyword", + + range: [24, 30], + loc: { + start: { column: 24, line: 1 }, + end: { column: 30, line: 1 }, + }, + }, + + range: [0, 30], + loc: { + start: { column: 0, line: 1 }, + end: { column: 30, line: 1 }, + }, + }, + + range: [0, 31], + loc: { + start: { column: 0, line: 1 }, + end: { column: 31, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 32], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/snapshots/4-Babel-Tokens.shot new file mode 100644 index 00000000000..7ca2b46ad24 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/snapshots/4-Babel-Tokens.shot @@ -0,0 +1,106 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression conditional-with-parentheses Babel - Tokens 1`] = ` +Array [ + Punctuator { + type: "Punctuator", + value: "(", + + range: [0, 1], + loc: { + start: { column: 0, line: 1 }, + end: { column: 1, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "foo", + + range: [1, 4], + loc: { + start: { column: 1, line: 1 }, + end: { column: 4, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "?", + + range: [5, 6], + loc: { + start: { column: 5, line: 1 }, + end: { column: 6, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "1", + + range: [7, 8], + loc: { + start: { column: 7, line: 1 }, + end: { column: 8, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ":", + + range: [9, 10], + loc: { + start: { column: 9, line: 1 }, + end: { column: 10, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "0", + + range: [11, 12], + loc: { + start: { column: 11, line: 1 }, + end: { column: 12, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ")", + + range: [12, 13], + loc: { + start: { column: 12, line: 1 }, + end: { column: 13, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [14, 23], + loc: { + start: { column: 14, line: 1 }, + end: { column: 23, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "number", + + range: [24, 30], + loc: { + start: { column: 24, line: 1 }, + end: { column: 30, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [30, 31], + loc: { + start: { column: 30, line: 1 }, + end: { column: 31, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/snapshots/5-AST-Alignment-AST.shot new file mode 100644 index 00000000000..45e35dfc272 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/snapshots/5-AST-Alignment-AST.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression conditional-with-parentheses AST Alignment - AST 1`] = ` +"Snapshot Diff: +Compared values have no visual difference." +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/snapshots/6-AST-Alignment-Tokens.shot new file mode 100644 index 00000000000..36442e7ebdc --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-with-parentheses/snapshots/6-AST-Alignment-Tokens.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression conditional-with-parentheses AST Alignment - Token 1`] = ` +"Snapshot Diff: +Compared values have no visual difference." +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/fixture.ts b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/fixture.ts new file mode 100644 index 00000000000..2ce6678d398 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/fixture.ts @@ -0,0 +1 @@ +foo satisfies boolean; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/snapshots/1-TSESTree-AST.shot new file mode 100644 index 00000000000..7b7bb15a5af --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/snapshots/1-TSESTree-AST.shot @@ -0,0 +1,53 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression identifier-keyword TSESTree - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: Identifier { + type: "Identifier", + name: "foo", + + range: [0, 3], + loc: { + start: { column: 0, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + typeAnnotation: TSBooleanKeyword { + type: "TSBooleanKeyword", + + range: [14, 21], + loc: { + start: { column: 14, line: 1 }, + end: { column: 21, line: 1 }, + }, + }, + + range: [0, 21], + loc: { + start: { column: 0, line: 1 }, + end: { column: 21, line: 1 }, + }, + }, + + range: [0, 22], + loc: { + start: { column: 0, line: 1 }, + end: { column: 22, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 23], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/snapshots/2-TSESTree-Tokens.shot new file mode 100644 index 00000000000..3563bcb2809 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/snapshots/2-TSESTree-Tokens.shot @@ -0,0 +1,46 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression identifier-keyword TSESTree - Tokens 1`] = ` +Array [ + Identifier { + type: "Identifier", + value: "foo", + + range: [0, 3], + loc: { + start: { column: 0, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [4, 13], + loc: { + start: { column: 4, line: 1 }, + end: { column: 13, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "boolean", + + range: [14, 21], + loc: { + start: { column: 14, line: 1 }, + end: { column: 21, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [21, 22], + loc: { + start: { column: 21, line: 1 }, + end: { column: 22, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/snapshots/3-Babel-AST.shot new file mode 100644 index 00000000000..8be9fb16653 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/snapshots/3-Babel-AST.shot @@ -0,0 +1,53 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression identifier-keyword Babel - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: Identifier { + type: "Identifier", + name: "foo", + + range: [0, 3], + loc: { + start: { column: 0, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + typeAnnotation: TSBooleanKeyword { + type: "TSBooleanKeyword", + + range: [14, 21], + loc: { + start: { column: 14, line: 1 }, + end: { column: 21, line: 1 }, + }, + }, + + range: [0, 21], + loc: { + start: { column: 0, line: 1 }, + end: { column: 21, line: 1 }, + }, + }, + + range: [0, 22], + loc: { + start: { column: 0, line: 1 }, + end: { column: 22, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 23], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/snapshots/4-Babel-Tokens.shot new file mode 100644 index 00000000000..2559a7666c6 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/snapshots/4-Babel-Tokens.shot @@ -0,0 +1,46 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression identifier-keyword Babel - Tokens 1`] = ` +Array [ + Identifier { + type: "Identifier", + value: "foo", + + range: [0, 3], + loc: { + start: { column: 0, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [4, 13], + loc: { + start: { column: 4, line: 1 }, + end: { column: 13, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "boolean", + + range: [14, 21], + loc: { + start: { column: 14, line: 1 }, + end: { column: 21, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [21, 22], + loc: { + start: { column: 21, line: 1 }, + end: { column: 22, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/snapshots/5-AST-Alignment-AST.shot new file mode 100644 index 00000000000..c167cbcb46b --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/snapshots/5-AST-Alignment-AST.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression identifier-keyword AST Alignment - AST 1`] = ` +"Snapshot Diff: +Compared values have no visual difference." +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/snapshots/6-AST-Alignment-Tokens.shot new file mode 100644 index 00000000000..7dad93b1da3 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-keyword/snapshots/6-AST-Alignment-Tokens.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression identifier-keyword AST Alignment - Token 1`] = ` +"Snapshot Diff: +Compared values have no visual difference." +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/fixture.ts b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/fixture.ts new file mode 100644 index 00000000000..cdcca67f637 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/fixture.ts @@ -0,0 +1 @@ +foo satisfies { prop: 'value' }; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/snapshots/1-TSESTree-AST.shot new file mode 100644 index 00000000000..6197262c7a0 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/snapshots/1-TSESTree-AST.shot @@ -0,0 +1,104 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression identifier-object-type TSESTree - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: Identifier { + type: "Identifier", + name: "foo", + + range: [0, 3], + loc: { + start: { column: 0, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + typeAnnotation: TSTypeLiteral { + type: "TSTypeLiteral", + members: Array [ + TSPropertySignature { + type: "TSPropertySignature", + computed: false, + key: Identifier { + type: "Identifier", + name: "prop", + + range: [16, 20], + loc: { + start: { column: 16, line: 1 }, + end: { column: 20, line: 1 }, + }, + }, + typeAnnotation: TSTypeAnnotation { + type: "TSTypeAnnotation", + typeAnnotation: TSLiteralType { + type: "TSLiteralType", + literal: Literal { + type: "Literal", + raw: "'value'", + value: "value", + + range: [22, 29], + loc: { + start: { column: 22, line: 1 }, + end: { column: 29, line: 1 }, + }, + }, + + range: [22, 29], + loc: { + start: { column: 22, line: 1 }, + end: { column: 29, line: 1 }, + }, + }, + + range: [20, 29], + loc: { + start: { column: 20, line: 1 }, + end: { column: 29, line: 1 }, + }, + }, + + range: [16, 29], + loc: { + start: { column: 16, line: 1 }, + end: { column: 29, line: 1 }, + }, + }, + ], + + range: [14, 31], + loc: { + start: { column: 14, line: 1 }, + end: { column: 31, line: 1 }, + }, + }, + + range: [0, 31], + loc: { + start: { column: 0, line: 1 }, + end: { column: 31, line: 1 }, + }, + }, + + range: [0, 32], + loc: { + start: { column: 0, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 33], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/snapshots/2-TSESTree-Tokens.shot new file mode 100644 index 00000000000..99673ea1ecf --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/snapshots/2-TSESTree-Tokens.shot @@ -0,0 +1,86 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression identifier-object-type TSESTree - Tokens 1`] = ` +Array [ + Identifier { + type: "Identifier", + value: "foo", + + range: [0, 3], + loc: { + start: { column: 0, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [4, 13], + loc: { + start: { column: 4, line: 1 }, + end: { column: 13, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "{", + + range: [14, 15], + loc: { + start: { column: 14, line: 1 }, + end: { column: 15, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "prop", + + range: [16, 20], + loc: { + start: { column: 16, line: 1 }, + end: { column: 20, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ":", + + range: [20, 21], + loc: { + start: { column: 20, line: 1 }, + end: { column: 21, line: 1 }, + }, + }, + String { + type: "String", + value: "'value'", + + range: [22, 29], + loc: { + start: { column: 22, line: 1 }, + end: { column: 29, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "}", + + range: [30, 31], + loc: { + start: { column: 30, line: 1 }, + end: { column: 31, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [31, 32], + loc: { + start: { column: 31, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/snapshots/3-Babel-AST.shot new file mode 100644 index 00000000000..a2861a34b1f --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/snapshots/3-Babel-AST.shot @@ -0,0 +1,104 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression identifier-object-type Babel - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: Identifier { + type: "Identifier", + name: "foo", + + range: [0, 3], + loc: { + start: { column: 0, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + typeAnnotation: TSTypeLiteral { + type: "TSTypeLiteral", + members: Array [ + TSPropertySignature { + type: "TSPropertySignature", + computed: false, + key: Identifier { + type: "Identifier", + name: "prop", + + range: [16, 20], + loc: { + start: { column: 16, line: 1 }, + end: { column: 20, line: 1 }, + }, + }, + typeAnnotation: TSTypeAnnotation { + type: "TSTypeAnnotation", + typeAnnotation: TSLiteralType { + type: "TSLiteralType", + literal: Literal { + type: "Literal", + raw: "'value'", + value: "value", + + range: [22, 29], + loc: { + start: { column: 22, line: 1 }, + end: { column: 29, line: 1 }, + }, + }, + + range: [22, 29], + loc: { + start: { column: 22, line: 1 }, + end: { column: 29, line: 1 }, + }, + }, + + range: [20, 29], + loc: { + start: { column: 20, line: 1 }, + end: { column: 29, line: 1 }, + }, + }, + + range: [16, 29], + loc: { + start: { column: 16, line: 1 }, + end: { column: 29, line: 1 }, + }, + }, + ], + + range: [14, 31], + loc: { + start: { column: 14, line: 1 }, + end: { column: 31, line: 1 }, + }, + }, + + range: [0, 31], + loc: { + start: { column: 0, line: 1 }, + end: { column: 31, line: 1 }, + }, + }, + + range: [0, 32], + loc: { + start: { column: 0, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 33], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/snapshots/4-Babel-Tokens.shot new file mode 100644 index 00000000000..34926c2bea7 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/snapshots/4-Babel-Tokens.shot @@ -0,0 +1,86 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression identifier-object-type Babel - Tokens 1`] = ` +Array [ + Identifier { + type: "Identifier", + value: "foo", + + range: [0, 3], + loc: { + start: { column: 0, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [4, 13], + loc: { + start: { column: 4, line: 1 }, + end: { column: 13, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "{", + + range: [14, 15], + loc: { + start: { column: 14, line: 1 }, + end: { column: 15, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "prop", + + range: [16, 20], + loc: { + start: { column: 16, line: 1 }, + end: { column: 20, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ":", + + range: [20, 21], + loc: { + start: { column: 20, line: 1 }, + end: { column: 21, line: 1 }, + }, + }, + String { + type: "String", + value: "'value'", + + range: [22, 29], + loc: { + start: { column: 22, line: 1 }, + end: { column: 29, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "}", + + range: [30, 31], + loc: { + start: { column: 30, line: 1 }, + end: { column: 31, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [31, 32], + loc: { + start: { column: 31, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/snapshots/5-AST-Alignment-AST.shot new file mode 100644 index 00000000000..8e025552275 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/snapshots/5-AST-Alignment-AST.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression identifier-object-type AST Alignment - AST 1`] = ` +"Snapshot Diff: +Compared values have no visual difference." +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/snapshots/6-AST-Alignment-Tokens.shot new file mode 100644 index 00000000000..bfb99b63e1c --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-object-type/snapshots/6-AST-Alignment-Tokens.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression identifier-object-type AST Alignment - Token 1`] = ` +"Snapshot Diff: +Compared values have no visual difference." +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/fixture.ts b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/fixture.ts new file mode 100644 index 00000000000..266a2ad0836 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/fixture.ts @@ -0,0 +1 @@ +foo satisfies [1, 2, 3]; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/snapshots/1-TSESTree-AST.shot new file mode 100644 index 00000000000..57c80c5a805 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/snapshots/1-TSESTree-AST.shot @@ -0,0 +1,115 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression identifier-tuple-type TSESTree - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: Identifier { + type: "Identifier", + name: "foo", + + range: [0, 3], + loc: { + start: { column: 0, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + typeAnnotation: TSTupleType { + type: "TSTupleType", + elementTypes: Array [ + TSLiteralType { + type: "TSLiteralType", + literal: Literal { + type: "Literal", + raw: "1", + value: 1, + + range: [15, 16], + loc: { + start: { column: 15, line: 1 }, + end: { column: 16, line: 1 }, + }, + }, + + range: [15, 16], + loc: { + start: { column: 15, line: 1 }, + end: { column: 16, line: 1 }, + }, + }, + TSLiteralType { + type: "TSLiteralType", + literal: Literal { + type: "Literal", + raw: "2", + value: 2, + + range: [18, 19], + loc: { + start: { column: 18, line: 1 }, + end: { column: 19, line: 1 }, + }, + }, + + range: [18, 19], + loc: { + start: { column: 18, line: 1 }, + end: { column: 19, line: 1 }, + }, + }, + TSLiteralType { + type: "TSLiteralType", + literal: Literal { + type: "Literal", + raw: "3", + value: 3, + + range: [21, 22], + loc: { + start: { column: 21, line: 1 }, + end: { column: 22, line: 1 }, + }, + }, + + range: [21, 22], + loc: { + start: { column: 21, line: 1 }, + end: { column: 22, line: 1 }, + }, + }, + ], + + range: [14, 23], + loc: { + start: { column: 14, line: 1 }, + end: { column: 23, line: 1 }, + }, + }, + + range: [0, 23], + loc: { + start: { column: 0, line: 1 }, + end: { column: 23, line: 1 }, + }, + }, + + range: [0, 24], + loc: { + start: { column: 0, line: 1 }, + end: { column: 24, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 25], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/snapshots/2-TSESTree-Tokens.shot new file mode 100644 index 00000000000..07ece3eadee --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/snapshots/2-TSESTree-Tokens.shot @@ -0,0 +1,106 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression identifier-tuple-type TSESTree - Tokens 1`] = ` +Array [ + Identifier { + type: "Identifier", + value: "foo", + + range: [0, 3], + loc: { + start: { column: 0, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [4, 13], + loc: { + start: { column: 4, line: 1 }, + end: { column: 13, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "[", + + range: [14, 15], + loc: { + start: { column: 14, line: 1 }, + end: { column: 15, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "1", + + range: [15, 16], + loc: { + start: { column: 15, line: 1 }, + end: { column: 16, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ",", + + range: [16, 17], + loc: { + start: { column: 16, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "2", + + range: [18, 19], + loc: { + start: { column: 18, line: 1 }, + end: { column: 19, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ",", + + range: [19, 20], + loc: { + start: { column: 19, line: 1 }, + end: { column: 20, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "3", + + range: [21, 22], + loc: { + start: { column: 21, line: 1 }, + end: { column: 22, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "]", + + range: [22, 23], + loc: { + start: { column: 22, line: 1 }, + end: { column: 23, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [23, 24], + loc: { + start: { column: 23, line: 1 }, + end: { column: 24, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/snapshots/3-Babel-AST.shot new file mode 100644 index 00000000000..7201de5d38f --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/snapshots/3-Babel-AST.shot @@ -0,0 +1,115 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression identifier-tuple-type Babel - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: Identifier { + type: "Identifier", + name: "foo", + + range: [0, 3], + loc: { + start: { column: 0, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + typeAnnotation: TSTupleType { + type: "TSTupleType", + elementTypes: Array [ + TSLiteralType { + type: "TSLiteralType", + literal: Literal { + type: "Literal", + raw: "1", + value: 1, + + range: [15, 16], + loc: { + start: { column: 15, line: 1 }, + end: { column: 16, line: 1 }, + }, + }, + + range: [15, 16], + loc: { + start: { column: 15, line: 1 }, + end: { column: 16, line: 1 }, + }, + }, + TSLiteralType { + type: "TSLiteralType", + literal: Literal { + type: "Literal", + raw: "2", + value: 2, + + range: [18, 19], + loc: { + start: { column: 18, line: 1 }, + end: { column: 19, line: 1 }, + }, + }, + + range: [18, 19], + loc: { + start: { column: 18, line: 1 }, + end: { column: 19, line: 1 }, + }, + }, + TSLiteralType { + type: "TSLiteralType", + literal: Literal { + type: "Literal", + raw: "3", + value: 3, + + range: [21, 22], + loc: { + start: { column: 21, line: 1 }, + end: { column: 22, line: 1 }, + }, + }, + + range: [21, 22], + loc: { + start: { column: 21, line: 1 }, + end: { column: 22, line: 1 }, + }, + }, + ], + + range: [14, 23], + loc: { + start: { column: 14, line: 1 }, + end: { column: 23, line: 1 }, + }, + }, + + range: [0, 23], + loc: { + start: { column: 0, line: 1 }, + end: { column: 23, line: 1 }, + }, + }, + + range: [0, 24], + loc: { + start: { column: 0, line: 1 }, + end: { column: 24, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 25], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/snapshots/4-Babel-Tokens.shot new file mode 100644 index 00000000000..8a62c8d0380 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/snapshots/4-Babel-Tokens.shot @@ -0,0 +1,106 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression identifier-tuple-type Babel - Tokens 1`] = ` +Array [ + Identifier { + type: "Identifier", + value: "foo", + + range: [0, 3], + loc: { + start: { column: 0, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [4, 13], + loc: { + start: { column: 4, line: 1 }, + end: { column: 13, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "[", + + range: [14, 15], + loc: { + start: { column: 14, line: 1 }, + end: { column: 15, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "1", + + range: [15, 16], + loc: { + start: { column: 15, line: 1 }, + end: { column: 16, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ",", + + range: [16, 17], + loc: { + start: { column: 16, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "2", + + range: [18, 19], + loc: { + start: { column: 18, line: 1 }, + end: { column: 19, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ",", + + range: [19, 20], + loc: { + start: { column: 19, line: 1 }, + end: { column: 20, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "3", + + range: [21, 22], + loc: { + start: { column: 21, line: 1 }, + end: { column: 22, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "]", + + range: [22, 23], + loc: { + start: { column: 22, line: 1 }, + end: { column: 23, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [23, 24], + loc: { + start: { column: 23, line: 1 }, + end: { column: 24, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/snapshots/5-AST-Alignment-AST.shot new file mode 100644 index 00000000000..eb993d611eb --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/snapshots/5-AST-Alignment-AST.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression identifier-tuple-type AST Alignment - AST 1`] = ` +"Snapshot Diff: +Compared values have no visual difference." +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/snapshots/6-AST-Alignment-Tokens.shot new file mode 100644 index 00000000000..3f0aa9841e8 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/identifier-tuple-type/snapshots/6-AST-Alignment-Tokens.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression identifier-tuple-type AST Alignment - Token 1`] = ` +"Snapshot Diff: +Compared values have no visual difference." +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/fixture.ts b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/fixture.ts new file mode 100644 index 00000000000..09a4c612e30 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/fixture.ts @@ -0,0 +1 @@ +foo === 1 satisfies number; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/1-TSESTree-AST.shot new file mode 100644 index 00000000000..f80151c9032 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/1-TSESTree-AST.shot @@ -0,0 +1,74 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression logical-no-parentheses TSESTree - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: BinaryExpression { + type: "BinaryExpression", + left: Identifier { + type: "Identifier", + name: "foo", + + range: [0, 3], + loc: { + start: { column: 0, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + operator: "===", + right: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: Literal { + type: "Literal", + raw: "1", + value: 1, + + range: [8, 9], + loc: { + start: { column: 8, line: 1 }, + end: { column: 9, line: 1 }, + }, + }, + typeAnnotation: TSNumberKeyword { + type: "TSNumberKeyword", + + range: [20, 26], + loc: { + start: { column: 20, line: 1 }, + end: { column: 26, line: 1 }, + }, + }, + + range: [8, 26], + loc: { + start: { column: 8, line: 1 }, + end: { column: 26, line: 1 }, + }, + }, + + range: [0, 26], + loc: { + start: { column: 0, line: 1 }, + end: { column: 26, line: 1 }, + }, + }, + + range: [0, 27], + loc: { + start: { column: 0, line: 1 }, + end: { column: 27, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 28], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/2-TSESTree-Tokens.shot new file mode 100644 index 00000000000..5391022e27f --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/2-TSESTree-Tokens.shot @@ -0,0 +1,66 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression logical-no-parentheses TSESTree - Tokens 1`] = ` +Array [ + Identifier { + type: "Identifier", + value: "foo", + + range: [0, 3], + loc: { + start: { column: 0, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "===", + + range: [4, 7], + loc: { + start: { column: 4, line: 1 }, + end: { column: 7, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "1", + + range: [8, 9], + loc: { + start: { column: 8, line: 1 }, + end: { column: 9, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [10, 19], + loc: { + start: { column: 10, line: 1 }, + end: { column: 19, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "number", + + range: [20, 26], + loc: { + start: { column: 20, line: 1 }, + end: { column: 26, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [26, 27], + loc: { + start: { column: 26, line: 1 }, + end: { column: 27, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/3-Babel-AST.shot new file mode 100644 index 00000000000..60189a70358 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/3-Babel-AST.shot @@ -0,0 +1,74 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression logical-no-parentheses Babel - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: BinaryExpression { + type: "BinaryExpression", + left: Identifier { + type: "Identifier", + name: "foo", + + range: [0, 3], + loc: { + start: { column: 0, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + operator: "===", + right: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: Literal { + type: "Literal", + raw: "1", + value: 1, + + range: [8, 9], + loc: { + start: { column: 8, line: 1 }, + end: { column: 9, line: 1 }, + }, + }, + typeAnnotation: TSNumberKeyword { + type: "TSNumberKeyword", + + range: [20, 26], + loc: { + start: { column: 20, line: 1 }, + end: { column: 26, line: 1 }, + }, + }, + + range: [8, 26], + loc: { + start: { column: 8, line: 1 }, + end: { column: 26, line: 1 }, + }, + }, + + range: [0, 26], + loc: { + start: { column: 0, line: 1 }, + end: { column: 26, line: 1 }, + }, + }, + + range: [0, 27], + loc: { + start: { column: 0, line: 1 }, + end: { column: 27, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 28], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/4-Babel-Tokens.shot new file mode 100644 index 00000000000..cac159f58dc --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/4-Babel-Tokens.shot @@ -0,0 +1,66 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression logical-no-parentheses Babel - Tokens 1`] = ` +Array [ + Identifier { + type: "Identifier", + value: "foo", + + range: [0, 3], + loc: { + start: { column: 0, line: 1 }, + end: { column: 3, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "===", + + range: [4, 7], + loc: { + start: { column: 4, line: 1 }, + end: { column: 7, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "1", + + range: [8, 9], + loc: { + start: { column: 8, line: 1 }, + end: { column: 9, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [10, 19], + loc: { + start: { column: 10, line: 1 }, + end: { column: 19, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "number", + + range: [20, 26], + loc: { + start: { column: 20, line: 1 }, + end: { column: 26, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [26, 27], + loc: { + start: { column: 26, line: 1 }, + end: { column: 27, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/5-AST-Alignment-AST.shot new file mode 100644 index 00000000000..a21b35204c9 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/5-AST-Alignment-AST.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression logical-no-parentheses AST Alignment - AST 1`] = ` +"Snapshot Diff: +Compared values have no visual difference." +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/6-AST-Alignment-Tokens.shot new file mode 100644 index 00000000000..6a3c807848a --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/6-AST-Alignment-Tokens.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression logical-no-parentheses AST Alignment - Token 1`] = ` +"Snapshot Diff: +Compared values have no visual difference." +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/fixture.ts b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/fixture.ts new file mode 100644 index 00000000000..a93f5746e7c --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/fixture.ts @@ -0,0 +1 @@ +(foo === 1) satisfies boolean; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/snapshots/1-TSESTree-AST.shot new file mode 100644 index 00000000000..4401893b67e --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/snapshots/1-TSESTree-AST.shot @@ -0,0 +1,74 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression logical-with-parentheses TSESTree - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: BinaryExpression { + type: "BinaryExpression", + left: Identifier { + type: "Identifier", + name: "foo", + + range: [1, 4], + loc: { + start: { column: 1, line: 1 }, + end: { column: 4, line: 1 }, + }, + }, + operator: "===", + right: Literal { + type: "Literal", + raw: "1", + value: 1, + + range: [9, 10], + loc: { + start: { column: 9, line: 1 }, + end: { column: 10, line: 1 }, + }, + }, + + range: [1, 10], + loc: { + start: { column: 1, line: 1 }, + end: { column: 10, line: 1 }, + }, + }, + typeAnnotation: TSBooleanKeyword { + type: "TSBooleanKeyword", + + range: [22, 29], + loc: { + start: { column: 22, line: 1 }, + end: { column: 29, line: 1 }, + }, + }, + + range: [0, 29], + loc: { + start: { column: 0, line: 1 }, + end: { column: 29, line: 1 }, + }, + }, + + range: [0, 30], + loc: { + start: { column: 0, line: 1 }, + end: { column: 30, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 31], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/snapshots/2-TSESTree-Tokens.shot new file mode 100644 index 00000000000..7034fce1187 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/snapshots/2-TSESTree-Tokens.shot @@ -0,0 +1,86 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression logical-with-parentheses TSESTree - Tokens 1`] = ` +Array [ + Punctuator { + type: "Punctuator", + value: "(", + + range: [0, 1], + loc: { + start: { column: 0, line: 1 }, + end: { column: 1, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "foo", + + range: [1, 4], + loc: { + start: { column: 1, line: 1 }, + end: { column: 4, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "===", + + range: [5, 8], + loc: { + start: { column: 5, line: 1 }, + end: { column: 8, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "1", + + range: [9, 10], + loc: { + start: { column: 9, line: 1 }, + end: { column: 10, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ")", + + range: [10, 11], + loc: { + start: { column: 10, line: 1 }, + end: { column: 11, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [12, 21], + loc: { + start: { column: 12, line: 1 }, + end: { column: 21, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "boolean", + + range: [22, 29], + loc: { + start: { column: 22, line: 1 }, + end: { column: 29, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [29, 30], + loc: { + start: { column: 29, line: 1 }, + end: { column: 30, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/snapshots/3-Babel-AST.shot new file mode 100644 index 00000000000..fb10fc5442e --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/snapshots/3-Babel-AST.shot @@ -0,0 +1,74 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression logical-with-parentheses Babel - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: BinaryExpression { + type: "BinaryExpression", + left: Identifier { + type: "Identifier", + name: "foo", + + range: [1, 4], + loc: { + start: { column: 1, line: 1 }, + end: { column: 4, line: 1 }, + }, + }, + operator: "===", + right: Literal { + type: "Literal", + raw: "1", + value: 1, + + range: [9, 10], + loc: { + start: { column: 9, line: 1 }, + end: { column: 10, line: 1 }, + }, + }, + + range: [1, 10], + loc: { + start: { column: 1, line: 1 }, + end: { column: 10, line: 1 }, + }, + }, + typeAnnotation: TSBooleanKeyword { + type: "TSBooleanKeyword", + + range: [22, 29], + loc: { + start: { column: 22, line: 1 }, + end: { column: 29, line: 1 }, + }, + }, + + range: [0, 29], + loc: { + start: { column: 0, line: 1 }, + end: { column: 29, line: 1 }, + }, + }, + + range: [0, 30], + loc: { + start: { column: 0, line: 1 }, + end: { column: 30, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 31], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/snapshots/4-Babel-Tokens.shot new file mode 100644 index 00000000000..4c73b5cc818 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/snapshots/4-Babel-Tokens.shot @@ -0,0 +1,86 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression logical-with-parentheses Babel - Tokens 1`] = ` +Array [ + Punctuator { + type: "Punctuator", + value: "(", + + range: [0, 1], + loc: { + start: { column: 0, line: 1 }, + end: { column: 1, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "foo", + + range: [1, 4], + loc: { + start: { column: 1, line: 1 }, + end: { column: 4, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "===", + + range: [5, 8], + loc: { + start: { column: 5, line: 1 }, + end: { column: 8, line: 1 }, + }, + }, + Numeric { + type: "Numeric", + value: "1", + + range: [9, 10], + loc: { + start: { column: 9, line: 1 }, + end: { column: 10, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ")", + + range: [10, 11], + loc: { + start: { column: 10, line: 1 }, + end: { column: 11, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [12, 21], + loc: { + start: { column: 12, line: 1 }, + end: { column: 21, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "boolean", + + range: [22, 29], + loc: { + start: { column: 22, line: 1 }, + end: { column: 29, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [29, 30], + loc: { + start: { column: 29, line: 1 }, + end: { column: 30, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/snapshots/5-AST-Alignment-AST.shot new file mode 100644 index 00000000000..28594822212 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/snapshots/5-AST-Alignment-AST.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression logical-with-parentheses AST Alignment - AST 1`] = ` +"Snapshot Diff: +Compared values have no visual difference." +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/snapshots/6-AST-Alignment-Tokens.shot new file mode 100644 index 00000000000..b6881fd10cf --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-with-parentheses/snapshots/6-AST-Alignment-Tokens.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression logical-with-parentheses AST Alignment - Token 1`] = ` +"Snapshot Diff: +Compared values have no visual difference." +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/fixture.ts b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/fixture.ts new file mode 100644 index 00000000000..ec7b71c8e2b --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/fixture.ts @@ -0,0 +1 @@ +({ prop: 'string' }) satisfies { prop: string }; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/1-TSESTree-AST.shot new file mode 100644 index 00000000000..1ed0e662a99 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/1-TSESTree-AST.shot @@ -0,0 +1,128 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression object-object-inner-parentheses TSESTree - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: ObjectExpression { + type: "ObjectExpression", + properties: Array [ + Property { + type: "Property", + computed: false, + key: Identifier { + type: "Identifier", + name: "prop", + + range: [3, 7], + loc: { + start: { column: 3, line: 1 }, + end: { column: 7, line: 1 }, + }, + }, + kind: "init", + method: false, + shorthand: false, + value: Literal { + type: "Literal", + raw: "'string'", + value: "string", + + range: [9, 17], + loc: { + start: { column: 9, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + + range: [3, 17], + loc: { + start: { column: 3, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + ], + + range: [1, 19], + loc: { + start: { column: 1, line: 1 }, + end: { column: 19, line: 1 }, + }, + }, + typeAnnotation: TSTypeLiteral { + type: "TSTypeLiteral", + members: Array [ + TSPropertySignature { + type: "TSPropertySignature", + computed: false, + key: Identifier { + type: "Identifier", + name: "prop", + + range: [33, 37], + loc: { + start: { column: 33, line: 1 }, + end: { column: 37, line: 1 }, + }, + }, + typeAnnotation: TSTypeAnnotation { + type: "TSTypeAnnotation", + typeAnnotation: TSStringKeyword { + type: "TSStringKeyword", + + range: [39, 45], + loc: { + start: { column: 39, line: 1 }, + end: { column: 45, line: 1 }, + }, + }, + + range: [37, 45], + loc: { + start: { column: 37, line: 1 }, + end: { column: 45, line: 1 }, + }, + }, + + range: [33, 45], + loc: { + start: { column: 33, line: 1 }, + end: { column: 45, line: 1 }, + }, + }, + ], + + range: [31, 47], + loc: { + start: { column: 31, line: 1 }, + end: { column: 47, line: 1 }, + }, + }, + + range: [0, 47], + loc: { + start: { column: 0, line: 1 }, + end: { column: 47, line: 1 }, + }, + }, + + range: [0, 48], + loc: { + start: { column: 0, line: 1 }, + end: { column: 48, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 49], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/2-TSESTree-Tokens.shot new file mode 100644 index 00000000000..99f068a424b --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/2-TSESTree-Tokens.shot @@ -0,0 +1,146 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression object-object-inner-parentheses TSESTree - Tokens 1`] = ` +Array [ + Punctuator { + type: "Punctuator", + value: "(", + + range: [0, 1], + loc: { + start: { column: 0, line: 1 }, + end: { column: 1, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "{", + + range: [1, 2], + loc: { + start: { column: 1, line: 1 }, + end: { column: 2, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "prop", + + range: [3, 7], + loc: { + start: { column: 3, line: 1 }, + end: { column: 7, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ":", + + range: [7, 8], + loc: { + start: { column: 7, line: 1 }, + end: { column: 8, line: 1 }, + }, + }, + String { + type: "String", + value: "'string'", + + range: [9, 17], + loc: { + start: { column: 9, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "}", + + range: [18, 19], + loc: { + start: { column: 18, line: 1 }, + end: { column: 19, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ")", + + range: [19, 20], + loc: { + start: { column: 19, line: 1 }, + end: { column: 20, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [21, 30], + loc: { + start: { column: 21, line: 1 }, + end: { column: 30, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "{", + + range: [31, 32], + loc: { + start: { column: 31, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "prop", + + range: [33, 37], + loc: { + start: { column: 33, line: 1 }, + end: { column: 37, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ":", + + range: [37, 38], + loc: { + start: { column: 37, line: 1 }, + end: { column: 38, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "string", + + range: [39, 45], + loc: { + start: { column: 39, line: 1 }, + end: { column: 45, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "}", + + range: [46, 47], + loc: { + start: { column: 46, line: 1 }, + end: { column: 47, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [47, 48], + loc: { + start: { column: 47, line: 1 }, + end: { column: 48, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/3-Babel-AST.shot new file mode 100644 index 00000000000..c5868aaf0d1 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/3-Babel-AST.shot @@ -0,0 +1,128 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression object-object-inner-parentheses Babel - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: ObjectExpression { + type: "ObjectExpression", + properties: Array [ + Property { + type: "Property", + computed: false, + key: Identifier { + type: "Identifier", + name: "prop", + + range: [3, 7], + loc: { + start: { column: 3, line: 1 }, + end: { column: 7, line: 1 }, + }, + }, + kind: "init", + method: false, + shorthand: false, + value: Literal { + type: "Literal", + raw: "'string'", + value: "string", + + range: [9, 17], + loc: { + start: { column: 9, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + + range: [3, 17], + loc: { + start: { column: 3, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + ], + + range: [1, 19], + loc: { + start: { column: 1, line: 1 }, + end: { column: 19, line: 1 }, + }, + }, + typeAnnotation: TSTypeLiteral { + type: "TSTypeLiteral", + members: Array [ + TSPropertySignature { + type: "TSPropertySignature", + computed: false, + key: Identifier { + type: "Identifier", + name: "prop", + + range: [33, 37], + loc: { + start: { column: 33, line: 1 }, + end: { column: 37, line: 1 }, + }, + }, + typeAnnotation: TSTypeAnnotation { + type: "TSTypeAnnotation", + typeAnnotation: TSStringKeyword { + type: "TSStringKeyword", + + range: [39, 45], + loc: { + start: { column: 39, line: 1 }, + end: { column: 45, line: 1 }, + }, + }, + + range: [37, 45], + loc: { + start: { column: 37, line: 1 }, + end: { column: 45, line: 1 }, + }, + }, + + range: [33, 45], + loc: { + start: { column: 33, line: 1 }, + end: { column: 45, line: 1 }, + }, + }, + ], + + range: [31, 47], + loc: { + start: { column: 31, line: 1 }, + end: { column: 47, line: 1 }, + }, + }, + + range: [0, 47], + loc: { + start: { column: 0, line: 1 }, + end: { column: 47, line: 1 }, + }, + }, + + range: [0, 48], + loc: { + start: { column: 0, line: 1 }, + end: { column: 48, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 49], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/4-Babel-Tokens.shot new file mode 100644 index 00000000000..128fc9c6128 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/4-Babel-Tokens.shot @@ -0,0 +1,146 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression object-object-inner-parentheses Babel - Tokens 1`] = ` +Array [ + Punctuator { + type: "Punctuator", + value: "(", + + range: [0, 1], + loc: { + start: { column: 0, line: 1 }, + end: { column: 1, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "{", + + range: [1, 2], + loc: { + start: { column: 1, line: 1 }, + end: { column: 2, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "prop", + + range: [3, 7], + loc: { + start: { column: 3, line: 1 }, + end: { column: 7, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ":", + + range: [7, 8], + loc: { + start: { column: 7, line: 1 }, + end: { column: 8, line: 1 }, + }, + }, + String { + type: "String", + value: "'string'", + + range: [9, 17], + loc: { + start: { column: 9, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "}", + + range: [18, 19], + loc: { + start: { column: 18, line: 1 }, + end: { column: 19, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ")", + + range: [19, 20], + loc: { + start: { column: 19, line: 1 }, + end: { column: 20, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [21, 30], + loc: { + start: { column: 21, line: 1 }, + end: { column: 30, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "{", + + range: [31, 32], + loc: { + start: { column: 31, line: 1 }, + end: { column: 32, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "prop", + + range: [33, 37], + loc: { + start: { column: 33, line: 1 }, + end: { column: 37, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ":", + + range: [37, 38], + loc: { + start: { column: 37, line: 1 }, + end: { column: 38, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "string", + + range: [39, 45], + loc: { + start: { column: 39, line: 1 }, + end: { column: 45, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "}", + + range: [46, 47], + loc: { + start: { column: 46, line: 1 }, + end: { column: 47, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [47, 48], + loc: { + start: { column: 47, line: 1 }, + end: { column: 48, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/5-AST-Alignment-AST.shot new file mode 100644 index 00000000000..bad308efe92 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/5-AST-Alignment-AST.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression object-object-inner-parentheses AST Alignment - AST 1`] = ` +"Snapshot Diff: +Compared values have no visual difference." +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/6-AST-Alignment-Tokens.shot new file mode 100644 index 00000000000..92a052f3254 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/6-AST-Alignment-Tokens.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression object-object-inner-parentheses AST Alignment - Token 1`] = ` +"Snapshot Diff: +Compared values have no visual difference." +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/fixture.ts b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/fixture.ts new file mode 100644 index 00000000000..b7726f7f140 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/fixture.ts @@ -0,0 +1 @@ +({ prop: 'string' } satisfies { prop: string }); diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/snapshots/1-TSESTree-AST.shot new file mode 100644 index 00000000000..9100755681a --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/snapshots/1-TSESTree-AST.shot @@ -0,0 +1,128 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression object-object-outer-parentheses TSESTree - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: ObjectExpression { + type: "ObjectExpression", + properties: Array [ + Property { + type: "Property", + computed: false, + key: Identifier { + type: "Identifier", + name: "prop", + + range: [3, 7], + loc: { + start: { column: 3, line: 1 }, + end: { column: 7, line: 1 }, + }, + }, + kind: "init", + method: false, + shorthand: false, + value: Literal { + type: "Literal", + raw: "'string'", + value: "string", + + range: [9, 17], + loc: { + start: { column: 9, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + + range: [3, 17], + loc: { + start: { column: 3, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + ], + + range: [1, 19], + loc: { + start: { column: 1, line: 1 }, + end: { column: 19, line: 1 }, + }, + }, + typeAnnotation: TSTypeLiteral { + type: "TSTypeLiteral", + members: Array [ + TSPropertySignature { + type: "TSPropertySignature", + computed: false, + key: Identifier { + type: "Identifier", + name: "prop", + + range: [32, 36], + loc: { + start: { column: 32, line: 1 }, + end: { column: 36, line: 1 }, + }, + }, + typeAnnotation: TSTypeAnnotation { + type: "TSTypeAnnotation", + typeAnnotation: TSStringKeyword { + type: "TSStringKeyword", + + range: [38, 44], + loc: { + start: { column: 38, line: 1 }, + end: { column: 44, line: 1 }, + }, + }, + + range: [36, 44], + loc: { + start: { column: 36, line: 1 }, + end: { column: 44, line: 1 }, + }, + }, + + range: [32, 44], + loc: { + start: { column: 32, line: 1 }, + end: { column: 44, line: 1 }, + }, + }, + ], + + range: [30, 46], + loc: { + start: { column: 30, line: 1 }, + end: { column: 46, line: 1 }, + }, + }, + + range: [1, 46], + loc: { + start: { column: 1, line: 1 }, + end: { column: 46, line: 1 }, + }, + }, + + range: [0, 48], + loc: { + start: { column: 0, line: 1 }, + end: { column: 48, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 49], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/snapshots/2-TSESTree-Tokens.shot new file mode 100644 index 00000000000..388f2790bb0 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/snapshots/2-TSESTree-Tokens.shot @@ -0,0 +1,146 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression object-object-outer-parentheses TSESTree - Tokens 1`] = ` +Array [ + Punctuator { + type: "Punctuator", + value: "(", + + range: [0, 1], + loc: { + start: { column: 0, line: 1 }, + end: { column: 1, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "{", + + range: [1, 2], + loc: { + start: { column: 1, line: 1 }, + end: { column: 2, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "prop", + + range: [3, 7], + loc: { + start: { column: 3, line: 1 }, + end: { column: 7, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ":", + + range: [7, 8], + loc: { + start: { column: 7, line: 1 }, + end: { column: 8, line: 1 }, + }, + }, + String { + type: "String", + value: "'string'", + + range: [9, 17], + loc: { + start: { column: 9, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "}", + + range: [18, 19], + loc: { + start: { column: 18, line: 1 }, + end: { column: 19, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [20, 29], + loc: { + start: { column: 20, line: 1 }, + end: { column: 29, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "{", + + range: [30, 31], + loc: { + start: { column: 30, line: 1 }, + end: { column: 31, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "prop", + + range: [32, 36], + loc: { + start: { column: 32, line: 1 }, + end: { column: 36, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ":", + + range: [36, 37], + loc: { + start: { column: 36, line: 1 }, + end: { column: 37, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "string", + + range: [38, 44], + loc: { + start: { column: 38, line: 1 }, + end: { column: 44, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "}", + + range: [45, 46], + loc: { + start: { column: 45, line: 1 }, + end: { column: 46, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ")", + + range: [46, 47], + loc: { + start: { column: 46, line: 1 }, + end: { column: 47, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [47, 48], + loc: { + start: { column: 47, line: 1 }, + end: { column: 48, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/snapshots/3-Babel-AST.shot new file mode 100644 index 00000000000..16adf4fa64a --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/snapshots/3-Babel-AST.shot @@ -0,0 +1,128 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression object-object-outer-parentheses Babel - AST 1`] = ` +Program { + type: "Program", + body: Array [ + ExpressionStatement { + type: "ExpressionStatement", + expression: TSSatisfiesExpression { + type: "TSSatisfiesExpression", + expression: ObjectExpression { + type: "ObjectExpression", + properties: Array [ + Property { + type: "Property", + computed: false, + key: Identifier { + type: "Identifier", + name: "prop", + + range: [3, 7], + loc: { + start: { column: 3, line: 1 }, + end: { column: 7, line: 1 }, + }, + }, + kind: "init", + method: false, + shorthand: false, + value: Literal { + type: "Literal", + raw: "'string'", + value: "string", + + range: [9, 17], + loc: { + start: { column: 9, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + + range: [3, 17], + loc: { + start: { column: 3, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + ], + + range: [1, 19], + loc: { + start: { column: 1, line: 1 }, + end: { column: 19, line: 1 }, + }, + }, + typeAnnotation: TSTypeLiteral { + type: "TSTypeLiteral", + members: Array [ + TSPropertySignature { + type: "TSPropertySignature", + computed: false, + key: Identifier { + type: "Identifier", + name: "prop", + + range: [32, 36], + loc: { + start: { column: 32, line: 1 }, + end: { column: 36, line: 1 }, + }, + }, + typeAnnotation: TSTypeAnnotation { + type: "TSTypeAnnotation", + typeAnnotation: TSStringKeyword { + type: "TSStringKeyword", + + range: [38, 44], + loc: { + start: { column: 38, line: 1 }, + end: { column: 44, line: 1 }, + }, + }, + + range: [36, 44], + loc: { + start: { column: 36, line: 1 }, + end: { column: 44, line: 1 }, + }, + }, + + range: [32, 44], + loc: { + start: { column: 32, line: 1 }, + end: { column: 44, line: 1 }, + }, + }, + ], + + range: [30, 46], + loc: { + start: { column: 30, line: 1 }, + end: { column: 46, line: 1 }, + }, + }, + + range: [1, 46], + loc: { + start: { column: 1, line: 1 }, + end: { column: 46, line: 1 }, + }, + }, + + range: [0, 48], + loc: { + start: { column: 0, line: 1 }, + end: { column: 48, line: 1 }, + }, + }, + ], + sourceType: "script", + + range: [0, 49], + loc: { + start: { column: 0, line: 1 }, + end: { column: 0, line: 2 }, + }, +} +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/snapshots/4-Babel-Tokens.shot new file mode 100644 index 00000000000..bdca107f453 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/snapshots/4-Babel-Tokens.shot @@ -0,0 +1,146 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression object-object-outer-parentheses Babel - Tokens 1`] = ` +Array [ + Punctuator { + type: "Punctuator", + value: "(", + + range: [0, 1], + loc: { + start: { column: 0, line: 1 }, + end: { column: 1, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "{", + + range: [1, 2], + loc: { + start: { column: 1, line: 1 }, + end: { column: 2, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "prop", + + range: [3, 7], + loc: { + start: { column: 3, line: 1 }, + end: { column: 7, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ":", + + range: [7, 8], + loc: { + start: { column: 7, line: 1 }, + end: { column: 8, line: 1 }, + }, + }, + String { + type: "String", + value: "'string'", + + range: [9, 17], + loc: { + start: { column: 9, line: 1 }, + end: { column: 17, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "}", + + range: [18, 19], + loc: { + start: { column: 18, line: 1 }, + end: { column: 19, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "satisfies", + + range: [20, 29], + loc: { + start: { column: 20, line: 1 }, + end: { column: 29, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "{", + + range: [30, 31], + loc: { + start: { column: 30, line: 1 }, + end: { column: 31, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "prop", + + range: [32, 36], + loc: { + start: { column: 32, line: 1 }, + end: { column: 36, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ":", + + range: [36, 37], + loc: { + start: { column: 36, line: 1 }, + end: { column: 37, line: 1 }, + }, + }, + Identifier { + type: "Identifier", + value: "string", + + range: [38, 44], + loc: { + start: { column: 38, line: 1 }, + end: { column: 44, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: "}", + + range: [45, 46], + loc: { + start: { column: 45, line: 1 }, + end: { column: 46, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ")", + + range: [46, 47], + loc: { + start: { column: 46, line: 1 }, + end: { column: 47, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [47, 48], + loc: { + start: { column: 47, line: 1 }, + end: { column: 48, line: 1 }, + }, + }, +] +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/snapshots/5-AST-Alignment-AST.shot new file mode 100644 index 00000000000..982ccda73a2 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/snapshots/5-AST-Alignment-AST.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression object-object-outer-parentheses AST Alignment - AST 1`] = ` +"Snapshot Diff: +Compared values have no visual difference." +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/snapshots/6-AST-Alignment-Tokens.shot new file mode 100644 index 00000000000..c113b8be7e9 --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-outer-parentheses/snapshots/6-AST-Alignment-Tokens.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression TSSatisfiesExpression object-object-outer-parentheses AST Alignment - Token 1`] = ` +"Snapshot Diff: +Compared values have no visual difference." +`; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/spec.ts b/packages/ast-spec/src/expression/TSSatisfiesExpression/spec.ts new file mode 100644 index 00000000000..1297ade3eba --- /dev/null +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/spec.ts @@ -0,0 +1,10 @@ +import type { AST_NODE_TYPES } from '../../ast-node-types'; +import type { BaseNode } from '../../base/BaseNode'; +import type { Expression } from '../../unions/Expression'; +import type { TypeNode } from '../../unions/TypeNode'; + +export interface TSSatisfiesExpression extends BaseNode { + type: AST_NODE_TYPES.TSSatisfiesExpression; + expression: Expression; + typeAnnotation: TypeNode; +} diff --git a/packages/ast-spec/src/expression/spec.ts b/packages/ast-spec/src/expression/spec.ts index 9ed4a0cc756..f753672d472 100644 --- a/packages/ast-spec/src/expression/spec.ts +++ b/packages/ast-spec/src/expression/spec.ts @@ -23,6 +23,7 @@ export * from './TSAsExpression/spec'; export * from './TSEmptyBodyFunctionExpression/spec'; export * from './TSInstantiationExpression/spec'; export * from './TSNonNullExpression/spec'; +export * from './TSSatisfiesExpression/spec'; export * from './TSTypeAssertion/spec'; export * from './TaggedTemplateExpression/spec'; export * from './TemplateLiteral/spec'; diff --git a/packages/ast-spec/src/unions/Expression.ts b/packages/ast-spec/src/unions/Expression.ts index 36220bc0391..1c0ee899ec3 100644 --- a/packages/ast-spec/src/unions/Expression.ts +++ b/packages/ast-spec/src/unions/Expression.ts @@ -25,6 +25,7 @@ import type { ThisExpression } from '../expression/ThisExpression/spec'; import type { TSAsExpression } from '../expression/TSAsExpression/spec'; import type { TSInstantiationExpression } from '../expression/TSInstantiationExpression/spec'; import type { TSNonNullExpression } from '../expression/TSNonNullExpression/spec'; +import type { TSSatisfiesExpression } from '../expression/TSSatisfiesExpression/spec'; import type { TSTypeAssertion } from '../expression/TSTypeAssertion/spec'; import type { UnaryExpression } from '../expression/UnaryExpression/spec'; import type { UpdateExpression } from '../expression/UpdateExpression/spec'; @@ -72,6 +73,7 @@ export type Expression = | TSAsExpression | TSInstantiationExpression | TSNonNullExpression + | TSSatisfiesExpression | TSTypeAssertion | UnaryExpression | UpdateExpression diff --git a/packages/ast-spec/src/unions/Node.ts b/packages/ast-spec/src/unions/Node.ts index 6505270427b..3656a3d677a 100644 --- a/packages/ast-spec/src/unions/Node.ts +++ b/packages/ast-spec/src/unions/Node.ts @@ -53,6 +53,7 @@ import type { TSAsExpression } from '../expression/TSAsExpression/spec'; import type { TSEmptyBodyFunctionExpression } from '../expression/TSEmptyBodyFunctionExpression/spec'; import type { TSInstantiationExpression } from '../expression/TSInstantiationExpression/spec'; import type { TSNonNullExpression } from '../expression/TSNonNullExpression/spec'; +import type { TSSatisfiesExpression } from '../expression/TSSatisfiesExpression/spec'; import type { TSTypeAssertion } from '../expression/TSTypeAssertion/spec'; import type { UnaryExpression } from '../expression/UnaryExpression/spec'; import type { UpdateExpression } from '../expression/UpdateExpression/spec'; @@ -305,6 +306,7 @@ export type Node = | TSQualifiedName | TSReadonlyKeyword | TSRestType + | TSSatisfiesExpression | TSStaticKeyword | TSStringKeyword | TSSymbolKeyword diff --git a/packages/ast-spec/tests/fixtures-with-differences-ast.shot b/packages/ast-spec/tests/fixtures-with-differences-ast.shot index 9d3e5d88ccc..beff8134d6e 100644 --- a/packages/ast-spec/tests/fixtures-with-differences-ast.shot +++ b/packages/ast-spec/tests/fixtures-with-differences-ast.shot @@ -24,5 +24,6 @@ Set { "declaration/TSInterfaceDeclaration/fixtures/type-param-one/fixture.ts", "declaration/TSTypeAliasDeclaration/fixtures/type-param-many/fixture.ts", "declaration/TSTypeAliasDeclaration/fixtures/type-param-one/fixture.ts", + "expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/fixture.ts", } `; diff --git a/packages/typescript-estree/src/convert.ts b/packages/typescript-estree/src/convert.ts index 30c33050d42..ca53cc45a44 100644 --- a/packages/typescript-estree/src/convert.ts +++ b/packages/typescript-estree/src/convert.ts @@ -2954,6 +2954,14 @@ export class Converter { }); } + case SyntaxKind.SatisfiesExpression: { + return this.createNode(node, { + type: AST_NODE_TYPES.TSSatisfiesExpression, + expression: this.convertChild(node.expression), + typeAnnotation: this.convertChild(node.type), + }); + } + default: return this.deeplyCopy(node); } diff --git a/packages/typescript-estree/src/ts-estree/estree-to-ts-node-types.ts b/packages/typescript-estree/src/ts-estree/estree-to-ts-node-types.ts index 3b80ab0a958..12ff9392cb0 100644 --- a/packages/typescript-estree/src/ts-estree/estree-to-ts-node-types.ts +++ b/packages/typescript-estree/src/ts-estree/estree-to-ts-node-types.ts @@ -185,6 +185,7 @@ export interface EstreeToTsNodeTypes { [AST_NODE_TYPES.TSInterfaceHeritage]: ts.ExpressionWithTypeArguments; [AST_NODE_TYPES.TSIntersectionType]: ts.IntersectionTypeNode; [AST_NODE_TYPES.TSInstantiationExpression]: ts.ExpressionWithTypeArguments; + [AST_NODE_TYPES.TSSatisfiesExpression]: ts.SatisfiesExpression; [AST_NODE_TYPES.TSLiteralType]: ts.LiteralTypeNode; [AST_NODE_TYPES.TSMappedType]: ts.MappedTypeNode; [AST_NODE_TYPES.TSMethodSignature]: diff --git a/packages/typescript-estree/src/ts-estree/ts-nodes.ts b/packages/typescript-estree/src/ts-estree/ts-nodes.ts index 28c30ea8bc3..873f98e5a15 100644 --- a/packages/typescript-estree/src/ts-estree/ts-nodes.ts +++ b/packages/typescript-estree/src/ts-estree/ts-nodes.ts @@ -180,6 +180,7 @@ export type TSNode = | ts.UnparsedSource | ts.JsonMinusNumericLiteral | ts.TemplateLiteralTypeNode + | ts.SatisfiesExpression // JSDoc: Unsupported | ts.JSDoc diff --git a/packages/typescript-estree/tests/ast-alignment/fixtures-to-test.ts b/packages/typescript-estree/tests/ast-alignment/fixtures-to-test.ts index 6abab590b77..9c4d8a44bcc 100644 --- a/packages/typescript-estree/tests/ast-alignment/fixtures-to-test.ts +++ b/packages/typescript-estree/tests/ast-alignment/fixtures-to-test.ts @@ -477,6 +477,11 @@ tester.addFixturePatternConfig('typescript/expressions', { * @see https://github.com/babel/babel/issues/14613 */ 'instantiation-expression', + /** + * TS 4.9 `satisfies` operator has not been implemented in Babel yet. + * @see https://github.com/babel/babel/pull/14211 + */ + 'satisfies-expression', ], }); diff --git a/packages/visitor-keys/src/visitor-keys.ts b/packages/visitor-keys/src/visitor-keys.ts index a1898e92246..cb3e614df53 100644 --- a/packages/visitor-keys/src/visitor-keys.ts +++ b/packages/visitor-keys/src/visitor-keys.ts @@ -127,6 +127,7 @@ const additionalKeys: AdditionalKeys = { TSQualifiedName: ['left', 'right'], TSReadonlyKeyword: [], TSRestType: ['typeAnnotation'], + TSSatisfiesExpression: ['typeAnnotation', 'expression'], TSStaticKeyword: [], TSStringKeyword: [], TSSymbolKeyword: [], diff --git a/yarn.lock b/yarn.lock index 07d19a8fc38..fd624953978 100644 --- a/yarn.lock +++ b/yarn.lock @@ -153,7 +153,7 @@ dependencies: axe-core "^4.4.3" -"@babel/code-frame@*", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.8.3": +"@babel/code-frame@*", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.8.3": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== @@ -165,6 +165,11 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.3.tgz#707b939793f867f5a73b2666e6d9a3396eb03151" integrity sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw== +"@babel/compat-data@^7.20.0": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.1.tgz#f2e6ef7790d8c8dbf03d379502dcc246dcce0b30" + integrity sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ== + "@babel/core@*", "@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.15.5", "@babel/core@^7.18.6": version "7.19.3" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.3.tgz#2519f62a51458f43b682d61583c3810e7dcee64c" @@ -208,7 +213,28 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/eslint-parser@*", "@babel/eslint-parser@^7.18.2": +"@babel/core@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.2.tgz#8dc9b1620a673f92d3624bd926dc49a52cf25b92" + integrity sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.20.2" + "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-module-transforms" "^7.20.2" + "@babel/helpers" "^7.20.1" + "@babel/parser" "^7.20.2" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.2" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + +"@babel/eslint-parser@*", "@babel/eslint-parser@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz#4f68f6b0825489e00a24b41b6a1ae35414ecd2f4" integrity sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ== @@ -226,6 +252,15 @@ "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" +"@babel/generator@^7.20.1", "@babel/generator@^7.20.2": + version "7.20.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.4.tgz#4d9f8f0c30be75fd90a0562099a26e5839602ab8" + integrity sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA== + dependencies: + "@babel/types" "^7.20.2" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" @@ -251,6 +286,16 @@ browserslist "^4.21.3" semver "^6.3.0" +"@babel/helper-compilation-targets@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a" + integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ== + dependencies: + "@babel/compat-data" "^7.20.0" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.21.3" + semver "^6.3.0" + "@babel/helper-create-class-features-plugin@^7.18.6": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz#d802ee16a64a9e824fcbf0a2ffc92f19d58550ce" @@ -339,6 +384,20 @@ "@babel/traverse" "^7.19.0" "@babel/types" "^7.19.0" +"@babel/helper-module-transforms@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712" + integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.2" + "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" @@ -384,6 +443,13 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-simple-access@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" + integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== + dependencies: + "@babel/types" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz#778d87b3a758d90b471e7b9918f34a9a02eb5818" @@ -403,6 +469,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== +"@babel/helper-string-parser@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" + integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== + "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" @@ -432,6 +503,15 @@ "@babel/traverse" "^7.19.0" "@babel/types" "^7.19.0" +"@babel/helpers@^7.20.1": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.1.tgz#2ab7a0fcb0a03b5bf76629196ed63c2d7311f4c9" + integrity sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg== + dependencies: + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.0" + "@babel/highlight@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" @@ -441,11 +521,16 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@*", "@babel/parser@^7.1.0", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.18.0", "@babel/parser@^7.18.10", "@babel/parser@^7.18.8", "@babel/parser@^7.19.3": +"@babel/parser@*", "@babel/parser@^7.1.0", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.18.8", "@babel/parser@^7.19.3": version "7.19.3" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.3.tgz#8dd36d17c53ff347f9e55c328710321b49479a9a" integrity sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ== +"@babel/parser@^7.20.1", "@babel/parser@^7.20.2", "@babel/parser@^7.20.3": + version "7.20.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.3.tgz#5358cf62e380cf69efcb87a7bb922ff88bfac6e2" + integrity sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" @@ -1207,7 +1292,23 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.7", "@babel/types@^7.15.6", "@babel/types@^7.18.10", "@babel/types@^7.18.2", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.3", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/traverse@^7.20.1": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.1.tgz#9b15ccbf882f6d107eeeecf263fbcdd208777ec8" + integrity sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.20.1" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.20.1" + "@babel/types" "^7.20.0" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.12.7", "@babel/types@^7.15.6", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.3", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.19.3" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.3.tgz#fc420e6bbe54880bce6779ffaf315f5e43ec9624" integrity sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw== @@ -1216,6 +1317,15 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" +"@babel/types@^7.20.0", "@babel/types@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.2.tgz#67ac09266606190f496322dbaff360fdaa5e7842" + integrity sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog== + dependencies: + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" + to-fast-properties "^2.0.0" + "@bcherny/json-schema-ref-parser@9.0.9": version "9.0.9" resolved "https://registry.yarnpkg.com/@bcherny/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz#09899d405bc708c0acac0066ae8db5b94d465ca4" From bf6c54299d233990ed33b7cefb54811f396aee49 Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Fri, 18 Nov 2022 16:11:05 +1030 Subject: [PATCH 124/193] chore: add back dropped comment from bad merge --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index e13d754021e..0f7046a8aed 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "resolutions": { "typescript": "~4.9.3", "@types/node": "^18.11.9", - "//": "Stub out unnecessary swc packages to improve install size and speed", + "//": "Pin jest to v29 across the repo", "@jest/create-cache-key-function": "^29", "@jest/reporters": "^29", "@jest/test-result": "^29", @@ -122,6 +122,7 @@ "jest-snapshot": "^29", "jest-util": "^29", "pretty-format": "^29", + "//": "Stub out unnecessary swc packages to improve install size and speed", "@swc/core-android-arm-eabi": "npm:dummypkg-a@1.0.0", "@swc/core-android-arm64": "npm:dummypkg-a@1.0.0", "@swc/core-freebsd-x64": "npm:dummypkg-a@1.0.0", From 4d34f5d087b150b5a69346fccaf503af6b3bdaea Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Fri, 18 Nov 2022 00:58:04 -0500 Subject: [PATCH 125/193] docs(website): pruning flow for issues and PRs (#6002) --- .github/replies.yml | 9 ++++++ docs/maintenance/ISSUES.md | 14 ++++++++-- docs/maintenance/PULL_REQUESTS.md | 34 +++++++++++++++++++++++ packages/website/sidebars/sidebar.base.js | 1 + 4 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 docs/maintenance/PULL_REQUESTS.md diff --git a/.github/replies.yml b/.github/replies.yml index 64f02ca54ed..3edf22c3ca1 100644 --- a/.github/replies.yml +++ b/.github/replies.yml @@ -1,4 +1,7 @@ replies: + - body: | + 👋 Hey @{{ author }}! Just checking in, is this still something you have time for? No worries if not - I just don't want to leave it hanging. + name: Checking In - body: | Thanks for posting! This is a duplicate of #. Before filing an issue, please [use our issue search](https://github.com/typescript-eslint/typescript-eslint/issues) to check for open and closed issues that already address what you're looking for. name: Clearly Duplicate Issue @@ -52,6 +55,12 @@ replies: If this issue is important to you — consider being that champion. If not — please use the subscribe function and wait patiently for someone else to implement this. name: Progress - Nice + - body: | + Closing this issue as it's been stale for ~6 weeks without activity. Feel free to reopen @{{ author }} if you have time - but no worries if not! If anybody wants to drive it forward, please do either post here or in a new issue with the info we asked about. Thanks! 😊 + name: Pruning Stale Issue + - body: | + Closing this PR as it's been stale for ~6 weeks without activity. Feel free to reopen @{{ author }} if you have time - but no worries if not! If anybody wants to drive it forward, please do post your own PR - and if you use this as a start, consider adding `Co-authored-by: @{{ author }}` at the end of your PR description. Thanks! 😊 + name: Pruning Stale PR - body: | As per [our contributing guidelines](https://github.com/typescript-eslint/typescript-eslint/blob/master/CONTRIBUTING.md#addressing-feedback-and-beyond) this PR is in the queue of PRs to reviewed, and will be reviewed when we are able. \ diff --git a/docs/maintenance/ISSUES.md b/docs/maintenance/ISSUES.md index 55d1cee6e62..3b73d5af1a2 100644 --- a/docs/maintenance/ISSUES.md +++ b/docs/maintenance/ISSUES.md @@ -1,7 +1,7 @@ --- id: issues -sidebar_label: Issue Management -title: Issue Management +sidebar_label: Issues +title: Issues --- This document serves as a guide for how you might manage issues, also known as issue triaging. @@ -101,3 +101,13 @@ TODO: This will be filled out... soon! ### 🚀 New Rules TODO: This will be filled out... soon! + +## Pruning Old Issues + +Every so often, we like to [search for open issues `awaiting response`](https://github.com/typescript-eslint/typescript-eslint/issues?q=is%3Aopen+is%3Aissue+label%3A%22awaiting+response%22) to find ones that might have been forgotten. +Our flow for issues that have been waiting for >=1 month is: + +1. Ping the author with a message like the _Checking In_ template +2. Add the `stale` label to the issue +3. Wait 2 weeks +4. If they still haven't responded, close the issue with a message like the _Pruning Stale Issue_ template diff --git a/docs/maintenance/PULL_REQUESTS.md b/docs/maintenance/PULL_REQUESTS.md new file mode 100644 index 00000000000..37c6b40256c --- /dev/null +++ b/docs/maintenance/PULL_REQUESTS.md @@ -0,0 +1,34 @@ +--- +id: pull-requests +title: Pull Requests +--- + +This document serves as a guide for how you might review pull requests. + +Use your best judgement when reviewing PRs, and most of all remember to be **kind, friendly, and encouraging** when responding to users. +Many users are new to open source and/or typed linting. +It's imperative we give them a positive, uplifting experience. + +:::tip +If you're ever unsure on any part of PR reviews, don't hesitate to loop in a maintainer that has more context to help! +::: + +## PR Flow + +:::note +We include a set of common responses to PRs in [`.github/replies.yml`](https://github.com/typescript-eslint/typescript-eslint/blob/main/.github/replies.yml), intended to be used with the [Refined Saved Replies](https://github.com/JoshuaKGoldberg/refined-saved-replies) extension. +Don't treat these as exact responses you must use: they're just a starting copy+paste helper. +Please do adopt your specific responses to your personal tone and to match the thread for non-straightforward PRs. +::: + +TODO: This will be filled out... soon! + +## Pruning Old PRs + +Every so often, we like to [search for open PRs `awaiting response`](https://github.com/typescript-eslint/typescript-eslint/pulls?q=is%3Aopen+is%3Apr+label%3A%22awaiting+response%22) to find ones that might have been forgotten. +Our flow for PRs that have been waiting for >=1 month is: + +1. Ping the author with a message like the _Checking In_ template +2. Add the `stale` label to the PR +3. Wait 2 weeks +4. If they still haven't responded, close the PR with a message like the _Pruning Stale PR_ template diff --git a/packages/website/sidebars/sidebar.base.js b/packages/website/sidebars/sidebar.base.js index fbdc1f28e6b..81b219c541c 100644 --- a/packages/website/sidebars/sidebar.base.js +++ b/packages/website/sidebars/sidebar.base.js @@ -56,6 +56,7 @@ module.exports = { collapsible: false, items: [ 'maintenance/issues', + 'maintenance/pull-requests', 'maintenance/releases', 'maintenance/versioning', ], From 7a1070759cd3cb967fa0b668863e51ae2bfcd3d0 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Fri, 18 Nov 2022 00:59:28 -0500 Subject: [PATCH 126/193] chore: add discussion template for RFCs (#6023) --- .github/DISCUSSION_TEMPLATE/rfcs.yml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 .github/DISCUSSION_TEMPLATE/rfcs.yml diff --git a/.github/DISCUSSION_TEMPLATE/rfcs.yml b/.github/DISCUSSION_TEMPLATE/rfcs.yml new file mode 100644 index 00000000000..0e0b99abf05 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/rfcs.yml @@ -0,0 +1,24 @@ +body: + - attributes: + label: RFC + value: | + Suggested changes... + id: rfc + type: textarea + - attributes: + label: Additional Info + value: | + Any additional info... + id: additional + type: textarea + - attributes: + label: Before you submit your RFC, please confirm the following. If any of these required steps are not taken, we may not be able to review your RFC. Help us to help you! + options: + - label: I have [searched for related discussions](https://github.com/typescript-eslint/typescript-eslint/discussions) and [searched for related issues](https://github.com/typescript-eslint/typescript-eslint/issues) and found none that match my proposal. + required: true + - label: I have [read the FAQ](https://typescript-eslint.io/docs/linting/troubleshooting) and my problem is not listed. + required: true + id: required-checks + type: checkboxes +labels: ['rfc'] +title: Your Title Here From a4f85b8cfe38ba8ea2a2ac4a56d9b11a81a8a15a Mon Sep 17 00:00:00 2001 From: YeonJuan Date: Sat, 19 Nov 2022 02:02:06 +0900 Subject: [PATCH 127/193] fix(eslint-plugin): [no-empty-interface] disable autofix for declaration merging with class (#5920) * fix(eslint-plugin): [no-empty-interface] disable autofix for declaration merging with class * fix comment * fix lint * Apply review --- .../src/rules/no-empty-interface.ts | 31 ++++--- .../tests/rules/no-empty-interface.test.ts | 88 +++++++++++++++++++ 2 files changed, 109 insertions(+), 10 deletions(-) diff --git a/packages/eslint-plugin/src/rules/no-empty-interface.ts b/packages/eslint-plugin/src/rules/no-empty-interface.ts index 4e037e9cc8a..d74034114bb 100644 --- a/packages/eslint-plugin/src/rules/no-empty-interface.ts +++ b/packages/eslint-plugin/src/rules/no-empty-interface.ts @@ -1,4 +1,5 @@ import type { TSESLint } from '@typescript-eslint/utils'; +import { AST_NODE_TYPES } from '@typescript-eslint/utils'; import * as util from '../util'; @@ -73,29 +74,39 @@ export default util.createRule({ )}${typeParam} = ${sourceCode.getText(extend[0])}`, ); }; + const scope = context.getScope(); - // Check if interface is within ambient declaration - let useAutoFix = true; - if (util.isDefinitionFile(filename)) { - const scope = context.getScope(); - if (scope.type === 'tsModule' && scope.block.declare) { - useAutoFix = false; - } - } + const mergedWithClassDeclaration = scope.set + .get(node.id.name) + ?.defs?.some( + def => def.node.type === AST_NODE_TYPES.ClassDeclaration, + ); + + const isInAmbientDeclaration = !!( + util.isDefinitionFile(filename) && + scope.type === 'tsModule' && + scope.block.declare + ); + + const useAutoFix = !( + isInAmbientDeclaration || mergedWithClassDeclaration + ); context.report({ node: node.id, messageId: 'noEmptyWithSuper', ...(useAutoFix ? { fix } - : { + : !mergedWithClassDeclaration + ? { suggest: [ { messageId: 'noEmptyWithSuper', fix, }, ], - }), + } + : null), }); } } diff --git a/packages/eslint-plugin/tests/rules/no-empty-interface.test.ts b/packages/eslint-plugin/tests/rules/no-empty-interface.test.ts index 0d7f73342b5..893deaf01d6 100644 --- a/packages/eslint-plugin/tests/rules/no-empty-interface.test.ts +++ b/packages/eslint-plugin/tests/rules/no-empty-interface.test.ts @@ -34,6 +34,18 @@ interface Bar extends Foo {} `, options: [{ allowSingleExtends: true }], }, + { + code: ` +interface Foo { + props: string; +} + +interface Bar extends Foo {} + +class Bar {} + `, + options: [{ allowSingleExtends: true }], + }, ], invalid: [ { @@ -58,6 +70,82 @@ interface Bar extends Foo {} }, { code: ` +interface Foo { + props: string; +} + +interface Bar extends Foo {} + +class Baz {} + `, + output: ` +interface Foo { + props: string; +} + +type Bar = Foo + +class Baz {} + `, + options: [{ allowSingleExtends: false }], + errors: [ + { + messageId: 'noEmptyWithSuper', + line: 6, + column: 11, + }, + ], + }, + { + code: ` +interface Foo { + props: string; +} + +interface Bar extends Foo {} + +class Bar {} + `, + options: [{ allowSingleExtends: false }], + errors: [ + { + messageId: 'noEmptyWithSuper', + line: 6, + column: 11, + }, + ], + output: null, + }, + { + code: ` +interface Foo { + props: string; +} + +interface Bar extends Foo {} + +const bar = class Bar {}; + `, + output: ` +interface Foo { + props: string; +} + +type Bar = Foo + +const bar = class Bar {}; + `, + options: [{ allowSingleExtends: false }], + errors: [ + { + messageId: 'noEmptyWithSuper', + line: 6, + column: 11, + }, + ], + }, + { + code: ` interface Foo { name: string; } From fa862dc6eb27d969fd6c772addb03e574405719d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 20 Nov 2022 08:52:54 +0000 Subject: [PATCH 128/193] chore(deps): update dependency jest-specific-snapshot to v6 (#6042) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Brad Zacher --- package.json | 2 +- .../tests/ast-alignment/parse.ts | 1 - yarn.lock | 162 +++--------------- 3 files changed, 27 insertions(+), 138 deletions(-) diff --git a/package.json b/package.json index 0f7046a8aed..aa76fc54295 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "jest": "^29.0.3", "jest-diff": "^29.0.3", "jest-snapshot": "^29.0.3", - "jest-specific-snapshot": "^5.0.0", + "jest-specific-snapshot": "^6.0.0", "lerna": "6.0.3", "lint-staged": "^13.0.0", "make-dir": "^3.1.0", diff --git a/packages/typescript-estree/tests/ast-alignment/parse.ts b/packages/typescript-estree/tests/ast-alignment/parse.ts index ee3b3066cce..b4d5ea1c8f9 100644 --- a/packages/typescript-estree/tests/ast-alignment/parse.ts +++ b/packages/typescript-estree/tests/ast-alignment/parse.ts @@ -29,7 +29,6 @@ function parseWithBabelParser(text: string, jsx = true): File { [ 'estree', { - // @ts-expect-error -- this isn't exposed in the types yet classFeatures: true, }, ], diff --git a/yarn.lock b/yarn.lock index fd624953978..f771e6ece9f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -160,31 +160,26 @@ dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.3": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.3.tgz#707b939793f867f5a73b2666e6d9a3396eb03151" - integrity sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw== - -"@babel/compat-data@^7.20.0": +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.3", "@babel/compat-data@^7.20.0": version "7.20.1" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.1.tgz#f2e6ef7790d8c8dbf03d379502dcc246dcce0b30" integrity sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ== -"@babel/core@*", "@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.15.5", "@babel/core@^7.18.6": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.3.tgz#2519f62a51458f43b682d61583c3810e7dcee64c" - integrity sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ== +"@babel/core@*", "@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.15.5", "@babel/core@^7.18.6", "@babel/core@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.2.tgz#8dc9b1620a673f92d3624bd926dc49a52cf25b92" + integrity sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.3" - "@babel/helper-compilation-targets" "^7.19.3" - "@babel/helper-module-transforms" "^7.19.0" - "@babel/helpers" "^7.19.0" - "@babel/parser" "^7.19.3" + "@babel/generator" "^7.20.2" + "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-module-transforms" "^7.20.2" + "@babel/helpers" "^7.20.1" + "@babel/parser" "^7.20.2" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.3" - "@babel/types" "^7.19.3" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.2" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -213,27 +208,6 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.2.tgz#8dc9b1620a673f92d3624bd926dc49a52cf25b92" - integrity sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.2" - "@babel/helper-compilation-targets" "^7.20.0" - "@babel/helper-module-transforms" "^7.20.2" - "@babel/helpers" "^7.20.1" - "@babel/parser" "^7.20.2" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.1" - "@babel/types" "^7.20.2" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" - "@babel/eslint-parser@*", "@babel/eslint-parser@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz#4f68f6b0825489e00a24b41b6a1ae35414ecd2f4" @@ -243,16 +217,7 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.0" -"@babel/generator@^7.12.5", "@babel/generator@^7.18.7", "@babel/generator@^7.19.3", "@babel/generator@^7.7.2": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.3.tgz#d7f4d1300485b4547cb6f94b27d10d237b42bf59" - integrity sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ== - dependencies: - "@babel/types" "^7.19.3" - "@jridgewell/gen-mapping" "^0.3.2" - jsesc "^2.5.1" - -"@babel/generator@^7.20.1", "@babel/generator@^7.20.2": +"@babel/generator@^7.12.5", "@babel/generator@^7.18.7", "@babel/generator@^7.20.1", "@babel/generator@^7.20.2", "@babel/generator@^7.7.2": version "7.20.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.4.tgz#4d9f8f0c30be75fd90a0562099a26e5839602ab8" integrity sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA== @@ -276,17 +241,7 @@ "@babel/helper-explode-assignable-expression" "^7.18.6" "@babel/types" "^7.18.9" -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0", "@babel/helper-compilation-targets@^7.19.3": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz#a10a04588125675d7c7ae299af86fa1b2ee038ca" - integrity sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg== - dependencies: - "@babel/compat-data" "^7.19.3" - "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.21.3" - semver "^6.3.0" - -"@babel/helper-compilation-targets@^7.20.0": +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0", "@babel/helper-compilation-targets@^7.19.3", "@babel/helper-compilation-targets@^7.20.0": version "7.20.0" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a" integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ== @@ -370,21 +325,7 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz#309b230f04e22c58c6a2c0c0c7e50b216d350c30" - integrity sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.18.6" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" - -"@babel/helper-module-transforms@^7.20.2": +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.0", "@babel/helper-module-transforms@^7.20.2": version "7.20.2" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712" integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA== @@ -436,14 +377,7 @@ "@babel/traverse" "^7.18.9" "@babel/types" "^7.18.9" -"@babel/helper-simple-access@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz#d6d8f51f4ac2978068df934b569f08f29788c7ea" - integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-simple-access@^7.20.2": +"@babel/helper-simple-access@^7.18.6", "@babel/helper-simple-access@^7.20.2": version "7.20.2" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== @@ -464,11 +398,6 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-string-parser@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" - integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== - "@babel/helper-string-parser@^7.19.4": version "7.19.4" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" @@ -494,16 +423,7 @@ "@babel/traverse" "^7.18.9" "@babel/types" "^7.18.9" -"@babel/helpers@^7.12.5", "@babel/helpers@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.19.0.tgz#f30534657faf246ae96551d88dd31e9d1fa1fc18" - integrity sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg== - dependencies: - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" - -"@babel/helpers@^7.20.1": +"@babel/helpers@^7.12.5", "@babel/helpers@^7.20.1": version "7.20.1" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.1.tgz#2ab7a0fcb0a03b5bf76629196ed63c2d7311f4c9" integrity sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg== @@ -521,12 +441,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@*", "@babel/parser@^7.1.0", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.18.8", "@babel/parser@^7.19.3": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.3.tgz#8dd36d17c53ff347f9e55c328710321b49479a9a" - integrity sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ== - -"@babel/parser@^7.20.1", "@babel/parser@^7.20.2", "@babel/parser@^7.20.3": +"@babel/parser@*", "@babel/parser@^7.1.0", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.18.8", "@babel/parser@^7.20.1", "@babel/parser@^7.20.2", "@babel/parser@^7.20.3": version "7.20.3" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.3.tgz#5358cf62e380cf69efcb87a7bb922ff88bfac6e2" integrity sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg== @@ -1276,23 +1191,7 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.12.9", "@babel/traverse@^7.18.8", "@babel/traverse@^7.18.9", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.3", "@babel/traverse@^7.7.2": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.3.tgz#3a3c5348d4988ba60884e8494b0592b2f15a04b4" - integrity sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.3" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.19.3" - "@babel/types" "^7.19.3" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.20.1": +"@babel/traverse@^7.12.9", "@babel/traverse@^7.18.8", "@babel/traverse@^7.18.9", "@babel/traverse@^7.20.1", "@babel/traverse@^7.7.2": version "7.20.1" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.1.tgz#9b15ccbf882f6d107eeeecf263fbcdd208777ec8" integrity sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA== @@ -1308,16 +1207,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.7", "@babel/types@^7.15.6", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.3", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.3.tgz#fc420e6bbe54880bce6779ffaf315f5e43ec9624" - integrity sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw== - dependencies: - "@babel/helper-string-parser" "^7.18.10" - "@babel/helper-validator-identifier" "^7.19.1" - to-fast-properties "^2.0.0" - -"@babel/types@^7.20.0", "@babel/types@^7.20.2": +"@babel/types@^7.0.0", "@babel/types@^7.12.7", "@babel/types@^7.15.6", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.3", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.20.2" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.2.tgz#67ac09266606190f496322dbaff360fdaa5e7842" integrity sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog== @@ -9288,7 +9178,7 @@ jest-runtime@^29.1.2: slash "^3.0.0" strip-bom "^4.0.0" -jest-snapshot@*, jest-snapshot@^27.0.2, jest-snapshot@^29, jest-snapshot@^29.0.3, jest-snapshot@^29.1.2: +jest-snapshot@*, jest-snapshot@^28.0.0, jest-snapshot@^29, jest-snapshot@^29.0.3, jest-snapshot@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.1.2.tgz#7dd277e88c45f2d2ff5888de1612e63c7ceb575b" integrity sha512-rYFomGpVMdBlfwTYxkUp3sjD6usptvZcONFYNqVlaz4EpHPnDvlWjvmOQ9OCSNKqYZqLM2aS3wq01tWujLg7gg== @@ -9318,12 +9208,12 @@ jest-snapshot@*, jest-snapshot@^27.0.2, jest-snapshot@^29, jest-snapshot@^29.0.3 pretty-format "^29.1.2" semver "^7.3.5" -jest-specific-snapshot@*, jest-specific-snapshot@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/jest-specific-snapshot/-/jest-specific-snapshot-5.0.0.tgz#48f72d5613af7f3e30df75b6b3534db6bab32ea0" - integrity sha512-V65vuPxZQExD3tGbv+Du5tbG1E3H3Dq/HFbsCEkPJP27w5vr/nATQJl61Dx5doBfu54OrJak0JaeYVSeZubDKg== +jest-specific-snapshot@*, jest-specific-snapshot@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/jest-specific-snapshot/-/jest-specific-snapshot-6.0.0.tgz#8373589825234fbbeef1bf054f5a6720a15a54f3" + integrity sha512-IiAfq0bmuXNwRkfCO3mLTCMhZJBdU05y/zEUKRk0KDhW6WQ7ZL0xTgjjtMrfLb0h+o/i+1/N68Ls3NrIFTykiA== dependencies: - jest-snapshot "^27.0.2" + jest-snapshot "^28.0.0" jest-util@28.1.1, jest-util@^29, jest-util@^29.1.2: version "29.1.2" From e2d1263dee9775469b095c40ee0fd501d375f9e4 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Mon, 21 Nov 2022 08:43:23 -0500 Subject: [PATCH 129/193] chore: switched repo lint to use nx run-many (#6038) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: switched repo lint to use nx run-many * chore: replace eslint CLI usage with dedicated Nx executor * chore: remove unneeded nested .eslintignore files * chore: npm alias, try without cd to root Co-authored-by: “JamesHenry” --- nx.json | 2 +- package.json | 2 +- packages/ast-spec/package.json | 2 +- packages/ast-spec/project.json | 11 ++++++++++- packages/eslint-plugin-internal/package.json | 2 +- packages/eslint-plugin-internal/project.json | 11 ++++++++++- packages/eslint-plugin-tslint/package.json | 2 +- packages/eslint-plugin-tslint/project.json | 11 ++++++++++- packages/eslint-plugin/package.json | 2 +- packages/eslint-plugin/project.json | 11 ++++++++++- packages/experimental-utils/package.json | 2 +- packages/experimental-utils/project.json | 11 ++++++++++- packages/parser/package.json | 2 +- packages/parser/project.json | 11 ++++++++++- packages/scope-manager/package.json | 2 +- packages/scope-manager/project.json | 3 +-- packages/type-utils/package.json | 2 +- packages/type-utils/project.json | 11 ++++++++++- packages/types/package.json | 2 +- packages/types/project.json | 11 ++++++++++- packages/typescript-estree/package.json | 2 +- packages/typescript-estree/project.json | 11 ++++++++++- packages/utils/package.json | 2 +- packages/utils/project.json | 11 ++++++++++- packages/visitor-keys/package.json | 2 +- packages/visitor-keys/project.json | 11 ++++++++++- packages/website/package.json | 2 +- packages/website/project.json | 11 ++++++++++- 28 files changed, 136 insertions(+), 29 deletions(-) diff --git a/nx.json b/nx.json index d5b11cdfb5a..ed1f57517e1 100644 --- a/nx.json +++ b/nx.json @@ -18,7 +18,7 @@ "default": { "runner": "@nrwl/nx-cloud", "options": { - "cacheableOperations": ["build", "test", "package", "prebuild"], + "cacheableOperations": ["build", "lint", "package", "prebuild", "test"], "accessToken": "YjFjNTBhOWUtY2JmNy00ZDhiLWE5N2UtZjliNDAwNmIzOTdjfHJlYWQtd3JpdGU=", "canTrackAnalytics": false, "showUsageWarnings": true, diff --git a/package.json b/package.json index aa76fc54295..bddf6b4fe48 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "lint-fix": "eslint . --fix", "lint-markdown-fix": "yarn lint-markdown --fix", "lint-markdown": "markdownlint \"**/*.md\" --config=.markdownlint.json --ignore-path=.markdownlintignore", - "lint": "cross-env NODE_OPTIONS=\"--max-old-space-size=16384\" eslint .", + "lint": "nx run-many --target=lint --all --parallel", "postinstall": "yarn patch-package && yarn husky install && yarn build", "pre-commit": "yarn lint-staged", "start": "nx run website:start", diff --git a/packages/ast-spec/package.json b/packages/ast-spec/package.json index 19a595262da..e2045437054 100644 --- a/packages/ast-spec/package.json +++ b/packages/ast-spec/package.json @@ -34,7 +34,7 @@ "postclean": "rimraf dist && rimraf _ts3.4 && rimraf .rollup.cache && rimraf coverage", "clean-fixtures": "rimraf -g \"./src/**/fixtures/**/snapshots\"", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", - "lint": "eslint . --ignore-path='../../.eslintignore'", + "lint": "nx lint @typescript-eslint/ast-spec", "test": "jest", "typecheck": "tsc -p tsconfig.json --noEmit" }, diff --git a/packages/ast-spec/project.json b/packages/ast-spec/project.json index 24256b3e4d0..b892bb3fae0 100644 --- a/packages/ast-spec/project.json +++ b/packages/ast-spec/project.json @@ -1,5 +1,14 @@ { "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", - "implicitDependencies": [] + "implicitDependencies": [], + "targets": { + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["packages/ast-spec/**/*.ts"] + } + } + } } diff --git a/packages/eslint-plugin-internal/package.json b/packages/eslint-plugin-internal/package.json index b9047517e16..62373f12d54 100644 --- a/packages/eslint-plugin-internal/package.json +++ b/packages/eslint-plugin-internal/package.json @@ -8,7 +8,7 @@ "clean": "tsc -b tsconfig.build.json --clean", "postclean": "rimraf dist && rimraf coverage", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", - "lint": "eslint . --ignore-path='../../.eslintignore'", + "lint": "nx lint @typescript-eslint/eslint-plugin-internal", "test": "jest --coverage", "typecheck": "tsc -p tsconfig.json --noEmit" }, diff --git a/packages/eslint-plugin-internal/project.json b/packages/eslint-plugin-internal/project.json index 24256b3e4d0..803b12f5322 100644 --- a/packages/eslint-plugin-internal/project.json +++ b/packages/eslint-plugin-internal/project.json @@ -1,5 +1,14 @@ { "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", - "implicitDependencies": [] + "implicitDependencies": [], + "targets": { + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["packages/eslint-plugin-internal/**/*.ts"] + } + } + } } diff --git a/packages/eslint-plugin-tslint/package.json b/packages/eslint-plugin-tslint/package.json index d69678024c8..e852bcd509e 100644 --- a/packages/eslint-plugin-tslint/package.json +++ b/packages/eslint-plugin-tslint/package.json @@ -33,7 +33,7 @@ "clean": "tsc -b tsconfig.build.json --clean", "postclean": "rimraf dist && rimraf coverage", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", - "lint": "eslint . --ignore-path='../../.eslintignore'", + "lint": "nx lint @typescript-eslint/eslint-plugin-tslint", "test": "jest --coverage", "typecheck": "tsc -p tsconfig.json --noEmit" }, diff --git a/packages/eslint-plugin-tslint/project.json b/packages/eslint-plugin-tslint/project.json index 24256b3e4d0..6f6c19ca7c5 100644 --- a/packages/eslint-plugin-tslint/project.json +++ b/packages/eslint-plugin-tslint/project.json @@ -1,5 +1,14 @@ { "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", - "implicitDependencies": [] + "implicitDependencies": [], + "targets": { + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["packages/eslint-plugin-tslint/**/*.ts"] + } + } + } } diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index 0e2ab6e436a..28562d7650a 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -39,7 +39,7 @@ "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", "generate:breaking-changes": "../../node_modules/.bin/ts-node tools/generate-breaking-changes.ts", "generate:configs": "../../node_modules/.bin/ts-node tools/generate-configs.ts", - "lint": "eslint . --ignore-path ../../.eslintignore", + "lint": "nx lint @typescript-eslint/eslint-plugin", "test": "jest --coverage", "typecheck": "tsc -p tsconfig.json --noEmit" }, diff --git a/packages/eslint-plugin/project.json b/packages/eslint-plugin/project.json index 24256b3e4d0..d3a8c23a138 100644 --- a/packages/eslint-plugin/project.json +++ b/packages/eslint-plugin/project.json @@ -1,5 +1,14 @@ { "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", - "implicitDependencies": [] + "implicitDependencies": [], + "targets": { + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["packages/eslint-plugin/**/*.ts"] + } + } + } } diff --git a/packages/experimental-utils/package.json b/packages/experimental-utils/package.json index 901b63d2f30..9b89e1965ef 100644 --- a/packages/experimental-utils/package.json +++ b/packages/experimental-utils/package.json @@ -34,7 +34,7 @@ "clean": "tsc -b tsconfig.build.json --clean", "postclean": "rimraf dist && rimraf _ts3.4 && rimraf coverage", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", - "lint": "eslint . --ignore-path='../../.eslintignore'", + "lint": "nx lint @typescript-eslint/experimental-utils", "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { diff --git a/packages/experimental-utils/project.json b/packages/experimental-utils/project.json index 24256b3e4d0..415df390d35 100644 --- a/packages/experimental-utils/project.json +++ b/packages/experimental-utils/project.json @@ -1,5 +1,14 @@ { "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", - "implicitDependencies": [] + "implicitDependencies": [], + "targets": { + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["packages/experimental-utils/**/*.ts"] + } + } + } } diff --git a/packages/parser/package.json b/packages/parser/package.json index 23ac485be0f..7bf78fe1f59 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -37,7 +37,7 @@ "clean": "tsc -b tsconfig.build.json --clean", "postclean": "rimraf dist && rimraf _ts3.4 && rimraf coverage", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", - "lint": "eslint . --ignore-path='../../.eslintignore'", + "lint": "nx lint @typescript-eslint/parser", "test": "jest --coverage", "typecheck": "tsc -p tsconfig.json --noEmit" }, diff --git a/packages/parser/project.json b/packages/parser/project.json index 24256b3e4d0..10eb8732ea1 100644 --- a/packages/parser/project.json +++ b/packages/parser/project.json @@ -1,5 +1,14 @@ { "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", - "implicitDependencies": [] + "implicitDependencies": [], + "targets": { + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["packages/parser/**/*.ts"] + } + } + } } diff --git a/packages/scope-manager/package.json b/packages/scope-manager/package.json index bc611e14e68..996299712b6 100644 --- a/packages/scope-manager/package.json +++ b/packages/scope-manager/package.json @@ -33,7 +33,7 @@ "clean-fixtures": "cd ../../ && nx clean-fixtures @typescript-eslint/scope-manager", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", "generate:lib": "cd ../../ && nx generate-lib @typescript-eslint/scope-manager", - "lint": "cd ../../ && nx lint @typescript-eslint/scope-manager", + "lint": "nx lint @typescript-eslint/scope-manager", "test": "cd ../../ && nx test @typescript-eslint/scope-manager --code-coverage", "typecheck": "cd ../../ && nx typecheck @typescript-eslint/scope-manager" }, diff --git a/packages/scope-manager/project.json b/packages/scope-manager/project.json index 1868938a6ac..efaf69f925c 100644 --- a/packages/scope-manager/project.json +++ b/packages/scope-manager/project.json @@ -55,8 +55,7 @@ "executor": "@nrwl/linter:eslint", "outputs": ["{options.outputFile}"], "options": { - "lintFilePatterns": ["packages/scope-manager/**/*.{ts,js}"], - "ignorePath": ".eslintignore" + "lintFilePatterns": ["packages/scope-manager/**/*.ts"] } }, "test": { diff --git a/packages/type-utils/package.json b/packages/type-utils/package.json index f72272dd349..9ecfc33fe5c 100644 --- a/packages/type-utils/package.json +++ b/packages/type-utils/package.json @@ -34,7 +34,7 @@ "clean": "tsc -b tsconfig.build.json --clean", "postclean": "rimraf dist && rimraf _ts3.4 && rimraf coverage", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", - "lint": "eslint . --ignore-path='../../.eslintignore'", + "lint": "nx lint @typescript-eslint/type-utils", "test": "jest --coverage", "typecheck": "tsc -p tsconfig.json --noEmit" }, diff --git a/packages/type-utils/project.json b/packages/type-utils/project.json index 24256b3e4d0..efc70d52332 100644 --- a/packages/type-utils/project.json +++ b/packages/type-utils/project.json @@ -1,5 +1,14 @@ { "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", - "implicitDependencies": [] + "implicitDependencies": [], + "targets": { + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["packages/type-utils/**/*.ts"] + } + } + } } diff --git a/packages/types/package.json b/packages/types/package.json index 8b591cd2e0f..72d9efb088c 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -36,7 +36,7 @@ "postclean": "rimraf dist && rimraf _ts3.4 && rimraf coverage", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", "generate:lib": "../../node_modules/.bin/ts-node --files --transpile-only ../scope-manager/tools/generate-lib.ts", - "lint": "eslint . --ignore-path='../../.eslintignore'", + "lint": "nx lint @typescript-eslint/types", "typecheck": "tsc -p tsconfig.json --noEmit" }, "nx": { diff --git a/packages/types/project.json b/packages/types/project.json index 3719aa0608b..968c1ed0e23 100644 --- a/packages/types/project.json +++ b/packages/types/project.json @@ -1,5 +1,14 @@ { "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", - "implicitDependencies": ["@typescript-eslint/ast-spec"] + "implicitDependencies": ["@typescript-eslint/ast-spec"], + "targets": { + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["packages/types/**/*.ts"] + } + } + } } diff --git a/packages/typescript-estree/package.json b/packages/typescript-estree/package.json index f28d6d17f76..4df72039108 100644 --- a/packages/typescript-estree/package.json +++ b/packages/typescript-estree/package.json @@ -37,7 +37,7 @@ "clean": "tsc -b tsconfig.build.json --clean", "postclean": "rimraf dist && rimraf _ts3.4 && rimraf coverage", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", - "lint": "eslint . --ignore-path='../../.eslintignore'", + "lint": "nx lint @typescript-eslint/typescript-estree", "test": "jest --coverage", "typecheck": "tsc -p tsconfig.json --noEmit" }, diff --git a/packages/typescript-estree/project.json b/packages/typescript-estree/project.json index edfec5ab524..61848afaa64 100644 --- a/packages/typescript-estree/project.json +++ b/packages/typescript-estree/project.json @@ -1,5 +1,14 @@ { "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", - "implicitDependencies": ["@typescript-eslint/types"] + "implicitDependencies": ["@typescript-eslint/types"], + "targets": { + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["packages/typescript-estree/**/*.ts"] + } + } + } } diff --git a/packages/utils/package.json b/packages/utils/package.json index ad353bce00e..c357e13fe3e 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -34,7 +34,7 @@ "clean": "tsc -b tsconfig.build.json --clean", "postclean": "rimraf dist && rimraf _ts3.4 && rimraf coverage", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", - "lint": "eslint . --ignore-path='../../.eslintignore'", + "lint": "nx lint @typescript-eslint/utils", "test": "jest --coverage", "typecheck": "tsc -p tsconfig.json --noEmit" }, diff --git a/packages/utils/project.json b/packages/utils/project.json index 24256b3e4d0..7ef570436b4 100644 --- a/packages/utils/project.json +++ b/packages/utils/project.json @@ -1,5 +1,14 @@ { "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", - "implicitDependencies": [] + "implicitDependencies": [], + "targets": { + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["packages/utils/**/*.ts"] + } + } + } } diff --git a/packages/visitor-keys/package.json b/packages/visitor-keys/package.json index 62a83136687..554d8b95736 100644 --- a/packages/visitor-keys/package.json +++ b/packages/visitor-keys/package.json @@ -34,7 +34,7 @@ "clean": "tsc -b tsconfig.build.json --clean", "postclean": "rimraf dist && rimraf _ts3.4 && rimraf coverage", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", - "lint": "eslint . --ignore-path='../../.eslintignore'", + "lint": "nx lint @typescript-eslint/visitor-keys", "test": "jest --coverage", "typecheck": "tsc -p tsconfig.json --noEmit" }, diff --git a/packages/visitor-keys/project.json b/packages/visitor-keys/project.json index 24256b3e4d0..c7e3401148e 100644 --- a/packages/visitor-keys/project.json +++ b/packages/visitor-keys/project.json @@ -1,5 +1,14 @@ { "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", - "implicitDependencies": [] + "implicitDependencies": [], + "targets": { + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["packages/visitor-keys/**/*.ts"] + } + } + } } diff --git a/packages/website/package.json b/packages/website/package.json index 5232068f58a..ca83be0a26f 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -6,7 +6,7 @@ "build": "docusaurus build", "clear": "docusaurus clear", "format": "prettier --write \"./**/*.{md,mdx,ts,js,tsx,jsx}\" --ignore-path ../../.prettierignore", - "lint": "eslint . --ignore-path ../../.eslintignore", + "lint": "nx lint website", "serve": "docusaurus serve", "start": "docusaurus start", "swizzle": "docusaurus swizzle", diff --git a/packages/website/project.json b/packages/website/project.json index 24256b3e4d0..a9f414356b1 100644 --- a/packages/website/project.json +++ b/packages/website/project.json @@ -1,5 +1,14 @@ { "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", - "implicitDependencies": [] + "implicitDependencies": [], + "targets": { + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["packages/website/**/*.ts"] + } + } + } } From 426c2f9f7e5a8b7cb82927467aa34464dab25f20 Mon Sep 17 00:00:00 2001 From: James Henry Date: Mon, 21 Nov 2022 19:42:43 +0400 Subject: [PATCH 130/193] chore: remove unnecessary project names from nx commands (#6054) --- packages/ast-spec/package.json | 2 +- packages/eslint-plugin-internal/package.json | 2 +- packages/eslint-plugin-tslint/package.json | 2 +- packages/eslint-plugin/package.json | 2 +- packages/experimental-utils/package.json | 2 +- packages/parser/package.json | 2 +- packages/scope-manager/package.json | 14 +++++++------- packages/type-utils/package.json | 2 +- packages/types/package.json | 2 +- packages/typescript-estree/package.json | 2 +- packages/utils/package.json | 2 +- packages/visitor-keys/package.json | 2 +- packages/website/package.json | 2 +- 13 files changed, 19 insertions(+), 19 deletions(-) diff --git a/packages/ast-spec/package.json b/packages/ast-spec/package.json index e2045437054..15b7f40de48 100644 --- a/packages/ast-spec/package.json +++ b/packages/ast-spec/package.json @@ -34,7 +34,7 @@ "postclean": "rimraf dist && rimraf _ts3.4 && rimraf .rollup.cache && rimraf coverage", "clean-fixtures": "rimraf -g \"./src/**/fixtures/**/snapshots\"", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", - "lint": "nx lint @typescript-eslint/ast-spec", + "lint": "nx lint", "test": "jest", "typecheck": "tsc -p tsconfig.json --noEmit" }, diff --git a/packages/eslint-plugin-internal/package.json b/packages/eslint-plugin-internal/package.json index 62373f12d54..4c317f8b0f2 100644 --- a/packages/eslint-plugin-internal/package.json +++ b/packages/eslint-plugin-internal/package.json @@ -8,7 +8,7 @@ "clean": "tsc -b tsconfig.build.json --clean", "postclean": "rimraf dist && rimraf coverage", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", - "lint": "nx lint @typescript-eslint/eslint-plugin-internal", + "lint": "nx lint", "test": "jest --coverage", "typecheck": "tsc -p tsconfig.json --noEmit" }, diff --git a/packages/eslint-plugin-tslint/package.json b/packages/eslint-plugin-tslint/package.json index e852bcd509e..78715448e44 100644 --- a/packages/eslint-plugin-tslint/package.json +++ b/packages/eslint-plugin-tslint/package.json @@ -33,7 +33,7 @@ "clean": "tsc -b tsconfig.build.json --clean", "postclean": "rimraf dist && rimraf coverage", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", - "lint": "nx lint @typescript-eslint/eslint-plugin-tslint", + "lint": "nx lint", "test": "jest --coverage", "typecheck": "tsc -p tsconfig.json --noEmit" }, diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index 28562d7650a..95a7f2a2b87 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -39,7 +39,7 @@ "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", "generate:breaking-changes": "../../node_modules/.bin/ts-node tools/generate-breaking-changes.ts", "generate:configs": "../../node_modules/.bin/ts-node tools/generate-configs.ts", - "lint": "nx lint @typescript-eslint/eslint-plugin", + "lint": "nx lint", "test": "jest --coverage", "typecheck": "tsc -p tsconfig.json --noEmit" }, diff --git a/packages/experimental-utils/package.json b/packages/experimental-utils/package.json index 9b89e1965ef..fa4775116f4 100644 --- a/packages/experimental-utils/package.json +++ b/packages/experimental-utils/package.json @@ -34,7 +34,7 @@ "clean": "tsc -b tsconfig.build.json --clean", "postclean": "rimraf dist && rimraf _ts3.4 && rimraf coverage", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", - "lint": "nx lint @typescript-eslint/experimental-utils", + "lint": "nx lint", "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { diff --git a/packages/parser/package.json b/packages/parser/package.json index 7bf78fe1f59..f83abd5ce3f 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -37,7 +37,7 @@ "clean": "tsc -b tsconfig.build.json --clean", "postclean": "rimraf dist && rimraf _ts3.4 && rimraf coverage", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", - "lint": "nx lint @typescript-eslint/parser", + "lint": "nx lint", "test": "jest --coverage", "typecheck": "tsc -p tsconfig.json --noEmit" }, diff --git a/packages/scope-manager/package.json b/packages/scope-manager/package.json index 996299712b6..1849dab5710 100644 --- a/packages/scope-manager/package.json +++ b/packages/scope-manager/package.json @@ -28,14 +28,14 @@ "main": "dist/index.js", "types": "dist/index.d.ts", "scripts": { - "build": "cd ../../ && nx build @typescript-eslint/scope-manager", - "clean": "cd ../../ && nx clean @typescript-eslint/scope-manager", - "clean-fixtures": "cd ../../ && nx clean-fixtures @typescript-eslint/scope-manager", + "build": "nx build", + "clean": "nx clean", + "clean-fixtures": "nx clean-fixtures", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", - "generate:lib": "cd ../../ && nx generate-lib @typescript-eslint/scope-manager", - "lint": "nx lint @typescript-eslint/scope-manager", - "test": "cd ../../ && nx test @typescript-eslint/scope-manager --code-coverage", - "typecheck": "cd ../../ && nx typecheck @typescript-eslint/scope-manager" + "generate:lib": "nx generate-lib", + "lint": "nx lint", + "test": "nx test --code-coverage", + "typecheck": "nx typecheck" }, "dependencies": { "@typescript-eslint/types": "5.43.0", diff --git a/packages/type-utils/package.json b/packages/type-utils/package.json index 9ecfc33fe5c..1bde3fa7291 100644 --- a/packages/type-utils/package.json +++ b/packages/type-utils/package.json @@ -34,7 +34,7 @@ "clean": "tsc -b tsconfig.build.json --clean", "postclean": "rimraf dist && rimraf _ts3.4 && rimraf coverage", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", - "lint": "nx lint @typescript-eslint/type-utils", + "lint": "nx lint", "test": "jest --coverage", "typecheck": "tsc -p tsconfig.json --noEmit" }, diff --git a/packages/types/package.json b/packages/types/package.json index 72d9efb088c..95b3e310549 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -36,7 +36,7 @@ "postclean": "rimraf dist && rimraf _ts3.4 && rimraf coverage", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", "generate:lib": "../../node_modules/.bin/ts-node --files --transpile-only ../scope-manager/tools/generate-lib.ts", - "lint": "nx lint @typescript-eslint/types", + "lint": "nx lint", "typecheck": "tsc -p tsconfig.json --noEmit" }, "nx": { diff --git a/packages/typescript-estree/package.json b/packages/typescript-estree/package.json index 4df72039108..8b6a4b63236 100644 --- a/packages/typescript-estree/package.json +++ b/packages/typescript-estree/package.json @@ -37,7 +37,7 @@ "clean": "tsc -b tsconfig.build.json --clean", "postclean": "rimraf dist && rimraf _ts3.4 && rimraf coverage", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", - "lint": "nx lint @typescript-eslint/typescript-estree", + "lint": "nx lint", "test": "jest --coverage", "typecheck": "tsc -p tsconfig.json --noEmit" }, diff --git a/packages/utils/package.json b/packages/utils/package.json index c357e13fe3e..8057615f782 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -34,7 +34,7 @@ "clean": "tsc -b tsconfig.build.json --clean", "postclean": "rimraf dist && rimraf _ts3.4 && rimraf coverage", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", - "lint": "nx lint @typescript-eslint/utils", + "lint": "nx lint", "test": "jest --coverage", "typecheck": "tsc -p tsconfig.json --noEmit" }, diff --git a/packages/visitor-keys/package.json b/packages/visitor-keys/package.json index 554d8b95736..36a76506596 100644 --- a/packages/visitor-keys/package.json +++ b/packages/visitor-keys/package.json @@ -34,7 +34,7 @@ "clean": "tsc -b tsconfig.build.json --clean", "postclean": "rimraf dist && rimraf _ts3.4 && rimraf coverage", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", - "lint": "nx lint @typescript-eslint/visitor-keys", + "lint": "nx lint", "test": "jest --coverage", "typecheck": "tsc -p tsconfig.json --noEmit" }, diff --git a/packages/website/package.json b/packages/website/package.json index ca83be0a26f..fa0c1c3c2af 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -6,7 +6,7 @@ "build": "docusaurus build", "clear": "docusaurus clear", "format": "prettier --write \"./**/*.{md,mdx,ts,js,tsx,jsx}\" --ignore-path ../../.prettierignore", - "lint": "nx lint website", + "lint": "nx lint", "serve": "docusaurus serve", "start": "docusaurus start", "swizzle": "docusaurus swizzle", From 01159d204154e31acf86162268ff27d95b7fc783 Mon Sep 17 00:00:00 2001 From: "typescript-eslint[bot]" Date: Mon, 21 Nov 2022 17:20:05 +0000 Subject: [PATCH 131/193] chore: publish v5.44.0 --- CHANGELOG.md | 16 ++++++++++++++++ lerna.json | 2 +- packages/ast-spec/CHANGELOG.md | 6 ++++++ packages/ast-spec/package.json | 2 +- packages/eslint-plugin-internal/CHANGELOG.md | 4 ++++ packages/eslint-plugin-internal/package.json | 8 ++++---- packages/eslint-plugin-tslint/CHANGELOG.md | 4 ++++ packages/eslint-plugin-tslint/package.json | 6 +++--- packages/eslint-plugin/CHANGELOG.md | 14 ++++++++++++++ packages/eslint-plugin/package.json | 8 ++++---- packages/experimental-utils/CHANGELOG.md | 4 ++++ packages/experimental-utils/package.json | 4 ++-- packages/parser/CHANGELOG.md | 4 ++++ packages/parser/package.json | 8 ++++---- packages/scope-manager/CHANGELOG.md | 6 ++++++ packages/scope-manager/package.json | 8 ++++---- packages/shared-fixtures/CHANGELOG.md | 4 ++++ packages/shared-fixtures/package.json | 2 +- packages/type-utils/CHANGELOG.md | 4 ++++ packages/type-utils/package.json | 8 ++++---- packages/types/CHANGELOG.md | 6 ++++++ packages/types/package.json | 2 +- packages/typescript-estree/CHANGELOG.md | 11 +++++++++++ packages/typescript-estree/package.json | 8 ++++---- packages/utils/CHANGELOG.md | 4 ++++ packages/utils/package.json | 10 +++++----- packages/visitor-keys/CHANGELOG.md | 6 ++++++ packages/visitor-keys/package.json | 4 ++-- packages/website-eslint/CHANGELOG.md | 4 ++++ packages/website-eslint/package.json | 16 ++++++++-------- packages/website/CHANGELOG.md | 4 ++++ packages/website/package.json | 8 ++++---- 32 files changed, 153 insertions(+), 52 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b400022f227..b6e1fb0f529 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. +# [5.44.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.43.0...v5.44.0) (2022-11-21) + +### Bug Fixes + +- **eslint-plugin:** [no-empty-interface] disable autofix for declaration merging with class ([#5920](https://github.com/typescript-eslint/typescript-eslint/issues/5920)) ([a4f85b8](https://github.com/typescript-eslint/typescript-eslint/commit/a4f85b8cfe38ba8ea2a2ac4a56d9b11a81a8a15a)) +- **eslint-plugin:** [no-unnecessary-condition] handle index signature type ([#5912](https://github.com/typescript-eslint/typescript-eslint/issues/5912)) ([5baad08](https://github.com/typescript-eslint/typescript-eslint/commit/5baad0893f9a90633d57fffac69af7523bd1501e)) +- **eslint-plugin:** [prefer-optional-chain] handle binary expressions in negated or ([#5992](https://github.com/typescript-eslint/typescript-eslint/issues/5992)) ([2778ff0](https://github.com/typescript-eslint/typescript-eslint/commit/2778ff0c3db011148be93ed3bea5ce07af3c81ef)) +- **typescript-estree:** don't consider a cached program unless it's specified in the current `parserOptions.project` config ([#5999](https://github.com/typescript-eslint/typescript-eslint/issues/5999)) ([530e0e6](https://github.com/typescript-eslint/typescript-eslint/commit/530e0e618cdf4bb956149bf8a8484848e1b9a1f5)) + +### Features + +- **eslint-plugin:** [adjacent-overload-signatures] check BlockStatement nodes ([#5998](https://github.com/typescript-eslint/typescript-eslint/issues/5998)) ([97d3e56](https://github.com/typescript-eslint/typescript-eslint/commit/97d3e56709ee19fdec39fd8b99d080db90b306e9)) +- **eslint-plugin:** [keyword-spacing] Support spacing in import-type syntax ([#5977](https://github.com/typescript-eslint/typescript-eslint/issues/5977)) ([6a735e1](https://github.com/typescript-eslint/typescript-eslint/commit/6a735e142ef67f3af6497f922cf83706867eb6b7)) +- support parsing `satisfies` operators ([#5717](https://github.com/typescript-eslint/typescript-eslint/issues/5717)) ([20d7cae](https://github.com/typescript-eslint/typescript-eslint/commit/20d7caee35ab84ae6381fdf04338c9e2b9e2bc48)) +- update to TypeScript 4.9 ([#5716](https://github.com/typescript-eslint/typescript-eslint/issues/5716)) ([4d744ea](https://github.com/typescript-eslint/typescript-eslint/commit/4d744ea10ba03c66eebcb63e8722e9f0165fbeed)) + # [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) ### Bug Fixes diff --git a/lerna.json b/lerna.json index e213821c090..112f88b34a7 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "5.43.0", + "version": "5.44.0", "npmClient": "yarn", "useWorkspaces": true, "stream": true diff --git a/packages/ast-spec/CHANGELOG.md b/packages/ast-spec/CHANGELOG.md index 33f54422348..98f5cb54d73 100644 --- a/packages/ast-spec/CHANGELOG.md +++ b/packages/ast-spec/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.44.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.43.0...v5.44.0) (2022-11-21) + +### Features + +- support parsing `satisfies` operators ([#5717](https://github.com/typescript-eslint/typescript-eslint/issues/5717)) ([20d7cae](https://github.com/typescript-eslint/typescript-eslint/commit/20d7caee35ab84ae6381fdf04338c9e2b9e2bc48)) + # [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) **Note:** Version bump only for package @typescript-eslint/ast-spec diff --git a/packages/ast-spec/package.json b/packages/ast-spec/package.json index 15b7f40de48..a0c4f5d5362 100644 --- a/packages/ast-spec/package.json +++ b/packages/ast-spec/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/ast-spec", - "version": "5.43.0", + "version": "5.44.0", "description": "TypeScript-ESTree AST spec", "private": true, "keywords": [ diff --git a/packages/eslint-plugin-internal/CHANGELOG.md b/packages/eslint-plugin-internal/CHANGELOG.md index 3cb70bba497..73d97608e26 100644 --- a/packages/eslint-plugin-internal/CHANGELOG.md +++ b/packages/eslint-plugin-internal/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.44.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.43.0...v5.44.0) (2022-11-21) + +**Note:** Version bump only for package @typescript-eslint/eslint-plugin-internal + # [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) **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 4c317f8b0f2..0b9495a98c3 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": "5.43.0", + "version": "5.44.0", "private": true, "main": "dist/index.js", "scripts": { @@ -14,9 +14,9 @@ }, "dependencies": { "@types/prettier": "*", - "@typescript-eslint/scope-manager": "5.43.0", - "@typescript-eslint/type-utils": "5.43.0", - "@typescript-eslint/utils": "5.43.0", + "@typescript-eslint/scope-manager": "5.44.0", + "@typescript-eslint/type-utils": "5.44.0", + "@typescript-eslint/utils": "5.44.0", "prettier": "*" } } diff --git a/packages/eslint-plugin-tslint/CHANGELOG.md b/packages/eslint-plugin-tslint/CHANGELOG.md index 77d0a23e05a..98f50504104 100644 --- a/packages/eslint-plugin-tslint/CHANGELOG.md +++ b/packages/eslint-plugin-tslint/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.44.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.43.0...v5.44.0) (2022-11-21) + +**Note:** Version bump only for package @typescript-eslint/eslint-plugin-tslint + # [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) **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 78715448e44..fbd344b1d47 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": "5.43.0", + "version": "5.44.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/utils": "5.43.0", + "@typescript-eslint/utils": "5.44.0", "lodash": "^4.17.21" }, "peerDependencies": { @@ -48,6 +48,6 @@ }, "devDependencies": { "@types/lodash": "*", - "@typescript-eslint/parser": "5.43.0" + "@typescript-eslint/parser": "5.44.0" } } diff --git a/packages/eslint-plugin/CHANGELOG.md b/packages/eslint-plugin/CHANGELOG.md index 9b989e2c870..5346de33f1c 100644 --- a/packages/eslint-plugin/CHANGELOG.md +++ b/packages/eslint-plugin/CHANGELOG.md @@ -3,6 +3,20 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.44.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.43.0...v5.44.0) (2022-11-21) + +### Bug Fixes + +- **eslint-plugin:** [no-empty-interface] disable autofix for declaration merging with class ([#5920](https://github.com/typescript-eslint/typescript-eslint/issues/5920)) ([a4f85b8](https://github.com/typescript-eslint/typescript-eslint/commit/a4f85b8cfe38ba8ea2a2ac4a56d9b11a81a8a15a)) +- **eslint-plugin:** [no-unnecessary-condition] handle index signature type ([#5912](https://github.com/typescript-eslint/typescript-eslint/issues/5912)) ([5baad08](https://github.com/typescript-eslint/typescript-eslint/commit/5baad0893f9a90633d57fffac69af7523bd1501e)) +- **eslint-plugin:** [prefer-optional-chain] handle binary expressions in negated or ([#5992](https://github.com/typescript-eslint/typescript-eslint/issues/5992)) ([2778ff0](https://github.com/typescript-eslint/typescript-eslint/commit/2778ff0c3db011148be93ed3bea5ce07af3c81ef)) +- **typescript-estree:** don't consider a cached program unless it's specified in the current `parserOptions.project` config ([#5999](https://github.com/typescript-eslint/typescript-eslint/issues/5999)) ([530e0e6](https://github.com/typescript-eslint/typescript-eslint/commit/530e0e618cdf4bb956149bf8a8484848e1b9a1f5)) + +### Features + +- **eslint-plugin:** [adjacent-overload-signatures] check BlockStatement nodes ([#5998](https://github.com/typescript-eslint/typescript-eslint/issues/5998)) ([97d3e56](https://github.com/typescript-eslint/typescript-eslint/commit/97d3e56709ee19fdec39fd8b99d080db90b306e9)) +- **eslint-plugin:** [keyword-spacing] Support spacing in import-type syntax ([#5977](https://github.com/typescript-eslint/typescript-eslint/issues/5977)) ([6a735e1](https://github.com/typescript-eslint/typescript-eslint/commit/6a735e142ef67f3af6497f922cf83706867eb6b7)) + # [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) ### Bug Fixes diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index 95a7f2a2b87..4e6dde4cf87 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/eslint-plugin", - "version": "5.43.0", + "version": "5.44.0", "description": "TypeScript plugin for ESLint", "keywords": [ "eslint", @@ -44,9 +44,9 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/scope-manager": "5.43.0", - "@typescript-eslint/type-utils": "5.43.0", - "@typescript-eslint/utils": "5.43.0", + "@typescript-eslint/scope-manager": "5.44.0", + "@typescript-eslint/type-utils": "5.44.0", + "@typescript-eslint/utils": "5.44.0", "debug": "^4.3.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", diff --git a/packages/experimental-utils/CHANGELOG.md b/packages/experimental-utils/CHANGELOG.md index dbf41b97191..4d40a307fdf 100644 --- a/packages/experimental-utils/CHANGELOG.md +++ b/packages/experimental-utils/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.44.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.43.0...v5.44.0) (2022-11-21) + +**Note:** Version bump only for package @typescript-eslint/experimental-utils + # [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) **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 fa4775116f4..890423ff65c 100644 --- a/packages/experimental-utils/package.json +++ b/packages/experimental-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/experimental-utils", - "version": "5.43.0", + "version": "5.44.0", "description": "(Experimental) Utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -38,7 +38,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/utils": "5.43.0" + "@typescript-eslint/utils": "5.44.0" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" diff --git a/packages/parser/CHANGELOG.md b/packages/parser/CHANGELOG.md index c6013137c08..52366c06677 100644 --- a/packages/parser/CHANGELOG.md +++ b/packages/parser/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.44.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.43.0...v5.44.0) (2022-11-21) + +**Note:** Version bump only for package @typescript-eslint/parser + # [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) **Note:** Version bump only for package @typescript-eslint/parser diff --git a/packages/parser/package.json b/packages/parser/package.json index f83abd5ce3f..11e72b17903 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/parser", - "version": "5.43.0", + "version": "5.44.0", "description": "An ESLint custom parser which leverages TypeScript ESTree", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -45,9 +45,9 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "dependencies": { - "@typescript-eslint/scope-manager": "5.43.0", - "@typescript-eslint/types": "5.43.0", - "@typescript-eslint/typescript-estree": "5.43.0", + "@typescript-eslint/scope-manager": "5.44.0", + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/typescript-estree": "5.44.0", "debug": "^4.3.4" }, "devDependencies": { diff --git a/packages/scope-manager/CHANGELOG.md b/packages/scope-manager/CHANGELOG.md index 4707e539d1b..6c427dbabce 100644 --- a/packages/scope-manager/CHANGELOG.md +++ b/packages/scope-manager/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.44.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.43.0...v5.44.0) (2022-11-21) + +### Features + +- update to TypeScript 4.9 ([#5716](https://github.com/typescript-eslint/typescript-eslint/issues/5716)) ([4d744ea](https://github.com/typescript-eslint/typescript-eslint/commit/4d744ea10ba03c66eebcb63e8722e9f0165fbeed)) + # [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) **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 1849dab5710..f58510fe87f 100644 --- a/packages/scope-manager/package.json +++ b/packages/scope-manager/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/scope-manager", - "version": "5.43.0", + "version": "5.44.0", "description": "TypeScript scope analyser for ESLint", "keywords": [ "eslint", @@ -38,12 +38,12 @@ "typecheck": "nx typecheck" }, "dependencies": { - "@typescript-eslint/types": "5.43.0", - "@typescript-eslint/visitor-keys": "5.43.0" + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/visitor-keys": "5.44.0" }, "devDependencies": { "@types/glob": "*", - "@typescript-eslint/typescript-estree": "5.43.0", + "@typescript-eslint/typescript-estree": "5.44.0", "glob": "*", "jest-specific-snapshot": "*", "make-dir": "*", diff --git a/packages/shared-fixtures/CHANGELOG.md b/packages/shared-fixtures/CHANGELOG.md index a96e2e63278..b50beb1e1a7 100644 --- a/packages/shared-fixtures/CHANGELOG.md +++ b/packages/shared-fixtures/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.44.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.43.0...v5.44.0) (2022-11-21) + +**Note:** Version bump only for package @typescript-eslint/shared-fixtures + # [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) **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 cec6cebc648..539146e0b43 100644 --- a/packages/shared-fixtures/package.json +++ b/packages/shared-fixtures/package.json @@ -1,5 +1,5 @@ { "name": "@typescript-eslint/shared-fixtures", - "version": "5.43.0", + "version": "5.44.0", "private": true } diff --git a/packages/type-utils/CHANGELOG.md b/packages/type-utils/CHANGELOG.md index 86867d3cdde..974d40d5d77 100644 --- a/packages/type-utils/CHANGELOG.md +++ b/packages/type-utils/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.44.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.43.0...v5.44.0) (2022-11-21) + +**Note:** Version bump only for package @typescript-eslint/type-utils + # [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) **Note:** Version bump only for package @typescript-eslint/type-utils diff --git a/packages/type-utils/package.json b/packages/type-utils/package.json index 1bde3fa7291..be4ef3f95ed 100644 --- a/packages/type-utils/package.json +++ b/packages/type-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/type-utils", - "version": "5.43.0", + "version": "5.44.0", "description": "Type utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -39,13 +39,13 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/typescript-estree": "5.43.0", - "@typescript-eslint/utils": "5.43.0", + "@typescript-eslint/typescript-estree": "5.44.0", + "@typescript-eslint/utils": "5.44.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, "devDependencies": { - "@typescript-eslint/parser": "5.43.0", + "@typescript-eslint/parser": "5.44.0", "typescript": "*" }, "peerDependencies": { diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index cede80aabc0..e721c00a5ce 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.44.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.43.0...v5.44.0) (2022-11-21) + +### Features + +- update to TypeScript 4.9 ([#5716](https://github.com/typescript-eslint/typescript-eslint/issues/5716)) ([4d744ea](https://github.com/typescript-eslint/typescript-eslint/commit/4d744ea10ba03c66eebcb63e8722e9f0165fbeed)) + # [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) **Note:** Version bump only for package @typescript-eslint/types diff --git a/packages/types/package.json b/packages/types/package.json index 95b3e310549..0cc513232d4 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/types", - "version": "5.43.0", + "version": "5.44.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 c7f8b17bab4..f6309d7faef 100644 --- a/packages/typescript-estree/CHANGELOG.md +++ b/packages/typescript-estree/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.44.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.43.0...v5.44.0) (2022-11-21) + +### Bug Fixes + +- **typescript-estree:** don't consider a cached program unless it's specified in the current `parserOptions.project` config ([#5999](https://github.com/typescript-eslint/typescript-eslint/issues/5999)) ([530e0e6](https://github.com/typescript-eslint/typescript-eslint/commit/530e0e618cdf4bb956149bf8a8484848e1b9a1f5)) + +### Features + +- support parsing `satisfies` operators ([#5717](https://github.com/typescript-eslint/typescript-eslint/issues/5717)) ([20d7cae](https://github.com/typescript-eslint/typescript-eslint/commit/20d7caee35ab84ae6381fdf04338c9e2b9e2bc48)) +- update to TypeScript 4.9 ([#5716](https://github.com/typescript-eslint/typescript-eslint/issues/5716)) ([4d744ea](https://github.com/typescript-eslint/typescript-eslint/commit/4d744ea10ba03c66eebcb63e8722e9f0165fbeed)) + # [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) **Note:** Version bump only for package @typescript-eslint/typescript-estree diff --git a/packages/typescript-estree/package.json b/packages/typescript-estree/package.json index 8b6a4b63236..b16ecb687b7 100644 --- a/packages/typescript-estree/package.json +++ b/packages/typescript-estree/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/typescript-estree", - "version": "5.43.0", + "version": "5.44.0", "description": "A parser that converts TypeScript source code into an ESTree compatible form", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -42,8 +42,8 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "5.43.0", - "@typescript-eslint/visitor-keys": "5.43.0", + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/visitor-keys": "5.44.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -59,7 +59,7 @@ "@types/is-glob": "*", "@types/semver": "*", "@types/tmp": "*", - "@typescript-eslint/shared-fixtures": "5.43.0", + "@typescript-eslint/shared-fixtures": "5.44.0", "glob": "*", "jest-specific-snapshot": "*", "make-dir": "*", diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md index 3a925cebcb9..0fbb0378b1b 100644 --- a/packages/utils/CHANGELOG.md +++ b/packages/utils/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.44.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.43.0...v5.44.0) (2022-11-21) + +**Note:** Version bump only for package @typescript-eslint/utils + # [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) **Note:** Version bump only for package @typescript-eslint/utils diff --git a/packages/utils/package.json b/packages/utils/package.json index 8057615f782..8064fe758bd 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/utils", - "version": "5.43.0", + "version": "5.44.0", "description": "Utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -41,9 +41,9 @@ "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.43.0", - "@typescript-eslint/types": "5.43.0", - "@typescript-eslint/typescript-estree": "5.43.0", + "@typescript-eslint/scope-manager": "5.44.0", + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/typescript-estree": "5.44.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -52,7 +52,7 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "devDependencies": { - "@typescript-eslint/parser": "5.43.0", + "@typescript-eslint/parser": "5.44.0", "typescript": "*" }, "funding": { diff --git a/packages/visitor-keys/CHANGELOG.md b/packages/visitor-keys/CHANGELOG.md index 9ebb6b77f0b..65c9d29a574 100644 --- a/packages/visitor-keys/CHANGELOG.md +++ b/packages/visitor-keys/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.44.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.43.0...v5.44.0) (2022-11-21) + +### Features + +- support parsing `satisfies` operators ([#5717](https://github.com/typescript-eslint/typescript-eslint/issues/5717)) ([20d7cae](https://github.com/typescript-eslint/typescript-eslint/commit/20d7caee35ab84ae6381fdf04338c9e2b9e2bc48)) + # [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) **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 36a76506596..39da7ca6633 100644 --- a/packages/visitor-keys/package.json +++ b/packages/visitor-keys/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/visitor-keys", - "version": "5.43.0", + "version": "5.44.0", "description": "Visitor keys used to help traverse the TypeScript-ESTree AST", "keywords": [ "eslint", @@ -39,7 +39,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "5.43.0", + "@typescript-eslint/types": "5.44.0", "eslint-visitor-keys": "^3.3.0" }, "devDependencies": { diff --git a/packages/website-eslint/CHANGELOG.md b/packages/website-eslint/CHANGELOG.md index 5ea048243ae..f5490b2af6a 100644 --- a/packages/website-eslint/CHANGELOG.md +++ b/packages/website-eslint/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.44.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.43.0...v5.44.0) (2022-11-21) + +**Note:** Version bump only for package @typescript-eslint/website-eslint + # [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) **Note:** Version bump only for package @typescript-eslint/website-eslint diff --git a/packages/website-eslint/package.json b/packages/website-eslint/package.json index 0baf89601da..59d872c683b 100644 --- a/packages/website-eslint/package.json +++ b/packages/website-eslint/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/website-eslint", - "version": "5.43.0", + "version": "5.44.0", "private": true, "description": "ESLint which works in browsers.", "engines": { @@ -16,19 +16,19 @@ "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore" }, "dependencies": { - "@typescript-eslint/types": "5.43.0", - "@typescript-eslint/utils": "5.43.0" + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/utils": "5.44.0" }, "devDependencies": { "@rollup/plugin-commonjs": "^23.0.0", "@rollup/plugin-json": "^5.0.0", "@rollup/plugin-node-resolve": "^15.0.0", "@rollup/pluginutils": "^5.0.0", - "@typescript-eslint/eslint-plugin": "5.43.0", - "@typescript-eslint/parser": "5.43.0", - "@typescript-eslint/scope-manager": "5.43.0", - "@typescript-eslint/typescript-estree": "5.43.0", - "@typescript-eslint/visitor-keys": "5.43.0", + "@typescript-eslint/eslint-plugin": "5.44.0", + "@typescript-eslint/parser": "5.44.0", + "@typescript-eslint/scope-manager": "5.44.0", + "@typescript-eslint/typescript-estree": "5.44.0", + "@typescript-eslint/visitor-keys": "5.44.0", "eslint": "*", "rollup": "^2.75.4", "rollup-plugin-terser": "^7.0.2", diff --git a/packages/website/CHANGELOG.md b/packages/website/CHANGELOG.md index 6e050be87af..76a67a30561 100644 --- a/packages/website/CHANGELOG.md +++ b/packages/website/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.44.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.43.0...v5.44.0) (2022-11-21) + +**Note:** Version bump only for package website + # [5.43.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.42.1...v5.43.0) (2022-11-14) **Note:** Version bump only for package website diff --git a/packages/website/package.json b/packages/website/package.json index fa0c1c3c2af..fb681231463 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -1,6 +1,6 @@ { "name": "website", - "version": "5.43.0", + "version": "5.44.0", "private": true, "scripts": { "build": "docusaurus build", @@ -21,8 +21,8 @@ "@docusaurus/remark-plugin-npm2yarn": "~2.2.0", "@docusaurus/theme-common": "~2.2.0", "@mdx-js/react": "1.6.22", - "@typescript-eslint/parser": "5.43.0", - "@typescript-eslint/website-eslint": "5.43.0", + "@typescript-eslint/parser": "5.44.0", + "@typescript-eslint/website-eslint": "5.44.0", "clsx": "^1.1.1", "eslint": "*", "json-schema": "^0.4.0", @@ -48,7 +48,7 @@ "@types/react": "^18.0.9", "@types/react-helmet": "^6.1.5", "@types/react-router-dom": "^5.3.3", - "@typescript-eslint/eslint-plugin": "5.43.0", + "@typescript-eslint/eslint-plugin": "5.44.0", "copy-webpack-plugin": "^11.0.0", "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-react": "^7.29.4", From b1f4dad16fa00ff4c3e1528c48f0216c452ba6d1 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Tue, 22 Nov 2022 02:27:33 -0500 Subject: [PATCH 132/193] docs(website): add version to header, and documented branch flow (#6055) --- packages/website/README.md | 11 ++++++++++- packages/website/docusaurusConfig.ts | 6 ++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/website/README.md b/packages/website/README.md index fd7bb57cb42..7f4c12e2372 100644 --- a/packages/website/README.md +++ b/packages/website/README.md @@ -1,5 +1,7 @@ # Website +[![Netlify Status](https://api.netlify.com/api/v1/badges/128d21c7-b2fe-45ad-b141-9878fcf5de3a/deploy-status)](https://app.netlify.com/sites/typescript-eslint/deploys) + This website is built using [Docusaurus 2](https://v2.docusaurus.io/), a modern static website generator. ## Installation @@ -26,4 +28,11 @@ This command generates static content into the `build` directory and can be serv ## Deployment -The website is deployed automatically using Netlify. Each pull request into the `main` branch will have a unique preview deployment generated for it. +### Production + +The website is deployed from the `website` branch automatically using Netlify. +That branch gets updated from the `main` branch whenever a new stable version is released (generally weekly). + +### Pull Requests + +Each pull request into the `main` branch will have a unique preview deployment generated for it. diff --git a/packages/website/docusaurusConfig.ts b/packages/website/docusaurusConfig.ts index 0ef589b005a..7ac111820f2 100644 --- a/packages/website/docusaurusConfig.ts +++ b/packages/website/docusaurusConfig.ts @@ -8,6 +8,7 @@ import type { UserThemeConfig as AlgoliaThemeConfig } from '@docusaurus/theme-se import type { Config } from '@docusaurus/types'; import tabsPlugin from 'remark-docusaurus-tabs'; +import { version } from './package.json'; import { generatedRuleDocs } from './plugins/generated-rule-docs'; import { rulesMeta } from './rulesMeta'; @@ -91,6 +92,11 @@ const themeConfig: ThemeCommonConfig & AlgoliaThemeConfig = { label: 'Blog', position: 'left', }, + { + position: 'right', + value: `v${version}`, + type: 'html', + }, { to: 'play', activeBasePath: 'play', From 44027db379e6e074a16cda2755ef554c2b0a4c5a Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Wed, 23 Nov 2022 09:01:51 +1030 Subject: [PATCH 133/193] fix(scope-manager): add support for TS4.9 satisfies expression (#6059) feat(scope-manager): add support for TS4.9 satisfies expression --- .prettierignore | 1 + .../src/referencer/Referencer.ts | 9 +- .../fixtures/type-assertion/satisfies.ts | 4 + .../fixtures/type-assertion/satisfies.ts.shot | 84 +++++++++++++++++++ 4 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 packages/scope-manager/tests/fixtures/type-assertion/satisfies.ts create mode 100644 packages/scope-manager/tests/fixtures/type-assertion/satisfies.ts.shot diff --git a/.prettierignore b/.prettierignore index 88af276a1b2..bb855f41157 100644 --- a/.prettierignore +++ b/.prettierignore @@ -14,6 +14,7 @@ packages/ast-spec/src/*/*/fixtures/_error_/*/fixture.ts # prettier doesn't yet support satisfies packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/ +packages/scope-manager/tests/fixtures/type-assertion/satisfies.ts # Ignore CHANGELOG.md files to avoid issues with automated release job CHANGELOG.md diff --git a/packages/scope-manager/src/referencer/Referencer.ts b/packages/scope-manager/src/referencer/Referencer.ts index 93b0270ebfb..e7b41127ba4 100644 --- a/packages/scope-manager/src/referencer/Referencer.ts +++ b/packages/scope-manager/src/referencer/Referencer.ts @@ -301,7 +301,10 @@ class Referencer extends Visitor { } protected visitTypeAssertion( - node: TSESTree.TSAsExpression | TSESTree.TSTypeAssertion, + node: + | TSESTree.TSAsExpression + | TSESTree.TSTypeAssertion + | TSESTree.TSSatisfiesExpression, ): void { this.visit(node.expression); this.visitType(node.typeAnnotation); @@ -724,6 +727,10 @@ class Referencer extends Visitor { this.close(node); } + protected TSSatisfiesExpression(node: TSESTree.TSSatisfiesExpression): void { + this.visitTypeAssertion(node); + } + protected TSTypeAliasDeclaration( node: TSESTree.TSTypeAliasDeclaration, ): void { diff --git a/packages/scope-manager/tests/fixtures/type-assertion/satisfies.ts b/packages/scope-manager/tests/fixtures/type-assertion/satisfies.ts new file mode 100644 index 00000000000..69dae24ecf2 --- /dev/null +++ b/packages/scope-manager/tests/fixtures/type-assertion/satisfies.ts @@ -0,0 +1,4 @@ +const x = 1; +type T = 1; + +x satisfies T; diff --git a/packages/scope-manager/tests/fixtures/type-assertion/satisfies.ts.shot b/packages/scope-manager/tests/fixtures/type-assertion/satisfies.ts.shot new file mode 100644 index 00000000000..9d6dcc03ce1 --- /dev/null +++ b/packages/scope-manager/tests/fixtures/type-assertion/satisfies.ts.shot @@ -0,0 +1,84 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`type-assertion satisfies 1`] = ` +ScopeManager { + variables: Array [ + ImplicitGlobalConstTypeVariable, + Variable$2 { + defs: Array [ + VariableDefinition$1 { + name: Identifier<"x">, + node: VariableDeclarator$1, + }, + ], + name: "x", + references: Array [ + Reference$1 { + identifier: Identifier<"x">, + init: true, + isRead: false, + isTypeReference: false, + isValueReference: true, + isWrite: true, + resolved: Variable$2, + writeExpr: Literal$2, + }, + Reference$2 { + identifier: Identifier<"x">, + isRead: true, + isTypeReference: false, + isValueReference: true, + isWrite: false, + resolved: Variable$2, + }, + ], + isValueVariable: true, + isTypeVariable: false, + }, + Variable$3 { + defs: Array [ + TypeDefinition$2 { + name: Identifier<"T">, + node: TSTypeAliasDeclaration$3, + }, + ], + name: "T", + references: Array [ + Reference$3 { + identifier: Identifier<"T">, + isRead: true, + isTypeReference: true, + isValueReference: false, + isWrite: false, + resolved: Variable$3, + }, + ], + isValueVariable: false, + isTypeVariable: true, + }, + ], + scopes: Array [ + GlobalScope$1 { + block: Program$4, + isStrict: false, + references: Array [ + Reference$1, + Reference$2, + Reference$3, + ], + set: Map { + "const" => ImplicitGlobalConstTypeVariable, + "x" => Variable$2, + "T" => Variable$3, + }, + type: "global", + upper: null, + variables: Array [ + ImplicitGlobalConstTypeVariable, + Variable$2, + Variable$3, + ], + }, + ], +} +`; From 90d2ce0d0bcb91d198b156b764dce4cf61d18a82 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Wed, 23 Nov 2022 11:57:35 +0100 Subject: [PATCH 134/193] chore: update prettier to 2.8 (#6067) * chore: update prettier to 2.8 * prettier * trigger ci --- .lintstagedrc | 4 +- .prettierignore | 4 - package.json | 2 +- .../fixtures/array-array/fixture.ts | 2 +- .../array-array/snapshots/1-TSESTree-AST.shot | 68 ++++++++-------- .../snapshots/2-TSESTree-Tokens.shot | 78 +++++++++---------- .../array-array/snapshots/3-Babel-AST.shot | 68 ++++++++-------- .../array-array/snapshots/4-Babel-Tokens.shot | 78 +++++++++---------- .../arrow-func-no-parentheses/fixture.ts | 2 +- .../snapshots/1-TSESTree-AST.shot | 6 +- .../snapshots/2-TSESTree-Tokens.shot | 10 +++ .../snapshots/3-Babel-AST.shot | 6 +- .../snapshots/4-Babel-Tokens.shot | 10 +++ .../arrow-func-with-parentheses/fixture.ts | 2 +- .../snapshots/1-TSESTree-AST.shot | 6 +- .../snapshots/2-TSESTree-Tokens.shot | 10 +++ .../snapshots/3-Babel-AST.shot | 6 +- .../snapshots/4-Babel-Tokens.shot | 10 +++ .../snapshots/5-AST-Alignment-AST.shot | 6 +- .../conditional-no-parentheses/fixture.ts | 2 +- .../snapshots/1-TSESTree-AST.shot | 28 +++---- .../snapshots/2-TSESTree-Tokens.shot | 44 ++++++++--- .../snapshots/3-Babel-AST.shot | 28 +++---- .../snapshots/4-Babel-Tokens.shot | 44 ++++++++--- .../logical-no-parentheses/fixture.ts | 2 +- .../snapshots/1-TSESTree-AST.shot | 28 +++---- .../snapshots/2-TSESTree-Tokens.shot | 44 ++++++++--- .../snapshots/3-Babel-AST.shot | 28 +++---- .../snapshots/4-Babel-Tokens.shot | 44 ++++++++--- .../fixture.ts | 2 +- .../snapshots/1-TSESTree-AST.shot | 36 ++++----- .../snapshots/2-TSESTree-Tokens.shot | 50 ++++++------ .../snapshots/3-Babel-AST.shot | 36 ++++----- .../snapshots/4-Babel-Tokens.shot | 50 ++++++------ yarn.lock | 8 +- 35 files changed, 483 insertions(+), 369 deletions(-) diff --git a/.lintstagedrc b/.lintstagedrc index 691f6e0eb0e..c4eebcd2f40 100644 --- a/.lintstagedrc +++ b/.lintstagedrc @@ -1,5 +1,3 @@ { - "*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}": [ - "prettier --write" - ] + "*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}": ["prettier --write"] } diff --git a/.prettierignore b/.prettierignore index bb855f41157..637f32f77bf 100644 --- a/.prettierignore +++ b/.prettierignore @@ -12,10 +12,6 @@ packages/eslint-plugin/src/configs/*.json CONTRIBUTORS.md packages/ast-spec/src/*/*/fixtures/_error_/*/fixture.ts -# prettier doesn't yet support satisfies -packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/ -packages/scope-manager/tests/fixtures/type-assertion/satisfies.ts - # Ignore CHANGELOG.md files to avoid issues with automated release job CHANGELOG.md diff --git a/package.json b/package.json index bddf6b4fe48..30b2b224022 100644 --- a/package.json +++ b/package.json @@ -99,7 +99,7 @@ "ncp": "^2.0.0", "nx": "14.8.4", "patch-package": "^6.4.7", - "prettier": "2.7.1", + "prettier": "2.8.0", "pretty-format": "^29.0.3", "rimraf": "^3.0.2", "tmp": "^0.2.1", diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/fixture.ts b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/fixture.ts index 917317da825..36e81ab9edb 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/fixture.ts +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/fixture.ts @@ -1 +1 @@ -[1,2,3] satisfies [1, 2, 3]; +[1, 2, 3] satisfies [1, 2, 3]; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/1-TSESTree-AST.shot index 8c0e41971ea..cfbfed088ce 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/1-TSESTree-AST.shot +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/1-TSESTree-AST.shot @@ -27,10 +27,10 @@ Program { raw: "2", value: 2, - range: [3, 4], + range: [4, 5], loc: { - start: { column: 3, line: 1 }, - end: { column: 4, line: 1 }, + start: { column: 4, line: 1 }, + end: { column: 5, line: 1 }, }, }, Literal { @@ -38,18 +38,18 @@ Program { raw: "3", value: 3, - range: [5, 6], + range: [7, 8], loc: { - start: { column: 5, line: 1 }, - end: { column: 6, line: 1 }, + start: { column: 7, line: 1 }, + end: { column: 8, line: 1 }, }, }, ], - range: [0, 7], + range: [0, 9], loc: { start: { column: 0, line: 1 }, - end: { column: 7, line: 1 }, + end: { column: 9, line: 1 }, }, }, typeAnnotation: TSTupleType { @@ -62,17 +62,17 @@ Program { raw: "1", value: 1, - range: [19, 20], + range: [21, 22], loc: { - start: { column: 19, line: 1 }, - end: { column: 20, line: 1 }, + start: { column: 21, line: 1 }, + end: { column: 22, line: 1 }, }, }, - range: [19, 20], + range: [21, 22], loc: { - start: { column: 19, line: 1 }, - end: { column: 20, line: 1 }, + start: { column: 21, line: 1 }, + end: { column: 22, line: 1 }, }, }, TSLiteralType { @@ -82,17 +82,17 @@ Program { raw: "2", value: 2, - range: [22, 23], + range: [24, 25], loc: { - start: { column: 22, line: 1 }, - end: { column: 23, line: 1 }, + start: { column: 24, line: 1 }, + end: { column: 25, line: 1 }, }, }, - range: [22, 23], + range: [24, 25], loc: { - start: { column: 22, line: 1 }, - end: { column: 23, line: 1 }, + start: { column: 24, line: 1 }, + end: { column: 25, line: 1 }, }, }, TSLiteralType { @@ -102,45 +102,45 @@ Program { raw: "3", value: 3, - range: [25, 26], + range: [27, 28], loc: { - start: { column: 25, line: 1 }, - end: { column: 26, line: 1 }, + start: { column: 27, line: 1 }, + end: { column: 28, line: 1 }, }, }, - range: [25, 26], + range: [27, 28], loc: { - start: { column: 25, line: 1 }, - end: { column: 26, line: 1 }, + start: { column: 27, line: 1 }, + end: { column: 28, line: 1 }, }, }, ], - range: [18, 27], + range: [20, 29], loc: { - start: { column: 18, line: 1 }, - end: { column: 27, line: 1 }, + start: { column: 20, line: 1 }, + end: { column: 29, line: 1 }, }, }, - range: [0, 27], + range: [0, 29], loc: { start: { column: 0, line: 1 }, - end: { column: 27, line: 1 }, + end: { column: 29, line: 1 }, }, }, - range: [0, 28], + range: [0, 30], loc: { start: { column: 0, line: 1 }, - end: { column: 28, line: 1 }, + end: { column: 30, line: 1 }, }, }, ], sourceType: "script", - range: [0, 29], + range: [0, 31], loc: { start: { column: 0, line: 1 }, end: { column: 0, line: 2 }, diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/2-TSESTree-Tokens.shot index 1bde181188c..b4adbaf21bb 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/2-TSESTree-Tokens.shot +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/2-TSESTree-Tokens.shot @@ -36,130 +36,130 @@ Array [ type: "Numeric", value: "2", - range: [3, 4], + range: [4, 5], loc: { - start: { column: 3, line: 1 }, - end: { column: 4, line: 1 }, + start: { column: 4, line: 1 }, + end: { column: 5, line: 1 }, }, }, Punctuator { type: "Punctuator", value: ",", - range: [4, 5], + range: [5, 6], loc: { - start: { column: 4, line: 1 }, - end: { column: 5, line: 1 }, + start: { column: 5, line: 1 }, + end: { column: 6, line: 1 }, }, }, Numeric { type: "Numeric", value: "3", - range: [5, 6], + range: [7, 8], loc: { - start: { column: 5, line: 1 }, - end: { column: 6, line: 1 }, + start: { column: 7, line: 1 }, + end: { column: 8, line: 1 }, }, }, Punctuator { type: "Punctuator", value: "]", - range: [6, 7], + range: [8, 9], loc: { - start: { column: 6, line: 1 }, - end: { column: 7, line: 1 }, + start: { column: 8, line: 1 }, + end: { column: 9, line: 1 }, }, }, Identifier { type: "Identifier", value: "satisfies", - range: [8, 17], + range: [10, 19], loc: { - start: { column: 8, line: 1 }, - end: { column: 17, line: 1 }, + start: { column: 10, line: 1 }, + end: { column: 19, line: 1 }, }, }, Punctuator { type: "Punctuator", value: "[", - range: [18, 19], + range: [20, 21], loc: { - start: { column: 18, line: 1 }, - end: { column: 19, line: 1 }, + start: { column: 20, line: 1 }, + end: { column: 21, line: 1 }, }, }, Numeric { type: "Numeric", value: "1", - range: [19, 20], + range: [21, 22], loc: { - start: { column: 19, line: 1 }, - end: { column: 20, line: 1 }, + start: { column: 21, line: 1 }, + end: { column: 22, line: 1 }, }, }, Punctuator { type: "Punctuator", value: ",", - range: [20, 21], + range: [22, 23], loc: { - start: { column: 20, line: 1 }, - end: { column: 21, line: 1 }, + start: { column: 22, line: 1 }, + end: { column: 23, line: 1 }, }, }, Numeric { type: "Numeric", value: "2", - range: [22, 23], + range: [24, 25], loc: { - start: { column: 22, line: 1 }, - end: { column: 23, line: 1 }, + start: { column: 24, line: 1 }, + end: { column: 25, line: 1 }, }, }, Punctuator { type: "Punctuator", value: ",", - range: [23, 24], + range: [25, 26], loc: { - start: { column: 23, line: 1 }, - end: { column: 24, line: 1 }, + start: { column: 25, line: 1 }, + end: { column: 26, line: 1 }, }, }, Numeric { type: "Numeric", value: "3", - range: [25, 26], + range: [27, 28], loc: { - start: { column: 25, line: 1 }, - end: { column: 26, line: 1 }, + start: { column: 27, line: 1 }, + end: { column: 28, line: 1 }, }, }, Punctuator { type: "Punctuator", value: "]", - range: [26, 27], + range: [28, 29], loc: { - start: { column: 26, line: 1 }, - end: { column: 27, line: 1 }, + start: { column: 28, line: 1 }, + end: { column: 29, line: 1 }, }, }, Punctuator { type: "Punctuator", value: ";", - range: [27, 28], + range: [29, 30], loc: { - start: { column: 27, line: 1 }, - end: { column: 28, line: 1 }, + start: { column: 29, line: 1 }, + end: { column: 30, line: 1 }, }, }, ] diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/3-Babel-AST.shot index d7f5aec514e..635240ef2dd 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/3-Babel-AST.shot +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/3-Babel-AST.shot @@ -27,10 +27,10 @@ Program { raw: "2", value: 2, - range: [3, 4], + range: [4, 5], loc: { - start: { column: 3, line: 1 }, - end: { column: 4, line: 1 }, + start: { column: 4, line: 1 }, + end: { column: 5, line: 1 }, }, }, Literal { @@ -38,18 +38,18 @@ Program { raw: "3", value: 3, - range: [5, 6], + range: [7, 8], loc: { - start: { column: 5, line: 1 }, - end: { column: 6, line: 1 }, + start: { column: 7, line: 1 }, + end: { column: 8, line: 1 }, }, }, ], - range: [0, 7], + range: [0, 9], loc: { start: { column: 0, line: 1 }, - end: { column: 7, line: 1 }, + end: { column: 9, line: 1 }, }, }, typeAnnotation: TSTupleType { @@ -62,17 +62,17 @@ Program { raw: "1", value: 1, - range: [19, 20], + range: [21, 22], loc: { - start: { column: 19, line: 1 }, - end: { column: 20, line: 1 }, + start: { column: 21, line: 1 }, + end: { column: 22, line: 1 }, }, }, - range: [19, 20], + range: [21, 22], loc: { - start: { column: 19, line: 1 }, - end: { column: 20, line: 1 }, + start: { column: 21, line: 1 }, + end: { column: 22, line: 1 }, }, }, TSLiteralType { @@ -82,17 +82,17 @@ Program { raw: "2", value: 2, - range: [22, 23], + range: [24, 25], loc: { - start: { column: 22, line: 1 }, - end: { column: 23, line: 1 }, + start: { column: 24, line: 1 }, + end: { column: 25, line: 1 }, }, }, - range: [22, 23], + range: [24, 25], loc: { - start: { column: 22, line: 1 }, - end: { column: 23, line: 1 }, + start: { column: 24, line: 1 }, + end: { column: 25, line: 1 }, }, }, TSLiteralType { @@ -102,45 +102,45 @@ Program { raw: "3", value: 3, - range: [25, 26], + range: [27, 28], loc: { - start: { column: 25, line: 1 }, - end: { column: 26, line: 1 }, + start: { column: 27, line: 1 }, + end: { column: 28, line: 1 }, }, }, - range: [25, 26], + range: [27, 28], loc: { - start: { column: 25, line: 1 }, - end: { column: 26, line: 1 }, + start: { column: 27, line: 1 }, + end: { column: 28, line: 1 }, }, }, ], - range: [18, 27], + range: [20, 29], loc: { - start: { column: 18, line: 1 }, - end: { column: 27, line: 1 }, + start: { column: 20, line: 1 }, + end: { column: 29, line: 1 }, }, }, - range: [0, 27], + range: [0, 29], loc: { start: { column: 0, line: 1 }, - end: { column: 27, line: 1 }, + end: { column: 29, line: 1 }, }, }, - range: [0, 28], + range: [0, 30], loc: { start: { column: 0, line: 1 }, - end: { column: 28, line: 1 }, + end: { column: 30, line: 1 }, }, }, ], sourceType: "script", - range: [0, 29], + range: [0, 31], loc: { start: { column: 0, line: 1 }, end: { column: 0, line: 2 }, diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/4-Babel-Tokens.shot index 02abe5d8cba..814b7c0915b 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/4-Babel-Tokens.shot +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/array-array/snapshots/4-Babel-Tokens.shot @@ -36,130 +36,130 @@ Array [ type: "Numeric", value: "2", - range: [3, 4], + range: [4, 5], loc: { - start: { column: 3, line: 1 }, - end: { column: 4, line: 1 }, + start: { column: 4, line: 1 }, + end: { column: 5, line: 1 }, }, }, Punctuator { type: "Punctuator", value: ",", - range: [4, 5], + range: [5, 6], loc: { - start: { column: 4, line: 1 }, - end: { column: 5, line: 1 }, + start: { column: 5, line: 1 }, + end: { column: 6, line: 1 }, }, }, Numeric { type: "Numeric", value: "3", - range: [5, 6], + range: [7, 8], loc: { - start: { column: 5, line: 1 }, - end: { column: 6, line: 1 }, + start: { column: 7, line: 1 }, + end: { column: 8, line: 1 }, }, }, Punctuator { type: "Punctuator", value: "]", - range: [6, 7], + range: [8, 9], loc: { - start: { column: 6, line: 1 }, - end: { column: 7, line: 1 }, + start: { column: 8, line: 1 }, + end: { column: 9, line: 1 }, }, }, Identifier { type: "Identifier", value: "satisfies", - range: [8, 17], + range: [10, 19], loc: { - start: { column: 8, line: 1 }, - end: { column: 17, line: 1 }, + start: { column: 10, line: 1 }, + end: { column: 19, line: 1 }, }, }, Punctuator { type: "Punctuator", value: "[", - range: [18, 19], + range: [20, 21], loc: { - start: { column: 18, line: 1 }, - end: { column: 19, line: 1 }, + start: { column: 20, line: 1 }, + end: { column: 21, line: 1 }, }, }, Numeric { type: "Numeric", value: "1", - range: [19, 20], + range: [21, 22], loc: { - start: { column: 19, line: 1 }, - end: { column: 20, line: 1 }, + start: { column: 21, line: 1 }, + end: { column: 22, line: 1 }, }, }, Punctuator { type: "Punctuator", value: ",", - range: [20, 21], + range: [22, 23], loc: { - start: { column: 20, line: 1 }, - end: { column: 21, line: 1 }, + start: { column: 22, line: 1 }, + end: { column: 23, line: 1 }, }, }, Numeric { type: "Numeric", value: "2", - range: [22, 23], + range: [24, 25], loc: { - start: { column: 22, line: 1 }, - end: { column: 23, line: 1 }, + start: { column: 24, line: 1 }, + end: { column: 25, line: 1 }, }, }, Punctuator { type: "Punctuator", value: ",", - range: [23, 24], + range: [25, 26], loc: { - start: { column: 23, line: 1 }, - end: { column: 24, line: 1 }, + start: { column: 25, line: 1 }, + end: { column: 26, line: 1 }, }, }, Numeric { type: "Numeric", value: "3", - range: [25, 26], + range: [27, 28], loc: { - start: { column: 25, line: 1 }, - end: { column: 26, line: 1 }, + start: { column: 27, line: 1 }, + end: { column: 28, line: 1 }, }, }, Punctuator { type: "Punctuator", value: "]", - range: [26, 27], + range: [28, 29], loc: { - start: { column: 26, line: 1 }, - end: { column: 27, line: 1 }, + start: { column: 28, line: 1 }, + end: { column: 29, line: 1 }, }, }, Punctuator { type: "Punctuator", value: ";", - range: [27, 28], + range: [29, 30], loc: { - start: { column: 27, line: 1 }, - end: { column: 28, line: 1 }, + start: { column: 29, line: 1 }, + end: { column: 30, line: 1 }, }, }, ] diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/fixture.ts b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/fixture.ts index 8478834cb78..23c6cdf5a50 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/fixture.ts +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/fixture.ts @@ -1 +1 @@ -() => 1 satisfies number +() => 1 satisfies number; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/1-TSESTree-AST.shot index 57067f8fbff..d678e2b5ace 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/1-TSESTree-AST.shot +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/1-TSESTree-AST.shot @@ -50,16 +50,16 @@ Program { }, }, - range: [0, 24], + range: [0, 25], loc: { start: { column: 0, line: 1 }, - end: { column: 24, line: 1 }, + end: { column: 25, line: 1 }, }, }, ], sourceType: "script", - range: [0, 25], + range: [0, 26], loc: { start: { column: 0, line: 1 }, end: { column: 0, line: 2 }, diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/2-TSESTree-Tokens.shot index 09102ae267b..0d642d94824 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/2-TSESTree-Tokens.shot +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/2-TSESTree-Tokens.shot @@ -62,5 +62,15 @@ Array [ end: { column: 24, line: 1 }, }, }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [24, 25], + loc: { + start: { column: 24, line: 1 }, + end: { column: 25, line: 1 }, + }, + }, ] `; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/3-Babel-AST.shot index 1ef0e54b35d..55e90ce71c0 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/3-Babel-AST.shot +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/3-Babel-AST.shot @@ -50,16 +50,16 @@ Program { }, }, - range: [0, 24], + range: [0, 25], loc: { start: { column: 0, line: 1 }, - end: { column: 24, line: 1 }, + end: { column: 25, line: 1 }, }, }, ], sourceType: "script", - range: [0, 25], + range: [0, 26], loc: { start: { column: 0, line: 1 }, end: { column: 0, line: 2 }, diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/4-Babel-Tokens.shot index 24cc5b2042e..c921c840faa 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/4-Babel-Tokens.shot +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-no-parentheses/snapshots/4-Babel-Tokens.shot @@ -62,5 +62,15 @@ Array [ end: { column: 24, line: 1 }, }, }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [24, 25], + loc: { + start: { column: 24, line: 1 }, + end: { column: 25, line: 1 }, + }, + }, ] `; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/fixture.ts b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/fixture.ts index 15624b9aaf3..d0e16762720 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/fixture.ts +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/fixture.ts @@ -1 +1 @@ -(() => 1) satisfies () => number +(() => 1) satisfies () => number; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/1-TSESTree-AST.shot index 7fa95a22000..193cbbd12e3 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/1-TSESTree-AST.shot +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/1-TSESTree-AST.shot @@ -69,16 +69,16 @@ Program { }, }, - range: [0, 32], + range: [0, 33], loc: { start: { column: 0, line: 1 }, - end: { column: 32, line: 1 }, + end: { column: 33, line: 1 }, }, }, ], sourceType: "script", - range: [0, 33], + range: [0, 34], loc: { start: { column: 0, line: 1 }, end: { column: 0, line: 2 }, diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/2-TSESTree-Tokens.shot index b590cfdea64..7e75dcaa2c0 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/2-TSESTree-Tokens.shot +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/2-TSESTree-Tokens.shot @@ -112,5 +112,15 @@ Array [ end: { column: 32, line: 1 }, }, }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [32, 33], + loc: { + start: { column: 32, line: 1 }, + end: { column: 33, line: 1 }, + }, + }, ] `; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/3-Babel-AST.shot index 71627f35b04..7bddc387f4c 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/3-Babel-AST.shot +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/3-Babel-AST.shot @@ -69,16 +69,16 @@ Program { }, }, - range: [0, 32], + range: [0, 33], loc: { start: { column: 0, line: 1 }, - end: { column: 32, line: 1 }, + end: { column: 33, line: 1 }, }, }, ], sourceType: "script", - range: [0, 33], + range: [0, 34], loc: { start: { column: 0, line: 1 }, end: { column: 0, line: 2 }, diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/4-Babel-Tokens.shot index 58d8821988a..5edb3e0a841 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/4-Babel-Tokens.shot +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/4-Babel-Tokens.shot @@ -112,5 +112,15 @@ Array [ end: { column: 32, line: 1 }, }, }, + Punctuator { + type: "Punctuator", + value: ";", + + range: [32, 33], + loc: { + start: { column: 32, line: 1 }, + end: { column: 33, line: 1 }, + }, + }, ] `; diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/5-AST-Alignment-AST.shot index b45b591c63d..1999cc34c68 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/5-AST-Alignment-AST.shot +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/arrow-func-with-parentheses/snapshots/5-AST-Alignment-AST.shot @@ -75,16 +75,16 @@ exports[`AST Fixtures expression TSSatisfiesExpression arrow-func-with-parenthes }, }, - range: [0, 32], + range: [0, 33], loc: { start: { column: 0, line: 1 }, - end: { column: 32, line: 1 }, + end: { column: 33, line: 1 }, }, }, ], sourceType: 'script', - range: [0, 33], + range: [0, 34], loc: { start: { column: 0, line: 1 }, end: { column: 0, line: 2 }, diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/fixture.ts b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/fixture.ts index 6ead32331fa..dc8407dc0d6 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/fixture.ts +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/fixture.ts @@ -1 +1 @@ -foo ? 1 : 0 satisfies number; +foo ? 1 : (0 satisfies number); diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/1-TSESTree-AST.shot index 5674f78acdf..bb649ea977d 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/1-TSESTree-AST.shot +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/1-TSESTree-AST.shot @@ -15,26 +15,26 @@ Program { raw: "0", value: 0, - range: [10, 11], + range: [11, 12], loc: { - start: { column: 10, line: 1 }, - end: { column: 11, line: 1 }, + start: { column: 11, line: 1 }, + end: { column: 12, line: 1 }, }, }, typeAnnotation: TSNumberKeyword { type: "TSNumberKeyword", - range: [22, 28], + range: [23, 29], loc: { - start: { column: 22, line: 1 }, - end: { column: 28, line: 1 }, + start: { column: 23, line: 1 }, + end: { column: 29, line: 1 }, }, }, - range: [10, 28], + range: [11, 29], loc: { - start: { column: 10, line: 1 }, - end: { column: 28, line: 1 }, + start: { column: 11, line: 1 }, + end: { column: 29, line: 1 }, }, }, consequent: Literal { @@ -59,23 +59,23 @@ Program { }, }, - range: [0, 28], + range: [0, 30], loc: { start: { column: 0, line: 1 }, - end: { column: 28, line: 1 }, + end: { column: 30, line: 1 }, }, }, - range: [0, 29], + range: [0, 31], loc: { start: { column: 0, line: 1 }, - end: { column: 29, line: 1 }, + end: { column: 31, line: 1 }, }, }, ], sourceType: "script", - range: [0, 30], + range: [0, 32], loc: { start: { column: 0, line: 1 }, end: { column: 0, line: 2 }, diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/2-TSESTree-Tokens.shot index 579fa0c0615..43f6da6a680 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/2-TSESTree-Tokens.shot +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/2-TSESTree-Tokens.shot @@ -42,9 +42,9 @@ Array [ end: { column: 9, line: 1 }, }, }, - Numeric { - type: "Numeric", - value: "0", + Punctuator { + type: "Punctuator", + value: "(", range: [10, 11], loc: { @@ -52,34 +52,54 @@ Array [ end: { column: 11, line: 1 }, }, }, + Numeric { + type: "Numeric", + value: "0", + + range: [11, 12], + loc: { + start: { column: 11, line: 1 }, + end: { column: 12, line: 1 }, + }, + }, Identifier { type: "Identifier", value: "satisfies", - range: [12, 21], + range: [13, 22], loc: { - start: { column: 12, line: 1 }, - end: { column: 21, line: 1 }, + start: { column: 13, line: 1 }, + end: { column: 22, line: 1 }, }, }, Identifier { type: "Identifier", value: "number", - range: [22, 28], + range: [23, 29], + loc: { + start: { column: 23, line: 1 }, + end: { column: 29, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ")", + + range: [29, 30], loc: { - start: { column: 22, line: 1 }, - end: { column: 28, line: 1 }, + start: { column: 29, line: 1 }, + end: { column: 30, line: 1 }, }, }, Punctuator { type: "Punctuator", value: ";", - range: [28, 29], + range: [30, 31], loc: { - start: { column: 28, line: 1 }, - end: { column: 29, line: 1 }, + start: { column: 30, line: 1 }, + end: { column: 31, line: 1 }, }, }, ] diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/3-Babel-AST.shot index 9c3ff77da55..4cba5b2f4f1 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/3-Babel-AST.shot +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/3-Babel-AST.shot @@ -15,26 +15,26 @@ Program { raw: "0", value: 0, - range: [10, 11], + range: [11, 12], loc: { - start: { column: 10, line: 1 }, - end: { column: 11, line: 1 }, + start: { column: 11, line: 1 }, + end: { column: 12, line: 1 }, }, }, typeAnnotation: TSNumberKeyword { type: "TSNumberKeyword", - range: [22, 28], + range: [23, 29], loc: { - start: { column: 22, line: 1 }, - end: { column: 28, line: 1 }, + start: { column: 23, line: 1 }, + end: { column: 29, line: 1 }, }, }, - range: [10, 28], + range: [11, 29], loc: { - start: { column: 10, line: 1 }, - end: { column: 28, line: 1 }, + start: { column: 11, line: 1 }, + end: { column: 29, line: 1 }, }, }, consequent: Literal { @@ -59,23 +59,23 @@ Program { }, }, - range: [0, 28], + range: [0, 30], loc: { start: { column: 0, line: 1 }, - end: { column: 28, line: 1 }, + end: { column: 30, line: 1 }, }, }, - range: [0, 29], + range: [0, 31], loc: { start: { column: 0, line: 1 }, - end: { column: 29, line: 1 }, + end: { column: 31, line: 1 }, }, }, ], sourceType: "script", - range: [0, 30], + range: [0, 32], loc: { start: { column: 0, line: 1 }, end: { column: 0, line: 2 }, diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/4-Babel-Tokens.shot index d9c69f96e5e..80d8c6ce89e 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/4-Babel-Tokens.shot +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/conditional-no-parentheses/snapshots/4-Babel-Tokens.shot @@ -42,9 +42,9 @@ Array [ end: { column: 9, line: 1 }, }, }, - Numeric { - type: "Numeric", - value: "0", + Punctuator { + type: "Punctuator", + value: "(", range: [10, 11], loc: { @@ -52,34 +52,54 @@ Array [ end: { column: 11, line: 1 }, }, }, + Numeric { + type: "Numeric", + value: "0", + + range: [11, 12], + loc: { + start: { column: 11, line: 1 }, + end: { column: 12, line: 1 }, + }, + }, Identifier { type: "Identifier", value: "satisfies", - range: [12, 21], + range: [13, 22], loc: { - start: { column: 12, line: 1 }, - end: { column: 21, line: 1 }, + start: { column: 13, line: 1 }, + end: { column: 22, line: 1 }, }, }, Identifier { type: "Identifier", value: "number", - range: [22, 28], + range: [23, 29], + loc: { + start: { column: 23, line: 1 }, + end: { column: 29, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ")", + + range: [29, 30], loc: { - start: { column: 22, line: 1 }, - end: { column: 28, line: 1 }, + start: { column: 29, line: 1 }, + end: { column: 30, line: 1 }, }, }, Punctuator { type: "Punctuator", value: ";", - range: [28, 29], + range: [30, 31], loc: { - start: { column: 28, line: 1 }, - end: { column: 29, line: 1 }, + start: { column: 30, line: 1 }, + end: { column: 31, line: 1 }, }, }, ] diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/fixture.ts b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/fixture.ts index 09a4c612e30..953653b0e23 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/fixture.ts +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/fixture.ts @@ -1 +1 @@ -foo === 1 satisfies number; +foo === (1 satisfies number); diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/1-TSESTree-AST.shot index f80151c9032..1ad1131264a 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/1-TSESTree-AST.shot +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/1-TSESTree-AST.shot @@ -26,46 +26,46 @@ Program { raw: "1", value: 1, - range: [8, 9], + range: [9, 10], loc: { - start: { column: 8, line: 1 }, - end: { column: 9, line: 1 }, + start: { column: 9, line: 1 }, + end: { column: 10, line: 1 }, }, }, typeAnnotation: TSNumberKeyword { type: "TSNumberKeyword", - range: [20, 26], + range: [21, 27], loc: { - start: { column: 20, line: 1 }, - end: { column: 26, line: 1 }, + start: { column: 21, line: 1 }, + end: { column: 27, line: 1 }, }, }, - range: [8, 26], + range: [9, 27], loc: { - start: { column: 8, line: 1 }, - end: { column: 26, line: 1 }, + start: { column: 9, line: 1 }, + end: { column: 27, line: 1 }, }, }, - range: [0, 26], + range: [0, 28], loc: { start: { column: 0, line: 1 }, - end: { column: 26, line: 1 }, + end: { column: 28, line: 1 }, }, }, - range: [0, 27], + range: [0, 29], loc: { start: { column: 0, line: 1 }, - end: { column: 27, line: 1 }, + end: { column: 29, line: 1 }, }, }, ], sourceType: "script", - range: [0, 28], + range: [0, 30], loc: { start: { column: 0, line: 1 }, end: { column: 0, line: 2 }, diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/2-TSESTree-Tokens.shot index 5391022e27f..f5e333ee1db 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/2-TSESTree-Tokens.shot +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/2-TSESTree-Tokens.shot @@ -22,9 +22,9 @@ Array [ end: { column: 7, line: 1 }, }, }, - Numeric { - type: "Numeric", - value: "1", + Punctuator { + type: "Punctuator", + value: "(", range: [8, 9], loc: { @@ -32,34 +32,54 @@ Array [ end: { column: 9, line: 1 }, }, }, + Numeric { + type: "Numeric", + value: "1", + + range: [9, 10], + loc: { + start: { column: 9, line: 1 }, + end: { column: 10, line: 1 }, + }, + }, Identifier { type: "Identifier", value: "satisfies", - range: [10, 19], + range: [11, 20], loc: { - start: { column: 10, line: 1 }, - end: { column: 19, line: 1 }, + start: { column: 11, line: 1 }, + end: { column: 20, line: 1 }, }, }, Identifier { type: "Identifier", value: "number", - range: [20, 26], + range: [21, 27], + loc: { + start: { column: 21, line: 1 }, + end: { column: 27, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ")", + + range: [27, 28], loc: { - start: { column: 20, line: 1 }, - end: { column: 26, line: 1 }, + start: { column: 27, line: 1 }, + end: { column: 28, line: 1 }, }, }, Punctuator { type: "Punctuator", value: ";", - range: [26, 27], + range: [28, 29], loc: { - start: { column: 26, line: 1 }, - end: { column: 27, line: 1 }, + start: { column: 28, line: 1 }, + end: { column: 29, line: 1 }, }, }, ] diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/3-Babel-AST.shot index 60189a70358..a2add050375 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/3-Babel-AST.shot +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/3-Babel-AST.shot @@ -26,46 +26,46 @@ Program { raw: "1", value: 1, - range: [8, 9], + range: [9, 10], loc: { - start: { column: 8, line: 1 }, - end: { column: 9, line: 1 }, + start: { column: 9, line: 1 }, + end: { column: 10, line: 1 }, }, }, typeAnnotation: TSNumberKeyword { type: "TSNumberKeyword", - range: [20, 26], + range: [21, 27], loc: { - start: { column: 20, line: 1 }, - end: { column: 26, line: 1 }, + start: { column: 21, line: 1 }, + end: { column: 27, line: 1 }, }, }, - range: [8, 26], + range: [9, 27], loc: { - start: { column: 8, line: 1 }, - end: { column: 26, line: 1 }, + start: { column: 9, line: 1 }, + end: { column: 27, line: 1 }, }, }, - range: [0, 26], + range: [0, 28], loc: { start: { column: 0, line: 1 }, - end: { column: 26, line: 1 }, + end: { column: 28, line: 1 }, }, }, - range: [0, 27], + range: [0, 29], loc: { start: { column: 0, line: 1 }, - end: { column: 27, line: 1 }, + end: { column: 29, line: 1 }, }, }, ], sourceType: "script", - range: [0, 28], + range: [0, 30], loc: { start: { column: 0, line: 1 }, end: { column: 0, line: 2 }, diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/4-Babel-Tokens.shot index cac159f58dc..e4fa1f6cea5 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/4-Babel-Tokens.shot +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/logical-no-parentheses/snapshots/4-Babel-Tokens.shot @@ -22,9 +22,9 @@ Array [ end: { column: 7, line: 1 }, }, }, - Numeric { - type: "Numeric", - value: "1", + Punctuator { + type: "Punctuator", + value: "(", range: [8, 9], loc: { @@ -32,34 +32,54 @@ Array [ end: { column: 9, line: 1 }, }, }, + Numeric { + type: "Numeric", + value: "1", + + range: [9, 10], + loc: { + start: { column: 9, line: 1 }, + end: { column: 10, line: 1 }, + }, + }, Identifier { type: "Identifier", value: "satisfies", - range: [10, 19], + range: [11, 20], loc: { - start: { column: 10, line: 1 }, - end: { column: 19, line: 1 }, + start: { column: 11, line: 1 }, + end: { column: 20, line: 1 }, }, }, Identifier { type: "Identifier", value: "number", - range: [20, 26], + range: [21, 27], + loc: { + start: { column: 21, line: 1 }, + end: { column: 27, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ")", + + range: [27, 28], loc: { - start: { column: 20, line: 1 }, - end: { column: 26, line: 1 }, + start: { column: 27, line: 1 }, + end: { column: 28, line: 1 }, }, }, Punctuator { type: "Punctuator", value: ";", - range: [26, 27], + range: [28, 29], loc: { - start: { column: 26, line: 1 }, - end: { column: 27, line: 1 }, + start: { column: 28, line: 1 }, + end: { column: 29, line: 1 }, }, }, ] diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/fixture.ts b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/fixture.ts index ec7b71c8e2b..b7726f7f140 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/fixture.ts +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/fixture.ts @@ -1 +1 @@ -({ prop: 'string' }) satisfies { prop: string }; +({ prop: 'string' } satisfies { prop: string }); diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/1-TSESTree-AST.shot index 1ed0e662a99..c39ffc049d1 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/1-TSESTree-AST.shot +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/1-TSESTree-AST.shot @@ -63,10 +63,10 @@ Program { type: "Identifier", name: "prop", - range: [33, 37], + range: [32, 36], loc: { - start: { column: 33, line: 1 }, - end: { column: 37, line: 1 }, + start: { column: 32, line: 1 }, + end: { column: 36, line: 1 }, }, }, typeAnnotation: TSTypeAnnotation { @@ -74,39 +74,39 @@ Program { typeAnnotation: TSStringKeyword { type: "TSStringKeyword", - range: [39, 45], + range: [38, 44], loc: { - start: { column: 39, line: 1 }, - end: { column: 45, line: 1 }, + start: { column: 38, line: 1 }, + end: { column: 44, line: 1 }, }, }, - range: [37, 45], + range: [36, 44], loc: { - start: { column: 37, line: 1 }, - end: { column: 45, line: 1 }, + start: { column: 36, line: 1 }, + end: { column: 44, line: 1 }, }, }, - range: [33, 45], + range: [32, 44], loc: { - start: { column: 33, line: 1 }, - end: { column: 45, line: 1 }, + start: { column: 32, line: 1 }, + end: { column: 44, line: 1 }, }, }, ], - range: [31, 47], + range: [30, 46], loc: { - start: { column: 31, line: 1 }, - end: { column: 47, line: 1 }, + start: { column: 30, line: 1 }, + end: { column: 46, line: 1 }, }, }, - range: [0, 47], + range: [1, 46], loc: { - start: { column: 0, line: 1 }, - end: { column: 47, line: 1 }, + start: { column: 1, line: 1 }, + end: { column: 46, line: 1 }, }, }, diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/2-TSESTree-Tokens.shot index 99f068a424b..be50e77f271 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/2-TSESTree-Tokens.shot +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/2-TSESTree-Tokens.shot @@ -62,70 +62,70 @@ Array [ end: { column: 19, line: 1 }, }, }, - Punctuator { - type: "Punctuator", - value: ")", - - range: [19, 20], - loc: { - start: { column: 19, line: 1 }, - end: { column: 20, line: 1 }, - }, - }, Identifier { type: "Identifier", value: "satisfies", - range: [21, 30], + range: [20, 29], loc: { - start: { column: 21, line: 1 }, - end: { column: 30, line: 1 }, + start: { column: 20, line: 1 }, + end: { column: 29, line: 1 }, }, }, Punctuator { type: "Punctuator", value: "{", - range: [31, 32], + range: [30, 31], loc: { - start: { column: 31, line: 1 }, - end: { column: 32, line: 1 }, + start: { column: 30, line: 1 }, + end: { column: 31, line: 1 }, }, }, Identifier { type: "Identifier", value: "prop", - range: [33, 37], + range: [32, 36], loc: { - start: { column: 33, line: 1 }, - end: { column: 37, line: 1 }, + start: { column: 32, line: 1 }, + end: { column: 36, line: 1 }, }, }, Punctuator { type: "Punctuator", value: ":", - range: [37, 38], + range: [36, 37], loc: { - start: { column: 37, line: 1 }, - end: { column: 38, line: 1 }, + start: { column: 36, line: 1 }, + end: { column: 37, line: 1 }, }, }, Identifier { type: "Identifier", value: "string", - range: [39, 45], + range: [38, 44], loc: { - start: { column: 39, line: 1 }, - end: { column: 45, line: 1 }, + start: { column: 38, line: 1 }, + end: { column: 44, line: 1 }, }, }, Punctuator { type: "Punctuator", value: "}", + range: [45, 46], + loc: { + start: { column: 45, line: 1 }, + end: { column: 46, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ")", + range: [46, 47], loc: { start: { column: 46, line: 1 }, diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/3-Babel-AST.shot index c5868aaf0d1..90c569abf82 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/3-Babel-AST.shot +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/3-Babel-AST.shot @@ -63,10 +63,10 @@ Program { type: "Identifier", name: "prop", - range: [33, 37], + range: [32, 36], loc: { - start: { column: 33, line: 1 }, - end: { column: 37, line: 1 }, + start: { column: 32, line: 1 }, + end: { column: 36, line: 1 }, }, }, typeAnnotation: TSTypeAnnotation { @@ -74,39 +74,39 @@ Program { typeAnnotation: TSStringKeyword { type: "TSStringKeyword", - range: [39, 45], + range: [38, 44], loc: { - start: { column: 39, line: 1 }, - end: { column: 45, line: 1 }, + start: { column: 38, line: 1 }, + end: { column: 44, line: 1 }, }, }, - range: [37, 45], + range: [36, 44], loc: { - start: { column: 37, line: 1 }, - end: { column: 45, line: 1 }, + start: { column: 36, line: 1 }, + end: { column: 44, line: 1 }, }, }, - range: [33, 45], + range: [32, 44], loc: { - start: { column: 33, line: 1 }, - end: { column: 45, line: 1 }, + start: { column: 32, line: 1 }, + end: { column: 44, line: 1 }, }, }, ], - range: [31, 47], + range: [30, 46], loc: { - start: { column: 31, line: 1 }, - end: { column: 47, line: 1 }, + start: { column: 30, line: 1 }, + end: { column: 46, line: 1 }, }, }, - range: [0, 47], + range: [1, 46], loc: { - start: { column: 0, line: 1 }, - end: { column: 47, line: 1 }, + start: { column: 1, line: 1 }, + end: { column: 46, line: 1 }, }, }, diff --git a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/4-Babel-Tokens.shot index 128fc9c6128..45fc90349da 100644 --- a/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/4-Babel-Tokens.shot +++ b/packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/object-object-inner-parentheses/snapshots/4-Babel-Tokens.shot @@ -62,70 +62,70 @@ Array [ end: { column: 19, line: 1 }, }, }, - Punctuator { - type: "Punctuator", - value: ")", - - range: [19, 20], - loc: { - start: { column: 19, line: 1 }, - end: { column: 20, line: 1 }, - }, - }, Identifier { type: "Identifier", value: "satisfies", - range: [21, 30], + range: [20, 29], loc: { - start: { column: 21, line: 1 }, - end: { column: 30, line: 1 }, + start: { column: 20, line: 1 }, + end: { column: 29, line: 1 }, }, }, Punctuator { type: "Punctuator", value: "{", - range: [31, 32], + range: [30, 31], loc: { - start: { column: 31, line: 1 }, - end: { column: 32, line: 1 }, + start: { column: 30, line: 1 }, + end: { column: 31, line: 1 }, }, }, Identifier { type: "Identifier", value: "prop", - range: [33, 37], + range: [32, 36], loc: { - start: { column: 33, line: 1 }, - end: { column: 37, line: 1 }, + start: { column: 32, line: 1 }, + end: { column: 36, line: 1 }, }, }, Punctuator { type: "Punctuator", value: ":", - range: [37, 38], + range: [36, 37], loc: { - start: { column: 37, line: 1 }, - end: { column: 38, line: 1 }, + start: { column: 36, line: 1 }, + end: { column: 37, line: 1 }, }, }, Identifier { type: "Identifier", value: "string", - range: [39, 45], + range: [38, 44], loc: { - start: { column: 39, line: 1 }, - end: { column: 45, line: 1 }, + start: { column: 38, line: 1 }, + end: { column: 44, line: 1 }, }, }, Punctuator { type: "Punctuator", value: "}", + range: [45, 46], + loc: { + start: { column: 45, line: 1 }, + end: { column: 46, line: 1 }, + }, + }, + Punctuator { + type: "Punctuator", + value: ")", + range: [46, 47], loc: { start: { column: 46, line: 1 }, diff --git a/yarn.lock b/yarn.lock index f771e6ece9f..3ca3e9af00c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11560,10 +11560,10 @@ prepend-http@^2.0.0: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= -prettier@*, prettier@2.7.1, prettier@^2.6.2: - version "2.7.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" - integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== +prettier@*, prettier@2.8.0, prettier@^2.6.2: + version "2.8.0" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.0.tgz#c7df58393c9ba77d6fba3921ae01faf994fb9dc9" + integrity sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA== pretty-bytes@^5.3.0: version "5.6.0" From c4ba3877b793a8e81a773cb62e313dcf61b9cb1c Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Wed, 23 Nov 2022 18:23:02 -0500 Subject: [PATCH 135/193] chore(website): add details to Configurations page (#5719) --- docs/linting/CONFIGURATIONS.md | 122 ------------------ docs/linting/CONFIGURATIONS.mdx | 141 +++++++++++++++++++++ docs/linting/troubleshooting/FORMATTING.md | 16 +++ 3 files changed, 157 insertions(+), 122 deletions(-) delete mode 100644 docs/linting/CONFIGURATIONS.md create mode 100644 docs/linting/CONFIGURATIONS.mdx diff --git a/docs/linting/CONFIGURATIONS.md b/docs/linting/CONFIGURATIONS.md deleted file mode 100644 index de05a216ff8..00000000000 --- a/docs/linting/CONFIGURATIONS.md +++ /dev/null @@ -1,122 +0,0 @@ ---- -id: configs -title: Configurations ---- - -[ESLint shareable configurations](https://eslint.org/docs/latest/developer-guide/shareable-configs) exist to provide a comprehensive base config for you, with the intention that you add the config and it gives you an opinionated setup. - -## Built-In Configurations - -`@typescript-eslint/eslint-plugin` includes built-in configurations you can extend from to pull in the recommended starting rules. - -With the exception of `strict`, all configurations are considered "stable". -Rule additions and removals are treated as breaking changes and will only be done in major version bumps. - -:::note -We recommend most packages extend from [`recommended-requiring-type-checking`](#recommended-requiring-type-checking) (which requires [typed linting](./TYPED_LINTING.md)). -::: - -### `eslint-recommended` - -This ruleset is meant to be used after extending `eslint:recommended`. -It disables core ESLint rules that are already checked by the TypeScript compiler. -Additionally, it enables rules that promote using the more modern constructs TypeScript allows for. - -```jsonc -{ - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/eslint-recommended" - ] -} -``` - -This config is automatically included if you use any of the other configurations mentioned on this page. - -### `recommended` - -Recommended rules for code correctness that you can drop in without additional configuration. -These rules are those whose reports are almost always for a bad practice and/or likely bug. -`recommended` also disables rules known to conflict with this repository, or cause issues in TypeScript codebases. - -```json -{ - "extends": ["plugin:@typescript-eslint/recommended"] -} -``` - -:::tip -We strongly recommend all TypeScript projects extend from this configuration. -::: - -### `recommended-requiring-type-checking` - -Additional recommended rules that require type information. -Rules in this configuration are similarly useful to those in `recommended`. - -```json -{ - "extends": [ - "plugin:@typescript-eslint/recommended", - "plugin:@typescript-eslint/recommended-requiring-type-checking" - ] -} -``` - -:::tip -We recommend all TypeScript projects extend from this configuration, with the caveat that rules using type information take longer to run. -See [Linting with Type Information](/docs/linting/typed-linting) for more details. -::: - -### `strict` - -Additional strict rules that can also catch bugs but are more opinionated than recommended rules. - -```json -{ - "extends": [ - "plugin:@typescript-eslint/recommended", - "plugin:@typescript-eslint/recommended-requiring-type-checking", - "plugin:@typescript-eslint/strict" - ] -} -``` - -:::tip -We recommend a TypeScript project extend from this configuration only if a nontrivial percentage of its developers are highly proficient in TypeScript. -::: - -## Overriding Configurations - -These configurations are our recommended starting points, but **you don't need to use them as-is**. -ESLint allows you to configure your own rule settings on top of any extended configurations. -See [ESLint's Configuring Rules docs](https://eslint.org/docs/user-guide/configuring/rules#using-configuration-files). - -### Suggesting Configuration Changes - -If you feel strongly that a specific rule should (or should not) be one of these configurations, please [file an issue](https://github.com/typescript-eslint/typescript-eslint/issues/new?assignees=&labels=package%3A+eslint-plugin%2Cpreset+config+change%2Ctriage&template=09-config-change.yaml&title=Configs%3A+%3Ca+short+description+of+my+proposal%3E) along with a **detailed** argument explaining your reasoning. - -## Prettier - -If you use [`prettier`](https://www.npmjs.com/package/prettier), there is also a helpful config to help ensure ESLint doesn't report on formatting issues that prettier will fix: [`eslint-config-prettier`](https://www.npmjs.com/package/eslint-config-prettier). - -Using this config by adding it to the end of your `extends`: - -```js title=".eslintrc.js" -module.exports = { - root: true, - parser: '@typescript-eslint/parser', - plugins: ['@typescript-eslint'], - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - // Add this line - 'prettier', - ], -}; -``` - -:::warning -**We strongly recommend you use Prettier or an equivalent**, not ESLint formatting rules. -See [this issue](https://github.com/typescript-eslint/typescript-eslint/issues/4907 'Issue: Docs: Add our opinion on delegating stylistic issues to a tool such as Prettier #4907') for more information. -::: diff --git a/docs/linting/CONFIGURATIONS.mdx b/docs/linting/CONFIGURATIONS.mdx new file mode 100644 index 00000000000..eebf58cf8fd --- /dev/null +++ b/docs/linting/CONFIGURATIONS.mdx @@ -0,0 +1,141 @@ +--- +id: configs +title: Configurations +--- + +[ESLint shareable configurations](https://eslint.org/docs/latest/developer-guide/shareable-configs) exist to provide a comprehensive base config for you. +`@typescript-eslint/eslint-plugin` includes built-in configurations you can extend from to pull in the recommended starting rules. + +> With the exception of `strict`, all configurations are considered "stable". +> Rule additions and removals are treated as breaking changes and will only be done in major version bumps. + +## Recommended Configurations + +Most projects should extend from at least one of: + +- [`recommended`](#recommended): Recommended rules for code correctness that you can drop in without additional configuration. +- [`recommended-requiring-type-checking`](#recommended-requiring-type-checking): Additional recommended rules that require type information. +- [`strict`](#strict): Additional strict rules that can also catch bugs but are more opinionated than recommended rules. + +:::tip +We recommend most projects use [`recommended-requiring-type-checking`](#recommended-requiring-type-checking) (which requires [typed linting](./TYPED_LINTING.md)). +::: + +:::note +These configurations are our recommended starting points, but **you don't need to use them as-is**. +ESLint allows configuring own rule settings on top of extended configurations. +See [ESLint's Configuring Rules docs](https://eslint.org/docs/user-guide/configuring/rules#using-configuration-files). +::: + +### `recommended` + +Recommended rules for code correctness that you can drop in without additional configuration. +These rules are those whose reports are almost always for a bad practice and/or likely bug. +`recommended` also disables rules known to conflict with this repository, or cause issues in TypeScript codebases. + +```json +{ + "extends": ["plugin:@typescript-eslint/recommended"] +} +``` + +See [`configs/recommended.ts`](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/src/configs/recommended.ts) for the exact contents of this config. + +:::tip +We strongly recommend all TypeScript projects extend from `plugin:@typescript-eslint/recommended`. +::: + +### `recommended-requiring-type-checking` + +Additional recommended rules that require type information. +Rules in this configuration are similarly useful to those in `recommended`. + +```json +{ + "extends": [ + "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/recommended-requiring-type-checking" + ] +} +``` + +See [`configs/recommended-requiring-type-checking.ts`](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/src/configs/recommended-requiring-type-checking.ts) for the exact contents of this config. + +:::tip +We recommend all TypeScript projects extend from `plugin:@typescript-eslint/recommended-requiring-type-checking`, with the caveat that rules using type information take longer to run. +See [Linting with Type Information](/docs/linting/typed-linting) for more details. +::: + +### `strict` + +Additional strict rules that can also catch bugs but are more opinionated than recommended rules. + +```json +{ + "extends": [ + "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/recommended-requiring-type-checking", + "plugin:@typescript-eslint/strict" + ] +} +``` + +See [`configs/strict.ts`](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/src/configs/strict.ts) for the exact contents of this config. + +:::caution +We recommend a TypeScript project extend from `plugin:@typescript-eslint/strict` only if a nontrivial percentage of its developers are highly proficient in TypeScript. +::: + +## Other Configurations + +TypeScript ESLint includes a scattering of utility configurations used by the recommended configurations. +We don't recommend using these directly; instead, extend from an earlier recommended rule. + +### `all` + +Enables each the rules provided as a part of TypeScript ESLint. +Note that many rules are not applicable in all codebases, or are meant to be configured. + +See [`configs/all.ts`](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/src/configs/all.ts) for the exact contents of this config. + +:::warning +We do not recommend a TypeScript projects extend from `plugin:@typescript-eslint/all`. +Many rules conflict with each other and/or are intended to be configured per-project. +::: + +### `base` + +A minimal ruleset that sets only the required parser and plugin options needed to run TypeScript ESLint. + + + +This config is automatically included if you use any of the recommended configurations. + +### `eslint-recommended` + +This ruleset is meant to be used after extending `eslint:recommended`. +It disables core ESLint rules that are already checked by the TypeScript compiler. +Additionally, it enables rules that promote using the more modern constructs TypeScript allows for. + +```jsonc +{ + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/eslint-recommended" + ] +} +``` + +This config is automatically included if you use any of the recommended configurations. + +See [`configs/eslint-recommended.ts``](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/src/configs/eslint-recommended.ts) for the exact contents of this config. + +## Suggesting Configuration Changes + +If you feel strongly that a specific rule should (or should not) be one of these configurations, please [file an issue](https://github.com/typescript-eslint/typescript-eslint/issues/new?assignees=&labels=package%3A+eslint-plugin%2Cpreset+config+change%2Ctriage&template=09-config-change.yaml&title=Configs%3A+%3Ca+short+description+of+my+proposal%3E) along with a **detailed** argument explaining your reasoning. + +## Formatting + +None of the preset configs provided by TypeScript ESLint enable formatting rules (rules that only serve to enforce code whitespace and other trivia). +We strongly recommend you use Prettier or an equivalent for formatting your code, not ESLint formatting rules. +See [What About Formatting? > Suggested Usage](./troubleshooting/formatting#suggested-usage). diff --git a/docs/linting/troubleshooting/FORMATTING.md b/docs/linting/troubleshooting/FORMATTING.md index 2acb36d0e60..47ff57c3b45 100644 --- a/docs/linting/troubleshooting/FORMATTING.md +++ b/docs/linting/troubleshooting/FORMATTING.md @@ -27,6 +27,22 @@ Linters typically run on a rule-by-rule basis, typically resulting in many edge We recommend using [`eslint-config-prettier`](https://github.com/prettier/eslint-config-prettier) to disable formatting rules in your ESLint configuration. You can then configure your formatter separately from ESLint. +Using this config by adding it to the end of your `extends`: + +```js title=".eslintrc.js" +module.exports = { + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + // Add this line + 'prettier', + ], + parser: '@typescript-eslint/parser', + plugins: ['@typescript-eslint'], + root: true, +}; +``` + ## ESLint Core and Formatting Per [ESLint's 2020 Changes to Rule Policies blog post](https://eslint.org/blog/2020/05/changes-to-rules-policies#what-are-the-changes): From 6de4a9a6493fcab3d9d753c8ec5c643c60f22210 Mon Sep 17 00:00:00 2001 From: James Henry Date: Thu, 24 Nov 2022 03:28:44 +0400 Subject: [PATCH 136/193] chore: add automation for @nrwl + nx package updates (#5797) * chore: add automation for @nrwl + nx package updates * chore: fix formatting --- .github/renovate.json5 | 4 +- .github/workflows/nx-migrate.yml | 85 ++++++++++++++++++++++++++++++++ package.json | 3 +- tools/postinstall.ts | 34 +++++++++++++ yarn.lock | 2 +- 5 files changed, 124 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/nx-migrate.yml create mode 100644 tools/postinstall.ts diff --git a/.github/renovate.json5 b/.github/renovate.json5 index f5d016eb6db..0c18b35da84 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -5,14 +5,14 @@ 'globby', // this dep now uses package.json exports - we will be removing it next major 'eslint-scope', + // this dep is now ESM only + 'execa', // the nx packages get updated using the nx migrate CLI '@nrwl/cli', '@nrwl/devkit', '@nrwl/jest', '@nrwl/nx-cloud', '@nrwl/tao', - '@nrwl/workspace', - 'nx', ], ignorePaths: [ // integration test package.json's should never be updated as they're purposely fixed tests diff --git a/.github/workflows/nx-migrate.yml b/.github/workflows/nx-migrate.yml new file mode 100644 index 00000000000..af107f6c391 --- /dev/null +++ b/.github/workflows/nx-migrate.yml @@ -0,0 +1,85 @@ +# This workflow is used to augment the capabilities of the renovate GitHub app by running a full +# `nx migrate` when renovate opens a PR to change the version of @nrwl/workspace. +# +# You will therefore also notice that in the renovate configuration, we ignore any packages which +# Nx will manage for us as part of `nx migrate` such as the remaining @nrwl/* packages and jest. + +name: Nx Migrate + +on: + pull_request: + branches: [main] + paths: + - 'package.json' + +concurrency: + group: ${{ github.workflow }}-${{ github.event.number || github.ref }} + cancel-in-progress: true + +jobs: + maybe_nx_migrate: + # Only run if it was the renovate bot that triggered the workflow (otherwise we'll create a loop) + if: contains('["renovate[bot]"]', github.actor) == true + name: Run nx migrate if required + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + # To allow us to perform the git diff we need the git history + fetch-depth: 0 + # To ensure we can push from a different user (and therefore cause actions to rerun) + persist-credentials: false + + - name: Derive appropriate SHAs for base and head for `nx affected` commands + uses: nrwl/nx-set-shas@v3 + + - name: Check if @nrwl/workspace was changed as part of the latest commit on the PR + id: nrwl-workspace-package-check + run: | + git diff HEAD~1 -G"@nrwl/workspace" --exit-code package.json && echo "@nrwl/workspace unchanged" || echo "::set-output name=was-changed::true" + + - name: Run nx migrate if @nrwl/workspace changed and commit the results + if: ${{ steps.nrwl-workspace-package-check.outputs.was-changed == 'true' }} + env: + # We cannot use secrets.GITHUB_TOKEN for this because it is not permitted to kick off subsequent actions worfklow runs, so we use a PAT instead + GITHUB_TOKEN: ${{ secrets.JAMES_HENRY_GITHUB_TOKEN }} + # We don't want to run any of our postinstall logic when Nx is invoking install behind the scenes + SKIP_POSTINSTALL: 'true' + run: | + # Checkout the PR branch using the github CLI + gh pr checkout ${{ github.event.pull_request.number }} + + # Get the version of Nx we are migrating to + NX_VERSION=$(node -e "console.log(require('./package.json').devDependencies['@nrwl/workspace'])") + + # Revert renovate's changes to package.json and yarn.lock so that it is a clean migrate from the status quo + git checkout HEAD~1 -- package.json yarn.lock + + yarn --ignore-scripts + + npx nx migrate @nrwl/workspace@$NX_VERSION + + # Sometimes Nx can require config formatting changes after a migrate command + yarn --ignore-scripts + npx nx format + + # migrations.json may or may not exist after running nx migrate + if [ -f migrations.json ]; then + # This will also invoke yarn automatically + npx nx migrate --run-migrations=migrations.json + + # After we have run its migrations, we no longer need the migrations.json file + rm migrations.json + fi + + # Ensure all the changed files are formatted appropriately + yarn format + + # Commit all the changes to the PR (see note on not being able to use secrets.GITHUB_TOKEN for this) + git config --global user.email "james@henry.sc" + git config --global user.name "JamesHenry" + git remote set-url origin https://x-access-token:$GITHUB_TOKEN@github.com/$GITHUB_REPOSITORY.git + + git add --all + git commit -m "chore: run nx migrate for @nrwl/workspace v$NX_VERSION" + git push diff --git a/package.json b/package.json index 30b2b224022..c5c7499365c 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "lint-markdown-fix": "yarn lint-markdown --fix", "lint-markdown": "markdownlint \"**/*.md\" --config=.markdownlint.json --ignore-path=.markdownlintignore", "lint": "nx run-many --target=lint --all --parallel", - "postinstall": "yarn patch-package && yarn husky install && yarn build", + "postinstall": "yarn ts-node --transpile-only ./tools/postinstall.ts", "pre-commit": "yarn lint-staged", "start": "nx run website:start", "test": "nx run-many --target=test --all --parallel", @@ -86,6 +86,7 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^26.1.5", "eslint-plugin-simple-import-sort": "^8.0.0", + "execa": "5.1.1", "glob": "^8.0.1", "husky": "^8.0.1", "jest": "^29.0.3", diff --git a/tools/postinstall.ts b/tools/postinstall.ts new file mode 100644 index 00000000000..b222b290e68 --- /dev/null +++ b/tools/postinstall.ts @@ -0,0 +1,34 @@ +import * as execa from 'execa'; + +/** + * In certain circumstances we want to skip the below the steps and it may not always + * be possible to use --ignore-scripts (e.g. if another tool is what is invoking the + * install command, such as when nx migrate runs). We therefore use and env var for this. + */ + +if (process.env.SKIP_POSTINSTALL) { + console.log( + '\nSkipping postinstall script because $SKIP_POSTINSTALL is set...\n', + ); + // eslint-disable-next-line no-process-exit + process.exit(0); +} + +void (async function (): Promise { + // Apply patches to installed node_modules + await $`yarn patch-package`; + + // Install git hooks + await $`yarn husky install`; + + // // Build all the packages ready for use + await $`yarn build`; +})(); + +async function $(cmd: TemplateStringsArray): Promise { + const command = cmd.join(); + console.log(`\n$ ${command}`); + return execa.command(command, { + stdio: 'inherit', + }); +} diff --git a/yarn.lock b/yarn.lock index 3ca3e9af00c..2598bd29b00 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7132,7 +7132,7 @@ events@^3.2.0: resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -execa@^5.0.0: +execa@5.1.1, execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== From 42b33af256e5269feb214c7bb161079f770964fa Mon Sep 17 00:00:00 2001 From: Muhammad Hammad <33136628+mhnaeem@users.noreply.github.com> Date: Wed, 23 Nov 2022 18:40:20 -0500 Subject: [PATCH 137/193] fix(eslint-plugin): [array-type] --fix flag removes parentheses from type (#5997) --- .../eslint-plugin/src/rules/array-type.ts | 3 +- .../tests/rules/array-type.test.ts | 55 +++++++++++++++++++ 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/packages/eslint-plugin/src/rules/array-type.ts b/packages/eslint-plugin/src/rules/array-type.ts index 92040d8106a..f353207e7d5 100644 --- a/packages/eslint-plugin/src/rules/array-type.ts +++ b/packages/eslint-plugin/src/rules/array-type.ts @@ -252,8 +252,7 @@ export default util.createRule({ } const type = typeParams[0]; - const typeParens = - !util.isParenthesized(type, sourceCode) && typeNeedsParentheses(type); + const typeParens = typeNeedsParentheses(type); const parentParens = readonlyPrefix && node.parent?.type === AST_NODE_TYPES.TSArrayType && diff --git a/packages/eslint-plugin/tests/rules/array-type.test.ts b/packages/eslint-plugin/tests/rules/array-type.test.ts index c32da51cc08..04ab47d0b8a 100644 --- a/packages/eslint-plugin/tests/rules/array-type.test.ts +++ b/packages/eslint-plugin/tests/rules/array-type.test.ts @@ -1982,6 +1982,61 @@ class Foo extends Bar implements Baz { } `, ); + testOutput( + 'array', + ` +interface WorkingArray { + outerProperty: Array< + { innerPropertyOne: string } & { innerPropertyTwo: string } + >; +} + +interface BrokenArray { + outerProperty: Array< + ({ innerPropertyOne: string } & { innerPropertyTwo: string }) + >; +} + `, + ` +interface WorkingArray { + outerProperty: ({ innerPropertyOne: string } & { innerPropertyTwo: string })[]; +} + +interface BrokenArray { + outerProperty: ({ innerPropertyOne: string } & { innerPropertyTwo: string })[]; +} + `, + ); + testOutput( + 'array', + ` +type WorkingArray = { + outerProperty: Array< + { innerPropertyOne: string } & { innerPropertyTwo: string } + >; +} + +type BrokenArray = { + outerProperty: Array< + ({ innerPropertyOne: string } & { innerPropertyTwo: string }) + >; +} + `, + ` +type WorkingArray = { + outerProperty: ({ innerPropertyOne: string } & { innerPropertyTwo: string })[]; +} + +type BrokenArray = { + outerProperty: ({ innerPropertyOne: string } & { innerPropertyTwo: string })[]; +} + `, + ); + testOutput( + 'array', + 'const a: Array<(string|number)>;', + 'const a: (string|number)[];', + ); testOutput( 'array-simple', 'let xx: Array> = [[1, 2], [3]];', From 1f19998e3ec6d592fc679a7490708e2e96816f4c Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Wed, 23 Nov 2022 19:20:42 -0500 Subject: [PATCH 138/193] fix(eslint-plugin): [keyword-spacing] prevent crash on no options (#6073) --- packages/eslint-plugin/src/rules/keyword-spacing.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/eslint-plugin/src/rules/keyword-spacing.ts b/packages/eslint-plugin/src/rules/keyword-spacing.ts index 6af42e5c2fb..32fb2aaeb71 100644 --- a/packages/eslint-plugin/src/rules/keyword-spacing.ts +++ b/packages/eslint-plugin/src/rules/keyword-spacing.ts @@ -25,7 +25,7 @@ export default util.createRule({ }, defaultOptions: [{}], - create(context) { + create(context, [{ after }]) { const sourceCode = context.getSourceCode(); const baseRules = baseRule.create(context); return { @@ -58,7 +58,7 @@ export default util.createRule({ const punctuatorToken = sourceCode.getTokenAfter(typeToken)!; const spacesBetweenTypeAndPunctuator = punctuatorToken.range[0] - typeToken.range[1]; - if (context.options[0].after && spacesBetweenTypeAndPunctuator === 0) { + if (after && spacesBetweenTypeAndPunctuator === 0) { context.report({ loc: punctuatorToken.loc, messageId: 'expectedBefore', @@ -68,7 +68,7 @@ export default util.createRule({ }, }); } - if (!context.options[0].after && spacesBetweenTypeAndPunctuator > 0) { + if (!after && spacesBetweenTypeAndPunctuator > 0) { context.report({ loc: punctuatorToken.loc, messageId: 'unexpectedBefore', From 53671d30daa7a307b01492c1ccfcd87aa4348837 Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Thu, 24 Nov 2022 13:27:01 +1030 Subject: [PATCH 139/193] chore: add action to enforce semantic-pr titles (#6075) --- .github/workflows/semantic-pr-titles.yml | 52 ++++++++++++++++++++++++ CONTRIBUTING.md | 2 + 2 files changed, 54 insertions(+) create mode 100644 .github/workflows/semantic-pr-titles.yml diff --git a/.github/workflows/semantic-pr-titles.yml b/.github/workflows/semantic-pr-titles.yml new file mode 100644 index 00000000000..24b6fb7c7ab --- /dev/null +++ b/.github/workflows/semantic-pr-titles.yml @@ -0,0 +1,52 @@ +name: Semantic PR Titles + +on: + pull_request_target: + types: + - opened + - edited + - synchronize + +jobs: + main: + name: Validate PR title + runs-on: ubuntu-latest + steps: + - uses: amannn/action-semantic-pull-request@v5 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + # keep this synchronized with the /CONTRIBUTING.md + types: | + docs + feat + fix + test + chore + # deps is used by renovate for its PRs + scopes: | + deps + ast-spec + eslint-plugin + eslint-plugin-internal + eslint-plugin-tslint + experimental-utils + parser + scope-manager + type-utils + types + typescript-estree + utils + visitor-keys + website + # we allow "cross package" PRs with no scope + requireScope: false + # ensure that the subject is lower-case first + # also allows "[rule-name] " prefix for eslint-plugin rule PRs + # https://regexr.com/733ed + subjectPattern: ^(\[[a-z\-]+\] )?[a-z].+[^\.]$ + subjectPatternError: | + The "subject" must start with a lower-case letter and must not + end with a full-stop. + For PRs that add or change ESLint-plugin rules, you should begin + the title with "[rule-name] " diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3c08116cdc9..aaf07b243ee 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -84,6 +84,8 @@ Within the body of your PR, make sure you reference the issue that you have work Must be one of the following: + + - `docs` - if you only change documentation, and not shipped code - `feat` - for any new functionality additions - `fix` - for any bug fixes that don't add new functionality From 1302b30ecad9eb55aa9f1daa5068d9fb72c3688e Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Fri, 25 Nov 2022 01:51:36 +1030 Subject: [PATCH 140/193] fix(typescript-estree): stub out `ts.SatisfiesExpression` on old TS versions (#6076) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## PR Checklist - [x] Steps in [CONTRIBUTING.md](https://github.com/typescript-eslint/typescript-eslint/blob/main/CONTRIBUTING.md) were taken ## Overview Another thing we need to add to the "new syntax" contributor guide. This union is part of the API surface for the package, so we need to ensure we don't break the build on old TS versions by "stubbing" out the new AST node types. Also added version comments so it's easy to tell when we can remove them as we bump the minimum TS version Co-authored-by: bjz@Brads-MacBook-Pro.local <> --- packages/typescript-estree/src/ts-estree/ts-nodes.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/typescript-estree/src/ts-estree/ts-nodes.ts b/packages/typescript-estree/src/ts-estree/ts-nodes.ts index 873f98e5a15..0ba5414e137 100644 --- a/packages/typescript-estree/src/ts-estree/ts-nodes.ts +++ b/packages/typescript-estree/src/ts-estree/ts-nodes.ts @@ -4,12 +4,18 @@ import type * as ts from 'typescript'; // Eg: https://github.com/typescript-eslint/typescript-eslint/issues/2388, https://github.com/typescript-eslint/typescript-eslint/issues/2784 declare module 'typescript' { /* eslint-disable @typescript-eslint/no-empty-interface */ + // added in TS 4.0 export interface NamedTupleMember extends ts.Node {} + // added in TS 4.1 export interface TemplateLiteralTypeNode extends ts.Node {} + // added in TS 4.3 export interface PrivateIdentifier extends ts.Node {} export interface ClassStaticBlockDeclaration extends ts.Node {} + // added in TS 4.5 export interface AssertClause extends ts.Node {} export interface AssertEntry extends ts.Node {} + // added in TS 4.9 + export interface SatisfiesExpression extends ts.Node {} /* eslint-enable @typescript-eslint/no-empty-interface */ } From ee62b0b18afb85fe901a48f816bda5802acc907a Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Thu, 24 Nov 2022 14:39:19 -0500 Subject: [PATCH 141/193] chore: use no-restricted-syntax to enforce created options in rules (#6074) * fix(eslint-plugin): [keyword-spacing] prevent crash on no options * chore: add internal lint rule to always prefer created options * All right base rules, you do you --- .eslintrc.js | 10 ++++++++++ packages/eslint-plugin/src/rules/brace-style.ts | 1 + packages/eslint-plugin/src/rules/no-unused-vars.ts | 4 +--- .../eslint-plugin/src/rules/object-curly-spacing.ts | 1 + .../src/rules/padding-line-between-statements.ts | 1 + .../eslint-plugin/src/rules/space-before-blocks.ts | 3 +-- 6 files changed, 15 insertions(+), 5 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 6dfb0c35362..81f745d3824 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -264,6 +264,16 @@ module.exports = { // specifically for rules - default exports makes the tooling easier 'import/no-default-export': 'off', + + 'no-restricted-syntax': [ + 'error', + { + selector: + 'ExportDefaultDeclaration Property[key.name="create"] MemberExpression[object.name="context"][property.name="options"]', + message: + "Retrieve options from create's second parameter so that defaultOptions are applied.", + }, + ], }, }, // plugin rule tests diff --git a/packages/eslint-plugin/src/rules/brace-style.ts b/packages/eslint-plugin/src/rules/brace-style.ts index c4b052beadd..43d4ba63c3c 100644 --- a/packages/eslint-plugin/src/rules/brace-style.ts +++ b/packages/eslint-plugin/src/rules/brace-style.ts @@ -29,6 +29,7 @@ export default createRule({ defaultOptions: ['1tbs'], create(context) { const [style, { allowSingleLine } = { allowSingleLine: false }] = + // eslint-disable-next-line no-restricted-syntax -- Use raw options for extended rules. context.options; const isAllmanStyle = style === 'allman'; diff --git a/packages/eslint-plugin/src/rules/no-unused-vars.ts b/packages/eslint-plugin/src/rules/no-unused-vars.ts index 5fcde198667..77da885048d 100644 --- a/packages/eslint-plugin/src/rules/no-unused-vars.ts +++ b/packages/eslint-plugin/src/rules/no-unused-vars.ts @@ -84,7 +84,7 @@ export default util.createRule({ }, }, defaultOptions: [{}], - create(context) { + create(context, [firstOption]) { const filename = context.getFilename(); const sourceCode = context.getSourceCode(); const MODULE_DECL_CACHE = new Map(); @@ -97,8 +97,6 @@ export default util.createRule({ caughtErrors: 'none', }; - const [firstOption] = context.options; - if (firstOption) { if (typeof firstOption === 'string') { options.vars = firstOption; diff --git a/packages/eslint-plugin/src/rules/object-curly-spacing.ts b/packages/eslint-plugin/src/rules/object-curly-spacing.ts index 5c188bb2c07..1c1c737c842 100644 --- a/packages/eslint-plugin/src/rules/object-curly-spacing.ts +++ b/packages/eslint-plugin/src/rules/object-curly-spacing.ts @@ -31,6 +31,7 @@ export default createRule({ }, defaultOptions: ['never'], create(context) { + // eslint-disable-next-line no-restricted-syntax -- Use raw options for extended rules. const [firstOption, secondOption] = context.options; const spaced = firstOption === 'always'; const sourceCode = context.getSourceCode(); diff --git a/packages/eslint-plugin/src/rules/padding-line-between-statements.ts b/packages/eslint-plugin/src/rules/padding-line-between-statements.ts index a3c354ea737..f9b97096afc 100644 --- a/packages/eslint-plugin/src/rules/padding-line-between-statements.ts +++ b/packages/eslint-plugin/src/rules/padding-line-between-statements.ts @@ -634,6 +634,7 @@ export default util.createRule({ defaultOptions: [], create(context) { const sourceCode = context.getSourceCode(); + // eslint-disable-next-line no-restricted-syntax -- We need all raw options. const configureList = context.options || []; type Scope = null | { diff --git a/packages/eslint-plugin/src/rules/space-before-blocks.ts b/packages/eslint-plugin/src/rules/space-before-blocks.ts index 569be350cd7..5f16929aa52 100644 --- a/packages/eslint-plugin/src/rules/space-before-blocks.ts +++ b/packages/eslint-plugin/src/rules/space-before-blocks.ts @@ -29,9 +29,8 @@ export default util.createRule({ }, }, defaultOptions: ['always'], - create(context) { + create(context, [config]) { const rules = baseRule.create(context); - const config = context.options[0]; const sourceCode = context.getSourceCode(); let requireSpace = true; From f02761af19848a84b8d1832bd00fd6c95d38fa0c Mon Sep 17 00:00:00 2001 From: Sviatoslav Zaytsev Date: Fri, 25 Nov 2022 04:09:46 +0300 Subject: [PATCH 142/193] fix(eslint-plugin): [member-ordering] support private fields (#5859) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Святослав Зайцев --- .../docs/rules/member-ordering.md | 50 +++- .../src/rules/member-ordering.ts | 102 ++++--- .../tests/rules/member-ordering.test.ts | 249 +++++++++++++++++- 3 files changed, 351 insertions(+), 50 deletions(-) diff --git a/packages/eslint-plugin/docs/rules/member-ordering.md b/packages/eslint-plugin/docs/rules/member-ordering.md index 7adde7ba9a6..bfab8265260 100644 --- a/packages/eslint-plugin/docs/rules/member-ordering.md +++ b/packages/eslint-plugin/docs/rules/member-ordering.md @@ -54,7 +54,7 @@ The `OrderConfig` settings for each kind of construct may configure sorting on o You can define many different groups based on different attributes of members. The supported member attributes are, in order: -- **Accessibility** (`'public' | 'protected' | 'private'`) +- **Accessibility** (`'public' | 'protected' | 'private' | '#private'`) - **Decoration** (`'decorated'`): Whether the member has an explicit accessibility decorator - **Kind** (`'call-signature' | 'constructor' | 'field' | 'get' | 'method' | 'set' | 'signature'`) @@ -81,11 +81,13 @@ The default configuration looks as follows: "default": [ // Index signature "signature", + "call-signature", // Fields "public-static-field", "protected-static-field", "private-static-field", + "#private-static-field", "public-decorated-field", "protected-decorated-field", @@ -94,14 +96,15 @@ The default configuration looks as follows: "public-instance-field", "protected-instance-field", "private-instance-field", + "#private-instance-field", "public-abstract-field", "protected-abstract-field", - "private-abstract-field", "public-field", "protected-field", "private-field", + "#private-field", "static-field", "instance-field", @@ -125,6 +128,7 @@ The default configuration looks as follows: "public-static-get", "protected-static-get", "private-static-get", + "#private-static-get", "public-decorated-get", "protected-decorated-get", @@ -133,14 +137,15 @@ The default configuration looks as follows: "public-instance-get", "protected-instance-get", "private-instance-get", + "#private-instance-get", "public-abstract-get", "protected-abstract-get", - "private-abstract-get", "public-get", "protected-get", "private-get", + "#private-get", "static-get", "instance-get", @@ -154,6 +159,7 @@ The default configuration looks as follows: "public-static-set", "protected-static-set", "private-static-set", + "#private-static-set", "public-decorated-set", "protected-decorated-set", @@ -162,14 +168,15 @@ The default configuration looks as follows: "public-instance-set", "protected-instance-set", "private-instance-set", + "#private-instance-set", "public-abstract-set", "protected-abstract-set", - "private-abstract-set", "public-set", "protected-set", "private-set", + "#private-set", "static-set", "instance-set", @@ -183,6 +190,7 @@ The default configuration looks as follows: "public-static-method", "protected-static-method", "private-static-method", + "#private-static-method", "public-decorated-method", "protected-decorated-method", @@ -191,14 +199,15 @@ The default configuration looks as follows: "public-instance-method", "protected-instance-method", "private-instance-method", + "#private-instance-method", "public-abstract-method", "protected-abstract-method", - "private-abstract-method", "public-method", "protected-method", "private-method", + "#private-method", "static-method", "instance-method", @@ -918,15 +927,32 @@ The most explicit and granular form is the following: "public-static-field", "protected-static-field", "private-static-field", + "#private-static-field", + "public-decorated-field", "protected-decorated-field", "private-decorated-field", + "public-instance-field", "protected-instance-field", "private-instance-field", + "#private-instance-field", + "public-abstract-field", "protected-abstract-field", - "private-abstract-field", + + "public-field", + "protected-field", + "private-field", + "#private-field", + + "static-field", + "instance-field", + "abstract-field", + + "decorated-field", + + "field", // Static initialization "static-initialization", @@ -940,6 +966,7 @@ The most explicit and granular form is the following: "public-static-get", "protected-static-get", "private-static-get", + "#private-static-get", "public-decorated-get", "protected-decorated-get", @@ -948,14 +975,15 @@ The most explicit and granular form is the following: "public-instance-get", "protected-instance-get", "private-instance-get", + "#private-instance-get", "public-abstract-get", "protected-abstract-get", - "private-abstract-get", "public-get", "protected-get", "private-get", + "#private-get", "static-get", "instance-get", @@ -969,6 +997,7 @@ The most explicit and granular form is the following: "public-static-set", "protected-static-set", "private-static-set", + "#private-static-set", "public-decorated-set", "protected-decorated-set", @@ -977,10 +1006,10 @@ The most explicit and granular form is the following: "public-instance-set", "protected-instance-set", "private-instance-set", + "#private-instance-set", "public-abstract-set", "protected-abstract-set", - "private-abstract-set", "public-set", "protected-set", @@ -998,15 +1027,16 @@ The most explicit and granular form is the following: "public-static-method", "protected-static-method", "private-static-method", + "#private-static-method", "public-decorated-method", "protected-decorated-method", "private-decorated-method", "public-instance-method", "protected-instance-method", "private-instance-method", + "#private-instance-method", "public-abstract-method", - "protected-abstract-method", - "private-abstract-method" + "protected-abstract-method" ] ``` diff --git a/packages/eslint-plugin/src/rules/member-ordering.ts b/packages/eslint-plugin/src/rules/member-ordering.ts index 3892c989bc9..c92af2650ce 100644 --- a/packages/eslint-plugin/src/rules/member-ordering.ts +++ b/packages/eslint-plugin/src/rules/member-ordering.ts @@ -22,15 +22,17 @@ type NonCallableMemberKind = Exclude; type MemberScope = 'static' | 'instance' | 'abstract'; +type Accessibility = TSESTree.Accessibility | '#private'; + type BaseMemberType = | MemberKind - | `${TSESTree.Accessibility}-${Exclude< + | `${Accessibility}-${Exclude< MemberKind, 'signature' | 'static-initialization' >}` - | `${TSESTree.Accessibility}-decorated-${DecoratedMemberKind}` + | `${Accessibility}-decorated-${DecoratedMemberKind}` | `decorated-${DecoratedMemberKind}` - | `${TSESTree.Accessibility}-${MemberScope}-${NonCallableMemberKind}` + | `${Accessibility}-${MemberScope}-${NonCallableMemberKind}` | `${MemberScope}-${NonCallableMemberKind}`; type MemberType = BaseMemberType | BaseMemberType[]; @@ -112,6 +114,7 @@ export const defaultOrder: MemberType[] = [ 'public-static-field', 'protected-static-field', 'private-static-field', + '#private-static-field', 'public-decorated-field', 'protected-decorated-field', @@ -120,14 +123,15 @@ export const defaultOrder: MemberType[] = [ 'public-instance-field', 'protected-instance-field', 'private-instance-field', + '#private-instance-field', 'public-abstract-field', 'protected-abstract-field', - 'private-abstract-field', 'public-field', 'protected-field', 'private-field', + '#private-field', 'static-field', 'instance-field', @@ -151,6 +155,7 @@ export const defaultOrder: MemberType[] = [ 'public-static-get', 'protected-static-get', 'private-static-get', + '#private-static-get', 'public-decorated-get', 'protected-decorated-get', @@ -159,14 +164,15 @@ export const defaultOrder: MemberType[] = [ 'public-instance-get', 'protected-instance-get', 'private-instance-get', + '#private-instance-get', 'public-abstract-get', 'protected-abstract-get', - 'private-abstract-get', 'public-get', 'protected-get', 'private-get', + '#private-get', 'static-get', 'instance-get', @@ -180,6 +186,7 @@ export const defaultOrder: MemberType[] = [ 'public-static-set', 'protected-static-set', 'private-static-set', + '#private-static-set', 'public-decorated-set', 'protected-decorated-set', @@ -188,14 +195,15 @@ export const defaultOrder: MemberType[] = [ 'public-instance-set', 'protected-instance-set', 'private-instance-set', + '#private-instance-set', 'public-abstract-set', 'protected-abstract-set', - 'private-abstract-set', 'public-set', 'protected-set', 'private-set', + '#private-set', 'static-set', 'instance-set', @@ -209,6 +217,7 @@ export const defaultOrder: MemberType[] = [ 'public-static-method', 'protected-static-method', 'private-static-method', + '#private-static-method', 'public-decorated-method', 'protected-decorated-method', @@ -217,14 +226,15 @@ export const defaultOrder: MemberType[] = [ 'public-instance-method', 'protected-instance-method', 'private-instance-method', + '#private-instance-method', 'public-abstract-method', 'protected-abstract-method', - 'private-abstract-method', 'public-method', 'protected-method', 'private-method', + '#private-method', 'static-method', 'instance-method', @@ -250,30 +260,49 @@ const allMemberTypes = Array.from( ).reduce>((all, type) => { all.add(type); - (['public', 'protected', 'private'] as const).forEach(accessibility => { - if (type !== 'signature' && type !== 'static-initialization') { - all.add(`${accessibility}-${type}`); // e.g. `public-field` - } + (['public', 'protected', 'private', '#private'] as const).forEach( + accessibility => { + if ( + type !== 'signature' && + type !== 'static-initialization' && + type !== 'call-signature' && + !(type === 'constructor' && accessibility === '#private') + ) { + all.add(`${accessibility}-${type}`); // e.g. `public-field` + } - // Only class instance fields, methods, get and set can have decorators attached to them - if ( - type === 'field' || - type === 'method' || - type === 'get' || - type === 'set' - ) { - all.add(`${accessibility}-decorated-${type}`); - all.add(`decorated-${type}`); - } + // Only class instance fields, methods, get and set can have decorators attached to them + if ( + accessibility !== '#private' && + (type === 'field' || + type === 'method' || + type === 'get' || + type === 'set') + ) { + all.add(`${accessibility}-decorated-${type}`); + all.add(`decorated-${type}`); + } - if (type !== 'constructor' && type !== 'signature') { - // There is no `static-constructor` or `instance-constructor` or `abstract-constructor` - (['static', 'instance', 'abstract'] as const).forEach(scope => { - all.add(`${scope}-${type}`); - all.add(`${accessibility}-${scope}-${type}`); - }); - } - }); + if ( + type !== 'constructor' && + type !== 'signature' && + type !== 'call-signature' + ) { + // There is no `static-constructor` or `instance-constructor` or `abstract-constructor` + if (accessibility === '#private' || accessibility === 'private') { + (['static', 'instance'] as const).forEach(scope => { + all.add(`${scope}-${type}`); + all.add(`${accessibility}-${scope}-${type}`); + }); + } else { + (['static', 'instance', 'abstract'] as const).forEach(scope => { + all.add(`${scope}-${type}`); + all.add(`${accessibility}-${scope}-${type}`); + }); + } + } + }, + ); return all; }, new Set()), @@ -407,6 +436,16 @@ function getRankOrder( return rank; } +function getAccessibility(node: Member): Accessibility { + if ('accessibility' in node && node.accessibility) { + return node.accessibility; + } + if ('key' in node && node.key?.type === AST_NODE_TYPES.PrivateIdentifier) { + return '#private'; + } + return 'public'; +} + /** * Gets the rank of the node given the order. * @param node the node to be evaluated. @@ -435,10 +474,7 @@ function getRank( : abstract ? 'abstract' : 'instance'; - const accessibility = - 'accessibility' in node && node.accessibility - ? node.accessibility - : 'public'; + const accessibility = getAccessibility(node); // Collect all existing member groups that apply to this node... // (e.g. 'public-instance-field', 'instance-field', 'public-field', 'constructor' etc.) diff --git a/packages/eslint-plugin/tests/rules/member-ordering.test.ts b/packages/eslint-plugin/tests/rules/member-ordering.test.ts index cfff3691476..3305bebfa8c 100644 --- a/packages/eslint-plugin/tests/rules/member-ordering.test.ts +++ b/packages/eslint-plugin/tests/rules/member-ordering.test.ts @@ -425,16 +425,20 @@ class Foo { public static A: string; protected static B: string = ''; private static C: string = ''; + static #C: string = ''; public D: string = ''; protected E: string = ''; private F: string = ''; + #F: string = ''; constructor() {} public static G() {} protected static H() {} private static I() {} + static #I() {} public J() {} protected K() {} private L() {} + #L() {} } `, { @@ -444,16 +448,20 @@ class Foo { public static A: string; protected static B: string = ''; private static C: string = ''; + static #C: string = ''; public D: string = ''; protected E: string = ''; private F: string = ''; + #F: string = ''; constructor() {} public static G() {} protected static H() {} private static I() {} + static #I() {} public J() {} protected K() {} private L() {} + #L() {} } `, options: [{ default: 'never' }], @@ -465,16 +473,20 @@ class Foo { public static A: string; protected static B: string = ''; private static C: string = ''; + static #C: string = ''; public D: string = ''; protected E: string = ''; private F: string = ''; + #F: string = ''; constructor() {} public static G() {} protected static H() {} private static I() {} + static #I() {} public J() {} protected K() {} private L() {} + #L() {} } `, options: [{ default: ['signature', 'field', 'constructor', 'method'] }], @@ -487,15 +499,19 @@ class Foo { public static A: string; protected static B: string = ''; private static C: string = ''; + static #C: string = ''; public D: string = ''; protected E: string = ''; private F: string = ''; + #F: string = ''; public static G() {} protected static H() {} private static I() {} + static #I() {} public J() {} protected K() {} private L() {} + #L() {} } `, options: [{ default: ['field', 'method'] }], @@ -527,16 +543,20 @@ class Foo { public static G() {} protected static H() {} private static I() {} + static #I() {} public J() {} protected K() {} private L() {} + #L() {} [Z: string]: any; public static A: string; protected static B: string = ''; private static C: string = ''; + static #C: string = ''; public D: string = ''; protected E: string = ''; private F: string = ''; + #F: string = ''; constructor() {} } `, @@ -619,6 +639,8 @@ class Foo { public static A: string; private static C: string = ''; private F: string = ''; + static #M: string = ''; + #N: string = ''; protected static B: string = ''; protected E: string = ''; } @@ -631,6 +653,7 @@ class Foo { 'constructor', 'public-field', 'private-field', + '#private-field', 'protected-field', ], }, @@ -653,6 +676,7 @@ class Foo { protected E: string = ''; private static C: string = ''; private F: string = ''; + #M: string = ''; } `, options: [ @@ -667,6 +691,7 @@ class Foo { 'public-field', 'protected-field', 'private-field', + '#private-field', ], }, ], @@ -681,12 +706,16 @@ class Foo { constructor() {} protected K() {} private L() {} + #P() {} protected static H() {} private static I() {} + static #O() {} protected static B: string = ''; private static C: string = ''; + static #N: string = ''; protected E: string = ''; private F: string = ''; + #M: string = ''; [Z: string]: any; } `, @@ -710,15 +739,19 @@ class Foo { public static G() {} protected static H() {} private static I() {} + static #I() {} protected K() {} private L() {} + #L() {} constructor() {} [Z: string]: any; public static A: string; private F: string = ''; + #F: string = ''; protected static B: string = ''; public D: string = ''; private static C: string = ''; + static #C: string = ''; protected E: string = ''; } `, @@ -727,9 +760,10 @@ class Foo { classes: [ 'public-method', 'protected-static-method', - 'private-static-method', + '#private-static-method', 'protected-instance-method', 'private-instance-method', + '#private-instance-method', 'constructor', 'signature', 'field', @@ -764,6 +798,31 @@ class Foo { }, { code: ` +class Foo { + private L() {} + private static I() {} + static #H() {} + static #B: string = ''; + public static G() {} + public J() {} + #K() {} + private static C: string = ''; + private F: string = ''; + #E: string = ''; + public static A: string; + public D: string = ''; + constructor() {} + [Z: string]: any; +} + `, + options: [ + { + classes: ['private-instance-method', 'protected-static-field'], + }, + ], + }, + { + code: ` class Foo { private L() {} private static I() {} @@ -1535,6 +1594,60 @@ class Foo { }, ], }, + { + name: 'with private identifier', + code: ` +// no accessibility === public +class Foo { + imPublic() {} + #imPrivate() {} +} + `, + options: [ + { + default: { + memberTypes: ['public-method', '#private-method'], + order: 'alphabetically-case-insensitive', + }, + }, + ], + }, + { + name: 'private and #private member order', + code: ` +// no accessibility === public +class Foo { + private imPrivate() {} + #imPrivate() {} +} + `, + options: [ + { + default: { + memberTypes: ['private-method', '#private-method'], + order: 'alphabetically-case-insensitive', + }, + }, + ], + }, + { + name: '#private and private member order', + code: ` +// no accessibility === public +class Foo { + #imPrivate() {} + private imPrivate() {} +} + `, + options: [ + { + default: { + memberTypes: ['#private-method', 'private-method'], + order: 'alphabetically-case-insensitive', + }, + }, + ], + }, ], invalid: [ { @@ -2356,16 +2469,20 @@ class Foo { public static A: string = ''; protected static B: string = ''; private static C: string = ''; + static #C: string = ''; public D: string = ''; protected E: string = ''; private F: string = ''; + #F: string = ''; constructor() {} public J() {} protected K() {} private L() {} + #L() {} public static G() {} protected static H() {} private static I() {} + static #I() {} } `, errors: [ @@ -2375,7 +2492,7 @@ class Foo { name: 'G', rank: 'public instance method', }, - line: 14, + line: 17, column: 3, }, { @@ -2384,7 +2501,7 @@ class Foo { name: 'H', rank: 'public instance method', }, - line: 15, + line: 18, column: 3, }, { @@ -2393,7 +2510,16 @@ class Foo { name: 'I', rank: 'public instance method', }, - line: 16, + line: 19, + column: 3, + }, + { + messageId: 'incorrectGroupOrder', + data: { + name: 'I', + rank: 'public instance method', + }, + line: 20, column: 3, }, ], @@ -2405,15 +2531,19 @@ class Foo { public static A: string = ''; protected static B: string = ''; private static C: string = ''; + static #C: string = ''; public D: string = ''; protected E: string = ''; private F: string = ''; + #F: string = ''; public J() {} protected K() {} private L() {} + #L() {} public static G() {} protected static H() {} private static I() {} + static #I() {} [Z: string]: any; } `, @@ -2449,7 +2579,7 @@ class Foo { { messageId: 'incorrectGroupOrder', data: { - name: 'D', + name: 'C', rank: 'constructor', }, line: 7, @@ -2458,7 +2588,7 @@ class Foo { { messageId: 'incorrectGroupOrder', data: { - name: 'E', + name: 'D', rank: 'constructor', }, line: 8, @@ -2467,12 +2597,30 @@ class Foo { { messageId: 'incorrectGroupOrder', data: { - name: 'F', + name: 'E', rank: 'constructor', }, line: 9, column: 3, }, + { + messageId: 'incorrectGroupOrder', + data: { + name: 'F', + rank: 'constructor', + }, + line: 10, + column: 3, + }, + { + messageId: 'incorrectGroupOrder', + data: { + name: 'F', + rank: 'constructor', + }, + line: 11, + column: 3, + }, ], }, { @@ -4175,6 +4323,93 @@ class Foo { }, ], }, + { + name: 'with private identifier', + code: ` +// no accessibility === public +class Foo { + #imPrivate() {} + imPublic() {} +} + `, + options: [ + { + default: { + memberTypes: ['public-method', '#private-method'], + order: 'alphabetically-case-insensitive', + }, + }, + ], + errors: [ + { + messageId: 'incorrectGroupOrder', + data: { + name: 'imPublic', + rank: '#private method', + }, + line: 5, + column: 3, + }, + ], + }, + { + name: 'private and #private member order', + code: ` +// no accessibility === public +class Foo { + #imPrivate() {} + private imPrivate() {} +} + `, + options: [ + { + default: { + memberTypes: ['private-method', '#private-method'], + order: 'alphabetically-case-insensitive', + }, + }, + ], + errors: [ + { + messageId: 'incorrectGroupOrder', + data: { + name: 'imPrivate', + rank: '#private method', + }, + line: 5, + column: 3, + }, + ], + }, + { + name: '#private and private member order', + code: ` +// no accessibility === public +class Foo { + private imPrivate() {} + #imPrivate() {} +} + `, + options: [ + { + default: { + memberTypes: ['#private-method', 'private-method'], + order: 'alphabetically-case-insensitive', + }, + }, + ], + errors: [ + { + messageId: 'incorrectGroupOrder', + data: { + name: 'imPrivate', + rank: 'private method', + }, + line: 5, + column: 3, + }, + ], + }, ], }; From 87a27367acde92c7ecddf24a9a201c7d9dc939ec Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Fri, 25 Nov 2022 01:35:23 -0500 Subject: [PATCH 143/193] test(website): add Playwright test for Playground linting (#6080) --- packages/website/playwright.config.ts | 1 + .../src/components/config/ConfigEditor.tsx | 8 ++- packages/website/tests/playground.spec.ts | 65 +++++++++++++++++++ 3 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 packages/website/tests/playground.spec.ts diff --git a/packages/website/playwright.config.ts b/packages/website/playwright.config.ts index ba1f9df5617..ad85c7391d9 100644 --- a/packages/website/playwright.config.ts +++ b/packages/website/playwright.config.ts @@ -22,6 +22,7 @@ const config: PlaywrightTestConfig = { webServer: { command: 'yarn start', port: 3000, + reuseExistingServer: !process.env.CI, }, workers: process.env.CI ? 1 : undefined, }; diff --git a/packages/website/src/components/config/ConfigEditor.tsx b/packages/website/src/components/config/ConfigEditor.tsx index 1d6e9346e0b..0d4915d281b 100644 --- a/packages/website/src/components/config/ConfigEditor.tsx +++ b/packages/website/src/components/config/ConfigEditor.tsx @@ -129,8 +129,12 @@ function ConfigEditor(props: ConfigEditorProps): JSX.Element {

{description}

- + Get Started
@@ -138,7 +141,7 @@ function Home(): JSX.Element {
Get Started diff --git a/packages/website/src/theme/MDXComponents/RuleAttributes.tsx b/packages/website/src/theme/MDXComponents/RuleAttributes.tsx index e0351d743c7..075d0a6af8e 100644 --- a/packages/website/src/theme/MDXComponents/RuleAttributes.tsx +++ b/packages/website/src/theme/MDXComponents/RuleAttributes.tsx @@ -89,7 +89,7 @@ export function RuleAttributes({ name }: { name: string }): React.ReactNode { children: ( <> This rule requires{' '} - + type information {' '} to run. From 1dba257be8c32319a316d09e64501577e07514fa Mon Sep 17 00:00:00 2001 From: "typescript-eslint[bot]" <53356952+typescript-eslint[bot]@users.noreply.github.com> Date: Thu, 1 Dec 2022 13:33:30 +1030 Subject: [PATCH 154/193] chore: update contributors (#6139) Co-authored-by: typescript-eslint[bot] --- CONTRIBUTORS.md | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 9d9b15f70f2..ff1a7dbe9a4 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -15,78 +15,78 @@ Thanks goes to these wonderful people:
Michaël De Boey

Reyad Attiyat
-
Patricio Trevino
+
Gareth Jones

Sosuke Suzuki
-
Joshua Chen
+
Patricio Trevino
-
Nicholas C. Zakas
+
Joshua Chen

YeonJuan
+
Nicholas C. Zakas

Jed Fox

Rafael Santana
-
Ben Lichtman
+
Ben Lichtman

Nikita

Taeheon Kim

Scott O'Hara

Retsam
-
Kai Cataldo
+
Kai Cataldo

Rasmus Eneman

Rebecca Stevens

Toru Nagashima

Yosuke Ota
-
JounQin
+
JounQin

Lucas Azzola
+
Simen Bekkhus

Danny Fritz

Ika
-
mackie
-
Simen Bekkhus
+
mackie
+
Bryan Mishkin

Kanitkorn Sujautra

cherryblossom

Zzzen
-
Anix
-
Daniil Dubrava
+
Anix
+
Daniil Dubrava
+
Pete Gonzalez

ldrick

Susisu
-
Bryan Mishkin
+ + +
Omri Luzon
+
SHIMA RYUHEI

Gavin Barron

Kevin Partington
+
Lucas Duailibe
-
Lucas Duailibe

Niles Salter

Pavel Birukov

Shahar Dawn Or
-
SHIMA RYUHEI
- -
koooge

thomas michael wallace
+ +
ulrichb

Juan García
+
Sviatoslav Zaytsev

Daniel Cassidy
+
Daniel Nixon

Denys Kniazevych
-
Ian MacLeod
-
Jonathan Delgado
+
Dimitri Mitropoulos
+
James Garbutt

Philipp A.
-
Pig Fang
- - -
Thomas den Hollander
-
Yasar Siddiqui
-
Yusuke Tanaka
-
zz
From 9d58b6be246507d20af67c84a5e9bb592d97cff5 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Thu, 1 Dec 2022 20:00:24 -0500 Subject: [PATCH 155/193] fix(eslint-plugin): [no-shadow] add call and method signatures to `ignoreFunctionTypeParameterNameValueShadow` (#6129) --- packages/eslint-plugin/src/rules/no-shadow.ts | 10 ++- .../tests/rules/no-shadow/no-shadow.test.ts | 63 +++++++++++++++++++ 2 files changed, 71 insertions(+), 2 deletions(-) diff --git a/packages/eslint-plugin/src/rules/no-shadow.ts b/packages/eslint-plugin/src/rules/no-shadow.ts index 7d8eff0b9e2..e9b73370966 100644 --- a/packages/eslint-plugin/src/rules/no-shadow.ts +++ b/packages/eslint-plugin/src/rules/no-shadow.ts @@ -20,6 +20,12 @@ type Options = [ }, ]; +const allowedFunctionVariableDefTypes = new Set([ + AST_NODE_TYPES.TSCallSignatureDeclaration, + AST_NODE_TYPES.TSFunctionType, + AST_NODE_TYPES.TSMethodSignature, +]); + export default util.createRule({ name: 'no-shadow', meta: { @@ -147,8 +153,8 @@ export default util.createRule({ return false; } - return variable.defs.every( - def => def.node.type === AST_NODE_TYPES.TSFunctionType, + return variable.defs.every(def => + allowedFunctionVariableDefTypes.has(def.node.type), ); } diff --git a/packages/eslint-plugin/tests/rules/no-shadow/no-shadow.test.ts b/packages/eslint-plugin/tests/rules/no-shadow/no-shadow.test.ts index d55e85b3d8f..854154ff096 100644 --- a/packages/eslint-plugin/tests/rules/no-shadow/no-shadow.test.ts +++ b/packages/eslint-plugin/tests/rules/no-shadow/no-shadow.test.ts @@ -145,6 +145,27 @@ type Fn = (Foo: string) => typeof Foo; Foo: 'writable', }, }, + // https://github.com/typescript-eslint/typescript-eslint/issues/6098 + { + code: ` +const arg = 0; + +interface Test { + (arg: string): typeof arg; +} + `, + options: [{ ignoreFunctionTypeParameterNameValueShadow: true }], + }, + { + code: ` +const arg = 0; + +interface Test { + p1(arg: string): typeof arg; +} + `, + options: [{ ignoreFunctionTypeParameterNameValueShadow: true }], + }, // https://github.com/typescript-eslint/typescript-eslint/issues/2724 { code: ` @@ -525,6 +546,48 @@ type Fn = (Foo: string) => typeof Foo; }, ], }, + + // https://github.com/typescript-eslint/typescript-eslint/issues/6098 + { + code: ` +const arg = 0; + +interface Test { + (arg: string): typeof arg; +} + `, + options: [{ ignoreFunctionTypeParameterNameValueShadow: false }], + errors: [ + { + messageId: 'noShadow', + data: { + name: 'arg', + shadowedLine: 2, + shadowedColumn: 7, + }, + }, + ], + }, + { + code: ` +const arg = 0; + +interface Test { + p1(arg: string): typeof arg; +} + `, + options: [{ ignoreFunctionTypeParameterNameValueShadow: false }], + errors: [ + { + messageId: 'noShadow', + data: { + name: 'arg', + shadowedLine: 2, + shadowedColumn: 7, + }, + }, + ], + }, { code: ` import type { foo } from './foo'; From e777f5e225b9ddfb6bb1eaa74cbc5171a17ac017 Mon Sep 17 00:00:00 2001 From: Steven Date: Fri, 2 Dec 2022 09:01:30 +0800 Subject: [PATCH 156/193] fix(parser): remove the jsx option requirement for automatic jsx pragma resolution (#6134) --- packages/parser/src/parser.ts | 46 +++++++++++++++++------------------ 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/packages/parser/src/parser.ts b/packages/parser/src/parser.ts index 0e4b7780c17..f151cbdc143 100644 --- a/packages/parser/src/parser.ts +++ b/packages/parser/src/parser.ts @@ -136,30 +136,28 @@ function parseForESLint( analyzeOptions.lib = getLib(compilerOptions); log('Resolved libs from program: %o', analyzeOptions.lib); } - if (parserOptions.jsx === true) { - if ( - analyzeOptions.jsxPragma === undefined && - compilerOptions.jsxFactory != null - ) { - // in case the user has specified something like "preact.h" - const factory = compilerOptions.jsxFactory.split('.')[0].trim(); - analyzeOptions.jsxPragma = factory; - log('Resolved jsxPragma from program: %s', analyzeOptions.jsxPragma); - } - if ( - analyzeOptions.jsxFragmentName === undefined && - compilerOptions.jsxFragmentFactory != null - ) { - // in case the user has specified something like "preact.Fragment" - const fragFactory = compilerOptions.jsxFragmentFactory - .split('.')[0] - .trim(); - analyzeOptions.jsxFragmentName = fragFactory; - log( - 'Resolved jsxFragmentName from program: %s', - analyzeOptions.jsxFragmentName, - ); - } + if ( + analyzeOptions.jsxPragma === undefined && + compilerOptions.jsxFactory != null + ) { + // in case the user has specified something like "preact.h" + const factory = compilerOptions.jsxFactory.split('.')[0].trim(); + analyzeOptions.jsxPragma = factory; + log('Resolved jsxPragma from program: %s', analyzeOptions.jsxPragma); + } + if ( + analyzeOptions.jsxFragmentName === undefined && + compilerOptions.jsxFragmentFactory != null + ) { + // in case the user has specified something like "preact.Fragment" + const fragFactory = compilerOptions.jsxFragmentFactory + .split('.')[0] + .trim(); + analyzeOptions.jsxFragmentName = fragFactory; + log( + 'Resolved jsxFragmentName from program: %s', + analyzeOptions.jsxFragmentName, + ); } if (compilerOptions.emitDecoratorMetadata === true) { emitDecoratorMetadata = true; From 5d49d5dbee4425fc8bc01c5e748d161f3619477b Mon Sep 17 00:00:00 2001 From: cherryblossom <31467609+cherryblossom000@users.noreply.github.com> Date: Fri, 2 Dec 2022 12:26:45 +1100 Subject: [PATCH 157/193] fix(eslint-plugin): [sort-type-constituents, sort-type-union-intersection-members] handle some required parentheses cases in the fixer (#6118) --- .../src/rules/sort-type-constituents.ts | 17 ++++--- .../sort-type-union-intersection-members.ts | 17 ++++--- packages/eslint-plugin/src/util/misc.ts | 13 ++++++ .../rules/sort-type-constituents.test.ts | 44 ++++++++++++++++++- ...rt-type-union-intersection-members.test.ts | 44 ++++++++++++++++++- 5 files changed, 115 insertions(+), 20 deletions(-) diff --git a/packages/eslint-plugin/src/rules/sort-type-constituents.ts b/packages/eslint-plugin/src/rules/sort-type-constituents.ts index 1abeddcf823..848b2ce0722 100644 --- a/packages/eslint-plugin/src/rules/sort-type-constituents.ts +++ b/packages/eslint-plugin/src/rules/sort-type-constituents.ts @@ -2,7 +2,7 @@ import type { TSESLint, TSESTree } from '@typescript-eslint/utils'; import { AST_NODE_TYPES } from '@typescript-eslint/utils'; import * as util from '../util'; -import { getEnumNames } from '../util'; +import { getEnumNames, typeNodeRequiresParentheses } from '../util'; enum Group { conditional = 'conditional', @@ -96,13 +96,6 @@ function getGroup(node: TSESTree.TypeNode): Group { } } -function requiresParentheses(node: TSESTree.TypeNode): boolean { - return ( - node.type === AST_NODE_TYPES.TSFunctionType || - node.type === AST_NODE_TYPES.TSConstructorType - ); -} - export type Options = [ { checkIntersections?: boolean; @@ -226,7 +219,13 @@ export default util.createRule({ const fix: TSESLint.ReportFixFunction = fixer => { const sorted = expectedOrder - .map(t => (requiresParentheses(t.node) ? `(${t.text})` : t.text)) + .map(t => + typeNodeRequiresParentheses(t.node, t.text) || + (node.type === AST_NODE_TYPES.TSIntersectionType && + t.node.type === AST_NODE_TYPES.TSUnionType) + ? `(${t.text})` + : t.text, + ) .join( node.type === AST_NODE_TYPES.TSIntersectionType ? ' & ' : ' | ', ); diff --git a/packages/eslint-plugin/src/rules/sort-type-union-intersection-members.ts b/packages/eslint-plugin/src/rules/sort-type-union-intersection-members.ts index 1fbf91b9ae8..cbfa7a51594 100644 --- a/packages/eslint-plugin/src/rules/sort-type-union-intersection-members.ts +++ b/packages/eslint-plugin/src/rules/sort-type-union-intersection-members.ts @@ -2,7 +2,7 @@ import type { TSESLint, TSESTree } from '@typescript-eslint/utils'; import { AST_NODE_TYPES } from '@typescript-eslint/utils'; import * as util from '../util'; -import { getEnumNames } from '../util'; +import { getEnumNames, typeNodeRequiresParentheses } from '../util'; enum Group { conditional = 'conditional', @@ -96,13 +96,6 @@ function getGroup(node: TSESTree.TypeNode): Group { } } -function requiresParentheses(node: TSESTree.TypeNode): boolean { - return ( - node.type === AST_NODE_TYPES.TSFunctionType || - node.type === AST_NODE_TYPES.TSConstructorType - ); -} - export type Options = [ { checkIntersections?: boolean; @@ -228,7 +221,13 @@ export default util.createRule({ const fix: TSESLint.ReportFixFunction = fixer => { const sorted = expectedOrder - .map(t => (requiresParentheses(t.node) ? `(${t.text})` : t.text)) + .map(t => + typeNodeRequiresParentheses(t.node, t.text) || + (node.type === AST_NODE_TYPES.TSIntersectionType && + t.node.type === AST_NODE_TYPES.TSUnionType) + ? `(${t.text})` + : t.text, + ) .join( node.type === AST_NODE_TYPES.TSIntersectionType ? ' & ' : ' | ', ); diff --git a/packages/eslint-plugin/src/util/misc.ts b/packages/eslint-plugin/src/util/misc.ts index 351c94a6361..fa9c5ccf528 100644 --- a/packages/eslint-plugin/src/util/misc.ts +++ b/packages/eslint-plugin/src/util/misc.ts @@ -203,6 +203,18 @@ function findLastIndex( return -1; } +function typeNodeRequiresParentheses( + node: TSESTree.TypeNode, + text: string, +): boolean { + return ( + node.type === AST_NODE_TYPES.TSFunctionType || + node.type === AST_NODE_TYPES.TSConstructorType || + (node.type === AST_NODE_TYPES.TSUnionType && text.startsWith('|')) || + (node.type === AST_NODE_TYPES.TSIntersectionType && text.startsWith('&')) + ); +} + export { arrayGroupByToMap, arraysAreEqual, @@ -216,6 +228,7 @@ export { isDefinitionFile, MemberNameType, RequireKeys, + typeNodeRequiresParentheses, upperCaseFirst, findLastIndex, }; diff --git a/packages/eslint-plugin/tests/rules/sort-type-constituents.test.ts b/packages/eslint-plugin/tests/rules/sort-type-constituents.test.ts index 2587375060e..1aa6f8a6c9a 100644 --- a/packages/eslint-plugin/tests/rules/sort-type-constituents.test.ts +++ b/packages/eslint-plugin/tests/rules/sort-type-constituents.test.ts @@ -287,6 +287,32 @@ type T = }, ], }, + { + code: `type T = (| A) ${operator} B;`, + output: `type T = B ${operator} (| A);`, + errors: [ + { + messageId: 'notSortedNamed', + data: { + type, + name: 'T', + }, + }, + ], + }, + { + code: `type T = (& A) ${operator} B;`, + output: `type T = B ${operator} (& A);`, + errors: [ + { + messageId: 'notSortedNamed', + data: { + type, + name: 'T', + }, + }, + ], + }, ]; }; @@ -334,5 +360,21 @@ type T = 1 | string | {} | A; ], }, ], - invalid: [...invalid('|'), ...invalid('&')], + invalid: [ + ...invalid('|'), + ...invalid('&'), + { + code: 'type T = (B | C) & A;', + output: `type T = A & (B | C);`, + errors: [ + { + messageId: 'notSortedNamed', + data: { + type: 'Intersection', + name: 'T', + }, + }, + ], + }, + ], }); diff --git a/packages/eslint-plugin/tests/rules/sort-type-union-intersection-members.test.ts b/packages/eslint-plugin/tests/rules/sort-type-union-intersection-members.test.ts index a24959d8b6a..6242d140634 100644 --- a/packages/eslint-plugin/tests/rules/sort-type-union-intersection-members.test.ts +++ b/packages/eslint-plugin/tests/rules/sort-type-union-intersection-members.test.ts @@ -287,6 +287,32 @@ type T = }, ], }, + { + code: `type T = (| A) ${operator} B;`, + output: `type T = B ${operator} (| A);`, + errors: [ + { + messageId: 'notSortedNamed', + data: { + type, + name: 'T', + }, + }, + ], + }, + { + code: `type T = (& A) ${operator} B;`, + output: `type T = B ${operator} (& A);`, + errors: [ + { + messageId: 'notSortedNamed', + data: { + type, + name: 'T', + }, + }, + ], + }, ]; }; @@ -334,5 +360,21 @@ type T = 1 | string | {} | A; ], }, ], - invalid: [...invalid('|'), ...invalid('&')], + invalid: [ + ...invalid('|'), + ...invalid('&'), + { + code: 'type T = (B | C) & A;', + output: `type T = A & (B | C);`, + errors: [ + { + messageId: 'notSortedNamed', + data: { + type: 'Intersection', + name: 'T', + }, + }, + ], + }, + ], }); From 98caa92ca89bdf0ca6ba6e4ff1f13c60221579e8 Mon Sep 17 00:00:00 2001 From: Omri Luzon Date: Fri, 2 Dec 2022 04:02:31 +0200 Subject: [PATCH 158/193] fix(eslint-plugin): [keyword-spacing] unexpected space before/after in `import type` (#6095) --- .../src/rules/keyword-spacing.ts | 55 +++++-- .../tests/rules/keyword-spacing.test.ts | 152 +++++++++++++++++- 2 files changed, 189 insertions(+), 18 deletions(-) diff --git a/packages/eslint-plugin/src/rules/keyword-spacing.ts b/packages/eslint-plugin/src/rules/keyword-spacing.ts index 32fb2aaeb71..aa09fb3d1b8 100644 --- a/packages/eslint-plugin/src/rules/keyword-spacing.ts +++ b/packages/eslint-plugin/src/rules/keyword-spacing.ts @@ -1,5 +1,5 @@ import type { TSESTree } from '@typescript-eslint/utils'; -import { AST_TOKEN_TYPES } from '@typescript-eslint/utils'; +import { AST_NODE_TYPES, AST_TOKEN_TYPES } from '@typescript-eslint/utils'; import * as util from '../util'; import { getESLintCoreRule } from '../util/getESLintCoreRule'; @@ -9,6 +9,25 @@ const baseRule = getESLintCoreRule('keyword-spacing'); export type Options = util.InferOptionsTypeFromRule; export type MessageIds = util.InferMessageIdsTypeFromRule; +// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment +const baseSchema = Array.isArray(baseRule.meta.schema) + ? baseRule.meta.schema[0] + : baseRule.meta.schema; +const schema = util.deepMerge( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument -- https://github.com/microsoft/TypeScript/issues/17002 + baseSchema, + { + properties: { + overrides: { + properties: { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access + type: baseSchema.properties.overrides.properties.import, + }, + }, + }, + }, +); + export default util.createRule({ name: 'keyword-spacing', meta: { @@ -20,12 +39,12 @@ export default util.createRule({ }, fixable: 'whitespace', hasSuggestions: baseRule.meta.hasSuggestions, - schema: baseRule.meta.schema, + schema: [schema], messages: baseRule.meta.messages, }, defaultOptions: [{}], - create(context, [{ after }]) { + create(context, [{ after, overrides }]) { const sourceCode = context.getSourceCode(); const baseRules = baseRule.create(context); return { @@ -54,25 +73,37 @@ export default util.createRule({ 'ImportDeclaration[importKind=type]'( node: TSESTree.ImportDeclaration, ): void { + const { type: typeOptionOverride = {} } = overrides ?? {}; const typeToken = sourceCode.getFirstToken(node, { skip: 1 })!; const punctuatorToken = sourceCode.getTokenAfter(typeToken)!; + if ( + node.specifiers?.[0]?.type === AST_NODE_TYPES.ImportDefaultSpecifier + ) { + return; + } const spacesBetweenTypeAndPunctuator = punctuatorToken.range[0] - typeToken.range[1]; - if (after && spacesBetweenTypeAndPunctuator === 0) { + if ( + (typeOptionOverride.after ?? after) === true && + spacesBetweenTypeAndPunctuator === 0 + ) { context.report({ - loc: punctuatorToken.loc, - messageId: 'expectedBefore', - data: { value: punctuatorToken.value }, + loc: typeToken.loc, + messageId: 'expectedAfter', + data: { value: 'type' }, fix(fixer) { - return fixer.insertTextBefore(punctuatorToken, ' '); + return fixer.insertTextAfter(typeToken, ' '); }, }); } - if (!after && spacesBetweenTypeAndPunctuator > 0) { + if ( + (typeOptionOverride.after ?? after) === false && + spacesBetweenTypeAndPunctuator > 0 + ) { context.report({ - loc: punctuatorToken.loc, - messageId: 'unexpectedBefore', - data: { value: punctuatorToken.value }, + loc: typeToken.loc, + messageId: 'unexpectedAfter', + data: { value: 'type' }, fix(fixer) { return fixer.removeRange([ typeToken.range[1], diff --git a/packages/eslint-plugin/tests/rules/keyword-spacing.test.ts b/packages/eslint-plugin/tests/rules/keyword-spacing.test.ts index b8a1a72d2ca..58c740fbd5c 100644 --- a/packages/eslint-plugin/tests/rules/keyword-spacing.test.ts +++ b/packages/eslint-plugin/tests/rules/keyword-spacing.test.ts @@ -116,12 +116,122 @@ ruleTester.run('keyword-spacing', rule, { }, { code: 'import type { foo } from "foo";', - options: [{ overrides: { as: {} } }], + options: [BOTH], parserOptions: { ecmaVersion: 6, sourceType: 'module' }, }, { code: "import type * as Foo from 'foo'", - options: [{ overrides: { as: {} } }], + options: [BOTH], + parserOptions: { ecmaVersion: 6, sourceType: 'module' }, + }, + { + code: 'import type { SavedQueries } from "./SavedQueries.js";', + options: [ + { + before: true, + after: false, + overrides: { + else: { after: true }, + return: { after: true }, + try: { after: true }, + catch: { after: false }, + case: { after: true }, + const: { after: true }, + throw: { after: true }, + let: { after: true }, + do: { after: true }, + of: { after: true }, + as: { after: true }, + finally: { after: true }, + from: { after: true }, + import: { after: true }, + export: { after: true }, + default: { after: true }, + // The new option: + type: { after: true }, + }, + }, + ], + parserOptions: { ecmaVersion: 6, sourceType: 'module' }, + }, + { + // Space after import is not configurable from option since it's invalid syntax with import type + code: 'import type { SavedQueries } from "./SavedQueries.js";', + options: [ + { + before: true, + after: true, + overrides: { + import: { after: false }, + }, + }, + ], + parserOptions: { ecmaVersion: 6, sourceType: 'module' }, + }, + { + code: "import type{SavedQueries} from './SavedQueries.js';", + options: [ + { + before: true, + after: false, + overrides: { + from: { after: true }, + }, + }, + ], + parserOptions: { ecmaVersion: 6, sourceType: 'module' }, + }, + { + code: "import type{SavedQueries} from'./SavedQueries.js';", + options: [ + { + before: true, + after: false, + }, + ], + parserOptions: { ecmaVersion: 6, sourceType: 'module' }, + }, + { + code: "import type http from 'node:http';", + options: [ + { + before: true, + after: false, + overrides: { + from: { after: true }, + }, + }, + ], + parserOptions: { ecmaVersion: 6, sourceType: 'module' }, + }, + { + code: "import type http from'node:http';", + options: [ + { + before: true, + after: false, + }, + ], + parserOptions: { ecmaVersion: 6, sourceType: 'module' }, + }, + { + code: 'import type {} from "foo";', + options: [BOTH], + parserOptions: { ecmaVersion: 6, sourceType: 'module' }, + }, + { + code: 'import type { foo1, foo2 } from "foo";', + options: [BOTH], + parserOptions: { ecmaVersion: 6, sourceType: 'module' }, + }, + { + code: 'import type { foo1 as _foo1, foo2 as _foo2 } from "foo";', + options: [BOTH], + parserOptions: { ecmaVersion: 6, sourceType: 'module' }, + }, + { + code: 'import type { foo as bar } from "foo";', + options: [BOTH], parserOptions: { ecmaVersion: 6, sourceType: 'module' }, }, ], @@ -167,28 +277,58 @@ ruleTester.run('keyword-spacing', rule, { output: 'import type { foo } from "foo";', options: [{ after: true, before: true }], parserOptions: { ecmaVersion: 6, sourceType: 'module' }, - errors: [{ messageId: 'expectedBefore', data: { value: '{' } }], + errors: expectedAfter('type'), }, { code: 'import type { foo } from"foo";', output: 'import type{ foo } from"foo";', options: [{ after: false, before: true }], parserOptions: { ecmaVersion: 6, sourceType: 'module' }, - errors: [{ messageId: 'unexpectedBefore', data: { value: '{' } }], + errors: unexpectedAfter('type'), }, { code: 'import type* as foo from "foo";', output: 'import type * as foo from "foo";', options: [{ after: true, before: true }], parserOptions: { ecmaVersion: 6, sourceType: 'module' }, - errors: [{ messageId: 'expectedBefore', data: { value: '*' } }], + errors: expectedAfter('type'), }, { code: 'import type * as foo from"foo";', output: 'import type* as foo from"foo";', options: [{ after: false, before: true }], parserOptions: { ecmaVersion: 6, sourceType: 'module' }, - errors: [{ messageId: 'unexpectedBefore', data: { value: '*' } }], + errors: unexpectedAfter('type'), + }, + { + code: "import type {SavedQueries} from './SavedQueries.js';", + output: "import type{SavedQueries} from './SavedQueries.js';", + options: [ + { + before: true, + after: false, + overrides: { + from: { after: true }, + }, + }, + ], + parserOptions: { ecmaVersion: 6, sourceType: 'module' }, + errors: unexpectedAfter('type'), + }, + { + code: "import type {SavedQueries} from './SavedQueries.js';", + output: "import type{SavedQueries} from'./SavedQueries.js';", + options: [ + { + before: true, + after: false, + }, + ], + parserOptions: { ecmaVersion: 6, sourceType: 'module' }, + errors: [ + { messageId: 'unexpectedAfter', data: { value: 'type' } }, + { messageId: 'unexpectedAfter', data: { value: 'from' } }, + ], }, ], }); From ce2e5dad036087baa9098ad8818a752dec3f6163 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Thu, 1 Dec 2022 21:05:05 -0500 Subject: [PATCH 159/193] chore(typescript-estree): cleaned up watch program naming internally (#6088) * chore(typescript-estree): cleaned up watch program naming internally a bit * chore(eslint-plugin-tslint): take rule options from create parameter --- .../src/create-program/createProjectProgram.ts | 4 ++-- ...eateWatchProgram.ts => getWatchProgramsForProjects.ts} | 6 ++++-- packages/typescript-estree/src/index.ts | 2 +- .../typescript-estree/tests/lib/persistentParse.test.ts | 2 +- .../tests/lib/semanticInfo-singleRun.test.ts | 8 +++++--- packages/typescript-estree/tests/lib/semanticInfo.test.ts | 2 +- packages/website-eslint/rollup.config.js | 2 +- 7 files changed, 15 insertions(+), 11 deletions(-) rename packages/typescript-estree/src/create-program/{createWatchProgram.ts => getWatchProgramsForProjects.ts} (99%) diff --git a/packages/typescript-estree/src/create-program/createProjectProgram.ts b/packages/typescript-estree/src/create-program/createProjectProgram.ts index 7313573b6ab..784b44b93d4 100644 --- a/packages/typescript-estree/src/create-program/createProjectProgram.ts +++ b/packages/typescript-estree/src/create-program/createProjectProgram.ts @@ -4,7 +4,7 @@ import * as ts from 'typescript'; import { firstDefined } from '../node-utils'; import type { ParseSettings } from '../parseSettings'; -import { getProgramsForProjects } from './createWatchProgram'; +import { getWatchProgramsForProjects } from './getWatchProgramsForProjects'; import type { ASTAndProgram } from './shared'; import { getAstFromProgram } from './shared'; @@ -30,7 +30,7 @@ function createProjectProgram( ): ASTAndProgram | undefined { log('Creating project program for: %s', parseSettings.filePath); - const programsForProjects = getProgramsForProjects(parseSettings); + const programsForProjects = getWatchProgramsForProjects(parseSettings); const astAndProgram = firstDefined(programsForProjects, currentProgram => getAstFromProgram(currentProgram, parseSettings), ); diff --git a/packages/typescript-estree/src/create-program/createWatchProgram.ts b/packages/typescript-estree/src/create-program/getWatchProgramsForProjects.ts similarity index 99% rename from packages/typescript-estree/src/create-program/createWatchProgram.ts rename to packages/typescript-estree/src/create-program/getWatchProgramsForProjects.ts index d17835fff3c..15d88e5f454 100644 --- a/packages/typescript-estree/src/create-program/createWatchProgram.ts +++ b/packages/typescript-estree/src/create-program/getWatchProgramsForProjects.ts @@ -138,7 +138,9 @@ function updateCachedFileList( * @param parseSettings Internal settings for parsing the file * @returns The programs corresponding to the supplied tsconfig paths */ -function getProgramsForProjects(parseSettings: ParseSettings): ts.Program[] { +function getWatchProgramsForProjects( + parseSettings: ParseSettings, +): ts.Program[] { const filePath = getCanonicalFileName(parseSettings.filePath); const results = []; @@ -548,4 +550,4 @@ function maybeInvalidateProgram( return null; } -export { clearWatchCaches, createWatchProgram, getProgramsForProjects }; +export { clearWatchCaches, getWatchProgramsForProjects }; diff --git a/packages/typescript-estree/src/index.ts b/packages/typescript-estree/src/index.ts index 48c9fb1ab88..bc7ed6024f3 100644 --- a/packages/typescript-estree/src/index.ts +++ b/packages/typescript-estree/src/index.ts @@ -10,7 +10,7 @@ export { export { ParserServices, TSESTreeOptions } from './parser-options'; export { simpleTraverse } from './simple-traverse'; export * from './ts-estree'; -export { clearWatchCaches as clearCaches } from './create-program/createWatchProgram'; +export { clearWatchCaches as clearCaches } from './create-program/getWatchProgramsForProjects'; export { createProgramFromConfigFile as createProgram } from './create-program/useProvidedPrograms'; export * from './create-program/getScriptKind'; export { typescriptVersionIsAtLeast } from './version-check'; diff --git a/packages/typescript-estree/tests/lib/persistentParse.test.ts b/packages/typescript-estree/tests/lib/persistentParse.test.ts index b6ef717afa0..63e81d7e260 100644 --- a/packages/typescript-estree/tests/lib/persistentParse.test.ts +++ b/packages/typescript-estree/tests/lib/persistentParse.test.ts @@ -2,7 +2,7 @@ import fs from 'fs'; import path from 'path'; import tmp from 'tmp'; -import { clearWatchCaches } from '../../src/create-program/createWatchProgram'; +import { clearWatchCaches } from '../../src/create-program/getWatchProgramsForProjects'; import { parseAndGenerateServices } from '../../src/parser'; const CONTENTS = { diff --git a/packages/typescript-estree/tests/lib/semanticInfo-singleRun.test.ts b/packages/typescript-estree/tests/lib/semanticInfo-singleRun.test.ts index b9bd5adb87b..33daa30a13f 100644 --- a/packages/typescript-estree/tests/lib/semanticInfo-singleRun.test.ts +++ b/packages/typescript-estree/tests/lib/semanticInfo-singleRun.test.ts @@ -60,10 +60,12 @@ jest.mock('../../src/create-program/useProvidedPrograms.ts', () => { }; }); -jest.mock('../../src/create-program/createWatchProgram', () => { +jest.mock('../../src/create-program/getWatchProgramsForProjects', () => { return { - ...jest.requireActual('../../src/create-program/createWatchProgram'), - getProgramsForProjects: jest.fn(() => [mockProgram]), + ...jest.requireActual( + '../../src/create-program/getWatchProgramsForProjects', + ), + getWatchProgramsForProjects: jest.fn(() => [mockProgram]), }; }); diff --git a/packages/typescript-estree/tests/lib/semanticInfo.test.ts b/packages/typescript-estree/tests/lib/semanticInfo.test.ts index fae6a383662..3ebe689185e 100644 --- a/packages/typescript-estree/tests/lib/semanticInfo.test.ts +++ b/packages/typescript-estree/tests/lib/semanticInfo.test.ts @@ -3,7 +3,7 @@ import glob from 'glob'; import * as path from 'path'; import * as ts from 'typescript'; -import { clearWatchCaches } from '../../src/create-program/createWatchProgram'; +import { clearWatchCaches } from '../../src/create-program/getWatchProgramsForProjects'; import { createProgramFromConfigFile as createProgram } from '../../src/create-program/useProvidedPrograms'; import type { ParseAndGenerateServicesResult } from '../../src/parser'; import { parseAndGenerateServices } from '../../src/parser'; diff --git a/packages/website-eslint/rollup.config.js b/packages/website-eslint/rollup.config.js index 77c6d528003..825b60cec25 100644 --- a/packages/website-eslint/rollup.config.js +++ b/packages/website-eslint/rollup.config.js @@ -30,7 +30,7 @@ module.exports = { /utils\/dist\/eslint-utils\/rule-tester\/RuleTester\.js$/, /utils\/dist\/ts-eslint\/CLIEngine\.js$/, /utils\/dist\/ts-eslint\/RuleTester\.js$/, - /typescript-estree\/dist\/create-program\/createWatchProgram\.js/, + /typescript-estree\/dist\/create-program\/getWatchProgramsForProjects\.js/, /typescript-estree\/dist\/create-program\/createProjectProgram\.js/, /typescript-estree\/dist\/create-program\/createIsolatedProgram\.js/, /utils\/dist\/ts-eslint\/ESLint\.js/, From bed6356866c04e6e4d5db3f71f31583dbbe0f36c Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Fri, 2 Dec 2022 12:58:42 +1030 Subject: [PATCH 160/193] chore: allow multiple rule names in pr titles (#6148) --- .github/workflows/semantic-pr-titles.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/semantic-pr-titles.yml b/.github/workflows/semantic-pr-titles.yml index 458638d991d..98a7013beb7 100644 --- a/.github/workflows/semantic-pr-titles.yml +++ b/.github/workflows/semantic-pr-titles.yml @@ -42,9 +42,9 @@ jobs: # we allow "cross package" PRs with no scope requireScope: false # ensure that the subject is lower-case first - # also allows "[rule-name] " prefix for eslint-plugin rule PRs - # https://regexr.com/733ed - subjectPattern: ^(\[[a-z\-]+\] )?[a-z].+[^\.]$ + # also allows "[rule-name] " / "[rule-name, rule-name] " prefix for eslint-plugin rule PRs + # https://regexr.com/73m7b + subjectPattern: ^(\[[a-z\-]+(, [a-z\-]+)*\] )?[a-z].+[^\.]$ subjectPatternError: | The "subject" must start with a lower-case letter and must not end with a full-stop. From 47a143fbcd24580794bf4cf90331c5203c444d09 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sat, 3 Dec 2022 02:43:17 -0500 Subject: [PATCH 161/193] chore(ast-spec): fix Nx build caching (#6145) --- packages/ast-spec/project.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/ast-spec/project.json b/packages/ast-spec/project.json index b892bb3fae0..47bd51c1663 100644 --- a/packages/ast-spec/project.json +++ b/packages/ast-spec/project.json @@ -3,6 +3,14 @@ "type": "library", "implicitDependencies": [], "targets": { + "build": { + "executor": "nx:run-commands", + "options": { + "cwd": "packages/ast-spec", + "commands": ["yarn build"] + }, + "outputs": ["packages/ast-spec/dist/**/*.ts"] + }, "lint": { "executor": "@nrwl/linter:eslint", "outputs": ["{options.outputFile}"], From 0b37822f5198a81e5bfe1c09b61a5d5c54407a41 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sat, 3 Dec 2022 02:44:09 -0500 Subject: [PATCH 162/193] chore: bump Nx to 15 (#6140) --- nx.json | 15 +- package.json | 8 +- packages/ast-spec/project.json | 1 + packages/eslint-plugin-internal/project.json | 1 + packages/eslint-plugin-tslint/project.json | 1 + packages/eslint-plugin/project.json | 1 + packages/experimental-utils/project.json | 1 + packages/parser/project.json | 1 + packages/scope-manager/project.json | 8 +- packages/shared-fixtures/project.json | 3 +- packages/type-utils/project.json | 1 + packages/types/project.json | 1 + packages/typescript-estree/project.json | 1 + packages/utils/project.json | 1 + packages/visitor-keys/project.json | 1 + packages/website-eslint/project.json | 3 +- packages/website/project.json | 1 + workspace.json | 21 --- yarn.lock | 144 ++++++++++--------- 19 files changed, 106 insertions(+), 108 deletions(-) delete mode 100644 workspace.json diff --git a/nx.json b/nx.json index ed1f57517e1..b34a91f7800 100644 --- a/nx.json +++ b/nx.json @@ -1,13 +1,6 @@ { "$schema": "./node_modules/nx/schemas/nx-schema.json", "npmScope": "typescript-eslint", - "implicitDependencies": { - "package.json": { - "dependencies": "*", - "devDependencies": "*" - }, - ".github/workflows/ci.yml": "*" - }, "affected": { "defaultBase": "main" }, @@ -29,10 +22,16 @@ }, "targetDefaults": { "build": { - "dependsOn": ["^build"] + "dependsOn": ["^build"], + "inputs": ["production", "^production"] }, "test": { "outputs": ["{projectRoot}/coverage"] } + }, + "namedInputs": { + "default": ["{projectRoot}/**/*", "sharedGlobals"], + "sharedGlobals": ["{workspaceRoot}/.github/workflows/ci.yml"], + "production": ["default"] } } diff --git a/package.json b/package.json index 89bc49447f2..7900bc45ff6 100644 --- a/package.json +++ b/package.json @@ -54,8 +54,8 @@ "@babel/eslint-parser": "^7.19.1", "@babel/parser": "^7.20.3", "@babel/types": "^7.20.2", - "@nrwl/nx-cloud": "14.7.0", - "@nrwl/workspace": "14.8.4", + "@nrwl/nx-cloud": "15.0.2", + "@nrwl/workspace": "15.2.4", "@swc/core": "^1.3.1", "@swc/jest": "^0.2.21", "@types/babel__code-frame": "^7.0.3", @@ -98,7 +98,7 @@ "make-dir": "^3.1.0", "markdownlint-cli": "^0.32.0", "ncp": "^2.0.0", - "nx": "14.8.4", + "nx": "15.2.4", "patch-package": "^6.4.7", "prettier": "2.8.0", "pretty-format": "^29.0.3", @@ -111,7 +111,6 @@ "resolutions": { "typescript": "~4.9.3", "@types/node": "^18.11.9", - "//": "Pin jest to v29 across the repo", "@jest/create-cache-key-function": "^29", "@jest/reporters": "^29", "@jest/test-result": "^29", @@ -123,7 +122,6 @@ "jest-snapshot": "^29", "jest-util": "^29", "pretty-format": "^29", - "//": "Stub out unnecessary swc packages to improve install size and speed", "@swc/core-android-arm-eabi": "npm:dummypkg-a@1.0.0", "@swc/core-android-arm64": "npm:dummypkg-a@1.0.0", "@swc/core-freebsd-x64": "npm:dummypkg-a@1.0.0", diff --git a/packages/ast-spec/project.json b/packages/ast-spec/project.json index 47bd51c1663..ea23f8b6f64 100644 --- a/packages/ast-spec/project.json +++ b/packages/ast-spec/project.json @@ -1,4 +1,5 @@ { + "name": "@typescript-eslint/ast-spec", "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [], diff --git a/packages/eslint-plugin-internal/project.json b/packages/eslint-plugin-internal/project.json index 803b12f5322..86d60ca9cc1 100644 --- a/packages/eslint-plugin-internal/project.json +++ b/packages/eslint-plugin-internal/project.json @@ -1,4 +1,5 @@ { + "name": "@typescript-eslint/eslint-plugin-internal", "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [], diff --git a/packages/eslint-plugin-tslint/project.json b/packages/eslint-plugin-tslint/project.json index 6f6c19ca7c5..4d27febf2b4 100644 --- a/packages/eslint-plugin-tslint/project.json +++ b/packages/eslint-plugin-tslint/project.json @@ -1,4 +1,5 @@ { + "name": "@typescript-eslint/eslint-plugin-tslint", "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [], diff --git a/packages/eslint-plugin/project.json b/packages/eslint-plugin/project.json index d3a8c23a138..80c036616bf 100644 --- a/packages/eslint-plugin/project.json +++ b/packages/eslint-plugin/project.json @@ -1,4 +1,5 @@ { + "name": "@typescript-eslint/eslint-plugin", "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [], diff --git a/packages/experimental-utils/project.json b/packages/experimental-utils/project.json index 415df390d35..d5908a4abc6 100644 --- a/packages/experimental-utils/project.json +++ b/packages/experimental-utils/project.json @@ -1,4 +1,5 @@ { + "name": "@typescript-eslint/experimental-utils", "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [], diff --git a/packages/parser/project.json b/packages/parser/project.json index 10eb8732ea1..95cb20d40ae 100644 --- a/packages/parser/project.json +++ b/packages/parser/project.json @@ -1,4 +1,5 @@ { + "name": "@typescript-eslint/parser", "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [], diff --git a/packages/scope-manager/project.json b/packages/scope-manager/project.json index efaf69f925c..f29483a1f8f 100644 --- a/packages/scope-manager/project.json +++ b/packages/scope-manager/project.json @@ -1,14 +1,12 @@ { + "name": "@typescript-eslint/scope-manager", "$schema": "../../node_modules/nx/schemas/project-schema.json", "sourceRoot": "packages/scope-manager/src", "projectType": "library", "targets": { "build": { "executor": "nx:run-commands", - "outputs": [ - "packages/scope-manager/dist", - "packages/scope-manager/_ts3.4" - ], + "outputs": ["{projectRoot}/dist", "{projectRoot}/_ts3.4"], "options": { "parallel": false, "cwd": "packages/scope-manager", @@ -60,7 +58,7 @@ }, "test": { "executor": "@nrwl/jest:jest", - "outputs": ["packages/scope-manager/coverage"], + "outputs": ["{projectRoot}/coverage"], "options": { "jestConfig": "packages/scope-manager/jest.config.js", "passWithNoTests": true diff --git a/packages/shared-fixtures/project.json b/packages/shared-fixtures/project.json index 24256b3e4d0..18cfac97135 100644 --- a/packages/shared-fixtures/project.json +++ b/packages/shared-fixtures/project.json @@ -1,5 +1,6 @@ { "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", - "implicitDependencies": [] + "implicitDependencies": [], + "name": "shared-fixtures" } diff --git a/packages/type-utils/project.json b/packages/type-utils/project.json index efc70d52332..a3e92a55cca 100644 --- a/packages/type-utils/project.json +++ b/packages/type-utils/project.json @@ -1,4 +1,5 @@ { + "name": "@typescript-eslint/type-utils", "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [], diff --git a/packages/types/project.json b/packages/types/project.json index 968c1ed0e23..b278d20f2a7 100644 --- a/packages/types/project.json +++ b/packages/types/project.json @@ -1,4 +1,5 @@ { + "name": "@typescript-eslint/types", "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": ["@typescript-eslint/ast-spec"], diff --git a/packages/typescript-estree/project.json b/packages/typescript-estree/project.json index 61848afaa64..35fcd7a7a3e 100644 --- a/packages/typescript-estree/project.json +++ b/packages/typescript-estree/project.json @@ -1,4 +1,5 @@ { + "name": "@typescript-eslint/typescript-estree", "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": ["@typescript-eslint/types"], diff --git a/packages/utils/project.json b/packages/utils/project.json index 7ef570436b4..9b999fe3abd 100644 --- a/packages/utils/project.json +++ b/packages/utils/project.json @@ -1,4 +1,5 @@ { + "name": "@typescript-eslint/utils", "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [], diff --git a/packages/visitor-keys/project.json b/packages/visitor-keys/project.json index c7e3401148e..c818e68a186 100644 --- a/packages/visitor-keys/project.json +++ b/packages/visitor-keys/project.json @@ -1,4 +1,5 @@ { + "name": "@typescript-eslint/visitor-keys", "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [], diff --git a/packages/website-eslint/project.json b/packages/website-eslint/project.json index 24256b3e4d0..517439cbec3 100644 --- a/packages/website-eslint/project.json +++ b/packages/website-eslint/project.json @@ -1,5 +1,6 @@ { "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", - "implicitDependencies": [] + "implicitDependencies": [], + "name": "website-eslint" } diff --git a/packages/website/project.json b/packages/website/project.json index a9f414356b1..e7e7b0eabbf 100644 --- a/packages/website/project.json +++ b/packages/website/project.json @@ -1,4 +1,5 @@ { + "name": "website", "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [], diff --git a/workspace.json b/workspace.json deleted file mode 100644 index 95b04adf875..00000000000 --- a/workspace.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "$schema": "./node_modules/nx/schemas/workspace-schema.json", - "version": 2, - "projects": { - "@typescript-eslint/ast-spec": "packages/ast-spec", - "@typescript-eslint/eslint-plugin": "packages/eslint-plugin", - "@typescript-eslint/eslint-plugin-internal": "packages/eslint-plugin-internal", - "@typescript-eslint/eslint-plugin-tslint": "packages/eslint-plugin-tslint", - "@typescript-eslint/experimental-utils": "packages/experimental-utils", - "@typescript-eslint/parser": "packages/parser", - "@typescript-eslint/scope-manager": "packages/scope-manager", - "@typescript-eslint/shared-fixtures": "packages/shared-fixtures", - "@typescript-eslint/type-utils": "packages/type-utils", - "@typescript-eslint/types": "packages/types", - "@typescript-eslint/typescript-estree": "packages/typescript-estree", - "@typescript-eslint/utils": "packages/utils", - "@typescript-eslint/visitor-keys": "packages/visitor-keys", - "@typescript-eslint/website-eslint": "packages/website-eslint", - "website": "packages/website" - } -} diff --git a/yarn.lock b/yarn.lock index bc18582bb54..5272cce173c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3211,13 +3211,6 @@ read-package-json-fast "^2.0.3" which "^2.0.2" -"@nrwl/cli@14.8.4": - version "14.8.4" - resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-14.8.4.tgz#036ccf235e23a07410addf04900e647cc83153bf" - integrity sha512-JBoMw1IUFbtahDWolv3iBWJyO3ZXHOsqUt2AvWSrKfteOCjhSfG9GdQYGlnV9ZpWAx4bDf4f7Xz5z6+DJuaONA== - dependencies: - nx "14.8.4" - "@nrwl/cli@15.0.0": version "15.0.0" resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-15.0.0.tgz#7b00d95a6502f83fdd84f8888fd1ba7a180cdd07" @@ -3225,14 +3218,22 @@ dependencies: nx "15.0.0" -"@nrwl/devkit@14.8.4": - version "14.8.4" - resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-14.8.4.tgz#15812910878a50220dc5944693e2d84795308b31" - integrity sha512-GmHZ8SVE0aL4iRfkYRzzE5I09rl6MgHpLDkuGAYQOPLOm4REjZ5jFjoODS2M7AydrJ34JxAq9eAFXGFr4cKauA== +"@nrwl/cli@15.2.4": + version "15.2.4" + resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-15.2.4.tgz#7cf18d474c428d6b4aaf7b511c298369c47de39a" + integrity sha512-Urhkzj/hzhTlJqOHFZyibYGjvzHvSQhkjN3keHiYCNEOaAGp9DPF+oC5cYrPcqWbu3ZkldDWTk7aVBbeqwDWZQ== + dependencies: + nx "15.2.4" + +"@nrwl/devkit@15.2.4": + version "15.2.4" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-15.2.4.tgz#ffcb69f462df19d3d282cf25bf346926ee23f141" + integrity sha512-5JZWB4ydnu+NKNIfj958nML8AWwhareQ+Q1hLXoOIS/7brqfALNP3y/Ef1ljrLIo1f3xc484TPclqwSH7aRdvQ== dependencies: "@phenomnomnominal/tsquery" "4.1.1" ejs "^3.1.7" ignore "^5.0.4" + semver "7.3.4" tslib "^2.3.0" "@nrwl/devkit@>=14.8.6 < 16": @@ -3246,14 +3247,14 @@ semver "7.3.4" tslib "^2.3.0" -"@nrwl/jest@14.8.4": - version "14.8.4" - resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-14.8.4.tgz#671a9f32c6acc2b5cb6a47aae0a25d18eec94754" - integrity sha512-iVBHWLaTQpCxlfMleuMPcti6P9MivTozV4SEXUOPh4jG7y9j3le0YhrOW3R6JNSsXZHPlrsSZ3eFTLJ0BG6gjA== +"@nrwl/jest@15.2.4": + version "15.2.4" + resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-15.2.4.tgz#c0be05b554f7078d900d829145ce40974a5387ab" + integrity sha512-b2GoUPPs4/EAGhJvUn41sphD0Ln9P3ybX2Cyb1U5upM9glOGU5qdGYO20ZMl7IJhEL17QRcojUudWTnk1RejHA== dependencies: "@jest/reporters" "28.1.1" "@jest/test-result" "28.1.1" - "@nrwl/devkit" "14.8.4" + "@nrwl/devkit" "15.2.4" "@phenomnomnominal/tsquery" "4.1.1" chalk "4.1.0" dotenv "~10.0.0" @@ -3264,24 +3265,24 @@ resolve.exports "1.1.0" tslib "^2.3.0" -"@nrwl/linter@14.8.4": - version "14.8.4" - resolved "https://registry.yarnpkg.com/@nrwl/linter/-/linter-14.8.4.tgz#77f3935b4a69acd14a869344fe7b99c65607e5fe" - integrity sha512-S6l+WMF52rjZ4QX/0pjxacl4mLYqg1IckcKocqimpuiTr5B0WWaPHgpY0Nne40LRjKw94WlweWIDx/ar4zPW8Q== +"@nrwl/linter@15.2.4": + version "15.2.4" + resolved "https://registry.yarnpkg.com/@nrwl/linter/-/linter-15.2.4.tgz#f61e25c905156c962a63df674340f8a66ac0cc5f" + integrity sha512-EINxMgb7uEYW2rhj8MomHLktUsVAVlGBSTEZSg7SC32vgzY+QJ144qubLNlCHzSV1O5J/LMugoAHt3E+0eNHyA== dependencies: - "@nrwl/devkit" "14.8.4" - "@nrwl/jest" "14.8.4" + "@nrwl/devkit" "15.2.4" + "@nrwl/jest" "15.2.4" "@phenomnomnominal/tsquery" "4.1.1" - nx "14.8.4" + nx "15.2.4" tmp "~0.2.1" tslib "^2.3.0" -"@nrwl/nx-cloud@14.7.0": - version "14.7.0" - resolved "https://registry.yarnpkg.com/@nrwl/nx-cloud/-/nx-cloud-14.7.0.tgz#71dc6663c9527001bbc374f8d1d841d166fd031f" - integrity sha512-sEGK5Ire5DC2liIsT89qR6SzZa46uinmWEAMz8ocMuu7nIMnwV9m15qajxhmYKasYsq9vTeT+x7BlZ4fnxPrNg== +"@nrwl/nx-cloud@15.0.2": + version "15.0.2" + resolved "https://registry.yarnpkg.com/@nrwl/nx-cloud/-/nx-cloud-15.0.2.tgz#1d1e9c52743f7d7a40c8217c211ebd22402f6dde" + integrity sha512-DaTASuXmGyQHMxJuK6y3f7fs+Q0qQCfYDIDVGK9muNwN/QItLeWdRNltLQxbrBeS112kQTu2FPsr0DmRD60+0A== dependencies: - axios "^0.21.1" + axios "^0.21.2" chalk "4.1.0" dotenv "~10.0.0" fs-extra "^10.1.0" @@ -3290,13 +3291,6 @@ tar "6.1.11" yargs-parser ">=21.0.1" -"@nrwl/tao@14.8.4": - version "14.8.4" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-14.8.4.tgz#77ad1f92928f58ef5a338e4df5efbb3a89d6e84b" - integrity sha512-wEDBELOYzfvp96xCnoWoMr4UA/e3cUri7kAXDGK3hrGGcCUplJ+notHiKJoZXmB3yHME2PMJca4dHcG4zVgA0w== - dependencies: - nx "14.8.4" - "@nrwl/tao@15.0.0": version "15.0.0" resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-15.0.0.tgz#128499a4256e408716f7347131a3ed32d1fec5f0" @@ -3304,14 +3298,21 @@ dependencies: nx "15.0.0" -"@nrwl/workspace@14.8.4": - version "14.8.4" - resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-14.8.4.tgz#dd06b7d3d7e0b0757464580e9be4d0c69de2cf63" - integrity sha512-/Epgr85sYBpA/OkFNIMGE3XPmoW+XdMi9W0zUadCThIkeojwbFgd6VrGG48vpCd0rCMRYirkd2Ar5RYsLJnsPQ== +"@nrwl/tao@15.2.4": + version "15.2.4" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-15.2.4.tgz#c335e0774e5b7ee26bb3b257a436fe154693d619" + integrity sha512-ebGJCkg84yfptuNhGMnIrgHvnknJkeyxWLqRQ7AlMXTzxXOfMS+whjVImM9XjfVYVpBVFWc5QBU5gaKQtzLHmA== + dependencies: + nx "15.2.4" + +"@nrwl/workspace@15.2.4": + version "15.2.4" + resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-15.2.4.tgz#9160cf7ce9ffe0fe40437a6bf8b3a0caf1a7764c" + integrity sha512-h35+NwG2zCeJpQzLevw8q9frrKCwsQyOfUxzyP7nApoxQNO70iGdTwRli/dvB7jVIckp3x78yLuu32D9oqiKEA== dependencies: - "@nrwl/devkit" "14.8.4" - "@nrwl/jest" "14.8.4" - "@nrwl/linter" "14.8.4" + "@nrwl/devkit" "15.2.4" + "@nrwl/jest" "15.2.4" + "@nrwl/linter" "15.2.4" "@parcel/watcher" "2.0.4" chalk "4.1.0" chokidar "^3.5.1" @@ -3326,14 +3327,14 @@ ignore "^5.0.4" minimatch "3.0.5" npm-run-path "^4.0.1" - nx "14.8.4" + nx "15.2.4" open "^8.4.0" rxjs "^6.5.4" semver "7.3.4" tmp "~0.2.1" tslib "^2.3.0" - yargs "^17.4.0" - yargs-parser "21.0.1" + yargs "^17.6.2" + yargs-parser "21.1.1" "@octokit/auth-token@^3.0.0": version "3.0.0" @@ -4832,7 +4833,7 @@ axe-core@^4.4.3: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f" integrity sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w== -axios@^0.21.1: +axios@^0.21.2: version "0.21.4" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== @@ -5526,6 +5527,15 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + 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" @@ -10608,13 +10618,13 @@ nth-check@^2.0.0, nth-check@^2.0.1: dependencies: boolbase "^1.0.0" -nx@14.8.4: - version "14.8.4" - resolved "https://registry.yarnpkg.com/nx/-/nx-14.8.4.tgz#7a1f92409ed82aaf99d2ff190c47617179c5c6d2" - integrity sha512-J7QlmG6rsdR+1Ry0pohPZXHpPN1lzE70lvuCXveyU61VX8HsrbZBzgLif07BUT8lHbs7ORaOJSZd4BCqZBJSSw== +nx@15.0.0, "nx@>=14.8.6 < 16": + version "15.0.0" + resolved "https://registry.yarnpkg.com/nx/-/nx-15.0.0.tgz#8f1a291b7393861242b5c0f0d03c6317aed9c182" + integrity sha512-uh9Ou5oj7yr6Uyp4QhqW1vIVoanYn1sJM1jzOyoT17GAhhODfS0BtQgUvlmInDuRqP8LMaPg4LXFMby07U1HXg== dependencies: - "@nrwl/cli" "14.8.4" - "@nrwl/tao" "14.8.4" + "@nrwl/cli" "15.0.0" + "@nrwl/tao" "15.0.0" "@parcel/watcher" "2.0.4" "@yarnpkg/lockfile" "^1.1.0" "@yarnpkg/parsers" "^3.0.0-rc.18" @@ -10649,13 +10659,13 @@ nx@14.8.4: yargs "^17.4.0" yargs-parser "21.0.1" -nx@15.0.0, "nx@>=14.8.6 < 16": - version "15.0.0" - resolved "https://registry.yarnpkg.com/nx/-/nx-15.0.0.tgz#8f1a291b7393861242b5c0f0d03c6317aed9c182" - integrity sha512-uh9Ou5oj7yr6Uyp4QhqW1vIVoanYn1sJM1jzOyoT17GAhhODfS0BtQgUvlmInDuRqP8LMaPg4LXFMby07U1HXg== +nx@15.2.4: + version "15.2.4" + resolved "https://registry.yarnpkg.com/nx/-/nx-15.2.4.tgz#de55a1342deb3ff2f7b123fe2bbef46c8495f792" + integrity sha512-8rTLo5WGmM6hEo5R/u03Jllkyj4vIUbBk2MRAppCvVRXWLS4xJUEOityXJ5BAvaKoLYm6sWUP1gqU7xlldnT5A== dependencies: - "@nrwl/cli" "15.0.0" - "@nrwl/tao" "15.0.0" + "@nrwl/cli" "15.2.4" + "@nrwl/tao" "15.2.4" "@parcel/watcher" "2.0.4" "@yarnpkg/lockfile" "^1.1.0" "@yarnpkg/parsers" "^3.0.0-rc.18" @@ -10687,8 +10697,8 @@ nx@15.0.0, "nx@>=14.8.6 < 16": tsconfig-paths "^3.9.0" tslib "^2.3.0" v8-compile-cache "2.3.0" - yargs "^17.4.0" - yargs-parser "21.0.1" + yargs "^17.6.2" + yargs-parser "21.1.1" object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" @@ -14578,7 +14588,7 @@ yargs-parser@21.0.1: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== -yargs-parser@>=21.0.1, yargs-parser@^21.0.0: +yargs-parser@21.1.1, yargs-parser@>=21.0.1, yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== @@ -14601,18 +14611,18 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.3.1, yargs@^17.4.0: - version "17.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.4.1.tgz#ebe23284207bb75cee7c408c33e722bfb27b5284" - integrity sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g== +yargs@^17.3.1, yargs@^17.4.0, yargs@^17.6.2: + version "17.6.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" + integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== dependencies: - cliui "^7.0.2" + cliui "^8.0.1" escalade "^3.1.1" get-caller-file "^2.0.5" require-directory "^2.1.1" string-width "^4.2.3" y18n "^5.0.5" - yargs-parser "^21.0.0" + yargs-parser "^21.1.1" yn@3.1.1: version "3.1.1" From e458b5a78fec37aeb5b2171d1619fe0dc46719cc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 3 Dec 2022 08:09:13 +0000 Subject: [PATCH 163/193] chore(deps): update dependency lerna to v6.1.0 (#6157) --- package.json | 2 +- yarn.lock | 905 ++++++++++++++++++++++++--------------------------- 2 files changed, 418 insertions(+), 489 deletions(-) diff --git a/package.json b/package.json index 7900bc45ff6..021f9250bef 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "jest-diff": "^29.0.3", "jest-snapshot": "^29.0.3", "jest-specific-snapshot": "^7.0.0", - "lerna": "6.0.3", + "lerna": "6.1.0", "lint-staged": "^13.0.0", "make-dir": "^3.1.0", "markdownlint-cli": "^0.32.0", diff --git a/yarn.lock b/yarn.lock index 5272cce173c..2e7212495ad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2288,39 +2288,39 @@ resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== -"@lerna/add@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/add/-/add-6.0.3.tgz#341927d00b79ad2a2c0e9aec239b203e5a04fa12" - integrity sha512-EM9hJExG6bV4Hg+XpHTg5nGCuZl3pUEdbYLtyXfMUj/7fpCrUkxB0oESIVhFINVbxHm2pdnUfOxPDHwFSyWBig== - dependencies: - "@lerna/bootstrap" "6.0.3" - "@lerna/command" "6.0.3" - "@lerna/filter-options" "6.0.3" - "@lerna/npm-conf" "6.0.3" - "@lerna/validation-error" "6.0.3" +"@lerna/add@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/add/-/add-6.1.0.tgz#0f09495c5e1af4c4f316344af34b6d1a91b15b19" + integrity sha512-f2cAeS1mE/p7QvSRn5TCgdUXw6QVbu8PeRxaTOxTThhTdJIWdXZfY00QjAsU6jw1PdYXK1qGUSwWOPkdR16mBg== + dependencies: + "@lerna/bootstrap" "6.1.0" + "@lerna/command" "6.1.0" + "@lerna/filter-options" "6.1.0" + "@lerna/npm-conf" "6.1.0" + "@lerna/validation-error" "6.1.0" dedent "^0.7.0" npm-package-arg "8.1.1" p-map "^4.0.0" pacote "^13.6.1" semver "^7.3.4" -"@lerna/bootstrap@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-6.0.3.tgz#806fae9955f25ef5468dd7752c5d5469e3253fa7" - integrity sha512-51eT07tAiH1oca9dNrrLXXH6PJZFY4zKEYDqLkx+zMCG/LsIUnzEfy4JBe1GXbFasXfM24pG8wLKoj1sj1CR3A== - dependencies: - "@lerna/command" "6.0.3" - "@lerna/filter-options" "6.0.3" - "@lerna/has-npm-version" "6.0.3" - "@lerna/npm-install" "6.0.3" - "@lerna/package-graph" "6.0.3" - "@lerna/pulse-till-done" "6.0.3" - "@lerna/rimraf-dir" "6.0.3" - "@lerna/run-lifecycle" "6.0.3" - "@lerna/run-topologically" "6.0.3" - "@lerna/symlink-binary" "6.0.3" - "@lerna/symlink-dependencies" "6.0.3" - "@lerna/validation-error" "6.0.3" +"@lerna/bootstrap@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-6.1.0.tgz#81738f32cd431814c9943dfffe28752587d90830" + integrity sha512-aDxKqgxexVj/Z0B1aPu7P1iPbPqhk1FPkl/iayCmPlkAh90pYEH0uVytGzi1hFB5iXEfG7Pa6azGQywUodx/1g== + dependencies: + "@lerna/command" "6.1.0" + "@lerna/filter-options" "6.1.0" + "@lerna/has-npm-version" "6.1.0" + "@lerna/npm-install" "6.1.0" + "@lerna/package-graph" "6.1.0" + "@lerna/pulse-till-done" "6.1.0" + "@lerna/rimraf-dir" "6.1.0" + "@lerna/run-lifecycle" "6.1.0" + "@lerna/run-topologically" "6.1.0" + "@lerna/symlink-binary" "6.1.0" + "@lerna/symlink-dependencies" "6.1.0" + "@lerna/validation-error" "6.1.0" "@npmcli/arborist" "5.3.0" dedent "^0.7.0" get-port "^5.1.1" @@ -2332,100 +2332,100 @@ p-waterfall "^2.1.1" semver "^7.3.4" -"@lerna/changed@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-6.0.3.tgz#9dfd7ff944b2409c7762a5e376607ea6e5533585" - integrity sha512-VhKl/vVnrY12z2q1it2FkPkRwC3kyZh++kWMNDbMuUqH1kDHuw7KWJjPw6H4LDpoFWj4Q0hPcNRXxJpNiRWD1g== +"@lerna/changed@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-6.1.0.tgz#4fa480cbb0e7106ea9dad30d315e953975118d06" + integrity sha512-p7C2tf1scmvoUC1Osck/XIKVKXAQ8m8neL8/rfgKSYsvUVjsOB1LbF5HH1VUZntE6S4OxkRxUQGkAHVf5xrGqw== dependencies: - "@lerna/collect-updates" "6.0.3" - "@lerna/command" "6.0.3" - "@lerna/listable" "6.0.3" - "@lerna/output" "6.0.3" + "@lerna/collect-updates" "6.1.0" + "@lerna/command" "6.1.0" + "@lerna/listable" "6.1.0" + "@lerna/output" "6.1.0" -"@lerna/check-working-tree@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-6.0.3.tgz#32fb77c5832926f7a66fd1a77bb81a5f46f4fbc5" - integrity sha512-ulAilI5AHvSVluH4QdcRPBbGH6lKU6OARfJFIgFYm8KoPyMESygYIBKBKuTUuyzfp5DOsASq2NiumBW4rpC7hg== +"@lerna/check-working-tree@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-6.1.0.tgz#b8970fd27a26449b12456d5d0ece60477aa54e15" + integrity sha512-hSciDmRqsNPevMhAD+SYbnhjatdb7UUu9W8vTyGtUXkrq2xtRZU0vAOgqovV8meirRkbC41pZePYKqyQtF0y3w== dependencies: - "@lerna/collect-uncommitted" "6.0.3" - "@lerna/describe-ref" "6.0.3" - "@lerna/validation-error" "6.0.3" + "@lerna/collect-uncommitted" "6.1.0" + "@lerna/describe-ref" "6.1.0" + "@lerna/validation-error" "6.1.0" -"@lerna/child-process@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-6.0.3.tgz#691040e5e3f64dfe7ef4f4b4d5e6d560e1bef8fc" - integrity sha512-WfFwWdtGA0wvbyq7FB78Gvkd5mVjCGhRoLQY0FIGPQrmZBv3uy7kz5KbRKJlEmoIhVUnFbbV1xURxdqLzNrxoA== +"@lerna/child-process@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-6.1.0.tgz#6361f7945cd5b36e983f819de3cd91c315707302" + integrity sha512-jhr3sCFeps6Y15SCrWEPvqE64i+QLOTSh+OzxlziCBf7ZEUu7sF0yA4n5bAqw8j43yCKhhjkf/ZLYxZe+pnl3Q== dependencies: chalk "^4.1.0" execa "^5.0.0" strong-log-transformer "^2.1.0" -"@lerna/clean@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-6.0.3.tgz#f3519ef27a59b04b0f0f3553b53990d3fbe3ea48" - integrity sha512-4H+leVVVhwnc/GBOkFBIrLBia+MRm2ETZyXdCNckCJZ/e5tm6XHJLprGMSP2QwhJ0H20r+ciiQGzo3TGjQAEwQ== - dependencies: - "@lerna/command" "6.0.3" - "@lerna/filter-options" "6.0.3" - "@lerna/prompt" "6.0.3" - "@lerna/pulse-till-done" "6.0.3" - "@lerna/rimraf-dir" "6.0.3" +"@lerna/clean@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-6.1.0.tgz#1114fd90ad82438123726e2493d3550e73abebbc" + integrity sha512-LRK2hiNUiBhPe5tmJiefOVpkaX2Yob0rp15IFNIbuteRWUJg0oERFQo62WvnxwElfzKSOhr8OGuEq/vN4bMrRA== + dependencies: + "@lerna/command" "6.1.0" + "@lerna/filter-options" "6.1.0" + "@lerna/prompt" "6.1.0" + "@lerna/pulse-till-done" "6.1.0" + "@lerna/rimraf-dir" "6.1.0" p-map "^4.0.0" p-map-series "^2.1.0" p-waterfall "^2.1.1" -"@lerna/cli@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-6.0.3.tgz#a5115e1af70817a8afc08a646d3a7ae80a179801" - integrity sha512-4J3dOmDGxl32FJJryE65wXR//FOMFRM0osURnr+sylzStpaEwYO24GN1oVl0YIlnGVBuPIBDpr7n0uyjvfn+2A== +"@lerna/cli@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-6.1.0.tgz#41214331fa4c1ea5f41125befdd81b009fe12640" + integrity sha512-p4G/OSPIrHiNkEl8bXrQdFOh4ORAZp2+ljvbXmAxpdf2qmopaUdr+bZYtIAxd+Z42SxRnDNz9IEyR0kOsARRQQ== dependencies: - "@lerna/global-options" "6.0.3" + "@lerna/global-options" "6.1.0" dedent "^0.7.0" npmlog "^6.0.2" yargs "^16.2.0" -"@lerna/collect-uncommitted@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-6.0.3.tgz#645d24f60d2a47edebef7645cf65c6064cecc025" - integrity sha512-kMKL+U6fIMIHMENez6HrZEYZum+YObhmPzRr/5kkuaYqKPw2up/z1dHYQ/+w+tvzavGP15VKAWy/tZ0WsMuTWw== +"@lerna/collect-uncommitted@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-6.1.0.tgz#b6ffd7adda24d73b70304210967d3518caa3529d" + integrity sha512-VvWvqDZG+OiF4PwV4Ro695r3+8ty4w+11Bnq8tbsbu5gq8qZiam8Fkc/TQLuNNqP0SPi4qmMPaIzWvSze3SmDg== dependencies: - "@lerna/child-process" "6.0.3" + "@lerna/child-process" "6.1.0" chalk "^4.1.0" npmlog "^6.0.2" -"@lerna/collect-updates@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-6.0.3.tgz#fbfde0ec93b59c7868f49dc985a06d472e4f6dd1" - integrity sha512-qLuCHaHlVHu/tkdnncG6bQZHz9IFfZ6i7lexWfFnQnZ/aLEY7dVnFUde1jbsTFNMhJesKEbXJshXRcTcplDH6Q== +"@lerna/collect-updates@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-6.1.0.tgz#75fcc0733b5a9ac318a6484b890aa4061b7859c2" + integrity sha512-dgH7kgstwCXFctylQ4cxuCmhwSIE6VJZfHdh2bOaLuncs6ATMErKWN/mVuFHuUWEqPDRyy5Ky40Cu9S40nUq5w== dependencies: - "@lerna/child-process" "6.0.3" - "@lerna/describe-ref" "6.0.3" + "@lerna/child-process" "6.1.0" + "@lerna/describe-ref" "6.1.0" minimatch "^3.0.4" npmlog "^6.0.2" slash "^3.0.0" -"@lerna/command@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/command/-/command-6.0.3.tgz#5c82c388cb2e2a401f1b00bf7454a15458a6c91e" - integrity sha512-iFkIQKLy+Ef2Kf20wOKBdkCA5J64Wjgr3XC62ZdrlDkx6wydfcfJMiXx2bhRqNKMe1cHxlBKGoRKzy8J+tBrHw== - dependencies: - "@lerna/child-process" "6.0.3" - "@lerna/package-graph" "6.0.3" - "@lerna/project" "6.0.3" - "@lerna/validation-error" "6.0.3" - "@lerna/write-log-file" "6.0.3" +"@lerna/command@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/command/-/command-6.1.0.tgz#bcb12516f2c181822b3b5be46c18eadc9b61e885" + integrity sha512-OnMqBDaEBY0C8v9CXIWFbGGKgsiUtZrnKVvQRbupMSZDKMpVGWIUd3X98Is9j9MAmk1ynhBMWE9Fwai5ML/mcA== + dependencies: + "@lerna/child-process" "6.1.0" + "@lerna/package-graph" "6.1.0" + "@lerna/project" "6.1.0" + "@lerna/validation-error" "6.1.0" + "@lerna/write-log-file" "6.1.0" clone-deep "^4.0.1" dedent "^0.7.0" execa "^5.0.0" is-ci "^2.0.0" npmlog "^6.0.2" -"@lerna/conventional-commits@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-6.0.3.tgz#34ecf027b41b1d5182886b6b4c7b674d22897dd7" - integrity sha512-TZof9i0u9TK/Q7LEErjMQAMLf++MjO9NYG81sAuUaNKHMchUOmlFKtJmbT4/JjmgnBX5W0pCUF6DBxr/Bdjj9g== +"@lerna/conventional-commits@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-6.1.0.tgz#1157bb66d84d48880dc5c5026d743cedf0f47094" + integrity sha512-Tipo3cVr8mNVca4btzrCIzct59ZJWERT8/ZCZ/TQWuI4huUJZs6LRofLtB0xsGJAVZ7Vz2WRXAeH4XYgeUxutQ== dependencies: - "@lerna/validation-error" "6.0.3" + "@lerna/validation-error" "6.1.0" conventional-changelog-angular "^5.0.12" conventional-changelog-core "^4.2.4" conventional-recommended-bump "^6.1.0" @@ -2436,24 +2436,24 @@ pify "^5.0.0" semver "^7.3.4" -"@lerna/create-symlink@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-6.0.3.tgz#e651eb4c304e921bb7f83cbeae7a1af6329f284d" - integrity sha512-myCpuQZ4yYJ5sD+xZiyQHfONBIWlQnM3crIlAvObRYs1U+HwniO9YWk0HcW9dyzplwaYo+Vn55mdi67pTdsdDg== +"@lerna/create-symlink@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-6.1.0.tgz#d4260831f5d10abc0c70f0a8f39bea91db87e640" + integrity sha512-ulMa5OUJEwEWBHSgCUNGxrcsJllq1YMYWqhufvIigmMPJ0Zv3TV1Hha5i2MsqLJAakxtW0pNuwdutkUTtUdgxQ== dependencies: cmd-shim "^5.0.0" fs-extra "^9.1.0" npmlog "^6.0.2" -"@lerna/create@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/create/-/create-6.0.3.tgz#525b2e5702a61cee7f44928fdf889474dfa6a615" - integrity sha512-mq3D5laUMe6DWhCoWS0mYJw9PZez/8up81860lk5m7Zojk1Ataa08ZWtGhBgP+p77piNRvmjN89hhjkWiXG6ng== +"@lerna/create@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/create/-/create-6.1.0.tgz#cde219da46a7c5062c558366b4ffce2134f13845" + integrity sha512-ZqlknXu0L29cV5mcfNgBLl+1RbKTWmNk8mj545zgXc7qQDgmrY+EVvrs8Cirey8C7bBpVkzP7Brzze0MSoB4rQ== dependencies: - "@lerna/child-process" "6.0.3" - "@lerna/command" "6.0.3" - "@lerna/npm-conf" "6.0.3" - "@lerna/validation-error" "6.0.3" + "@lerna/child-process" "6.1.0" + "@lerna/command" "6.1.0" + "@lerna/npm-conf" "6.1.0" + "@lerna/validation-error" "6.1.0" dedent "^0.7.0" fs-extra "^9.1.0" init-package-json "^3.0.2" @@ -2467,218 +2467,218 @@ validate-npm-package-name "^4.0.0" yargs-parser "20.2.4" -"@lerna/describe-ref@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-6.0.3.tgz#f7e5603d686b8f58d836ddc0fb8612fceae9fe39" - integrity sha512-3gj6r9PK+c5SfHQr2j8MQ3qb6xQTrX8KvvGhe3YDW8h3jxx9SAGao8zuvzjI3tVpLx7ZSbxmHqMpyUmnLh5kuw== +"@lerna/describe-ref@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-6.1.0.tgz#60f0b8297b912aa5fe5e6ab8ef6c4127813681a7" + integrity sha512-0RQAYnxBaMz1SrEb/rhfR+8VeZx5tvCNYKRee5oXIDZdQ2c6/EPyrKCp3WcqiuOWY50SfGOVfxJEcxpK8Y3FNA== dependencies: - "@lerna/child-process" "6.0.3" + "@lerna/child-process" "6.1.0" npmlog "^6.0.2" -"@lerna/diff@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-6.0.3.tgz#6d9bbde092a605e7aa2b9ab69ce6104eec5a0935" - integrity sha512-9syquyKF2oxg0fF736RWT2cf3Oyk4eRXRUNzT0hF0DL/8frQ98H+gF3ftIFVzz1bfPbXtubzBbLDi29bGEG3bQ== +"@lerna/diff@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-6.1.0.tgz#bfa9bc35894d88a33fa0a3a5787082dea45d8cb2" + integrity sha512-GhP+jPDbcp9QcAMSAjFn4lzM8MKpLR1yt5jll+zUD831U1sL0I5t8HUosFroe5MoRNffEL/jHuI3SbC3jjqWjQ== dependencies: - "@lerna/child-process" "6.0.3" - "@lerna/command" "6.0.3" - "@lerna/validation-error" "6.0.3" + "@lerna/child-process" "6.1.0" + "@lerna/command" "6.1.0" + "@lerna/validation-error" "6.1.0" npmlog "^6.0.2" -"@lerna/exec@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-6.0.3.tgz#01de1eed611879c73b3ec2b2385256a709ef7bd0" - integrity sha512-4xKTXPQe3/0hrwCao7evcQfaacfROhVkR2zfnQEA+rkKRiV6ILWdvu9jCxI7DMkzoh4DgABVuGAv84CeraunMg== - dependencies: - "@lerna/child-process" "6.0.3" - "@lerna/command" "6.0.3" - "@lerna/filter-options" "6.0.3" - "@lerna/profiler" "6.0.3" - "@lerna/run-topologically" "6.0.3" - "@lerna/validation-error" "6.0.3" +"@lerna/exec@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-6.1.0.tgz#a2d165576471ff61e33c49952d40a5dbc36fc78f" + integrity sha512-Ej6WlPHXLF6hZHsfD+J/dxeuTrnc0HIfIXR1DU//msHW5RNCdi9+I7StwreCAQH/dLEsdBjPg5chNmuj2JLQRg== + dependencies: + "@lerna/child-process" "6.1.0" + "@lerna/command" "6.1.0" + "@lerna/filter-options" "6.1.0" + "@lerna/profiler" "6.1.0" + "@lerna/run-topologically" "6.1.0" + "@lerna/validation-error" "6.1.0" p-map "^4.0.0" -"@lerna/filter-options@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-6.0.3.tgz#9362a2b517be5bc9851678bc7a972e3697d02aaf" - integrity sha512-6WjtXo1nNfOIYxjysGgjnCUqAbIqvoIIyQznLQYPsKN/6NN4U7sXr0P3nbaEgBZ2NHeV+seLWA/wraJ1zDaD4Q== +"@lerna/filter-options@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-6.1.0.tgz#f4ee65d0db0273ce490ce6c72c9dbb1d23268ca6" + integrity sha512-kPf92Z7uLsR6MUiXnyXWebaUWArLa15wLfpfTwIp5H3MNk1lTbuG7QnrxE7OxQj+ozFmBvXeV9fuwfLsYTfmOw== dependencies: - "@lerna/collect-updates" "6.0.3" - "@lerna/filter-packages" "6.0.3" + "@lerna/collect-updates" "6.1.0" + "@lerna/filter-packages" "6.1.0" dedent "^0.7.0" npmlog "^6.0.2" -"@lerna/filter-packages@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-6.0.3.tgz#db19b3d5f430ca2ae5bacb5b7e140798a905c3c9" - integrity sha512-UlLgondhCpy7mzZWpOoUy8OlLux8YIqw07Obba0TvVLzrVIGIPIeXhqleRchUGVRV1vfQJ2d3vCTx31s1e/V4g== +"@lerna/filter-packages@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-6.1.0.tgz#1ddac63a6ffdf5f058d206be5adfb39ad7aaf4f9" + integrity sha512-zW2avsZHs/ITE/37AEMhegGVHjiD0rgNk9bguNDfz6zaPa90UaW6PWDH6Tf4ThPRlbkl2Go48N3bFYHYSJKbcw== dependencies: - "@lerna/validation-error" "6.0.3" + "@lerna/validation-error" "6.1.0" multimatch "^5.0.0" npmlog "^6.0.2" -"@lerna/get-npm-exec-opts@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-6.0.3.tgz#d92a6461a626b79167fd2bc11bae38ee6154b965" - integrity sha512-zmKmHkXzmFQIBh2k9rCwzSkearKD+Pz1GypdJ0hAehemnabtW5QQKoGFsGh+7i5mOP0JBUl5kXTYTnwRGOWmYQ== +"@lerna/get-npm-exec-opts@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-6.1.0.tgz#22351e2ebc4adbef21ca4b86187278e15e4cb38a" + integrity sha512-10Pdf+W0z7RT34o0SWlf+WVzz2/WbnTIJ1tQqXvXx6soj2L/xGLhOPvhJiKNtl4WlvUiO/zQ91yb83ESP4TZaA== dependencies: npmlog "^6.0.2" -"@lerna/get-packed@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-6.0.3.tgz#c5b016a5cbd9a9472b76a3d879b229982248dacf" - integrity sha512-NX/Ifi/A7iTXasfBioyv/nQ8+IC4gE1SEAuE39/ExGviOM3Jkk5EmeCqwAbhZyhYkxoDBQDJJvagQ5DobpfS7g== +"@lerna/get-packed@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-6.1.0.tgz#b6d1c1dd1e068212e784b8dfc2e5fe64741ea8db" + integrity sha512-lg0wPpV0wPekcD0mebJp619hMxsOgbZDOH5AkL/bCR217391eha0iPhQ0dU/G0Smd2vv6Cg443+J5QdI4LGRTg== dependencies: fs-extra "^9.1.0" ssri "^9.0.1" tar "^6.1.0" -"@lerna/github-client@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-6.0.3.tgz#3b6f0016a962d5790396a5b9b80f8b73aae46709" - integrity sha512-wMOKH3FIDdE5T8UF88gvhUEBEFD9IUseFHqYt19hgzQyZxAx/hQQE2lqAEosYThPXqtKntIPKQGAfl0gquAMFQ== +"@lerna/github-client@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-6.1.0.tgz#cd33743e4529a0b822ae6716cb4b981e1d8ffe8f" + integrity sha512-+/4PtDgsjt0VRRZtOCN2Piyu0asU/16gSZZy/opVb8dlT44lTrH/ZghrJLE4tSL8Nuv688kx0kSgbUG8BY54jQ== dependencies: - "@lerna/child-process" "6.0.3" + "@lerna/child-process" "6.1.0" "@octokit/plugin-enterprise-rest" "^6.0.1" "@octokit/rest" "^19.0.3" git-url-parse "^13.1.0" npmlog "^6.0.2" -"@lerna/gitlab-client@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-6.0.3.tgz#59b592572dc640f1aa4d89a1393e29478e45ddc8" - integrity sha512-dBZiTsiHJ1j3tkW9JKSqCCZCk6aBiYaU9R/dSnpoPb6ZRthgoMGxtnfdk/1CKZlDargAu12XLJmcXLi7+UbyPg== +"@lerna/gitlab-client@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-6.1.0.tgz#bbcbf80d937e5980798ac1e0edd1f769101057d8" + integrity sha512-fUI/ppXzxJafN9ceSl+FDgsYvu3iTsO6UW0WTD63pS32CfM+PiCryLQHzuc4RkyVW8WQH3aCR/GbaKCqbu52bw== dependencies: node-fetch "^2.6.1" npmlog "^6.0.2" -"@lerna/global-options@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-6.0.3.tgz#e878d45b3ed4b14efecd37306f5e876779d8e2c8" - integrity sha512-XE22Mogzjh8w1rr07hALq40kmPuCr25cQ+K0OwYEiPsyH1dpOM7PSkP4qdT1l2UlWNM64LjgJtnjZ9hsx282VQ== +"@lerna/global-options@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-6.1.0.tgz#268e1de924369102e47babd9288086764ec6f9e6" + integrity sha512-1OyJ/N1XJh3ZAy8S20c6th9C4yBm/k3bRIdC+z0XxpDaHwfNt8mT9kUIDt6AIFCUvVKjSwnIsMHwhzXqBnwYSA== -"@lerna/has-npm-version@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-6.0.3.tgz#db16127ead4819d6cec97cf0597e392def886ee3" - integrity sha512-azZJkKPUWmfZf4AR40t9L6+utZaaCcZcXHOw/vHhmpn9GpZuc8Ck5cM5+8w9bgMglz0YwvTTWvutY2/mCnN5jA== +"@lerna/has-npm-version@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-6.1.0.tgz#a5d960213d1a7ca5374eb3c551a17b322b9a9e62" + integrity sha512-up5PVuP6BmKQ5/UgH/t2c5B1q4HhjwW3/bqbNayX6V0qNz8OijnMYvEUbxFk8fOdeN41qVnhAk0Tb5kbdtYh2A== dependencies: - "@lerna/child-process" "6.0.3" + "@lerna/child-process" "6.1.0" semver "^7.3.4" -"@lerna/import@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/import/-/import-6.0.3.tgz#d881cd2c4420cb91a701fc4fb43da3e70cb9335f" - integrity sha512-AWSwoS9e5udSrJ7E15rR+8V7Hnhli4+3IHh658bpvcGvsIntL7hBZucqWiKRMOmrsafncaBpLkfFgdiyGwy1Pw== - dependencies: - "@lerna/child-process" "6.0.3" - "@lerna/command" "6.0.3" - "@lerna/prompt" "6.0.3" - "@lerna/pulse-till-done" "6.0.3" - "@lerna/validation-error" "6.0.3" +"@lerna/import@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/import/-/import-6.1.0.tgz#1c64281e3431c43c9cd140b66a6a51427afe7095" + integrity sha512-xsBhiKLUavATR32dAFL+WFY0yuab0hsM1eztKtRKk4wy7lSyxRfA5EIUcNCsLXx2xaDOKoMncCTXgNcpeYuqcQ== + dependencies: + "@lerna/child-process" "6.1.0" + "@lerna/command" "6.1.0" + "@lerna/prompt" "6.1.0" + "@lerna/pulse-till-done" "6.1.0" + "@lerna/validation-error" "6.1.0" dedent "^0.7.0" fs-extra "^9.1.0" p-map-series "^2.1.0" -"@lerna/info@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/info/-/info-6.0.3.tgz#b22af49db401580d8e46bf99be07de5c71fab000" - integrity sha512-fqFGejIjjHN9obKUiWgmkknDJliyyRDbv/g6TMvQptxwiGfFBjR55TSPdKyUi9XslIQL5HWMYU7NWzZPiilk/A== +"@lerna/info@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/info/-/info-6.1.0.tgz#a5d66a9c1f18398dc020a6f6073c399013081587" + integrity sha512-CsrWdW/Wyb4kcvHSnrsm7KYWFvjUNItu+ryeyWBZJtWYQOv45jNmWix6j2L4/w1+mMlWMjsfLmBscg82UBrF5w== dependencies: - "@lerna/command" "6.0.3" - "@lerna/output" "6.0.3" + "@lerna/command" "6.1.0" + "@lerna/output" "6.1.0" envinfo "^7.7.4" -"@lerna/init@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/init/-/init-6.0.3.tgz#48e259c90712792bd5cdc21fa5602ae7083b143d" - integrity sha512-PmEmIJNNpXkGtEINBO5wfFrOlipAwY/4k674mbBWAfVJX+Affyx8yMcnMM28oDnFwe8gi12w5oRI0JcxcjpCFg== +"@lerna/init@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/init/-/init-6.1.0.tgz#b178775693b9c38c0f3fe3300eeb574cf76e0297" + integrity sha512-z8oUeVjn+FQYAtepAw6G47cGodLyBAyNoEjO3IsJjQLWE1yH3r83L2sjyD/EckgR3o2VTEzrKo4ArhxLp2mNmg== dependencies: - "@lerna/child-process" "6.0.3" - "@lerna/command" "6.0.3" - "@lerna/project" "6.0.3" + "@lerna/child-process" "6.1.0" + "@lerna/command" "6.1.0" + "@lerna/project" "6.1.0" fs-extra "^9.1.0" p-map "^4.0.0" write-json-file "^4.3.0" -"@lerna/link@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/link/-/link-6.0.3.tgz#364387ba44a347e3dde41d4925d04e42aeb583d9" - integrity sha512-jVTk8QWoVb+gPSkLm6XLtEKdOyqH4WwpOatSZ5zMgiRfjGDiwxCc3dB994JFPJ5FEnr9qCwqXFKjIqef7POIyQ== +"@lerna/link@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/link/-/link-6.1.0.tgz#f6f0cfd0b02aecdeb304ce614e4e4e89fe0a3ad5" + integrity sha512-7OD2lYNQHl6Kl1KYmplt8KoWjVHdiaqpYqwD38AwcB09YN58nGmo4aJgC12Fdx8DSNjkumgM0ROg/JOjMCTIzQ== dependencies: - "@lerna/command" "6.0.3" - "@lerna/package-graph" "6.0.3" - "@lerna/symlink-dependencies" "6.0.3" - "@lerna/validation-error" "6.0.3" + "@lerna/command" "6.1.0" + "@lerna/package-graph" "6.1.0" + "@lerna/symlink-dependencies" "6.1.0" + "@lerna/validation-error" "6.1.0" p-map "^4.0.0" slash "^3.0.0" -"@lerna/list@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/list/-/list-6.0.3.tgz#83c3fd2b6e4a31e804737a472df15e414819ed66" - integrity sha512-5cQHJ2GAeN2/GV6uMJ4CVIQa3YOcmuNGqzr0DWwatR+5tire6dxFu5uY9Kjn2PYjmFUlwFwVgZzqRrSKPPPiVw== +"@lerna/list@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/list/-/list-6.1.0.tgz#a7625bceb5224c4bf1154e715c07ea29f9698bac" + integrity sha512-7/g2hjizkvVnBGpVm+qC7lUFGhZ/0GIMUbGQwnE6yXDGm8yP9aEcNVkU4JGrDWW+uIklf9oodnMHaLXd/FJe6Q== dependencies: - "@lerna/command" "6.0.3" - "@lerna/filter-options" "6.0.3" - "@lerna/listable" "6.0.3" - "@lerna/output" "6.0.3" + "@lerna/command" "6.1.0" + "@lerna/filter-options" "6.1.0" + "@lerna/listable" "6.1.0" + "@lerna/output" "6.1.0" -"@lerna/listable@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-6.0.3.tgz#9460d5efce0850985a9ade03b277184c22d744be" - integrity sha512-7EDzDMc22A/U4O1tCfLzb7MoFQVwwfv6E4F8JSilRupd7mp+2tMi7kvrwS5Dk5imNlHia4e5T0fVWXDUnIO2Sg== +"@lerna/listable@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-6.1.0.tgz#2510045fde7bc568b18172a5d24372a719bb5c4c" + integrity sha512-3KZ9lQ9AtNfGNH/mYJYaMKCiF2EQvLLBGYkWHeIzIs6foegcZNXe0Cyv3LNXuo5WslMNr5RT4wIgy3BOoAxdtg== dependencies: - "@lerna/query-graph" "6.0.3" + "@lerna/query-graph" "6.1.0" chalk "^4.1.0" columnify "^1.6.0" -"@lerna/log-packed@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-6.0.3.tgz#2bcd152613de9abb938e5acde0d62d9a7f1645da" - integrity sha512-MCGAaaywfs8Z0eeG4mhP1u1ma+ORO8c9gGgtpX0LkjJ9HlE23BkCznC8VrJSVTqChtU4tkVp/38hhwEzZmcPFA== +"@lerna/log-packed@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-6.1.0.tgz#18ae946e8b7881f2fc5b973cc6682cc599b1759b" + integrity sha512-Sq2HZJAcPuoNeEHeIutcPYQCyWBxLyVGvEhgsP3xTe6XkBGQCG8piCp9wX+sc2zT+idPdpI6qLqdh85yYIMMhA== dependencies: byte-size "^7.0.0" columnify "^1.6.0" has-unicode "^2.0.1" npmlog "^6.0.2" -"@lerna/npm-conf@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-6.0.3.tgz#94f7c23fe19e5406913e08f160e244a89e309204" - integrity sha512-lX4nAJgScfDmmdPVM9rOO6AzwCY9UPjuNpY6ZpMYkg/FIr1dch5+MFjexpan4VL2KRBNMWUYpDk3U/e2V+7k/A== +"@lerna/npm-conf@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-6.1.0.tgz#79697260c9d14ffb9d892927f37fcde75b89ec58" + integrity sha512-+RD3mmJe9XSQj7Diibs0+UafAHPcrFCd29ODpDI+tzYl4MmYZblfrlL6mbSCiVYCZQneQ8Uku3P0r+DlbYBaFw== dependencies: config-chain "^1.1.12" pify "^5.0.0" -"@lerna/npm-dist-tag@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-6.0.3.tgz#7dda3da557c1c9a729c2942de5eda26e83497dfa" - integrity sha512-wjbVPZQq1bdfikldEJ6TICikKhVh8gOWPsqR0iTj5iCDRUAiQM5HscrCApTIrB/hASyKV2xG60ruCpMG2Qo6AQ== +"@lerna/npm-dist-tag@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-6.1.0.tgz#29f843aa628687a29dc3a9b905dd3002db7a3820" + integrity sha512-1zo+Yww/lvWJWZnEXpke9dZSb5poDzhUM/pQNqAQYSlbZ96o18SuCR6TEi5isMPiw63Aq1MMzbUqttQfJ11EOA== dependencies: - "@lerna/otplease" "6.0.3" + "@lerna/otplease" "6.1.0" npm-package-arg "8.1.1" npm-registry-fetch "^13.3.0" npmlog "^6.0.2" -"@lerna/npm-install@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-6.0.3.tgz#6ea619ddbbe2c995477209ebf8d21fd46dd87ff5" - integrity sha512-mBypvdtt1feL7L6f8++/tChn/5bM+KbYX06WXjW3yUT81o9geg6p7aaZoxfP6A8ff5XVsTFFL7j86MwPxTsTQQ== +"@lerna/npm-install@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-6.1.0.tgz#b75d1f152540a144bd6c81586a9f6010ed7f3046" + integrity sha512-1SHmOHZA1YJuUctLQBRjA2+yMp+UNYdOBsFb3xUVT7MjWnd1Zl0toT3jxGu96RNErD9JKkk/cGo/Aq+DU3s9pg== dependencies: - "@lerna/child-process" "6.0.3" - "@lerna/get-npm-exec-opts" "6.0.3" + "@lerna/child-process" "6.1.0" + "@lerna/get-npm-exec-opts" "6.1.0" fs-extra "^9.1.0" npm-package-arg "8.1.1" npmlog "^6.0.2" signal-exit "^3.0.3" write-pkg "^4.0.0" -"@lerna/npm-publish@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-6.0.3.tgz#6c34b566c65fb6131a2bf91e518b58be65ffda41" - integrity sha512-RpjnUy7wWIWu7DJB2NQJ8rNgKz+yPoIXpzYOktIjb7gUrL+Ks4KjfbrgGuYk2nWFUEAzJlsOSJ8ggAQUoNIL9Q== +"@lerna/npm-publish@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-6.1.0.tgz#8fe561e639e6a06380354271aeca7cbc39acf7dd" + integrity sha512-N0LdR1ImZQw1r4cYaKtVbBhBPtj4Zu9NbvygzizEP5HuTfxZmE1Ans3w93Kks9VTXZXob8twNbXnzBwzTyEpEA== dependencies: - "@lerna/otplease" "6.0.3" - "@lerna/run-lifecycle" "6.0.3" + "@lerna/otplease" "6.1.0" + "@lerna/run-lifecycle" "6.1.0" fs-extra "^9.1.0" libnpmpublish "^6.0.4" npm-package-arg "8.1.1" @@ -2686,85 +2686,85 @@ pify "^5.0.0" read-package-json "^5.0.1" -"@lerna/npm-run-script@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-6.0.3.tgz#5a2054d8c9317d5cfe7f2437ad835ae3e9efae03" - integrity sha512-+IEo8BYBdyEzgdqHCw3sr4ZxAM9g7SoSdo+oskXyrwD8zScH+OadAZz+DukCad8kXlaSPWSNEc42biP2o611Ew== +"@lerna/npm-run-script@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-6.1.0.tgz#bc5bd414ee9696168d88d8ce78f8e8b715967100" + integrity sha512-7p13mvdxdY5+VqWvvtMsMDeyCRs0PrrTmSHRO+FKuLQuGhBvUo05vevcMEOQNDvEvl/tXPrOVbeGCiGubYTCLg== dependencies: - "@lerna/child-process" "6.0.3" - "@lerna/get-npm-exec-opts" "6.0.3" + "@lerna/child-process" "6.1.0" + "@lerna/get-npm-exec-opts" "6.1.0" npmlog "^6.0.2" -"@lerna/otplease@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-6.0.3.tgz#0523f396c83b4f2c3141824569b5827903489808" - integrity sha512-bNQn6IRrMJ8D6yF9v52KHiWD/XDB7ZkN2ziQjPwwOBcbzoVrDRCar91HQK7ygudPgmyjQNQZOrZqGlSTrh/wqA== +"@lerna/otplease@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-6.1.0.tgz#d25dbe2d867215b69f06de12ab4ff559d83d1d01" + integrity sha512-gqSE6IbaD4IeNJePkaDLaFLoGp0Ceu35sn7z0AHAOoHiQGGorOmvM+h1Md3xZZRSXQmY9LyJVhG5eRa38SoG4g== dependencies: - "@lerna/prompt" "6.0.3" + "@lerna/prompt" "6.1.0" -"@lerna/output@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/output/-/output-6.0.3.tgz#582f6785193f2bb3d4e059f5276bcc7bfd8e01b5" - integrity sha512-/x7Bv4MVRwBJM6UVbfUYE1wjTGNUEnpFCHNc15MCUU3VY9O/Y1ZYq7iZHkYGMT9BmNeMS64fHBkDEwoqoJn/vA== +"@lerna/output@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/output/-/output-6.1.0.tgz#d470146c6ee8ee063fd416081c1ca64fb132c4d8" + integrity sha512-mgCIzLKIuroytXuxjTB689ERtpfgyNXW0rMv9WHOa6ufQc+QJPjh3L4jVsOA0l+/OxZyi97PUXotduNj+0cbnA== dependencies: npmlog "^6.0.2" -"@lerna/pack-directory@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-6.0.3.tgz#90b7e89420ffad96807b001455bee38ae04e449e" - integrity sha512-LVs/q6Dn1kXIxHA80e/Jo9AmAsesPs7TbBAxZ40lHXhJFvvFgx0r2bY+r3eV+77sziGmyKVBorgcbkEfFehfZw== +"@lerna/pack-directory@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-6.1.0.tgz#3252ba7250d826b9922238c775abf5004e7580c4" + integrity sha512-Xsixqm2nkGXs9hvq08ClbGpRlCYnlBV4TwSrLttIDL712RlyXoPe2maJzTUqo9OXBbOumFSahUEInCMT2OS05g== dependencies: - "@lerna/get-packed" "6.0.3" - "@lerna/package" "6.0.3" - "@lerna/run-lifecycle" "6.0.3" - "@lerna/temp-write" "6.0.3" + "@lerna/get-packed" "6.1.0" + "@lerna/package" "6.1.0" + "@lerna/run-lifecycle" "6.1.0" + "@lerna/temp-write" "6.1.0" npm-packlist "^5.1.1" npmlog "^6.0.2" tar "^6.1.0" -"@lerna/package-graph@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-6.0.3.tgz#cc6452c9935569104ccf1ae600d48f325ca523b3" - integrity sha512-Xf4FxCpCFB2vSI+D/LR3k+ueSmam5Tx7LRbGiZnzdfXPvPqukZfcAXHLZbSzuJiv5NKVyG/VJjZk4SCogjrFTQ== +"@lerna/package-graph@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-6.1.0.tgz#2373617605f48f53b5fa9d13188838b6c09022b0" + integrity sha512-yGyxd/eHTDjkpnBbDhTV0hwKF+i01qZc+6/ko65wOsh8xtgqpQeE6mtdgbvsLKcuMcIQ7PDy1ntyIv9phg14gQ== dependencies: - "@lerna/prerelease-id-from-version" "6.0.3" - "@lerna/validation-error" "6.0.3" + "@lerna/prerelease-id-from-version" "6.1.0" + "@lerna/validation-error" "6.1.0" npm-package-arg "8.1.1" npmlog "^6.0.2" semver "^7.3.4" -"@lerna/package@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/package/-/package-6.0.3.tgz#7211f7e3d1e1b4a22c666b9abd2ebb4edebc9cfa" - integrity sha512-UbaZSRT3lTmncmPCws0V6XcZhc0GLRm8LtspxyLeDjhyP0EabKAbaB3HVCelPn69CM81UtP8CLkTh+NpUNH2Aw== +"@lerna/package@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/package/-/package-6.1.0.tgz#e9e33876c0509a86c1b676045b19fd3f7f1c77e2" + integrity sha512-PyNFtdH2IcLasp/nyMDshmeXotriOSlhbeFIxhdl1XuGj5v1so3utMSOrJMO5kzZJQg5zyx8qQoxL+WH/hkrVQ== dependencies: load-json-file "^6.2.0" npm-package-arg "8.1.1" write-pkg "^4.0.0" -"@lerna/prerelease-id-from-version@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-6.0.3.tgz#17f50960fb7df1b3f8eb4e36b86c5917f1e0fab4" - integrity sha512-mgDo6L93mlcg7GDgWZfRGxHmR5xFPQSMQJZeyU/5VY6sCbTnwTDSpYOoce6m71E4v15iJ/G5EKIchq8yVUIBBw== +"@lerna/prerelease-id-from-version@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-6.1.0.tgz#4ee5beeef4e81d77001e94ec5613c140b6615616" + integrity sha512-ngC4I6evvZztB6aOaSDEnhUgRTlqX3TyBXwWwLGTOXCPaCQBTPaLNokhmRdJ+ZVdZ4iHFbzEDSL07ubZrYUcmQ== dependencies: semver "^7.3.4" -"@lerna/profiler@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-6.0.3.tgz#cc9ba5ce9bd78fcc47ad105380877341cba17b3b" - integrity sha512-tkFZEAALPtPOzcEZlH554SHH4rMORmpWH45mF3Py3mpy+HpQXLZmYlxot+wr3jPXkXQzwaIgDe0DMYJhhC8T9A== +"@lerna/profiler@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-6.1.0.tgz#aae2249f1a39c79db72a548ce50bf32f86a0f3a5" + integrity sha512-WFDQNpuqPqMJLg8llvrBHF8Ib5Asgp23lMeNUe89T62NUX6gkjVBTYdjsduxM0tZH6Pa0GAGaQcha97P6fxfdQ== dependencies: fs-extra "^9.1.0" npmlog "^6.0.2" upath "^2.0.1" -"@lerna/project@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/project/-/project-6.0.3.tgz#40f59c9c0063b1098c3af85d2b8a7aa9e321a4ff" - integrity sha512-YBSWZRnRlwAwDuLKx7M7f1HyiqDY/dH+eMadHgasWgFJ5yHhtkwMCZTNgHvMAXTdN6iGb/A6mkPAN5zWhcDYBw== +"@lerna/project@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/project/-/project-6.1.0.tgz#605afe28fb15d8b8b890fafe0ec1da2700964056" + integrity sha512-EOkfjjrTM16c3GUxGqcfYD2stV35p9mBEmkF41NPmyjfbzjol/irDF1r6Q7BsQSRsdClMJRCeZ168xdSxC2X0A== dependencies: - "@lerna/package" "6.0.3" - "@lerna/validation-error" "6.0.3" + "@lerna/package" "6.1.0" + "@lerna/validation-error" "6.1.0" cosmiconfig "^7.0.0" dedent "^0.7.0" dot-prop "^6.0.1" @@ -2777,38 +2777,38 @@ resolve-from "^5.0.0" write-json-file "^4.3.0" -"@lerna/prompt@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-6.0.3.tgz#251ad1c80a15dbdfca0153cf02044ec455e471a4" - integrity sha512-M/3poJp9Nqr2xJ2nB9gE6qsCwxJqvVyEnM5mMPUzRpfCvAtVa6Rhx/x60I20GSogb8/J9Zapav3MNoX2rdv2UQ== +"@lerna/prompt@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-6.1.0.tgz#98e228220428d33620822f77e39f592ce29c776c" + integrity sha512-981J/C53TZ2l2mFVlWJN7zynSzf5GEHKvKQa12Td9iknhASZOuwTAWb6eq46246Ant6W5tWwb0NSPu3I5qtcrA== dependencies: inquirer "^8.2.4" npmlog "^6.0.2" -"@lerna/publish@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-6.0.3.tgz#029b30d6bb877102beca153d81e305939bfcf859" - integrity sha512-Vv9aDQEQv+5NRfaIpZpBqXcgfXkb18kpIUqBI4bAnqC/t168Gn/UzOxxjVkl5wuAKJ2sj8tDoZTEIb/DVoV53Q== - dependencies: - "@lerna/check-working-tree" "6.0.3" - "@lerna/child-process" "6.0.3" - "@lerna/collect-updates" "6.0.3" - "@lerna/command" "6.0.3" - "@lerna/describe-ref" "6.0.3" - "@lerna/log-packed" "6.0.3" - "@lerna/npm-conf" "6.0.3" - "@lerna/npm-dist-tag" "6.0.3" - "@lerna/npm-publish" "6.0.3" - "@lerna/otplease" "6.0.3" - "@lerna/output" "6.0.3" - "@lerna/pack-directory" "6.0.3" - "@lerna/prerelease-id-from-version" "6.0.3" - "@lerna/prompt" "6.0.3" - "@lerna/pulse-till-done" "6.0.3" - "@lerna/run-lifecycle" "6.0.3" - "@lerna/run-topologically" "6.0.3" - "@lerna/validation-error" "6.0.3" - "@lerna/version" "6.0.3" +"@lerna/publish@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-6.1.0.tgz#9d62c327bc3541a0430951d726b39a2fb17b7925" + integrity sha512-XtvuydtU0IptbAapLRgoN1AZj/WJR+e3UKnx9BQ1Dwc+Fpg2oqPxR/vi+6hxAsr95pdQ5CnWBdgS+dg2wEUJ7Q== + dependencies: + "@lerna/check-working-tree" "6.1.0" + "@lerna/child-process" "6.1.0" + "@lerna/collect-updates" "6.1.0" + "@lerna/command" "6.1.0" + "@lerna/describe-ref" "6.1.0" + "@lerna/log-packed" "6.1.0" + "@lerna/npm-conf" "6.1.0" + "@lerna/npm-dist-tag" "6.1.0" + "@lerna/npm-publish" "6.1.0" + "@lerna/otplease" "6.1.0" + "@lerna/output" "6.1.0" + "@lerna/pack-directory" "6.1.0" + "@lerna/prerelease-id-from-version" "6.1.0" + "@lerna/prompt" "6.1.0" + "@lerna/pulse-till-done" "6.1.0" + "@lerna/run-lifecycle" "6.1.0" + "@lerna/run-topologically" "6.1.0" + "@lerna/validation-error" "6.1.0" + "@lerna/version" "6.1.0" fs-extra "^9.1.0" libnpmaccess "^6.0.3" npm-package-arg "8.1.1" @@ -2819,99 +2819,99 @@ pacote "^13.6.1" semver "^7.3.4" -"@lerna/pulse-till-done@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-6.0.3.tgz#d3ec687799023b8baccc6af003cce738a114ea9c" - integrity sha512-/HjvHtaDCr0qJuhJT6PuwoHFvPsZMB7f/GnEYGIzS0+ovwOTrbULD6ESo2lWcsFnxJ3tWv2OPIKEiHkJ0y1PCg== +"@lerna/pulse-till-done@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-6.1.0.tgz#df0112a9a5b8547b53d18742ce21104eb360d731" + integrity sha512-a2RVT82E4R9nVXtehzp2TQL6iXp0QfEM3bu8tBAR/SfI1A9ggZWQhuuUqtRyhhVCajdQDOo7rS0UG7R5JzK58w== dependencies: npmlog "^6.0.2" -"@lerna/query-graph@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-6.0.3.tgz#302498ac354cb7a58f5447822d8524582fd0143f" - integrity sha512-Se3G4ZIckjleki/BWUEInITfLTuNIYkqeStq50KEz74xhQ9jQs7ZLAOWc/Qxn3EPngCTLe8WqhLVeHFOfxgjvw== +"@lerna/query-graph@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-6.1.0.tgz#e78c47c78d4691231fc379570e036bc2753cf6fa" + integrity sha512-YkyCc+6aR7GlCOcZXEKPcl5o5L2v+0YUNs59JrfAS0mctFosZ/2tP7pkdu2SI4qXIi5D0PMNsh/0fRni56znsQ== dependencies: - "@lerna/package-graph" "6.0.3" + "@lerna/package-graph" "6.1.0" -"@lerna/resolve-symlink@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-6.0.3.tgz#9dd4b2903e4a0bb11b000fb220efd11ce5909f28" - integrity sha512-9HkEl7kMQ4sZ3/+FEOhBt2rYoQP2cXQlhV7TNIej6SGaR0VtKe98ciM9bQAdkc/rOZtyZLc2cFBoUd10NEjzoA== +"@lerna/resolve-symlink@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-6.1.0.tgz#5a8686b99c838bc6e869930e5b5fd582607ebbe7" + integrity sha512-8ILO+h5fsE0q8MSLfdL+MT1GEsNhAB1fDyMkSsYgLRCsssN/cViZbffpclZyT/EfAhpyKfBCHZ0CmT1ZGofU1A== dependencies: fs-extra "^9.1.0" npmlog "^6.0.2" read-cmd-shim "^3.0.0" -"@lerna/rimraf-dir@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-6.0.3.tgz#be12f791a7cf1d455d25ae0cdc70d45767ee343f" - integrity sha512-jyC/PVL3rqC83l5Wphog8pSOmDbe5CIAHn9TeHvV8f/zdJnNE3zKXWTNjvyLgB1aPneQ4i2V+3BgdfpeDVAtHQ== +"@lerna/rimraf-dir@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-6.1.0.tgz#75559585d5921563eff0e206bb9ec8ab0cc967c6" + integrity sha512-J9YeGHkCCeAIzsnKURYeGECBexiIii6HA+Bbd+rAgoKPsNCOj6ql4+qJE8Jbd7fQEFNDPQeBCYvM7JcdMc0WSA== dependencies: - "@lerna/child-process" "6.0.3" + "@lerna/child-process" "6.1.0" npmlog "^6.0.2" path-exists "^4.0.0" rimraf "^3.0.2" -"@lerna/run-lifecycle@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-6.0.3.tgz#84dad555d56c3aa668e1cbdf2a5b98f8baabcc64" - integrity sha512-qnFOyp9de81FA2HSBuXtW7LSklF+T6WtFkYH9q3kOJY/EghZlgzFmQYFHgJ/xVYxNu75QDuv6fsfJu4EtrR7ag== +"@lerna/run-lifecycle@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-6.1.0.tgz#e1fa6cd300842ef1d688af77648fed05ec2d5345" + integrity sha512-GbTdKxL+hWHEPgyBEKtqY9Nf+jFlt6YLtP5VjEVc5SdLkm+FeRquar9/YcZVUbzr3c+NJwWNgVjHuePfowdpUA== dependencies: - "@lerna/npm-conf" "6.0.3" + "@lerna/npm-conf" "6.1.0" "@npmcli/run-script" "^4.1.7" npmlog "^6.0.2" p-queue "^6.6.2" -"@lerna/run-topologically@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-6.0.3.tgz#37d7ec11bafeb9be3f93a56a012444fec5982efc" - integrity sha512-nN0kcOO1TzWlxg5byM1V12tm4+lvchbawc1mNje1KsujdzE4gSwD84ub4SFRNkUUBmsPvTGysorhtXckQfqQWw== +"@lerna/run-topologically@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-6.1.0.tgz#8f1a428b5d4b800bced178edabfa2262b328572f" + integrity sha512-kpTaSBKdKjtf61be8Z1e7TIaMt/aksfxswQtpFxEuKDsPsdHfR8htSkADO4d/3SZFtmcAHIHNCQj9CaNj4O4Xw== dependencies: - "@lerna/query-graph" "6.0.3" + "@lerna/query-graph" "6.1.0" p-queue "^6.6.2" -"@lerna/run@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/run/-/run-6.0.3.tgz#604c49708a348c72683c6cf1575d2e9b7ff9e07b" - integrity sha512-eiMF/Pfld/ngH+Emkwyxqf40WWEK6bQE2KhRtu0xyuSIFycFlZJursd72ylTnvZAX3Qx4P4drdHaFnfWyuglcw== - dependencies: - "@lerna/command" "6.0.3" - "@lerna/filter-options" "6.0.3" - "@lerna/npm-run-script" "6.0.3" - "@lerna/output" "6.0.3" - "@lerna/profiler" "6.0.3" - "@lerna/run-topologically" "6.0.3" - "@lerna/timer" "6.0.3" - "@lerna/validation-error" "6.0.3" +"@lerna/run@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/run/-/run-6.1.0.tgz#efaea1acc78cb7fc73b4906be70002e118628d64" + integrity sha512-vlEEKPcTloiob6EK7gxrjEdB6fQQ/LNfWhSJCGxJlvNVbrMpoWIu0Kpp20b0nE+lzX7rRJ4seWr7Wdo/Fjub4Q== + dependencies: + "@lerna/command" "6.1.0" + "@lerna/filter-options" "6.1.0" + "@lerna/npm-run-script" "6.1.0" + "@lerna/output" "6.1.0" + "@lerna/profiler" "6.1.0" + "@lerna/run-topologically" "6.1.0" + "@lerna/timer" "6.1.0" + "@lerna/validation-error" "6.1.0" fs-extra "^9.1.0" p-map "^4.0.0" -"@lerna/symlink-binary@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-6.0.3.tgz#5f40b6e8e9f2230adefd87165c3e81420d25be25" - integrity sha512-bRrPPuZoYvEDc8eTGwhTLQwRmtjYfD/hBVElqhfAlUTPcuA36VrQwBkmhGAUKcIDmEHTVk6IHNiFb/JwuiOSYA== +"@lerna/symlink-binary@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-6.1.0.tgz#7d476499b86ae5fcb853c510603cff9a27acf105" + integrity sha512-DaiRNZk/dvomNxgEaTW145PyL7vIGP7rvnfXV2FO+rjX8UUSNUOjmVmHlYfs64gV9Eqx/dLfQClIbKcwYMD83A== dependencies: - "@lerna/create-symlink" "6.0.3" - "@lerna/package" "6.0.3" + "@lerna/create-symlink" "6.1.0" + "@lerna/package" "6.1.0" fs-extra "^9.1.0" p-map "^4.0.0" -"@lerna/symlink-dependencies@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-6.0.3.tgz#552cd9a4dc81ad925d583c392022ae9321c065d0" - integrity sha512-4DmKLZkJ9oyQ8DXdXCMT6fns6w6G/7h9D2pXGNOYa/IFtjb4mKDMBfJ61XhmvTlxrEzjEc9CnqMeO7BQBXWt8A== +"@lerna/symlink-dependencies@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-6.1.0.tgz#f44d33e043fed21a366c4ced2cbde8fa8be0c5fc" + integrity sha512-hrTvtY1Ek+fLA4JjXsKsvwPjuJD0rwB/+K4WY57t00owj//BpCsJ37w3kkkS7f/PcW/5uRjCuHcY67LOEwsRxw== dependencies: - "@lerna/create-symlink" "6.0.3" - "@lerna/resolve-symlink" "6.0.3" - "@lerna/symlink-binary" "6.0.3" + "@lerna/create-symlink" "6.1.0" + "@lerna/resolve-symlink" "6.1.0" + "@lerna/symlink-binary" "6.1.0" fs-extra "^9.1.0" p-map "^4.0.0" p-map-series "^2.1.0" -"@lerna/temp-write@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/temp-write/-/temp-write-6.0.3.tgz#b08e329ca122a24f4f9687f1f928b2022724baf5" - integrity sha512-ws+EHk7Bp4hR6liusGk8K+ybnh9iOSkCnHD6d+avwa2lMYtX28v93kle/Y5JbTghjumgDUF9/C+EQg51zIVQmw== +"@lerna/temp-write@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/temp-write/-/temp-write-6.1.0.tgz#a5d532090dd7b2d4f8965fbb475376aae06b9242" + integrity sha512-ZcQl88H9HbQ/TeWUOVt+vDYwptm7kwprGvj9KkZXr9S5Bn6SiKRQOeydCCfCrQT+9Q3dm7QZXV6rWzLsACcAlQ== dependencies: graceful-fs "^4.1.15" is-stream "^2.0.0" @@ -2919,37 +2919,37 @@ temp-dir "^1.0.0" uuid "^8.3.2" -"@lerna/timer@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-6.0.3.tgz#73bb3e301c76c8fabcb35831b1d398f272287f5a" - integrity sha512-Ywfu3cGi0pV9vN4ki8oTu+qdJArMwrW3MiXL3/2fospKRdGL7sGCuXlS9Byd+aduMvmMwKbnX0EW+6R7Np+qSg== +"@lerna/timer@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-6.1.0.tgz#245b02c05b2dec6d2aed2da8a0962cf0343d83d5" + integrity sha512-du+NQ9q7uO4d2nVU4AD2DSPuAZqUapA/bZKuVpFVxvY9Qhzb8dQKLsFISe4A9TjyoNAk8ZeWK0aBc/6N+Qer9A== -"@lerna/validation-error@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-6.0.3.tgz#9e0cc7fdb2117f82db9a73eaf287f6b46521f2c9" - integrity sha512-cWYKMFne/euWnW4w7ry+RvDkj8iVNYMrbRF86Px/609GXFOoOwEROJyvTlRp1BgCmC2/3KzidyBletN/R3JHEA== +"@lerna/validation-error@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-6.1.0.tgz#03bd46f6219b6db7c4420528d5aaf047f92693e3" + integrity sha512-q0c3XCi5OpyTr8AcfbisS6e3svZaJF/riCvBDqRMaQUT4A8QOPzB4fVF3/+J2u54nidBuTlIk0JZu9aOdWTUkQ== dependencies: npmlog "^6.0.2" -"@lerna/version@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/version/-/version-6.0.3.tgz#de44ecf9598e77e22b5088bd3a62b76a87bcf683" - integrity sha512-ssQhsK51IBMabB+RpQPIRn93iozwMRpvfh2vVIVdTs76j8r/1ljIs3gLXPDzLo9RbyLcou+VKi3c/7coCAwsdw== - dependencies: - "@lerna/check-working-tree" "6.0.3" - "@lerna/child-process" "6.0.3" - "@lerna/collect-updates" "6.0.3" - "@lerna/command" "6.0.3" - "@lerna/conventional-commits" "6.0.3" - "@lerna/github-client" "6.0.3" - "@lerna/gitlab-client" "6.0.3" - "@lerna/output" "6.0.3" - "@lerna/prerelease-id-from-version" "6.0.3" - "@lerna/prompt" "6.0.3" - "@lerna/run-lifecycle" "6.0.3" - "@lerna/run-topologically" "6.0.3" - "@lerna/temp-write" "6.0.3" - "@lerna/validation-error" "6.0.3" +"@lerna/version@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/version/-/version-6.1.0.tgz#44d8649e978df9d6a14d97c9d7631a7dcd4a9cbf" + integrity sha512-RUxVFdzHt0739lRNMrAbo6HWcFrcyG7atM1pn+Eo61fUoA5R/9N4bCk4m9xUGkJ/mOcROjuwAGe+wT1uOs58Bg== + dependencies: + "@lerna/check-working-tree" "6.1.0" + "@lerna/child-process" "6.1.0" + "@lerna/collect-updates" "6.1.0" + "@lerna/command" "6.1.0" + "@lerna/conventional-commits" "6.1.0" + "@lerna/github-client" "6.1.0" + "@lerna/gitlab-client" "6.1.0" + "@lerna/output" "6.1.0" + "@lerna/prerelease-id-from-version" "6.1.0" + "@lerna/prompt" "6.1.0" + "@lerna/run-lifecycle" "6.1.0" + "@lerna/run-topologically" "6.1.0" + "@lerna/temp-write" "6.1.0" + "@lerna/validation-error" "6.1.0" "@nrwl/devkit" ">=14.8.6 < 16" chalk "^4.1.0" dedent "^0.7.0" @@ -2964,10 +2964,10 @@ slash "^3.0.0" write-json-file "^4.3.0" -"@lerna/write-log-file@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-6.0.3.tgz#21f4c2fcf6a41a3420c46a571dd52fb5c8a64242" - integrity sha512-xZFC9IgGkvuv1MUIC7EKD5ltlljgLlz7isbfQ2QHAqOmGJG6jPqa0Yo38pGe8wEDtGSVgtlUGkx7iHK22MawEA== +"@lerna/write-log-file@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-6.1.0.tgz#b811cffd2ea2b3be6239a756c64dac9a3795707a" + integrity sha512-09omu2w4NCt8mJH/X9ZMuToQQ3xu/KpC7EU4yDl2Qy8nxKf8HiG8Oe+YYNprngmkdsq60F5eUZvoiFDZ5JeGIg== dependencies: npmlog "^6.0.2" write-file-atomic "^4.0.1" @@ -3211,13 +3211,6 @@ read-package-json-fast "^2.0.3" which "^2.0.2" -"@nrwl/cli@15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-15.0.0.tgz#7b00d95a6502f83fdd84f8888fd1ba7a180cdd07" - integrity sha512-D0zAhZ375bQnoUM2HLifMzAa75A3/lC9OkkewsiVVbqaznjEIry8ezHZepgfjFRVzLr3ue7FIpDEH3iJIYzvVw== - dependencies: - nx "15.0.0" - "@nrwl/cli@15.2.4": version "15.2.4" resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-15.2.4.tgz#7cf18d474c428d6b4aaf7b511c298369c47de39a" @@ -3225,7 +3218,7 @@ dependencies: nx "15.2.4" -"@nrwl/devkit@15.2.4": +"@nrwl/devkit@15.2.4", "@nrwl/devkit@>=14.8.6 < 16": version "15.2.4" resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-15.2.4.tgz#ffcb69f462df19d3d282cf25bf346926ee23f141" integrity sha512-5JZWB4ydnu+NKNIfj958nML8AWwhareQ+Q1hLXoOIS/7brqfALNP3y/Ef1ljrLIo1f3xc484TPclqwSH7aRdvQ== @@ -3236,17 +3229,6 @@ semver "7.3.4" tslib "^2.3.0" -"@nrwl/devkit@>=14.8.6 < 16": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-15.0.0.tgz#755bc07581a57e0ae87f68a7562ab86ff737e919" - integrity sha512-ALtPfILlxLDg77rV/XNdDGbhUkh0gZPj/4Ehy3ScvVqPhTrDIZNLGX13dXgUUF9xhGb7SXPmvzZkduBpqmHnfQ== - dependencies: - "@phenomnomnominal/tsquery" "4.1.1" - ejs "^3.1.7" - ignore "^5.0.4" - semver "7.3.4" - tslib "^2.3.0" - "@nrwl/jest@15.2.4": version "15.2.4" resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-15.2.4.tgz#c0be05b554f7078d900d829145ce40974a5387ab" @@ -3291,13 +3273,6 @@ tar "6.1.11" yargs-parser ">=21.0.1" -"@nrwl/tao@15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-15.0.0.tgz#128499a4256e408716f7347131a3ed32d1fec5f0" - integrity sha512-qup1eSWYwp/KVrw/wxeWBvYttQ9dcbQnqpXb5NQMD31SpXEZSpJB1i3GV/o6CF5qQQSNLwICXZx25rNTTQAqpg== - dependencies: - nx "15.0.0" - "@nrwl/tao@15.2.4": version "15.2.4" resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-15.2.4.tgz#c335e0774e5b7ee26bb3b257a436fe154693d619" @@ -9539,28 +9514,28 @@ latest-version@^5.1.0: dependencies: package-json "^6.3.0" -lerna@6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-6.0.3.tgz#0364eadeedbdf5ade375d8a6f0a87bb9003f6019" - integrity sha512-DzRCTZGoDI502daViNK1Ha+HPAVvTp72xshDOQ6o6SWCDTvnxFI3hGF6CBqGWnOoPwEOlQowHEIcPw5PjoMz8A== - dependencies: - "@lerna/add" "6.0.3" - "@lerna/bootstrap" "6.0.3" - "@lerna/changed" "6.0.3" - "@lerna/clean" "6.0.3" - "@lerna/cli" "6.0.3" - "@lerna/command" "6.0.3" - "@lerna/create" "6.0.3" - "@lerna/diff" "6.0.3" - "@lerna/exec" "6.0.3" - "@lerna/import" "6.0.3" - "@lerna/info" "6.0.3" - "@lerna/init" "6.0.3" - "@lerna/link" "6.0.3" - "@lerna/list" "6.0.3" - "@lerna/publish" "6.0.3" - "@lerna/run" "6.0.3" - "@lerna/version" "6.0.3" +lerna@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-6.1.0.tgz#693145393ec22fd3ca98d817deab2246c1e2b107" + integrity sha512-3qAjIj8dgBwHtCAiLbq4VU/C1V9D1tvTLm2owZubdGAN72aB5TxuCu2mcw+yeEorOcXuR9YWx7EXIkAf+G0N2w== + dependencies: + "@lerna/add" "6.1.0" + "@lerna/bootstrap" "6.1.0" + "@lerna/changed" "6.1.0" + "@lerna/clean" "6.1.0" + "@lerna/cli" "6.1.0" + "@lerna/command" "6.1.0" + "@lerna/create" "6.1.0" + "@lerna/diff" "6.1.0" + "@lerna/exec" "6.1.0" + "@lerna/import" "6.1.0" + "@lerna/info" "6.1.0" + "@lerna/init" "6.1.0" + "@lerna/link" "6.1.0" + "@lerna/list" "6.1.0" + "@lerna/publish" "6.1.0" + "@lerna/run" "6.1.0" + "@lerna/version" "6.1.0" "@nrwl/devkit" ">=14.8.6 < 16" import-local "^3.0.2" inquirer "^8.2.4" @@ -10618,48 +10593,7 @@ nth-check@^2.0.0, nth-check@^2.0.1: dependencies: boolbase "^1.0.0" -nx@15.0.0, "nx@>=14.8.6 < 16": - version "15.0.0" - resolved "https://registry.yarnpkg.com/nx/-/nx-15.0.0.tgz#8f1a291b7393861242b5c0f0d03c6317aed9c182" - integrity sha512-uh9Ou5oj7yr6Uyp4QhqW1vIVoanYn1sJM1jzOyoT17GAhhODfS0BtQgUvlmInDuRqP8LMaPg4LXFMby07U1HXg== - dependencies: - "@nrwl/cli" "15.0.0" - "@nrwl/tao" "15.0.0" - "@parcel/watcher" "2.0.4" - "@yarnpkg/lockfile" "^1.1.0" - "@yarnpkg/parsers" "^3.0.0-rc.18" - "@zkochan/js-yaml" "0.0.6" - axios "^1.0.0" - chalk "4.1.0" - chokidar "^3.5.1" - cli-cursor "3.1.0" - cli-spinners "2.6.1" - cliui "^7.0.2" - dotenv "~10.0.0" - enquirer "~2.3.6" - fast-glob "3.2.7" - figures "3.2.0" - flat "^5.0.2" - fs-extra "^10.1.0" - glob "7.1.4" - ignore "^5.0.4" - js-yaml "4.1.0" - jsonc-parser "3.2.0" - minimatch "3.0.5" - npm-run-path "^4.0.1" - open "^8.4.0" - semver "7.3.4" - string-width "^4.2.3" - strong-log-transformer "^2.1.0" - tar-stream "~2.2.0" - tmp "~0.2.1" - tsconfig-paths "^3.9.0" - tslib "^2.3.0" - v8-compile-cache "2.3.0" - yargs "^17.4.0" - yargs-parser "21.0.1" - -nx@15.2.4: +nx@15.2.4, "nx@>=14.8.6 < 16": version "15.2.4" resolved "https://registry.yarnpkg.com/nx/-/nx-15.2.4.tgz#de55a1342deb3ff2f7b123fe2bbef46c8495f792" integrity sha512-8rTLo5WGmM6hEo5R/u03Jllkyj4vIUbBk2MRAppCvVRXWLS4xJUEOityXJ5BAvaKoLYm6sWUP1gqU7xlldnT5A== @@ -14583,11 +14517,6 @@ yargs-parser@20.2.4: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== -yargs-parser@21.0.1: - version "21.0.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" - integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== - yargs-parser@21.1.1, yargs-parser@>=21.0.1, yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" @@ -14611,7 +14540,7 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.3.1, yargs@^17.4.0, yargs@^17.6.2: +yargs@^17.3.1, yargs@^17.6.2: version "17.6.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== From 46c14cd88616acc2ef9567edbc1b67577128b16e Mon Sep 17 00:00:00 2001 From: James Henry Date: Sat, 3 Dec 2022 13:00:49 +0400 Subject: [PATCH 164/193] chore: use short form for nx project names (#6160) * chore: use short form for nx project names * chore: update ci.yml --- .github/workflows/ci.yml | 4 ++-- packages/ast-spec/project.json | 2 +- packages/eslint-plugin-internal/project.json | 2 +- packages/eslint-plugin-tslint/project.json | 2 +- packages/eslint-plugin/project.json | 2 +- packages/experimental-utils/project.json | 2 +- packages/parser/project.json | 2 +- packages/scope-manager/project.json | 2 +- packages/type-utils/project.json | 2 +- packages/types/project.json | 4 ++-- packages/typescript-estree/project.json | 4 ++-- packages/utils/project.json | 2 +- packages/visitor-keys/project.json | 2 +- 13 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1a1fd0e460b..5a3384f1eaa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -155,12 +155,12 @@ jobs: # would override the config - name: Run unit tests with coverage for ${{ matrix.package }} if: env.PRIMARY_NODE_VERSION == matrix.node-version - run: npx nx test @typescript-eslint/${{ matrix.package }} + run: npx nx test ${{ matrix.package }} env: CI: true - name: Run unit tests for ${{ matrix.package }} if: env.PRIMARY_NODE_VERSION != matrix.node-version - run: npx nx test @typescript-eslint/${{ matrix.package }} --coverage=false + run: npx nx test ${{ matrix.package }} --coverage=false env: CI: true diff --git a/packages/ast-spec/project.json b/packages/ast-spec/project.json index ea23f8b6f64..682cdbf3d91 100644 --- a/packages/ast-spec/project.json +++ b/packages/ast-spec/project.json @@ -1,5 +1,5 @@ { - "name": "@typescript-eslint/ast-spec", + "name": "ast-spec", "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [], diff --git a/packages/eslint-plugin-internal/project.json b/packages/eslint-plugin-internal/project.json index 86d60ca9cc1..e7ac6302d69 100644 --- a/packages/eslint-plugin-internal/project.json +++ b/packages/eslint-plugin-internal/project.json @@ -1,5 +1,5 @@ { - "name": "@typescript-eslint/eslint-plugin-internal", + "name": "eslint-plugin-internal", "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [], diff --git a/packages/eslint-plugin-tslint/project.json b/packages/eslint-plugin-tslint/project.json index 4d27febf2b4..29bcb865041 100644 --- a/packages/eslint-plugin-tslint/project.json +++ b/packages/eslint-plugin-tslint/project.json @@ -1,5 +1,5 @@ { - "name": "@typescript-eslint/eslint-plugin-tslint", + "name": "eslint-plugin-tslint", "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [], diff --git a/packages/eslint-plugin/project.json b/packages/eslint-plugin/project.json index 80c036616bf..72ca4c7a9d0 100644 --- a/packages/eslint-plugin/project.json +++ b/packages/eslint-plugin/project.json @@ -1,5 +1,5 @@ { - "name": "@typescript-eslint/eslint-plugin", + "name": "eslint-plugin", "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [], diff --git a/packages/experimental-utils/project.json b/packages/experimental-utils/project.json index d5908a4abc6..74410fed05a 100644 --- a/packages/experimental-utils/project.json +++ b/packages/experimental-utils/project.json @@ -1,5 +1,5 @@ { - "name": "@typescript-eslint/experimental-utils", + "name": "experimental-utils", "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [], diff --git a/packages/parser/project.json b/packages/parser/project.json index 95cb20d40ae..39cc9637919 100644 --- a/packages/parser/project.json +++ b/packages/parser/project.json @@ -1,5 +1,5 @@ { - "name": "@typescript-eslint/parser", + "name": "parser", "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [], diff --git a/packages/scope-manager/project.json b/packages/scope-manager/project.json index f29483a1f8f..9d4a6c37c9a 100644 --- a/packages/scope-manager/project.json +++ b/packages/scope-manager/project.json @@ -1,5 +1,5 @@ { - "name": "@typescript-eslint/scope-manager", + "name": "scope-manager", "$schema": "../../node_modules/nx/schemas/project-schema.json", "sourceRoot": "packages/scope-manager/src", "projectType": "library", diff --git a/packages/type-utils/project.json b/packages/type-utils/project.json index a3e92a55cca..77fdd9b5fce 100644 --- a/packages/type-utils/project.json +++ b/packages/type-utils/project.json @@ -1,5 +1,5 @@ { - "name": "@typescript-eslint/type-utils", + "name": "type-utils", "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [], diff --git a/packages/types/project.json b/packages/types/project.json index b278d20f2a7..74fee293f18 100644 --- a/packages/types/project.json +++ b/packages/types/project.json @@ -1,8 +1,8 @@ { - "name": "@typescript-eslint/types", + "name": "types", "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", - "implicitDependencies": ["@typescript-eslint/ast-spec"], + "implicitDependencies": ["ast-spec"], "targets": { "lint": { "executor": "@nrwl/linter:eslint", diff --git a/packages/typescript-estree/project.json b/packages/typescript-estree/project.json index 35fcd7a7a3e..2856ffe4f07 100644 --- a/packages/typescript-estree/project.json +++ b/packages/typescript-estree/project.json @@ -1,8 +1,8 @@ { - "name": "@typescript-eslint/typescript-estree", + "name": "typescript-estree", "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", - "implicitDependencies": ["@typescript-eslint/types"], + "implicitDependencies": ["types"], "targets": { "lint": { "executor": "@nrwl/linter:eslint", diff --git a/packages/utils/project.json b/packages/utils/project.json index 9b999fe3abd..c38b32ab3a2 100644 --- a/packages/utils/project.json +++ b/packages/utils/project.json @@ -1,5 +1,5 @@ { - "name": "@typescript-eslint/utils", + "name": "utils", "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [], diff --git a/packages/visitor-keys/project.json b/packages/visitor-keys/project.json index c818e68a186..ab99ec943a6 100644 --- a/packages/visitor-keys/project.json +++ b/packages/visitor-keys/project.json @@ -1,5 +1,5 @@ { - "name": "@typescript-eslint/visitor-keys", + "name": "visitor-keys", "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", "implicitDependencies": [], From 891a77eb49c3e2f520f647e4816f30ee6a6e960d Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sat, 3 Dec 2022 09:36:14 -0500 Subject: [PATCH 165/193] docs: mention main/canary url in README.md (#6154) --- DEVELOPMENT.md | 2 +- README.md | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index b86c2c91a99..40ba0362273 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -1,4 +1,4 @@ # Development -See **https://typescript-eslint.io/contributing/development** for our development instructions. +See **https://typescript-eslint.io/contributing/local-development** for our development instructions. Thanks! 💖 diff --git a/README.md b/README.md index 1354292a6be..c1934b1c448 100644 --- a/README.md +++ b/README.md @@ -9,16 +9,22 @@ Codecov

+

👇

- - See typescript-eslint.io for documentation. + See typescript-eslint.io for documentation on the latest released version. +

+

+ + See main--typescript-eslint.netlify.app for documentation on the latest canary release. +

👆

+ ## Code Contributors From 02d9bcab53862b0edc66a328f59df8dbd10a58d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CJamesHenry=E2=80=9D?= Date: Sun, 4 Dec 2022 14:53:32 +0400 Subject: [PATCH 166/193] chore: add yarn 3 resources to gitignore --- .gitignore | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.gitignore b/.gitignore index 1ec5893ee55..2ce061c3d4d 100644 --- a/.gitignore +++ b/.gitignore @@ -79,3 +79,12 @@ _ts3.4 # Files copied as part of the build packages/types/src/generated/**/*.ts + +# Yarn 3 +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions From 2288b35def2494e17b45ae7b355cd6f16b6d4ab0 Mon Sep 17 00:00:00 2001 From: Han Yeong-woo Date: Mon, 5 Dec 2022 07:09:25 +0900 Subject: [PATCH 167/193] chore(eslint-plugin): valid typescript error code in eslint-recommended (#6165) chore(eslint-plugin): valid typescript error code in eslint-recommended --- packages/eslint-plugin/src/configs/eslint-recommended.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/eslint-plugin/src/configs/eslint-recommended.ts b/packages/eslint-plugin/src/configs/eslint-recommended.ts index 71443e1f52e..af3c0050c01 100644 --- a/packages/eslint-plugin/src/configs/eslint-recommended.ts +++ b/packages/eslint-plugin/src/configs/eslint-recommended.ts @@ -16,7 +16,7 @@ export = { 'no-dupe-keys': 'off', // ts(1117) 'no-func-assign': 'off', // ts(2539) 'no-import-assign': 'off', // ts(2539) & ts(2540) - 'no-new-symbol': 'off', // ts(2588) + 'no-new-symbol': 'off', // ts(7009) 'no-obj-calls': 'off', // ts(2349) 'no-redeclare': 'off', // ts(2451) 'no-setter-return': 'off', // ts(2408) From 768e2a1ce5f97c4d4539058bf1a1b9e07f328917 Mon Sep 17 00:00:00 2001 From: "typescript-eslint[bot]" <53356952+typescript-eslint[bot]@users.noreply.github.com> Date: Sun, 4 Dec 2022 20:33:52 -0500 Subject: [PATCH 168/193] chore: update sponsors (#6166) Co-authored-by: typescript-eslint[bot] --- packages/website/data/sponsors.json | 92 ++++++++++++++--------------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/packages/website/data/sponsors.json b/packages/website/data/sponsors.json index 49d7576bf77..fef41913d97 100644 --- a/packages/website/data/sponsors.json +++ b/packages/website/data/sponsors.json @@ -10,23 +10,30 @@ "id": "Nx (by Nrwl)", "image": "https://images.opencollective.com/nx/0efbe42/logo.png", "name": "Nx (by Nrwl)", - "totalDonations": 550000, + "totalDonations": 575000, "website": "https://nx.dev" }, { "id": "ESLint", "image": "https://images.opencollective.com/eslint/96b09dc/logo.png", "name": "ESLint", - "totalDonations": 215000, + "totalDonations": 230000, "website": "https://eslint.org/" }, { "id": "Airbnb", "image": "https://images.opencollective.com/airbnb/d327d66/logo.png", "name": "Airbnb", - "totalDonations": 140800, + "totalDonations": 145800, "website": "https://www.airbnb.com/" }, + { + "id": "n8n.io - n8n GmbH", + "image": "https://images.opencollective.com/n8n/dca2f0c/logo.png", + "name": "n8n.io - n8n GmbH", + "totalDonations": 120000, + "website": "https://n8n.io" + }, { "id": "Coinbase", "image": "https://images.opencollective.com/coinbase/a202856/logo.png", @@ -35,11 +42,11 @@ "website": "https://blog.coinbase.com/engineering-and-security/home" }, { - "id": "n8n.io - n8n GmbH", - "image": "https://images.opencollective.com/n8n/dca2f0c/logo.png", - "name": "n8n.io - n8n GmbH", - "totalDonations": 115000, - "website": "https://n8n.io" + "id": "GitBook", + "image": "https://images.opencollective.com/gitbook/d35a8e7/logo.png", + "name": "GitBook", + "totalDonations": 120000, + "website": "https://www.gitbook.com" }, { "id": "Sentry", @@ -48,18 +55,11 @@ "totalDonations": 114800, "website": "https://sentry.io/welcome/" }, - { - "id": "GitBook", - "image": "https://images.opencollective.com/gitbook/d35a8e7/logo.png", - "name": "GitBook", - "totalDonations": 110000, - "website": "https://www.gitbook.com" - }, { "id": "Codecademy", "image": "https://images.opencollective.com/codecademy/d56a48d/logo.png", "name": "Codecademy", - "totalDonations": 100000, + "totalDonations": 110000, "website": "https://codecademy.com" }, { @@ -69,6 +69,13 @@ "totalDonations": 80400, "website": "https://doberman.co" }, + { + "id": "Sourcegraph", + "image": "https://images.opencollective.com/sourcegraph/67e40ff/logo.png", + "name": "Sourcegraph", + "totalDonations": 60000, + "website": "https://about.sourcegraph.com" + }, { "id": "Future Processing", "image": "https://images.opencollective.com/future-processing/1410d26/logo.png", @@ -76,13 +83,6 @@ "totalDonations": 54000, "website": "https://www.future-processing.com/" }, - { - "id": "Sourcegraph", - "image": "https://images.opencollective.com/sourcegraph/67e40ff/logo.png", - "name": "Sourcegraph", - "totalDonations": 50000, - "website": "https://about.sourcegraph.com" - }, { "id": "Whitebox", "image": "https://images.opencollective.com/whiteboxinc/ef0d11d/logo.png", @@ -90,6 +90,13 @@ "totalDonations": 40000, "website": "https://whitebox.com" }, + { + "id": "Codiga", + "image": "https://images.opencollective.com/codiga/1065f9f/logo.png", + "name": "Codiga", + "totalDonations": 40000, + "website": "https://www.codiga.io" + }, { "id": "Monito", "image": "https://images.opencollective.com/monito/50fc878/logo.png", @@ -97,18 +104,11 @@ "totalDonations": 30000, "website": "https://www.monito.com" }, - { - "id": "Codiga", - "image": "https://images.opencollective.com/codiga/1065f9f/logo.png", - "name": "Codiga", - "totalDonations": 30000, - "website": "https://www.codiga.io" - }, { "id": "STORIS", "image": "https://images.opencollective.com/storis/dfb0e13/logo.png", "name": "STORIS", - "totalDonations": 27000, + "totalDonations": 28500, "website": "https://www.storis.com/" }, { @@ -129,7 +129,7 @@ "id": "David Johnston", "image": "https://images.opencollective.com/blacksheepcode/976d69a/avatar.png", "name": "David Johnston", - "totalDonations": 15000, + "totalDonations": 15500, "website": "https://blacksheepcode.com" }, { @@ -139,6 +139,20 @@ "totalDonations": 14000, "website": "https://joealden.com" }, + { + "id": "Evil Martians", + "image": "https://images.opencollective.com/evilmartians/707ab4d/logo.png", + "name": "Evil Martians", + "totalDonations": 10500, + "website": "https://evilmartians.com/" + }, + { + "id": "Balsa", + "image": "https://images.opencollective.com/balsa/77de498/logo.png", + "name": "Balsa", + "totalDonations": 10500, + "website": "https://balsa.com" + }, { "id": "Gianfranco Palumbo", "image": "https://images.opencollective.com/gianpaj/5d62d25/avatar.png", @@ -146,13 +160,6 @@ "totalDonations": 10000, "website": "http://gian.xyz" }, - { - "id": "Evil Martians", - "image": "https://images.opencollective.com/evilmartians/707ab4d/logo.png", - "name": "Evil Martians", - "totalDonations": 10000, - "website": "https://evilmartians.com/" - }, { "id": "The Guardian", "image": "https://images.opencollective.com/gdndevelopers/0b72bf0/logo.png", @@ -160,13 +167,6 @@ "totalDonations": 10000, "website": "https://www.theguardian.com/" }, - { - "id": "Balsa", - "image": "https://images.opencollective.com/balsa/77de498/logo.png", - "name": "Balsa", - "totalDonations": 10000, - "website": "https://balsa.com" - }, { "id": "Laserhub", "image": "https://images.opencollective.com/laserhub/bae6275/logo.png", From 26c4b46b302177cbba381ee266303a795328786c Mon Sep 17 00:00:00 2001 From: Kamontat Chantrachirathumrong Date: Mon, 5 Dec 2022 20:31:03 +0700 Subject: [PATCH 169/193] docs(eslint-plugin): [member-ordering] remove invalid private-abstract-* mention (#6164) chore: remove private-abstract-* fields as it not valid value --- .../eslint-plugin/docs/rules/member-ordering.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/eslint-plugin/docs/rules/member-ordering.md b/packages/eslint-plugin/docs/rules/member-ordering.md index aaece66adba..919ec88186f 100644 --- a/packages/eslint-plugin/docs/rules/member-ordering.md +++ b/packages/eslint-plugin/docs/rules/member-ordering.md @@ -1232,7 +1232,7 @@ Another option is to group the member types by their scope (`public`, `protected // Fields "static-field", // = ["public-static-field", "protected-static-field", "private-static-field"] "instance-field", // = ["public-instance-field", "protected-instance-field", "private-instance-field"] - "abstract-field", // = ["public-abstract-field", "protected-abstract-field", "private-abstract-field"] + "abstract-field", // = ["public-abstract-field", "protected-abstract-field"] // Static initialization // No scope for static initialization. @@ -1243,17 +1243,17 @@ Another option is to group the member types by their scope (`public`, `protected // Getters "static-get", // = ["public-static-get", "protected-static-get", "private-static-get"] "instance-get", // = ["public-instance-get", "protected-instance-get", "private-instance-get"] - "abstract-get", // = ["public-abstract-get", "protected-abstract-get", "private-abstract-get"] + "abstract-get", // = ["public-abstract-get", "protected-abstract-get"] // Setters "static-set", // = ["public-static-set", "protected-static-set", "private-static-set"] "instance-set", // = ["public-instance-set", "protected-instance-set", "private-instance-set"] - "abstract-set", // = ["public-abstract-set", "protected-abstract-set", "private-abstract-set"] + "abstract-set", // = ["public-abstract-set", "protected-abstract-set"] // Methods "static-method", // = ["public-static-method", "protected-static-method", "private-static-method"] "instance-method", // = ["public-instance-method", "protected-instance-method", "private-instance-method"] - "abstract-method" // = ["public-abstract-method", "protected-abstract-method", "private-abstract-method"] + "abstract-method" // = ["public-abstract-method", "protected-abstract-method"] ] ``` @@ -1268,7 +1268,7 @@ The third grouping option is to ignore both scope and accessibility. // Fields "field", // = ["public-static-field", "protected-static-field", "private-static-field", "public-instance-field", "protected-instance-field", "private-instance-field", - // "public-abstract-field", "protected-abstract-field", private-abstract-field"] + // "public-abstract-field", "protected-abstract-field"] // Static initialization // No grouping for static initialization. @@ -1278,15 +1278,15 @@ The third grouping option is to ignore both scope and accessibility. // Getters "get", // = ["public-static-get", "protected-static-get", "private-static-get", "public-instance-get", "protected-instance-get", "private-instance-get", - // "public-abstract-get", "protected-abstract-get", "private-abstract-get"] + // "public-abstract-get", "protected-abstract-get"] // Setters "set", // = ["public-static-set", "protected-static-set", "private-static-set", "public-instance-set", "protected-instance-set", "private-instance-set", - // "public-abstract-set", "protected-abstract-set", "private-abstract-set"] + // "public-abstract-set", "protected-abstract-set"] // Methods "method" // = ["public-static-method", "protected-static-method", "private-static-method", "public-instance-method", "protected-instance-method", "private-instance-method", - // "public-abstract-method", "protected-abstract-method", "private-abstract-method"] + // "public-abstract-method", "protected-abstract-method"] ] ``` From 2d0a88314dc6c4ea2c786135735fd83517945acd Mon Sep 17 00:00:00 2001 From: "typescript-eslint[bot]" Date: Mon, 5 Dec 2022 17:26:54 +0000 Subject: [PATCH 170/193] chore: publish v5.45.1 --- CHANGELOG.md | 10 ++++++++++ lerna.json | 2 +- packages/ast-spec/CHANGELOG.md | 4 ++++ packages/ast-spec/package.json | 2 +- packages/eslint-plugin-internal/CHANGELOG.md | 4 ++++ packages/eslint-plugin-internal/package.json | 8 ++++---- packages/eslint-plugin-tslint/CHANGELOG.md | 4 ++++ packages/eslint-plugin-tslint/package.json | 6 +++--- packages/eslint-plugin/CHANGELOG.md | 9 +++++++++ packages/eslint-plugin/package.json | 8 ++++---- packages/experimental-utils/CHANGELOG.md | 4 ++++ packages/experimental-utils/package.json | 4 ++-- packages/parser/CHANGELOG.md | 6 ++++++ packages/parser/package.json | 8 ++++---- packages/scope-manager/CHANGELOG.md | 4 ++++ packages/scope-manager/package.json | 8 ++++---- packages/shared-fixtures/CHANGELOG.md | 4 ++++ packages/shared-fixtures/package.json | 2 +- packages/type-utils/CHANGELOG.md | 4 ++++ packages/type-utils/package.json | 8 ++++---- packages/types/CHANGELOG.md | 4 ++++ packages/types/package.json | 2 +- packages/typescript-estree/CHANGELOG.md | 4 ++++ packages/typescript-estree/package.json | 8 ++++---- packages/utils/CHANGELOG.md | 4 ++++ packages/utils/package.json | 10 +++++----- packages/visitor-keys/CHANGELOG.md | 4 ++++ packages/visitor-keys/package.json | 4 ++-- packages/website-eslint/CHANGELOG.md | 4 ++++ packages/website-eslint/package.json | 16 ++++++++-------- packages/website/CHANGELOG.md | 4 ++++ packages/website/package.json | 8 ++++---- 32 files changed, 129 insertions(+), 52 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c2b7d9c7a2..e478349e515 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) + +### Bug Fixes + +- **eslint-plugin:** [keyword-spacing] unexpected space before/after in `import type` ([#6095](https://github.com/typescript-eslint/typescript-eslint/issues/6095)) ([98caa92](https://github.com/typescript-eslint/typescript-eslint/commit/98caa92ca89bdf0ca6ba6e4ff1f13c60221579e8)) +- **eslint-plugin:** [no-shadow] add call and method signatures to `ignoreFunctionTypeParameterNameValueShadow` ([#6129](https://github.com/typescript-eslint/typescript-eslint/issues/6129)) ([9d58b6b](https://github.com/typescript-eslint/typescript-eslint/commit/9d58b6be246507d20af67c84a5e9bb592d97cff5)) +- **eslint-plugin:** [prefer-optional-chain] collect MetaProperty type ([#6083](https://github.com/typescript-eslint/typescript-eslint/issues/6083)) ([d7114d3](https://github.com/typescript-eslint/typescript-eslint/commit/d7114d3ab09d1b93627d3b3dbb9862e37ee29c97)) +- **eslint-plugin:** [sort-type-constituents, sort-type-union-intersection-members] handle some required parentheses cases in the fixer ([#6118](https://github.com/typescript-eslint/typescript-eslint/issues/6118)) ([5d49d5d](https://github.com/typescript-eslint/typescript-eslint/commit/5d49d5dbee4425fc8bc01c5e748d161f3619477b)) +- **parser:** remove the jsx option requirement for automatic jsx pragma resolution ([#6134](https://github.com/typescript-eslint/typescript-eslint/issues/6134)) ([e777f5e](https://github.com/typescript-eslint/typescript-eslint/commit/e777f5e225b9ddfb6bb1eaa74cbc5171a17ac017)) + # [5.45.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.44.0...v5.45.0) (2022-11-28) ### Bug Fixes diff --git a/lerna.json b/lerna.json index df2f5631f3d..aa194fc967c 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "5.45.0", + "version": "5.45.1", "npmClient": "yarn", "useWorkspaces": true, "stream": true diff --git a/packages/ast-spec/CHANGELOG.md b/packages/ast-spec/CHANGELOG.md index 41f4b761b1f..71410ae3ea4 100644 --- a/packages/ast-spec/CHANGELOG.md +++ b/packages/ast-spec/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) + +**Note:** Version bump only for package @typescript-eslint/ast-spec + # [5.45.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.44.0...v5.45.0) (2022-11-28) ### Features diff --git a/packages/ast-spec/package.json b/packages/ast-spec/package.json index efcceec8f22..7a5a2bb2c93 100644 --- a/packages/ast-spec/package.json +++ b/packages/ast-spec/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/ast-spec", - "version": "5.45.0", + "version": "5.45.1", "description": "Complete specification for the TypeScript-ESTree AST", "private": true, "keywords": [ diff --git a/packages/eslint-plugin-internal/CHANGELOG.md b/packages/eslint-plugin-internal/CHANGELOG.md index 9e53fd6f0bc..9ab8b4f4524 100644 --- a/packages/eslint-plugin-internal/CHANGELOG.md +++ b/packages/eslint-plugin-internal/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) + +**Note:** Version bump only for package @typescript-eslint/eslint-plugin-internal + # [5.45.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.44.0...v5.45.0) (2022-11-28) **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 11206ef2b58..f15e97b1b1d 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": "5.45.0", + "version": "5.45.1", "private": true, "main": "dist/index.js", "scripts": { @@ -14,9 +14,9 @@ }, "dependencies": { "@types/prettier": "*", - "@typescript-eslint/scope-manager": "5.45.0", - "@typescript-eslint/type-utils": "5.45.0", - "@typescript-eslint/utils": "5.45.0", + "@typescript-eslint/scope-manager": "5.45.1", + "@typescript-eslint/type-utils": "5.45.1", + "@typescript-eslint/utils": "5.45.1", "prettier": "*" } } diff --git a/packages/eslint-plugin-tslint/CHANGELOG.md b/packages/eslint-plugin-tslint/CHANGELOG.md index 6ad97388e3c..c03ee8c3ea9 100644 --- a/packages/eslint-plugin-tslint/CHANGELOG.md +++ b/packages/eslint-plugin-tslint/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) + +**Note:** Version bump only for package @typescript-eslint/eslint-plugin-tslint + # [5.45.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.44.0...v5.45.0) (2022-11-28) **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 22cdc14f997..cd07f8d2a34 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": "5.45.0", + "version": "5.45.1", "main": "dist/index.js", "typings": "src/index.ts", "description": "ESLint plugin that wraps a TSLint configuration and lints the whole source using TSLint", @@ -38,7 +38,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/utils": "5.45.0", + "@typescript-eslint/utils": "5.45.1", "lodash": "^4.17.21" }, "peerDependencies": { @@ -48,6 +48,6 @@ }, "devDependencies": { "@types/lodash": "*", - "@typescript-eslint/parser": "5.45.0" + "@typescript-eslint/parser": "5.45.1" } } diff --git a/packages/eslint-plugin/CHANGELOG.md b/packages/eslint-plugin/CHANGELOG.md index 5d7959eb27c..3b9c96121c1 100644 --- a/packages/eslint-plugin/CHANGELOG.md +++ b/packages/eslint-plugin/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) + +### Bug Fixes + +- **eslint-plugin:** [keyword-spacing] unexpected space before/after in `import type` ([#6095](https://github.com/typescript-eslint/typescript-eslint/issues/6095)) ([98caa92](https://github.com/typescript-eslint/typescript-eslint/commit/98caa92ca89bdf0ca6ba6e4ff1f13c60221579e8)) +- **eslint-plugin:** [no-shadow] add call and method signatures to `ignoreFunctionTypeParameterNameValueShadow` ([#6129](https://github.com/typescript-eslint/typescript-eslint/issues/6129)) ([9d58b6b](https://github.com/typescript-eslint/typescript-eslint/commit/9d58b6be246507d20af67c84a5e9bb592d97cff5)) +- **eslint-plugin:** [prefer-optional-chain] collect MetaProperty type ([#6083](https://github.com/typescript-eslint/typescript-eslint/issues/6083)) ([d7114d3](https://github.com/typescript-eslint/typescript-eslint/commit/d7114d3ab09d1b93627d3b3dbb9862e37ee29c97)) +- **eslint-plugin:** [sort-type-constituents, sort-type-union-intersection-members] handle some required parentheses cases in the fixer ([#6118](https://github.com/typescript-eslint/typescript-eslint/issues/6118)) ([5d49d5d](https://github.com/typescript-eslint/typescript-eslint/commit/5d49d5dbee4425fc8bc01c5e748d161f3619477b)) + # [5.45.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.44.0...v5.45.0) (2022-11-28) ### Bug Fixes diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index ce7c23c480f..fd01a7062fe 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/eslint-plugin", - "version": "5.45.0", + "version": "5.45.1", "description": "TypeScript plugin for ESLint", "keywords": [ "eslint", @@ -44,9 +44,9 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/scope-manager": "5.45.0", - "@typescript-eslint/type-utils": "5.45.0", - "@typescript-eslint/utils": "5.45.0", + "@typescript-eslint/scope-manager": "5.45.1", + "@typescript-eslint/type-utils": "5.45.1", + "@typescript-eslint/utils": "5.45.1", "debug": "^4.3.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", diff --git a/packages/experimental-utils/CHANGELOG.md b/packages/experimental-utils/CHANGELOG.md index f441dd8da40..2577ec6c251 100644 --- a/packages/experimental-utils/CHANGELOG.md +++ b/packages/experimental-utils/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) + +**Note:** Version bump only for package @typescript-eslint/experimental-utils + # [5.45.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.44.0...v5.45.0) (2022-11-28) **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 37ea291a034..93e0193797d 100644 --- a/packages/experimental-utils/package.json +++ b/packages/experimental-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/experimental-utils", - "version": "5.45.0", + "version": "5.45.1", "description": "(Experimental) Utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -38,7 +38,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/utils": "5.45.0" + "@typescript-eslint/utils": "5.45.1" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" diff --git a/packages/parser/CHANGELOG.md b/packages/parser/CHANGELOG.md index eba0fcd3c10..1bfb546985f 100644 --- a/packages/parser/CHANGELOG.md +++ b/packages/parser/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) + +### Bug Fixes + +- **parser:** remove the jsx option requirement for automatic jsx pragma resolution ([#6134](https://github.com/typescript-eslint/typescript-eslint/issues/6134)) ([e777f5e](https://github.com/typescript-eslint/typescript-eslint/commit/e777f5e225b9ddfb6bb1eaa74cbc5171a17ac017)) + # [5.45.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.44.0...v5.45.0) (2022-11-28) **Note:** Version bump only for package @typescript-eslint/parser diff --git a/packages/parser/package.json b/packages/parser/package.json index 2c5846e634b..319b8049236 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/parser", - "version": "5.45.0", + "version": "5.45.1", "description": "An ESLint custom parser which leverages TypeScript ESTree", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -45,9 +45,9 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "dependencies": { - "@typescript-eslint/scope-manager": "5.45.0", - "@typescript-eslint/types": "5.45.0", - "@typescript-eslint/typescript-estree": "5.45.0", + "@typescript-eslint/scope-manager": "5.45.1", + "@typescript-eslint/types": "5.45.1", + "@typescript-eslint/typescript-estree": "5.45.1", "debug": "^4.3.4" }, "devDependencies": { diff --git a/packages/scope-manager/CHANGELOG.md b/packages/scope-manager/CHANGELOG.md index 7625e49c7f6..b5a011ffb01 100644 --- a/packages/scope-manager/CHANGELOG.md +++ b/packages/scope-manager/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) + +**Note:** Version bump only for package @typescript-eslint/scope-manager + # [5.45.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.44.0...v5.45.0) (2022-11-28) ### Bug Fixes diff --git a/packages/scope-manager/package.json b/packages/scope-manager/package.json index ab38deddf68..21910ea6009 100644 --- a/packages/scope-manager/package.json +++ b/packages/scope-manager/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/scope-manager", - "version": "5.45.0", + "version": "5.45.1", "description": "TypeScript scope analyser for ESLint", "keywords": [ "eslint", @@ -38,12 +38,12 @@ "typecheck": "nx typecheck" }, "dependencies": { - "@typescript-eslint/types": "5.45.0", - "@typescript-eslint/visitor-keys": "5.45.0" + "@typescript-eslint/types": "5.45.1", + "@typescript-eslint/visitor-keys": "5.45.1" }, "devDependencies": { "@types/glob": "*", - "@typescript-eslint/typescript-estree": "5.45.0", + "@typescript-eslint/typescript-estree": "5.45.1", "glob": "*", "jest-specific-snapshot": "*", "make-dir": "*", diff --git a/packages/shared-fixtures/CHANGELOG.md b/packages/shared-fixtures/CHANGELOG.md index ebb26c9c723..fd5776e2632 100644 --- a/packages/shared-fixtures/CHANGELOG.md +++ b/packages/shared-fixtures/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) + +**Note:** Version bump only for package @typescript-eslint/shared-fixtures + # [5.45.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.44.0...v5.45.0) (2022-11-28) **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 3b336ee7157..baa3569ddbf 100644 --- a/packages/shared-fixtures/package.json +++ b/packages/shared-fixtures/package.json @@ -1,6 +1,6 @@ { "description": "Code fixtures used to test the typescript-estree parser.", "name": "@typescript-eslint/shared-fixtures", - "version": "5.45.0", + "version": "5.45.1", "private": true } diff --git a/packages/type-utils/CHANGELOG.md b/packages/type-utils/CHANGELOG.md index 5d305078ff0..74b3fc9046f 100644 --- a/packages/type-utils/CHANGELOG.md +++ b/packages/type-utils/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) + +**Note:** Version bump only for package @typescript-eslint/type-utils + # [5.45.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.44.0...v5.45.0) (2022-11-28) **Note:** Version bump only for package @typescript-eslint/type-utils diff --git a/packages/type-utils/package.json b/packages/type-utils/package.json index e48a5edbae3..c96e7b17135 100644 --- a/packages/type-utils/package.json +++ b/packages/type-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/type-utils", - "version": "5.45.0", + "version": "5.45.1", "description": "Type utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -39,13 +39,13 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/typescript-estree": "5.45.0", - "@typescript-eslint/utils": "5.45.0", + "@typescript-eslint/typescript-estree": "5.45.1", + "@typescript-eslint/utils": "5.45.1", "debug": "^4.3.4", "tsutils": "^3.21.0" }, "devDependencies": { - "@typescript-eslint/parser": "5.45.0", + "@typescript-eslint/parser": "5.45.1", "typescript": "*" }, "peerDependencies": { diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index 1a3881e1d3b..168cef42cc9 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) + +**Note:** Version bump only for package @typescript-eslint/types + # [5.45.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.44.0...v5.45.0) (2022-11-28) **Note:** Version bump only for package @typescript-eslint/types diff --git a/packages/types/package.json b/packages/types/package.json index caf58ad2618..11886f5f3b6 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/types", - "version": "5.45.0", + "version": "5.45.1", "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 acf4c9b023d..2ae3553e973 100644 --- a/packages/typescript-estree/CHANGELOG.md +++ b/packages/typescript-estree/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) + +**Note:** Version bump only for package @typescript-eslint/typescript-estree + # [5.45.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.44.0...v5.45.0) (2022-11-28) ### Bug Fixes diff --git a/packages/typescript-estree/package.json b/packages/typescript-estree/package.json index 93b61acfe11..b7d490ff961 100644 --- a/packages/typescript-estree/package.json +++ b/packages/typescript-estree/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/typescript-estree", - "version": "5.45.0", + "version": "5.45.1", "description": "A parser that converts TypeScript source code into an ESTree compatible form", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -42,8 +42,8 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "5.45.0", - "@typescript-eslint/visitor-keys": "5.45.0", + "@typescript-eslint/types": "5.45.1", + "@typescript-eslint/visitor-keys": "5.45.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -59,7 +59,7 @@ "@types/is-glob": "*", "@types/semver": "*", "@types/tmp": "*", - "@typescript-eslint/shared-fixtures": "5.45.0", + "@typescript-eslint/shared-fixtures": "5.45.1", "glob": "*", "jest-specific-snapshot": "*", "make-dir": "*", diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md index 81eee28e546..20b59ba3771 100644 --- a/packages/utils/CHANGELOG.md +++ b/packages/utils/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) + +**Note:** Version bump only for package @typescript-eslint/utils + # [5.45.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.44.0...v5.45.0) (2022-11-28) **Note:** Version bump only for package @typescript-eslint/utils diff --git a/packages/utils/package.json b/packages/utils/package.json index 80a37b641f6..1bd7d891079 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/utils", - "version": "5.45.0", + "version": "5.45.1", "description": "Utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -41,9 +41,9 @@ "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.45.0", - "@typescript-eslint/types": "5.45.0", - "@typescript-eslint/typescript-estree": "5.45.0", + "@typescript-eslint/scope-manager": "5.45.1", + "@typescript-eslint/types": "5.45.1", + "@typescript-eslint/typescript-estree": "5.45.1", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -52,7 +52,7 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "devDependencies": { - "@typescript-eslint/parser": "5.45.0", + "@typescript-eslint/parser": "5.45.1", "typescript": "*" }, "funding": { diff --git a/packages/visitor-keys/CHANGELOG.md b/packages/visitor-keys/CHANGELOG.md index e040c42f809..a4f273986a4 100644 --- a/packages/visitor-keys/CHANGELOG.md +++ b/packages/visitor-keys/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) + +**Note:** Version bump only for package @typescript-eslint/visitor-keys + # [5.45.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.44.0...v5.45.0) (2022-11-28) ### Features diff --git a/packages/visitor-keys/package.json b/packages/visitor-keys/package.json index a1637e76adb..562b44ab368 100644 --- a/packages/visitor-keys/package.json +++ b/packages/visitor-keys/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/visitor-keys", - "version": "5.45.0", + "version": "5.45.1", "description": "Visitor keys used to help traverse the TypeScript-ESTree AST", "keywords": [ "eslint", @@ -39,7 +39,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "5.45.0", + "@typescript-eslint/types": "5.45.1", "eslint-visitor-keys": "^3.3.0" }, "devDependencies": { diff --git a/packages/website-eslint/CHANGELOG.md b/packages/website-eslint/CHANGELOG.md index 1e9c3506cc9..f79b0dfdaf7 100644 --- a/packages/website-eslint/CHANGELOG.md +++ b/packages/website-eslint/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) + +**Note:** Version bump only for package @typescript-eslint/website-eslint + # [5.45.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.44.0...v5.45.0) (2022-11-28) **Note:** Version bump only for package @typescript-eslint/website-eslint diff --git a/packages/website-eslint/package.json b/packages/website-eslint/package.json index 2922dc49fba..e5fa1dd6559 100644 --- a/packages/website-eslint/package.json +++ b/packages/website-eslint/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/website-eslint", - "version": "5.45.0", + "version": "5.45.1", "private": true, "description": "ESLint which works in browsers.", "engines": { @@ -16,19 +16,19 @@ "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore" }, "dependencies": { - "@typescript-eslint/types": "5.45.0", - "@typescript-eslint/utils": "5.45.0" + "@typescript-eslint/types": "5.45.1", + "@typescript-eslint/utils": "5.45.1" }, "devDependencies": { "@rollup/plugin-commonjs": "^23.0.0", "@rollup/plugin-json": "^5.0.0", "@rollup/plugin-node-resolve": "^15.0.0", "@rollup/pluginutils": "^5.0.0", - "@typescript-eslint/eslint-plugin": "5.45.0", - "@typescript-eslint/parser": "5.45.0", - "@typescript-eslint/scope-manager": "5.45.0", - "@typescript-eslint/typescript-estree": "5.45.0", - "@typescript-eslint/visitor-keys": "5.45.0", + "@typescript-eslint/eslint-plugin": "5.45.1", + "@typescript-eslint/parser": "5.45.1", + "@typescript-eslint/scope-manager": "5.45.1", + "@typescript-eslint/typescript-estree": "5.45.1", + "@typescript-eslint/visitor-keys": "5.45.1", "eslint": "*", "rollup": "^2.75.4", "rollup-plugin-terser": "^7.0.2", diff --git a/packages/website/CHANGELOG.md b/packages/website/CHANGELOG.md index 2bf6057010d..d75789de154 100644 --- a/packages/website/CHANGELOG.md +++ b/packages/website/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) + +**Note:** Version bump only for package website + # [5.45.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.44.0...v5.45.0) (2022-11-28) **Note:** Version bump only for package website diff --git a/packages/website/package.json b/packages/website/package.json index d9852326904..cdab7c0c262 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -1,6 +1,6 @@ { "name": "website", - "version": "5.45.0", + "version": "5.45.1", "private": true, "scripts": { "build": "docusaurus build", @@ -21,8 +21,8 @@ "@docusaurus/remark-plugin-npm2yarn": "~2.2.0", "@docusaurus/theme-common": "~2.2.0", "@mdx-js/react": "1.6.22", - "@typescript-eslint/parser": "5.45.0", - "@typescript-eslint/website-eslint": "5.45.0", + "@typescript-eslint/parser": "5.45.1", + "@typescript-eslint/website-eslint": "5.45.1", "clsx": "^1.1.1", "eslint": "*", "json-schema": "^0.4.0", @@ -48,7 +48,7 @@ "@types/react": "^18.0.9", "@types/react-helmet": "^6.1.5", "@types/react-router-dom": "^5.3.3", - "@typescript-eslint/eslint-plugin": "5.45.0", + "@typescript-eslint/eslint-plugin": "5.45.1", "copy-webpack-plugin": "^11.0.0", "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-react": "^7.29.4", From 8a91cbd9fbe5bc4cf750cd949d2b8d48ff4c311d Mon Sep 17 00:00:00 2001 From: Cparros <65684072+cparros@users.noreply.github.com> Date: Tue, 6 Dec 2022 15:23:28 -0700 Subject: [PATCH 171/193] feat(eslint-plugin): [prefer-nullish-coalescing] logic and test for strict null checks (#6174) * chore(website): [prefer-nullish-coalescing] explicit notice for strictNullChecks * Added null check to prefer-nullish-coalescing along with a test. --- .../src/rules/prefer-nullish-coalescing.ts | 30 ++++++++++++++++++- .../rules/prefer-nullish-coalescing.test.ts | 20 +++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts b/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts index ca40160e982..14157427efa 100644 --- a/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts +++ b/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts @@ -1,5 +1,6 @@ import type { TSESLint, TSESTree } from '@typescript-eslint/utils'; import { AST_NODE_TYPES, AST_TOKEN_TYPES } from '@typescript-eslint/utils'; +import * as tsutils from 'tsutils'; import * as ts from 'typescript'; import * as util from '../util'; @@ -9,13 +10,15 @@ export type Options = [ ignoreConditionalTests?: boolean; ignoreTernaryTests?: boolean; ignoreMixedLogicalExpressions?: boolean; + allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean; }, ]; export type MessageIds = | 'preferNullishOverOr' | 'preferNullishOverTernary' - | 'suggestNullish'; + | 'suggestNullish' + | 'noStrictNullCheck'; export default util.createRule({ name: 'prefer-nullish-coalescing', @@ -34,6 +37,8 @@ export default util.createRule({ preferNullishOverTernary: 'Prefer using nullish coalescing operator (`??`) instead of a ternary expression, as it is simpler to read.', suggestNullish: 'Fix to nullish coalescing operator (`??`).', + noStrictNullCheck: + 'This rule requires the `strictNullChecks` compiler option to be turned on to function correctly.', }, schema: [ { @@ -48,6 +53,9 @@ export default util.createRule({ ignoreMixedLogicalExpressions: { type: 'boolean', }, + allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing: { + type: 'boolean', + }, }, additionalProperties: false, }, @@ -58,6 +66,7 @@ export default util.createRule({ ignoreConditionalTests: true, ignoreTernaryTests: true, ignoreMixedLogicalExpressions: true, + allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing: false, }, ], create( @@ -67,12 +76,31 @@ export default util.createRule({ ignoreConditionalTests, ignoreTernaryTests, ignoreMixedLogicalExpressions, + allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing, }, ], ) { const parserServices = util.getParserServices(context); + const compilerOptions = parserServices.program.getCompilerOptions(); const sourceCode = context.getSourceCode(); const checker = parserServices.program.getTypeChecker(); + const isStrictNullChecks = tsutils.isStrictCompilerOptionEnabled( + compilerOptions, + 'strictNullChecks', + ); + + if ( + !isStrictNullChecks && + allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing !== true + ) { + context.report({ + loc: { + start: { line: 0, column: 0 }, + end: { line: 0, column: 0 }, + }, + messageId: 'noStrictNullCheck', + }); + } return { ConditionalExpression(node: TSESTree.ConditionalExpression): void { diff --git a/packages/eslint-plugin/tests/rules/prefer-nullish-coalescing.test.ts b/packages/eslint-plugin/tests/rules/prefer-nullish-coalescing.test.ts index 3824f464a58..49e50e741a8 100644 --- a/packages/eslint-plugin/tests/rules/prefer-nullish-coalescing.test.ts +++ b/packages/eslint-plugin/tests/rules/prefer-nullish-coalescing.test.ts @@ -1,4 +1,5 @@ import type { TSESLint } from '@typescript-eslint/utils'; +import * as path from 'path'; import type { MessageIds, @@ -385,6 +386,25 @@ x ?? y; ], })), + // noStrictNullCheck + { + code: ` +declare const x: string[] | null; +if (x) { +} + `, + errors: [ + { + messageId: 'noStrictNullCheck', + line: 0, + column: 1, + }, + ], + parserOptions: { + tsconfigRootDir: path.join(rootPath, 'unstrict'), + }, + }, + // ignoreConditionalTests ...nullishTypeInvalidTest((nullish, type) => ({ code: ` From d91a5fc41be5bc2a0625574e9c9496f61fb7471d Mon Sep 17 00:00:00 2001 From: kmin-jeong <53456037+kmin-jeong@users.noreply.github.com> Date: Wed, 7 Dec 2022 20:38:34 +0900 Subject: [PATCH 172/193] fix(eslint-plugin): [ban-types] update message to suggest `object` instead of `Record` (#6079) --- packages/eslint-plugin/src/rules/ban-types.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/eslint-plugin/src/rules/ban-types.ts b/packages/eslint-plugin/src/rules/ban-types.ts index f94808a50a5..dce41140515 100644 --- a/packages/eslint-plugin/src/rules/ban-types.ts +++ b/packages/eslint-plugin/src/rules/ban-types.ts @@ -86,14 +86,14 @@ const defaultTypes: Types = { Object: { message: [ 'The `Object` type actually means "any non-nullish value", so it is marginally better than `unknown`.', - '- If you want a type meaning "any object", you probably want `Record` instead.', + '- If you want a type meaning "any object", you probably want `object` instead.', '- If you want a type meaning "any value", you probably want `unknown` instead.', ].join('\n'), }, '{}': { message: [ '`{}` actually means "any non-nullish value".', - '- If you want a type meaning "any object", you probably want `Record` instead.', + '- If you want a type meaning "any object", you probably want `object` instead.', '- If you want a type meaning "any value", you probably want `unknown` instead.', '- If you want a type meaning "empty object", you probably want `Record` instead.', ].join('\n'), From dbc8671e1debec1f08143e6c7ef2b16a27632475 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Wed, 7 Dec 2022 06:39:03 -0500 Subject: [PATCH 173/193] docs: add FAQ entry about running ESLint on transpiled code (#6155) --- docs/linting/Troubleshooting.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/linting/Troubleshooting.md b/docs/linting/Troubleshooting.md index 38d3bf38e71..98d0eddb825 100644 --- a/docs/linting/Troubleshooting.md +++ b/docs/linting/Troubleshooting.md @@ -107,6 +107,13 @@ This is to be expected - ESLint rules do not check file extensions on purpose, a If you have some pure JavaScript code that you do not want to apply certain lint rules to, then you can use [ESLint's `overrides` configuration](https://eslint.org/docs/user-guide/configuring#configuration-based-on-glob-patterns) to turn off certain rules, or even change the parser based on glob patterns. +## Should I run ESLint on transpiled output JavaScript files? + +No. + +Source TypeScript files have all the content of output JavaScript files, plus type annotations. +There's no benefit to also linting output JavaScript files. + ## TypeScript should be installed locally Make sure that you have installed TypeScript locally i.e. by using `npm install typescript`, not `npm install -g typescript`, From 92d07df45bd7d8a778a16f045851182e6bed23e3 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Wed, 7 Dec 2022 06:42:52 -0500 Subject: [PATCH 174/193] chore: remove versions table from simple bug report form (#6170) --- .github/ISSUE_TEMPLATE/01-bug-report-plugin.yaml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/01-bug-report-plugin.yaml b/.github/ISSUE_TEMPLATE/01-bug-report-plugin.yaml index adf2b5331a1..1d38ce4425d 100644 --- a/.github/ISSUE_TEMPLATE/01-bug-report-plugin.yaml +++ b/.github/ISSUE_TEMPLATE/01-bug-report-plugin.yaml @@ -98,17 +98,3 @@ body: description: | Any additional info you'd like to provide. If ESLint threw an exception, please run your lint again with the `--debug` flag, and dump the output below. e.g. `eslint path/to/broken/file.ts --debug` - - type: textarea - id: versions - attributes: - label: Versions - value: | - | package | version | - | -------------------------------------- | ------- | - | `@typescript-eslint/eslint-plugin` | `X.Y.Z` | - | `@typescript-eslint/parser` | `X.Y.Z` | - | `TypeScript` | `X.Y.Z` | - | `ESLint` | `X.Y.Z` | - | `node` | `X.Y.Z` | - validations: - required: true From b2b8ce2bebb1327ff08ce3d98c7521cd1bdab74c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 7 Dec 2022 03:44:10 -0800 Subject: [PATCH 175/193] chore(deps): update dessant/lock-threads action to v4 (#6175) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/lock.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lock.yml b/.github/workflows/lock.yml index a7ef3bd4965..202088e5b17 100644 --- a/.github/workflows/lock.yml +++ b/.github/workflows/lock.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: dessant/lock-threads@v3 + - uses: dessant/lock-threads@v4 with: github-token: ${{ github.token }} issue-inactive-days: '7' From bcad11bbe9daa0b6fc7198ac71d86687adff6b33 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Wed, 7 Dec 2022 10:22:23 -0500 Subject: [PATCH 176/193] docs: add Rule Deprecations page (#6156) * docs: add Rule Deprecations page * Update docs/maintenance/issues/Rule_Deprecations.md Co-authored-by: Brad Zacher Co-authored-by: Brad Zacher --- docs/maintenance/ISSUES.md | 1 - docs/maintenance/issues/Rule_Deprecations.md | 34 ++++++++++++++++++++ packages/website/sidebars/sidebar.base.js | 11 ++++++- 3 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 docs/maintenance/issues/Rule_Deprecations.md diff --git a/docs/maintenance/ISSUES.md b/docs/maintenance/ISSUES.md index 3b73d5af1a2..ebddcc6df1b 100644 --- a/docs/maintenance/ISSUES.md +++ b/docs/maintenance/ISSUES.md @@ -1,6 +1,5 @@ --- id: issues -sidebar_label: Issues title: Issues --- diff --git a/docs/maintenance/issues/Rule_Deprecations.md b/docs/maintenance/issues/Rule_Deprecations.md new file mode 100644 index 00000000000..98486f2bb6c --- /dev/null +++ b/docs/maintenance/issues/Rule_Deprecations.md @@ -0,0 +1,34 @@ +--- +id: rule-deprecations +title: Rule Deprecations +--- + +Sometimes a rule that used to be 👍 does not age well and becomes 👎. +In the past, these cases have included: + +- Overly opinionated and/or stylistic rules that don't represent a universal best practice +- Renames +- Rules moved to an external plugin + +In these cases, we aim to remove the old rule with minimal user disruption. + +## Filing the Issue + +Rule deprecations can be filed as a [new issue bypassing templates](https://github.com/typescript-eslint/typescript-eslint/issues/new). + +Provide it an `## Overview` containing: + +- The rule name & link to its documentation page +- A clear explanation of why you believe it should be deprecated +- Whether it exists in popular configs such as `eslint-config-airbnb-typescript` and `eslint-config-standard-with-typescript` +- Sourcegraph queries showing how often it appears in user configs + +> See [#6036](https://github.com/typescript-eslint/typescript-eslint/issues/6036) for examples of those links and queries. + +## Timeline + +1. In any minor/patch version, add [rule `meta` properties](https://eslint.org/docs/latest/developer-guide/working-with-rules#rule-basics): + - `deprecated: true` + - `replacedBy`, if applicable +2. In the next major version, you may delete the rule + - If the rule is relatively popular with users, consider leaving a documentation page as a tombstone pointing to the new relevant rule or docs (see [`camelcase`](https://typescript-eslint.io/rules/camelcase/) as an example) diff --git a/packages/website/sidebars/sidebar.base.js b/packages/website/sidebars/sidebar.base.js index 89fa0e543f3..a949c9f2390 100644 --- a/packages/website/sidebars/sidebar.base.js +++ b/packages/website/sidebars/sidebar.base.js @@ -67,7 +67,16 @@ module.exports = { }, { items: [ - 'maintenance/issues', + { + collapsible: false, + items: ['maintenance/issues/rule-deprecations'], + label: 'Issues', + link: { + id: 'maintenance/issues', + type: 'doc', + }, + type: 'category', + }, 'maintenance/pull-requests', 'maintenance/releases', 'maintenance/versioning', From 0167d914d9f6402cf690ffa49170449e9470cd0a Mon Sep 17 00:00:00 2001 From: James Henry Date: Thu, 8 Dec 2022 12:28:10 +0400 Subject: [PATCH 177/193] chore: add working-directory input to prepare-install action (#6181) --- .cspell.json | 1 + .github/actions/prepare-install/action.yml | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/.cspell.json b/.cspell.json index 47e1d390de9..bd8761c00ef 100644 --- a/.cspell.json +++ b/.cspell.json @@ -47,6 +47,7 @@ "autofix", "autofixers", "autofixes", + "automations", "backticks", "bigint", "bivariant", diff --git a/.github/actions/prepare-install/action.yml b/.github/actions/prepare-install/action.yml index 266140a0788..b437dce9136 100644 --- a/.github/actions/prepare-install/action.yml +++ b/.github/actions/prepare-install/action.yml @@ -1,5 +1,12 @@ -name: 'Prepare: Checkout and Install' -description: 'Prepares the repo for a job by checking out and installing dependencies' +# IMPORTANT NOTE TO MAINTAINERS +# +# Changes to this composite action should be carefully considered and reviewed because it is referenced +# and executed by multiple workflows in our private-automations repository. +# +# Ensure that a member of @typescript-eslint/core-team tests changes there before merging. + +name: 'Prepare: Install' +description: 'Prepares the repo by installing dependencies' inputs: node-version: description: 'The node version to setup' @@ -7,6 +14,11 @@ inputs: registry-url: description: 'Define registry-url' required: false + # NOTE: This is required for our use-case of sharing this action across multiple repos + working-directory: + description: 'Override the working directory to run the installation in' + required: false + default: '.' # outputs: - no outputs @@ -15,6 +27,7 @@ runs: steps: - name: echo github.ref shell: bash + working-directory: ${{ inputs.working-directory }} run: echo ${{ github.ref }} - name: Use Node.js ${{ inputs.node-version }} @@ -40,6 +53,7 @@ runs: # if the cache was hit - this will run in <1s - name: Install dependencies shell: bash + working-directory: ${{ inputs.working-directory }} run: | yarn --ignore-engines --frozen-lockfile --ignore-scripts yarn check-clean-workspace-after-install From 1e1573a868265a3a14df2a24d11f686d62e30b83 Mon Sep 17 00:00:00 2001 From: "typescript-eslint[bot]" Date: Thu, 8 Dec 2022 08:38:30 +0000 Subject: [PATCH 178/193] chore: publish v5.46.0 --- CHANGELOG.md | 10 ++++++++++ lerna.json | 2 +- packages/ast-spec/CHANGELOG.md | 4 ++++ packages/ast-spec/package.json | 2 +- packages/eslint-plugin-internal/CHANGELOG.md | 4 ++++ packages/eslint-plugin-internal/package.json | 8 ++++---- packages/eslint-plugin-tslint/CHANGELOG.md | 4 ++++ packages/eslint-plugin-tslint/package.json | 6 +++--- packages/eslint-plugin/CHANGELOG.md | 10 ++++++++++ packages/eslint-plugin/package.json | 8 ++++---- packages/experimental-utils/CHANGELOG.md | 4 ++++ packages/experimental-utils/package.json | 4 ++-- packages/parser/CHANGELOG.md | 4 ++++ packages/parser/package.json | 8 ++++---- packages/scope-manager/CHANGELOG.md | 4 ++++ packages/scope-manager/package.json | 8 ++++---- packages/shared-fixtures/CHANGELOG.md | 4 ++++ packages/shared-fixtures/package.json | 2 +- packages/type-utils/CHANGELOG.md | 4 ++++ packages/type-utils/package.json | 8 ++++---- packages/types/CHANGELOG.md | 4 ++++ packages/types/package.json | 2 +- packages/typescript-estree/CHANGELOG.md | 4 ++++ packages/typescript-estree/package.json | 8 ++++---- packages/utils/CHANGELOG.md | 4 ++++ packages/utils/package.json | 10 +++++----- packages/visitor-keys/CHANGELOG.md | 4 ++++ packages/visitor-keys/package.json | 4 ++-- packages/website-eslint/CHANGELOG.md | 4 ++++ packages/website-eslint/package.json | 16 ++++++++-------- packages/website/CHANGELOG.md | 4 ++++ packages/website/package.json | 8 ++++---- 32 files changed, 128 insertions(+), 52 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e478349e515..92eb4de6edd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) + +### Bug Fixes + +- **eslint-plugin:** [ban-types] update message to suggest `object` instead of `Record` ([#6079](https://github.com/typescript-eslint/typescript-eslint/issues/6079)) ([d91a5fc](https://github.com/typescript-eslint/typescript-eslint/commit/d91a5fc41be5bc2a0625574e9c9496f61fb7471d)) + +### Features + +- **eslint-plugin:** [prefer-nullish-coalescing] logic and test for strict null checks ([#6174](https://github.com/typescript-eslint/typescript-eslint/issues/6174)) ([8a91cbd](https://github.com/typescript-eslint/typescript-eslint/commit/8a91cbd9fbe5bc4cf750cd949d2b8d48ff4c311d)) + ## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) ### Bug Fixes diff --git a/lerna.json b/lerna.json index aa194fc967c..51eefc81908 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "5.45.1", + "version": "5.46.0", "npmClient": "yarn", "useWorkspaces": true, "stream": true diff --git a/packages/ast-spec/CHANGELOG.md b/packages/ast-spec/CHANGELOG.md index 71410ae3ea4..6228c3d8a5d 100644 --- a/packages/ast-spec/CHANGELOG.md +++ b/packages/ast-spec/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) + +**Note:** Version bump only for package @typescript-eslint/ast-spec + ## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) **Note:** Version bump only for package @typescript-eslint/ast-spec diff --git a/packages/ast-spec/package.json b/packages/ast-spec/package.json index 7a5a2bb2c93..f032f072588 100644 --- a/packages/ast-spec/package.json +++ b/packages/ast-spec/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/ast-spec", - "version": "5.45.1", + "version": "5.46.0", "description": "Complete specification for the TypeScript-ESTree AST", "private": true, "keywords": [ diff --git a/packages/eslint-plugin-internal/CHANGELOG.md b/packages/eslint-plugin-internal/CHANGELOG.md index 9ab8b4f4524..0013d5c244b 100644 --- a/packages/eslint-plugin-internal/CHANGELOG.md +++ b/packages/eslint-plugin-internal/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) + +**Note:** Version bump only for package @typescript-eslint/eslint-plugin-internal + ## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) **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 f15e97b1b1d..c1722e736b3 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": "5.45.1", + "version": "5.46.0", "private": true, "main": "dist/index.js", "scripts": { @@ -14,9 +14,9 @@ }, "dependencies": { "@types/prettier": "*", - "@typescript-eslint/scope-manager": "5.45.1", - "@typescript-eslint/type-utils": "5.45.1", - "@typescript-eslint/utils": "5.45.1", + "@typescript-eslint/scope-manager": "5.46.0", + "@typescript-eslint/type-utils": "5.46.0", + "@typescript-eslint/utils": "5.46.0", "prettier": "*" } } diff --git a/packages/eslint-plugin-tslint/CHANGELOG.md b/packages/eslint-plugin-tslint/CHANGELOG.md index c03ee8c3ea9..5ab0940e4a0 100644 --- a/packages/eslint-plugin-tslint/CHANGELOG.md +++ b/packages/eslint-plugin-tslint/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) + +**Note:** Version bump only for package @typescript-eslint/eslint-plugin-tslint + ## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) **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 cd07f8d2a34..42ccb777fea 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": "5.45.1", + "version": "5.46.0", "main": "dist/index.js", "typings": "src/index.ts", "description": "ESLint plugin that wraps a TSLint configuration and lints the whole source using TSLint", @@ -38,7 +38,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/utils": "5.45.1", + "@typescript-eslint/utils": "5.46.0", "lodash": "^4.17.21" }, "peerDependencies": { @@ -48,6 +48,6 @@ }, "devDependencies": { "@types/lodash": "*", - "@typescript-eslint/parser": "5.45.1" + "@typescript-eslint/parser": "5.46.0" } } diff --git a/packages/eslint-plugin/CHANGELOG.md b/packages/eslint-plugin/CHANGELOG.md index 3b9c96121c1..52ddd83a1f7 100644 --- a/packages/eslint-plugin/CHANGELOG.md +++ b/packages/eslint-plugin/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) + +### Bug Fixes + +- **eslint-plugin:** [ban-types] update message to suggest `object` instead of `Record` ([#6079](https://github.com/typescript-eslint/typescript-eslint/issues/6079)) ([d91a5fc](https://github.com/typescript-eslint/typescript-eslint/commit/d91a5fc41be5bc2a0625574e9c9496f61fb7471d)) + +### Features + +- **eslint-plugin:** [prefer-nullish-coalescing] logic and test for strict null checks ([#6174](https://github.com/typescript-eslint/typescript-eslint/issues/6174)) ([8a91cbd](https://github.com/typescript-eslint/typescript-eslint/commit/8a91cbd9fbe5bc4cf750cd949d2b8d48ff4c311d)) + ## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) ### Bug Fixes diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index fd01a7062fe..e72a8177cd8 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/eslint-plugin", - "version": "5.45.1", + "version": "5.46.0", "description": "TypeScript plugin for ESLint", "keywords": [ "eslint", @@ -44,9 +44,9 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/scope-manager": "5.45.1", - "@typescript-eslint/type-utils": "5.45.1", - "@typescript-eslint/utils": "5.45.1", + "@typescript-eslint/scope-manager": "5.46.0", + "@typescript-eslint/type-utils": "5.46.0", + "@typescript-eslint/utils": "5.46.0", "debug": "^4.3.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", diff --git a/packages/experimental-utils/CHANGELOG.md b/packages/experimental-utils/CHANGELOG.md index 2577ec6c251..b23592d3c31 100644 --- a/packages/experimental-utils/CHANGELOG.md +++ b/packages/experimental-utils/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) + +**Note:** Version bump only for package @typescript-eslint/experimental-utils + ## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) **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 93e0193797d..79f51decab6 100644 --- a/packages/experimental-utils/package.json +++ b/packages/experimental-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/experimental-utils", - "version": "5.45.1", + "version": "5.46.0", "description": "(Experimental) Utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -38,7 +38,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/utils": "5.45.1" + "@typescript-eslint/utils": "5.46.0" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" diff --git a/packages/parser/CHANGELOG.md b/packages/parser/CHANGELOG.md index 1bfb546985f..de589752bf1 100644 --- a/packages/parser/CHANGELOG.md +++ b/packages/parser/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) + +**Note:** Version bump only for package @typescript-eslint/parser + ## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) ### Bug Fixes diff --git a/packages/parser/package.json b/packages/parser/package.json index 319b8049236..0a5458c4b89 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/parser", - "version": "5.45.1", + "version": "5.46.0", "description": "An ESLint custom parser which leverages TypeScript ESTree", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -45,9 +45,9 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "dependencies": { - "@typescript-eslint/scope-manager": "5.45.1", - "@typescript-eslint/types": "5.45.1", - "@typescript-eslint/typescript-estree": "5.45.1", + "@typescript-eslint/scope-manager": "5.46.0", + "@typescript-eslint/types": "5.46.0", + "@typescript-eslint/typescript-estree": "5.46.0", "debug": "^4.3.4" }, "devDependencies": { diff --git a/packages/scope-manager/CHANGELOG.md b/packages/scope-manager/CHANGELOG.md index b5a011ffb01..6701340e904 100644 --- a/packages/scope-manager/CHANGELOG.md +++ b/packages/scope-manager/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) + +**Note:** Version bump only for package @typescript-eslint/scope-manager + ## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) **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 21910ea6009..dfd3cf37e09 100644 --- a/packages/scope-manager/package.json +++ b/packages/scope-manager/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/scope-manager", - "version": "5.45.1", + "version": "5.46.0", "description": "TypeScript scope analyser for ESLint", "keywords": [ "eslint", @@ -38,12 +38,12 @@ "typecheck": "nx typecheck" }, "dependencies": { - "@typescript-eslint/types": "5.45.1", - "@typescript-eslint/visitor-keys": "5.45.1" + "@typescript-eslint/types": "5.46.0", + "@typescript-eslint/visitor-keys": "5.46.0" }, "devDependencies": { "@types/glob": "*", - "@typescript-eslint/typescript-estree": "5.45.1", + "@typescript-eslint/typescript-estree": "5.46.0", "glob": "*", "jest-specific-snapshot": "*", "make-dir": "*", diff --git a/packages/shared-fixtures/CHANGELOG.md b/packages/shared-fixtures/CHANGELOG.md index fd5776e2632..a728263dd9d 100644 --- a/packages/shared-fixtures/CHANGELOG.md +++ b/packages/shared-fixtures/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) + +**Note:** Version bump only for package @typescript-eslint/shared-fixtures + ## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) **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 baa3569ddbf..61b97091dc6 100644 --- a/packages/shared-fixtures/package.json +++ b/packages/shared-fixtures/package.json @@ -1,6 +1,6 @@ { "description": "Code fixtures used to test the typescript-estree parser.", "name": "@typescript-eslint/shared-fixtures", - "version": "5.45.1", + "version": "5.46.0", "private": true } diff --git a/packages/type-utils/CHANGELOG.md b/packages/type-utils/CHANGELOG.md index 74b3fc9046f..938a1093178 100644 --- a/packages/type-utils/CHANGELOG.md +++ b/packages/type-utils/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) + +**Note:** Version bump only for package @typescript-eslint/type-utils + ## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) **Note:** Version bump only for package @typescript-eslint/type-utils diff --git a/packages/type-utils/package.json b/packages/type-utils/package.json index c96e7b17135..0a112a99e35 100644 --- a/packages/type-utils/package.json +++ b/packages/type-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/type-utils", - "version": "5.45.1", + "version": "5.46.0", "description": "Type utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -39,13 +39,13 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/typescript-estree": "5.45.1", - "@typescript-eslint/utils": "5.45.1", + "@typescript-eslint/typescript-estree": "5.46.0", + "@typescript-eslint/utils": "5.46.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, "devDependencies": { - "@typescript-eslint/parser": "5.45.1", + "@typescript-eslint/parser": "5.46.0", "typescript": "*" }, "peerDependencies": { diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index 168cef42cc9..e05ec18ae74 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) + +**Note:** Version bump only for package @typescript-eslint/types + ## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) **Note:** Version bump only for package @typescript-eslint/types diff --git a/packages/types/package.json b/packages/types/package.json index 11886f5f3b6..c0d527a45cd 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/types", - "version": "5.45.1", + "version": "5.46.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 2ae3553e973..c4d22164671 100644 --- a/packages/typescript-estree/CHANGELOG.md +++ b/packages/typescript-estree/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) + +**Note:** Version bump only for package @typescript-eslint/typescript-estree + ## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) **Note:** Version bump only for package @typescript-eslint/typescript-estree diff --git a/packages/typescript-estree/package.json b/packages/typescript-estree/package.json index b7d490ff961..10bce9f50f5 100644 --- a/packages/typescript-estree/package.json +++ b/packages/typescript-estree/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/typescript-estree", - "version": "5.45.1", + "version": "5.46.0", "description": "A parser that converts TypeScript source code into an ESTree compatible form", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -42,8 +42,8 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "5.45.1", - "@typescript-eslint/visitor-keys": "5.45.1", + "@typescript-eslint/types": "5.46.0", + "@typescript-eslint/visitor-keys": "5.46.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -59,7 +59,7 @@ "@types/is-glob": "*", "@types/semver": "*", "@types/tmp": "*", - "@typescript-eslint/shared-fixtures": "5.45.1", + "@typescript-eslint/shared-fixtures": "5.46.0", "glob": "*", "jest-specific-snapshot": "*", "make-dir": "*", diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md index 20b59ba3771..ae8facf9cba 100644 --- a/packages/utils/CHANGELOG.md +++ b/packages/utils/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) + +**Note:** Version bump only for package @typescript-eslint/utils + ## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) **Note:** Version bump only for package @typescript-eslint/utils diff --git a/packages/utils/package.json b/packages/utils/package.json index 1bd7d891079..82248615fa2 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/utils", - "version": "5.45.1", + "version": "5.46.0", "description": "Utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -41,9 +41,9 @@ "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.45.1", - "@typescript-eslint/types": "5.45.1", - "@typescript-eslint/typescript-estree": "5.45.1", + "@typescript-eslint/scope-manager": "5.46.0", + "@typescript-eslint/types": "5.46.0", + "@typescript-eslint/typescript-estree": "5.46.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -52,7 +52,7 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "devDependencies": { - "@typescript-eslint/parser": "5.45.1", + "@typescript-eslint/parser": "5.46.0", "typescript": "*" }, "funding": { diff --git a/packages/visitor-keys/CHANGELOG.md b/packages/visitor-keys/CHANGELOG.md index a4f273986a4..be564a6aaf1 100644 --- a/packages/visitor-keys/CHANGELOG.md +++ b/packages/visitor-keys/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) + +**Note:** Version bump only for package @typescript-eslint/visitor-keys + ## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) **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 562b44ab368..8f901922dfb 100644 --- a/packages/visitor-keys/package.json +++ b/packages/visitor-keys/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/visitor-keys", - "version": "5.45.1", + "version": "5.46.0", "description": "Visitor keys used to help traverse the TypeScript-ESTree AST", "keywords": [ "eslint", @@ -39,7 +39,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "5.45.1", + "@typescript-eslint/types": "5.46.0", "eslint-visitor-keys": "^3.3.0" }, "devDependencies": { diff --git a/packages/website-eslint/CHANGELOG.md b/packages/website-eslint/CHANGELOG.md index f79b0dfdaf7..6ab72c69153 100644 --- a/packages/website-eslint/CHANGELOG.md +++ b/packages/website-eslint/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) + +**Note:** Version bump only for package @typescript-eslint/website-eslint + ## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) **Note:** Version bump only for package @typescript-eslint/website-eslint diff --git a/packages/website-eslint/package.json b/packages/website-eslint/package.json index e5fa1dd6559..85dd2680a89 100644 --- a/packages/website-eslint/package.json +++ b/packages/website-eslint/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/website-eslint", - "version": "5.45.1", + "version": "5.46.0", "private": true, "description": "ESLint which works in browsers.", "engines": { @@ -16,19 +16,19 @@ "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore" }, "dependencies": { - "@typescript-eslint/types": "5.45.1", - "@typescript-eslint/utils": "5.45.1" + "@typescript-eslint/types": "5.46.0", + "@typescript-eslint/utils": "5.46.0" }, "devDependencies": { "@rollup/plugin-commonjs": "^23.0.0", "@rollup/plugin-json": "^5.0.0", "@rollup/plugin-node-resolve": "^15.0.0", "@rollup/pluginutils": "^5.0.0", - "@typescript-eslint/eslint-plugin": "5.45.1", - "@typescript-eslint/parser": "5.45.1", - "@typescript-eslint/scope-manager": "5.45.1", - "@typescript-eslint/typescript-estree": "5.45.1", - "@typescript-eslint/visitor-keys": "5.45.1", + "@typescript-eslint/eslint-plugin": "5.46.0", + "@typescript-eslint/parser": "5.46.0", + "@typescript-eslint/scope-manager": "5.46.0", + "@typescript-eslint/typescript-estree": "5.46.0", + "@typescript-eslint/visitor-keys": "5.46.0", "eslint": "*", "rollup": "^2.75.4", "rollup-plugin-terser": "^7.0.2", diff --git a/packages/website/CHANGELOG.md b/packages/website/CHANGELOG.md index d75789de154..a37e18804aa 100644 --- a/packages/website/CHANGELOG.md +++ b/packages/website/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) + +**Note:** Version bump only for package website + ## [5.45.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1) (2022-12-05) **Note:** Version bump only for package website diff --git a/packages/website/package.json b/packages/website/package.json index cdab7c0c262..0bc291bbd23 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -1,6 +1,6 @@ { "name": "website", - "version": "5.45.1", + "version": "5.46.0", "private": true, "scripts": { "build": "docusaurus build", @@ -21,8 +21,8 @@ "@docusaurus/remark-plugin-npm2yarn": "~2.2.0", "@docusaurus/theme-common": "~2.2.0", "@mdx-js/react": "1.6.22", - "@typescript-eslint/parser": "5.45.1", - "@typescript-eslint/website-eslint": "5.45.1", + "@typescript-eslint/parser": "5.46.0", + "@typescript-eslint/website-eslint": "5.46.0", "clsx": "^1.1.1", "eslint": "*", "json-schema": "^0.4.0", @@ -48,7 +48,7 @@ "@types/react": "^18.0.9", "@types/react-helmet": "^6.1.5", "@types/react-router-dom": "^5.3.3", - "@typescript-eslint/eslint-plugin": "5.45.1", + "@typescript-eslint/eslint-plugin": "5.46.0", "copy-webpack-plugin": "^11.0.0", "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-react": "^7.29.4", From 32f12b23dc73698140789e0f65032344225134c8 Mon Sep 17 00:00:00 2001 From: "typescript-eslint[bot]" <53356952+typescript-eslint[bot]@users.noreply.github.com> Date: Thu, 8 Dec 2022 09:07:20 -0500 Subject: [PATCH 179/193] chore: update sponsors (#6183) Co-authored-by: typescript-eslint[bot] --- packages/website/data/sponsors.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/website/data/sponsors.json b/packages/website/data/sponsors.json index fef41913d97..83e40bf42b2 100644 --- a/packages/website/data/sponsors.json +++ b/packages/website/data/sponsors.json @@ -173,5 +173,12 @@ "name": "Laserhub", "totalDonations": 10000, "website": "https://laserhub.com/" + }, + { + "id": "DeepSource", + "image": "https://images.opencollective.com/deepsource/0f18cea/logo.png", + "name": "DeepSource", + "totalDonations": 10000, + "website": "https://deepsource.io/" } ] From 47241bb6f676233e37cd813714b79e3a5d9fb3e0 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Thu, 8 Dec 2022 15:08:01 -0500 Subject: [PATCH 180/193] docs: overhaul branding and add new logo (#6147) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * branding * Fixed remaining markdownlint violations * Switch back to typescript-eslint * Standardize backticks before monorepo * Trim down reasoning * Fixed TypeScript logo blue * Sentence * Replace: TypeScript ESLint -> typescript-eslint * chore: update safari pinned tab icon * Fix snapshot * bikeshed: ts-eslint Co-authored-by: “JamesHenry” --- .cspell.json | 1 + .github/SECURITY.md | 4 +- .github/SPONSORSHIPS.md | 10 ++--- .markdownlint.json | 6 +-- LICENSE | 12 +++--- README.md | 6 +-- docs/Contributing.mdx | 2 +- docs/architecture/Parser.mdx | 2 +- docs/contributing/Local_Development.mdx | 2 +- docs/linting/CONFIGURATIONS.mdx | 8 ++-- docs/linting/Troubleshooting.md | 2 +- docs/maintenance/BRANDING.md | 37 +++++++++++++++++ packages/ast-spec/LICENSE | 2 +- packages/eslint-plugin-tslint/LICENSE | 2 +- packages/eslint-plugin/LICENSE | 2 +- .../tools/generate-breaking-changes.ts | 2 +- packages/experimental-utils/LICENSE | 2 +- packages/parser/LICENSE | 10 ++--- packages/scope-manager/LICENSE | 2 +- packages/type-utils/LICENSE | 2 +- packages/types/LICENSE | 2 +- packages/typescript-estree/LICENSE | 10 ++--- .../create-program/createProjectProgram.ts | 2 +- .../lib/__snapshots__/parse.test.ts.snap | 14 +++---- packages/utils/LICENSE | 2 +- packages/visitor-keys/LICENSE | 2 +- ...ed-rule-docs-with-docusaurus-and-remark.md | 16 +++---- .../2022-12-05-asts-and-typescript-eslint.md | 8 ++-- packages/website/docusaurusConfig.ts | 14 +++++-- packages/website/sidebars/sidebar.base.js | 1 + .../Sponsors/styles.module.css | 3 +- .../FinancialContributors/index.tsx | 4 +- .../FinancialContributors/styles.module.css | 6 +++ packages/website/src/css/custom.css | 39 ++++++++++-------- packages/website/src/pages/styles.module.css | 8 ++-- packages/website/static/img/favicon.ico | Bin 7406 -> 15086 bytes .../img/favicon/android-chrome-192x192.png | Bin 6533 -> 8007 bytes .../img/favicon/android-chrome-512x512.png | Bin 0 -> 22034 bytes .../static/img/favicon/apple-touch-icon.png | Bin 4836 -> 5935 bytes .../static/img/favicon/favicon-16x16.png | Bin 886 -> 913 bytes .../static/img/favicon/favicon-32x32.png | Bin 1284 -> 1332 bytes .../static/img/favicon/mstile-150x150.png | Bin 5168 -> 5883 bytes .../static/img/favicon/mstile-310x310.png | Bin 2650 -> 12525 bytes .../static/img/favicon/safari-pinned-tab.svg | 28 +++++++++++++ .../static/img/favicon/site.webmanifest | 15 ++++--- .../website/static/img/logo-twitter-card.png | Bin 10252 -> 6779 bytes packages/website/static/img/logo.png | Bin 4595 -> 23462 bytes packages/website/static/img/logo.svg | 25 +++++++++-- packages/website/static/img/logo_maskable.png | Bin 7709 -> 9823 bytes packages/website/static/img/typescript.svg | 2 +- packages/website/static/manifest.json | 6 +-- 51 files changed, 216 insertions(+), 107 deletions(-) create mode 100644 docs/maintenance/BRANDING.md create mode 100644 packages/website/static/img/favicon/android-chrome-512x512.png create mode 100644 packages/website/static/img/favicon/safari-pinned-tab.svg diff --git a/.cspell.json b/.cspell.json index bd8761c00ef..f1806362b47 100644 --- a/.cspell.json +++ b/.cspell.json @@ -52,6 +52,7 @@ "bigint", "bivariant", "blockless", + "blurple", "camelcase", "Cena", "codebases", diff --git a/.github/SECURITY.md b/.github/SECURITY.md index 536720ad67e..b7d6d324c54 100644 --- a/.github/SECURITY.md +++ b/.github/SECURITY.md @@ -1,6 +1,6 @@ -# Security Policiy +# Security Policy -The TypeScript ESLint team and community take all security vulnerabilities seriously. +The typescript-eslint team and community take all security vulnerabilities seriously. If you have a vulnerability or other security issues to disclose: - Thank you very much, please do! diff --git a/.github/SPONSORSHIPS.md b/.github/SPONSORSHIPS.md index 48d8ae5fc74..d746aff13ba 100644 --- a/.github/SPONSORSHIPS.md +++ b/.github/SPONSORSHIPS.md @@ -1,14 +1,14 @@ # Sponsorship -TypeScript ESLint is an entirely volunteer-run project. +typescript-eslint is an entirely volunteer-run project. We are not associated with any company or organization; our development is funded solely from community donations. -## Why Sponsor TypeScript ESLint? +## Why Sponsor typescript-eslint? Our tooling is used by the vast majority of TypeScript applications today, including nearly 10,000 dependent projects and 20 million weekly downloads on npm. Our packages enable both ESLint and Prettier to run on TypeScript code. We additionally provide a comprehensive suite of TypeScript-focused ESLint rules that, by enabling access to TypeScript's type checking APIs, can detect classifications of application bugs more advanced than ESLint alone can. -Sponsoring TypeScript ESLint helps keep our development process running reliably, which in turn directly allows us to: +Sponsoring typescript-eslint helps keep our development process running reliably, which in turn directly allows us to: - Support new versions of TypeScript sooner after their release - Continue improving our documentation and first-run experiences @@ -36,9 +36,9 @@ You can always view all financial contributors on [opencollective.com/typescript ### Project Direction -TypeScript ESLint is always appreciative of organizations sponsoring the project. +typescript-eslint is always appreciative of organizations sponsoring the project. However, we do not factor sponsorship amounts into issue prioritization or pull request reviews. -If you have a need to push forward an area of work in TypeScript ESLint more urgently than a general donation can provide, consider donating engineering time as well. +If you have a need to push forward an area of work in typescript-eslint more urgently than a general donation can provide, consider donating engineering time as well. ### Website Placement diff --git a/.markdownlint.json b/.markdownlint.json index 5d8a01896c6..05206c4297d 100644 --- a/.markdownlint.json +++ b/.markdownlint.json @@ -99,11 +99,11 @@ // MD044/proper-names - Proper names should have the correct capitalization "MD044": { "names": [ + "ESLint", "JavaScript", - "TypeScript", "TSLint", - "ESLint", - "typescript-eslint" + "typescript-eslint", + "TypeScript" ], "code_blocks": false }, diff --git a/LICENSE b/LICENSE index 82e1ce3c460..61fed567687 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -TypeScript ESLint +typescript-eslint Originally extracted from: @@ -8,11 +8,11 @@ Copyright JS Foundation and other contributors, https://js.foundation Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. +- Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +- Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE diff --git a/README.md b/README.md index c1934b1c448..5241dbda4a2 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -

TypeScript ESLint

+

typescript-eslint

-

Monorepo for all the tooling which enables ESLint to support TypeScript

+

Monorepo for the tooling that enables ESLint and Prettier to support TypeScript

CI @@ -44,4 +44,4 @@ In addition to submitting code and documentation updates, you can help us sustai ## License -TypeScript ESLint inherits from the original TypeScript ESLint Parser license, as the majority of the work began there. It is licensed under a permissive BSD 2-clause license. +typescript-eslint inherits from the original TypeScript ESLint Parser license, as the majority of the work began there. It is licensed under a permissive BSD 2-clause license. diff --git a/docs/Contributing.mdx b/docs/Contributing.mdx index 35846cdaaae..852e503c269 100644 --- a/docs/Contributing.mdx +++ b/docs/Contributing.mdx @@ -3,7 +3,7 @@ id: contributing title: Contributing --- -Thank you for your interest in contributing to TypeScript ESLint! 💜 +Thank you for your interest in contributing to typescript-eslint! 💜 Although typescript-eslint's packages are already downloaded millions of times per month and power high profile projects across our industry, this is a 100% community-driven project. From the second you install one of the packages from this monorepo, you are a part of that community. diff --git a/docs/architecture/Parser.mdx b/docs/architecture/Parser.mdx index 185d67d3580..9f5d51a53bb 100644 --- a/docs/architecture/Parser.mdx +++ b/docs/architecture/Parser.mdx @@ -21,7 +21,7 @@ TS's AST is optimized for its use case of parsing incomplete code and typechecki ESTree is unoptimized and intended for "general purpose" use-cases of traversing the AST. :::tip -You can select `@typescript-eslint/parser` on the [TypeScript ESLint playground](https://typescript-eslint.io/play#showAST=es)'s left sidebar under _Options_ > _AST Explorer_ by selecting _ESTree_. +You can select `@typescript-eslint/parser` on the [typescript-eslint playground](https://typescript-eslint.io/play#showAST=es)'s left sidebar under _Options_ > _AST Explorer_ by selecting _ESTree_. ::: ## Configuration diff --git a/docs/contributing/Local_Development.mdx b/docs/contributing/Local_Development.mdx index 294435616b7..3f85bd9c90b 100644 --- a/docs/contributing/Local_Development.mdx +++ b/docs/contributing/Local_Development.mdx @@ -3,7 +3,7 @@ id: local-development title: Local Development --- -Thank you for your interest in developing on TypeScript ESLint! ❤️‍🔥 +Thank you for your interest in developing on typescript-eslint! ❤️‍🔥 > See [Contributing](../Contributing.mdx) and [Issues](./Issues.mdx) for details on our general contribution flows. diff --git a/docs/linting/CONFIGURATIONS.mdx b/docs/linting/CONFIGURATIONS.mdx index 03227ce0cce..a620083fa71 100644 --- a/docs/linting/CONFIGURATIONS.mdx +++ b/docs/linting/CONFIGURATIONS.mdx @@ -88,12 +88,12 @@ We recommend a TypeScript project extend from `plugin:@typescript-eslint/strict` ## Other Configurations -TypeScript ESLint includes a scattering of utility configurations used by the recommended configurations. +typescript-eslint includes a scattering of utility configurations used by the recommended configurations. We don't recommend using these directly; instead, extend from an earlier recommended rule. ### `all` -Enables each the rules provided as a part of TypeScript ESLint. +Enables each the rules provided as a part of typescript-eslint. Note that many rules are not applicable in all codebases, or are meant to be configured. See [`configs/all.ts`](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/src/configs/all.ts) for the exact contents of this config. @@ -105,7 +105,7 @@ Many rules conflict with each other and/or are intended to be configured per-pro ### `base` -A minimal ruleset that sets only the required parser and plugin options needed to run TypeScript ESLint. +A minimal ruleset that sets only the required parser and plugin options needed to run typescript-eslint. @@ -136,6 +136,6 @@ If you feel strongly that a specific rule should (or should not) be one of these ## Formatting -None of the preset configs provided by TypeScript ESLint enable formatting rules (rules that only serve to enforce code whitespace and other trivia). +None of the preset configs provided by typescript-eslint enable formatting rules (rules that only serve to enforce code whitespace and other trivia). We strongly recommend you use Prettier or an equivalent for formatting your code, not ESLint formatting rules. See [What About Formatting? > Suggested Usage](./troubleshooting/formatting#suggested-usage). diff --git a/docs/linting/Troubleshooting.md b/docs/linting/Troubleshooting.md index 98d0eddb825..f1aff9346bb 100644 --- a/docs/linting/Troubleshooting.md +++ b/docs/linting/Troubleshooting.md @@ -125,7 +125,7 @@ See [#2041](https://github.com/typescript-eslint/typescript-eslint/issues/2041) ESLint core contains the rule [`no-restricted-syntax`](https://eslint.org/docs/rules/no-restricted-syntax). This generic rule allows you to specify a [selector](https://eslint.org/docs/developer-guide/selectors) for the code you want to ban, along with a custom error message. -You can use an AST visualization tool such as [TypeScript ESLint playground](https://typescript-eslint.io/play#showAST=es) > _Options_ > _AST Explorer_ on its left sidebar by selecting _ESTree_ to help in figuring out the structure of the AST that you want to ban. +You can use an AST visualization tool such as [typescript-eslint playground](https://typescript-eslint.io/play#showAST=es) > _Options_ > _AST Explorer_ on its left sidebar by selecting _ESTree_ to help in figuring out the structure of the AST that you want to ban. For example, you can ban enums (or some variation of) using one of the following configs: diff --git a/docs/maintenance/BRANDING.md b/docs/maintenance/BRANDING.md new file mode 100644 index 00000000000..25c08b216e6 --- /dev/null +++ b/docs/maintenance/BRANDING.md @@ -0,0 +1,37 @@ +--- +id: branding +title: Branding +--- + +This document serves as a guide for how we generally describe or represent typescript-eslint. +It's fine if you don't always adhere to it. + +## Terminology + +### Name + + + +Our project name is **_"typescript-eslint"_**. +We sometimes refer to it as _"ts-eslint"_ for short. + +_"typescript-eslint"_ is preferred over _"TypeScript ESLint"_ or _"TypeScript-ESLint"_ because ESLint and TypeScript are written in abbreviated Pascal Case. +Combining lowercase with a dash helps differentiate us. + + + +### Slogan + +> The tooling that enables ESLint and Prettier to support TypeScript. + +## Visuals + +Our primary brand color is `#2656c7`, the halfway point between ESLint's `#4b32c3` purple and TypeScript's `#007acc` blue. +You can call it _blurple_ if you want. + +Our logo is also a halfway between [ESLint's logo](https://en.wikipedia.org/wiki/ESLint#/media/File:ESLint_logo.svg) and [TypeScript's logo](https://en.wikipedia.org/wiki/TypeScript#/media/File:Typescript.svg): + +typescript-eslint logo + +- [Logo PNG download](/img/logo.png) +- [Logo SVG download](/img/logo.svg) diff --git a/packages/ast-spec/LICENSE b/packages/ast-spec/LICENSE index 7e7370143b2..a1164108d4d 100644 --- a/packages/ast-spec/LICENSE +++ b/packages/ast-spec/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019 TypeScript ESLint and other contributors +Copyright (c) 2019 typescript-eslint and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/packages/eslint-plugin-tslint/LICENSE b/packages/eslint-plugin-tslint/LICENSE index 7e7370143b2..a1164108d4d 100644 --- a/packages/eslint-plugin-tslint/LICENSE +++ b/packages/eslint-plugin-tslint/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019 TypeScript ESLint and other contributors +Copyright (c) 2019 typescript-eslint and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/packages/eslint-plugin/LICENSE b/packages/eslint-plugin/LICENSE index 7e7370143b2..a1164108d4d 100644 --- a/packages/eslint-plugin/LICENSE +++ b/packages/eslint-plugin/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019 TypeScript ESLint and other contributors +Copyright (c) 2019 typescript-eslint and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/packages/eslint-plugin/tools/generate-breaking-changes.ts b/packages/eslint-plugin/tools/generate-breaking-changes.ts index 9b1ecafff4c..0b7da717287 100644 --- a/packages/eslint-plugin/tools/generate-breaking-changes.ts +++ b/packages/eslint-plugin/tools/generate-breaking-changes.ts @@ -32,7 +32,7 @@ async function main(): Promise { Being added, deprecated, or removed

    -
  • 🆕 = newly added to TypeScript-ESLint
  • +
  • 🆕 = newly added to typescript-eslint
  • 🙅 = deprecated in the next major
  • ➖️ = to be removed from the plugin in the next version
diff --git a/packages/experimental-utils/LICENSE b/packages/experimental-utils/LICENSE index 7e7370143b2..a1164108d4d 100644 --- a/packages/experimental-utils/LICENSE +++ b/packages/experimental-utils/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019 TypeScript ESLint and other contributors +Copyright (c) 2019 typescript-eslint and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/packages/parser/LICENSE b/packages/parser/LICENSE index a2d896685ac..dc04d8c91c0 100644 --- a/packages/parser/LICENSE +++ b/packages/parser/LICENSE @@ -4,11 +4,11 @@ Copyright JS Foundation and other contributors, https://js.foundation Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. +- Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +- Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE diff --git a/packages/scope-manager/LICENSE b/packages/scope-manager/LICENSE index 7e7370143b2..a1164108d4d 100644 --- a/packages/scope-manager/LICENSE +++ b/packages/scope-manager/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019 TypeScript ESLint and other contributors +Copyright (c) 2019 typescript-eslint and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/packages/type-utils/LICENSE b/packages/type-utils/LICENSE index 7641edcfd0a..dabd464af3a 100644 --- a/packages/type-utils/LICENSE +++ b/packages/type-utils/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2021 TypeScript ESLint and other contributors +Copyright (c) 2021 typescript-eslint and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/packages/types/LICENSE b/packages/types/LICENSE index 7e7370143b2..a1164108d4d 100644 --- a/packages/types/LICENSE +++ b/packages/types/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019 TypeScript ESLint and other contributors +Copyright (c) 2019 typescript-eslint and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/packages/typescript-estree/LICENSE b/packages/typescript-estree/LICENSE index fda3b7546aa..f6d73403f2f 100644 --- a/packages/typescript-estree/LICENSE +++ b/packages/typescript-estree/LICENSE @@ -8,11 +8,11 @@ Copyright JS Foundation and other contributors, https://js.foundation Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. +- Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +- Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE diff --git a/packages/typescript-estree/src/create-program/createProjectProgram.ts b/packages/typescript-estree/src/create-program/createProjectProgram.ts index 784b44b93d4..9869a6e4e54 100644 --- a/packages/typescript-estree/src/create-program/createProjectProgram.ts +++ b/packages/typescript-estree/src/create-program/createProjectProgram.ts @@ -105,7 +105,7 @@ function createProjectProgram( `- Change ESLint's list of included files to not include this file`, `- Change ${describedSpecifiers} to include this file`, `- Create a new TSConfig that includes this file and include it in your parserOptions.project`, - `See the TypeScript ESLint docs for more info: https://typescript-eslint.io/linting/troubleshooting##i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file`, + `See the typescript-eslint docs for more info: https://typescript-eslint.io/linting/troubleshooting##i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file`, ); } diff --git a/packages/typescript-estree/tests/lib/__snapshots__/parse.test.ts.snap b/packages/typescript-estree/tests/lib/__snapshots__/parse.test.ts.snap index 108fdad11a1..36909473930 100644 --- a/packages/typescript-estree/tests/lib/__snapshots__/parse.test.ts.snap +++ b/packages/typescript-estree/tests/lib/__snapshots__/parse.test.ts.snap @@ -23,7 +23,7 @@ However, that TSConfig does not include this file. Either: - Change ESLint's list of included files to not include this file - Change that TSConfig to include this file - Create a new TSConfig that includes this file and include it in your parserOptions.project -See the TypeScript ESLint docs for more info: https://typescript-eslint.io/linting/troubleshooting##i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file" +See the typescript-eslint docs for more info: https://typescript-eslint.io/linting/troubleshooting##i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file" `; exports[`parseAndGenerateServices invalid file error messages "parserOptions.extraFileExtensions" is non-empty the extension matches the file isn't included 1`] = ` @@ -32,7 +32,7 @@ However, that TSConfig does not include this file. Either: - Change ESLint's list of included files to not include this file - Change that TSConfig to include this file - Create a new TSConfig that includes this file and include it in your parserOptions.project -See the TypeScript ESLint docs for more info: https://typescript-eslint.io/linting/troubleshooting##i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file" +See the typescript-eslint docs for more info: https://typescript-eslint.io/linting/troubleshooting##i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file" `; exports[`parseAndGenerateServices invalid file error messages project includes errors for not included files 1`] = ` @@ -41,7 +41,7 @@ However, that TSConfig does not include this file. Either: - Change ESLint's list of included files to not include this file - Change that TSConfig to include this file - Create a new TSConfig that includes this file and include it in your parserOptions.project -See the TypeScript ESLint docs for more info: https://typescript-eslint.io/linting/troubleshooting##i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file" +See the typescript-eslint docs for more info: https://typescript-eslint.io/linting/troubleshooting##i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file" `; exports[`parseAndGenerateServices invalid file error messages project includes errors for not included files 2`] = ` @@ -50,7 +50,7 @@ However, that TSConfig does not include this file. Either: - Change ESLint's list of included files to not include this file - Change that TSConfig to include this file - Create a new TSConfig that includes this file and include it in your parserOptions.project -See the TypeScript ESLint docs for more info: https://typescript-eslint.io/linting/troubleshooting##i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file" +See the typescript-eslint docs for more info: https://typescript-eslint.io/linting/troubleshooting##i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file" `; exports[`parseAndGenerateServices invalid file error messages project includes errors for not included files 3`] = ` @@ -59,7 +59,7 @@ However, that TSConfig does not include this file. Either: - Change ESLint's list of included files to not include this file - Change that TSConfig to include this file - Create a new TSConfig that includes this file and include it in your parserOptions.project -See the TypeScript ESLint docs for more info: https://typescript-eslint.io/linting/troubleshooting##i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file" +See the typescript-eslint docs for more info: https://typescript-eslint.io/linting/troubleshooting##i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file" `; exports[`parseAndGenerateServices invalid file error messages project includes errors for not included files 4`] = ` @@ -68,7 +68,7 @@ However, that TSConfig does not include this file. Either: - Change ESLint's list of included files to not include this file - Change that TSConfig to include this file - Create a new TSConfig that includes this file and include it in your parserOptions.project -See the TypeScript ESLint docs for more info: https://typescript-eslint.io/linting/troubleshooting##i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file" +See the typescript-eslint docs for more info: https://typescript-eslint.io/linting/troubleshooting##i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file" `; exports[`parseAndGenerateServices invalid project error messages throws when non of multiple projects include the file 1`] = ` @@ -79,7 +79,7 @@ However, none of those TSConfigs include this file. Either: - Change ESLint's list of included files to not include this file - Change one of those TSConfigs to include this file - Create a new TSConfig that includes this file and include it in your parserOptions.project -See the TypeScript ESLint docs for more info: https://typescript-eslint.io/linting/troubleshooting##i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file" +See the typescript-eslint docs for more info: https://typescript-eslint.io/linting/troubleshooting##i-get-errors-telling-me-eslint-was-configured-to-run--however-that-tsconfig-does-not--none-of-those-tsconfigs-include-this-file" `; exports[`parseAndGenerateServices isolated parsing should parse .js file - with JSX content - parserOptions.jsx = false 1`] = ` diff --git a/packages/utils/LICENSE b/packages/utils/LICENSE index 7e7370143b2..a1164108d4d 100644 --- a/packages/utils/LICENSE +++ b/packages/utils/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019 TypeScript ESLint and other contributors +Copyright (c) 2019 typescript-eslint and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/packages/visitor-keys/LICENSE b/packages/visitor-keys/LICENSE index 7e7370143b2..a1164108d4d 100644 --- a/packages/visitor-keys/LICENSE +++ b/packages/visitor-keys/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019 TypeScript ESLint and other contributors +Copyright (c) 2019 typescript-eslint and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/packages/website/blog/2022-09-18-automated-rule-docs-with-docusaurus-and-remark.md b/packages/website/blog/2022-09-18-automated-rule-docs-with-docusaurus-and-remark.md index 58dd129cddf..a1c5d205a02 100644 --- a/packages/website/blog/2022-09-18-automated-rule-docs-with-docusaurus-and-remark.md +++ b/packages/website/blog/2022-09-18-automated-rule-docs-with-docusaurus-and-remark.md @@ -2,15 +2,15 @@ authors: - image_url: https://www.joshuakgoldberg.com/img/josh.jpg name: Josh Goldberg - title: TypeScript ESLint Maintainer + title: typescript-eslint Maintainer url: https://github.com/JoshuaKGoldberg -description: How TypeScript ESLint generates much of the docs pages for each of its lint rules. +description: How typescript-eslint generates much of the docs pages for each of its lint rules. slug: automated-rule-docs-with-docusaurus-and-remark tags: [documentation, docusaurus, remark] title: Automated Rule Docs With Docusaurus and Remark --- -The TypeScript ESLint website at https://typescript-eslint.io is the canonical location for documentation on how to use ESLint on TypeScript code. +The typescript-eslint website at https://typescript-eslint.io is the canonical location for documentation on how to use ESLint on TypeScript code. The site includes a documentation page for each of the over 100 ESLint rules exposed by its ESLint plugin. Each of those rule docs pages includes a description of the rule, any options it allows, links to its source code, and other important information about its usage. @@ -87,7 +87,7 @@ The [`@typescript-eslint/no-for-in-array` rule](https://typescript-eslint.io/rul Our Remark plugin: 1. Takes in the AST and metadata of a documentation file -2. Tries to find the corresponding TypeScript ESLint rule for the file's name +2. Tries to find the corresponding typescript-eslint rule for the file's name 3. If one was found, applies a set of modifications to the AST The rest of this section of the blog post will give a high-level overview of what kinds of AST modifications take place. @@ -95,7 +95,7 @@ You can dive into [the source code of our plugin](https://github.com/typescript- ### Matching Docs to Rules -The [`@typescript-eslint/eslint-plugin` package](https://www.npmjs.com/package/@typescript-eslint/eslint-plugin) exports an object with a `rules` property containing all the TypeScript ESLint lint rules. +The [`@typescript-eslint/eslint-plugin` package](https://www.npmjs.com/package/@typescript-eslint/eslint-plugin) exports an object with a `rules` property containing all the typescript-eslint lint rules. Properties have names like `"array-type"` that map to the rule object exported by files like [`array-type.ts`](https://github.com/typescript-eslint/typescript-eslint/blob/39829c01906f326fec94e9b3a5fdb1730eb02002/packages/eslint-plugin/src/rules/array-type.ts#L86). Remark plugins are able to access the name of the file they're modifying by accessing `file.stem`, as in the following code snippet. @@ -144,7 +144,7 @@ root.children.splice( ``` :::info Historical context -Before typescript-eslint.io existed, the canonical documentation URL for TypeScript ESLint's lint rules was the GitHub link to their corresponding `.md` file. +Before typescript-eslint.io existed, the canonical documentation URL for typescript-eslint's lint rules was the GitHub link to their corresponding `.md` file. Now that we have a rich documentation site and have automated much of what used to be in those `.md` files, they're no longer a good place to look for documentation. ::: @@ -221,8 +221,8 @@ We'd like to extend thanks to [Joshua Chen](https://github.com/Josh-Cena), one o Without Joshua, this change would have taken us a great deal longer (if we'd have been able to tackle it at all). Thanks Joshua! 🤗 -## Supporting TypeScript ESLint +## Supporting typescript-eslint -If you enjoyed this blog post and/or or use TypeScript ESLint, please consider [supporting us on Open Collective](https://opencollective.com/typescript-eslint). +If you enjoyed this blog post and/or or use typescript-eslint, please consider [supporting us on Open Collective](https://opencollective.com/typescript-eslint). We're a small volunteer team and could use your support to make the ESLint experience on TypeScript great. Thanks! 💖 diff --git a/packages/website/blog/2022-12-05-asts-and-typescript-eslint.md b/packages/website/blog/2022-12-05-asts-and-typescript-eslint.md index 17da83da75d..47cb9374c90 100644 --- a/packages/website/blog/2022-12-05-asts-and-typescript-eslint.md +++ b/packages/website/blog/2022-12-05-asts-and-typescript-eslint.md @@ -2,12 +2,12 @@ authors: - image_url: https://www.joshuakgoldberg.com/img/josh.jpg name: Josh Goldberg - title: TypeScript ESLint Maintainer + title: typescript-eslint Maintainer url: https://github.com/JoshuaKGoldberg description: Describing what an AST (Abstract Syntax Tree) is and why it's useful for ESLint and TypeScript tooling. slug: asts-and-typescript-eslint tags: [ast, abstract syntax tree, parser, parsing, prettier] -title: ASTs and TypeScript-ESLint +title: ASTs and typescript-eslint --- Programmers who work with tools like [ESLint](https://eslint.org) and [Prettier](https://prettier.io) often refer to ASTs. @@ -92,7 +92,7 @@ We commonly refer to the ESTree format that also includes TypeScript-specific sy ### AST Playground -The [TypeScript ESLint playground](https://typescript-eslint.io/play#showAST=es) contains an AST explorer that generates an interactive AST for any code entered into the playground. +The [typescript-eslint playground](https://typescript-eslint.io/play#showAST=es) contains an AST explorer that generates an interactive AST for any code entered into the playground. You can activate it under _Options_ > _AST Explorer_ on its left sidebar by selecting the value of _AST Viewer_. ## Further Resources @@ -116,7 +116,7 @@ Putting together all the terms introduces in this article: ### TypeScript Lint Rules and ASTs Interested in how these ASTs work with ESLint rules? -We collaborated with our friends at Sourcegraph on a [Tour de Source on TypeScript ESLint](https://sourcegraph.com/notebooks/Tm90ZWJvb2s6MTA2OA==). +We collaborated with our friends at Sourcegraph on a [Tour de Source on typescript-eslint](https://sourcegraph.com/notebooks/Tm90ZWJvb2s6MTA2OA==). Read on to learn how ESLint rules use ASTs to analyze code files and, thanks to `@typescript-eslint/parser`, call TypeScript's type checking APIs to analyze code. [astexplorer.net]: https://astexplorer.net diff --git a/packages/website/docusaurusConfig.ts b/packages/website/docusaurusConfig.ts index 7ad2d275be8..bfa844fc2f0 100644 --- a/packages/website/docusaurusConfig.ts +++ b/packages/website/docusaurusConfig.ts @@ -66,7 +66,7 @@ const themeConfig: ThemeCommonConfig & AlgoliaThemeConfig = { ], image: 'img/logo-twitter-card.png', navbar: { - title: 'TypeScript ESLint', + title: 'typescript-eslint', logo: { alt: '', height: '32px', @@ -142,7 +142,7 @@ const themeConfig: ThemeCommonConfig & AlgoliaThemeConfig = { ], }, ], - copyright: `Copyright © ${new Date().getFullYear()} TypeScript ESLint, Inc. Built with Docusaurus.`, + copyright: `Copyright © ${new Date().getFullYear()} typescript-eslint, Inc. Built with Docusaurus.`, }, prism: { theme: { @@ -232,8 +232,9 @@ const pluginPwaOptions: PluginPwaOptions = { }; const config: Config = { - title: 'TypeScript ESLint', - tagline: 'Tooling which enables ESLint to support TypeScript', + title: 'typescript-eslint', + tagline: + 'The tooling that enables ESLint and Prettier to support TypeScript.', url: 'https://typescript-eslint.io', baseUrl: '/', onBrokenLinks: 'throw', @@ -275,6 +276,11 @@ const config: Config = { rel: 'manifest', href: '/img/favicon/site.webmanifest', }, + { + color: '#2656c7', + href: '/img/favicon/safari-pinned-tab.svg', + rel: 'mask-icon', + }, ], }; diff --git a/packages/website/sidebars/sidebar.base.js b/packages/website/sidebars/sidebar.base.js index a949c9f2390..fe84b9c1ae3 100644 --- a/packages/website/sidebars/sidebar.base.js +++ b/packages/website/sidebars/sidebar.base.js @@ -67,6 +67,7 @@ module.exports = { }, { items: [ + 'maintenance/branding', { collapsible: false, items: ['maintenance/issues/rule-deprecations'], diff --git a/packages/website/src/components/FinancialContributors/Sponsors/styles.module.css b/packages/website/src/components/FinancialContributors/Sponsors/styles.module.css index 08e99b16488..b92051eddcb 100644 --- a/packages/website/src/components/FinancialContributors/Sponsors/styles.module.css +++ b/packages/website/src/components/FinancialContributors/Sponsors/styles.module.css @@ -7,7 +7,7 @@ display: flex; flex-wrap: wrap; justify-content: center; - align-items: flex-end; + align-items: stretch; max-width: 800px; padding: 0; } @@ -19,6 +19,7 @@ } .sponsorsTier img { + background: white; display: block; margin: auto; } diff --git a/packages/website/src/components/FinancialContributors/index.tsx b/packages/website/src/components/FinancialContributors/index.tsx index f952a5a4235..e0f83e34293 100644 --- a/packages/website/src/components/FinancialContributors/index.tsx +++ b/packages/website/src/components/FinancialContributors/index.tsx @@ -10,8 +10,8 @@ export function FinancialContributors(): JSX.Element { return ( <>

- The TypeScript ESLint project would not be possible without the generous - support of our financial contributors. + The typescript-estlint project would not be possible without the + generous support of our financial contributors.

E-}l}7?(*F`g76VxnlN*w05nNB_-#QD1wlwk3dd&%!dXb00TlB$Tq6j(pul&a z3{(-;fX8&jeJez+{$AC<|3d?ER@$dM4(Sz-Q)&a>J;nZl$0jr>9z% z!zDdC75L$M%Cd^RV%yzh@O%@69YOmV>q+@Bm5`w{iQa1m#TcXS1lH8NQ5A)4EX4uuSGBl_M)iiCa|8i(dxuT6J@s@aG zkX}2*l>g=q!@h7krRqajS<_;b!R?Ut>R~UuW0B>t zVg)~zQOA_gJmrwq#)2Q_`Xqj>k~3y2{XIT7U=>!(<;MDYN&Wsuh{t8q^oQ({F1~m3 z4?bm82GILKR`=eld8EJTbj*0-tMgML5ht*a#MMKb9*d7K3OH`A1iaRiEqV?iY%p@SHy}R>mAXb`PkHk+-6qvBW2fZ}TG0|Mq1z}TBe z{DJW?QuoK5DsJS3d)3jNE)_Eyu!0}vNzawSf9{Q!RqSQ=+(x>N7qf69!dCFZ_nJ$; z0k>1!ok;!DJ^!hv_u^(J0xzFn4ZpaO;*ah=R}$|KG?57qx;Kq z|9M5h-~6xV$R+t59<~~{fWLzMeo+pvjbt13fzkZg^7=p2aiLeYV9g>0)7b;hgv!Bu zlea8QtaQSrM{Zlt=W6xT1Kvz8J5bB7P8SoH80uC*($@cXUbzl(S?=PKp% zSN)8fKXQnLtO-ZKue*Ms97bndBm5es79xmiq^kq=K7P~ECio5a540aZj}f+pslsmx zn#nZ5|1`yEL}j~V0~tPy`{yA!L;8vlZZ;k8zsinh?~=Ksr?!I8P-260FU4Yj@J<$^ zSvYq|$~U0=sHQ&59d-M1$Y^hO!oUx;ULaKuZ`GR!)cTca(@E$Ni7j= za=d)2tdA)?_u}|t*I|?P^Ng@rO_v?w?I!JO`u*6}+sWmI8bj50R~;iIcQ4b_F=;!9 zc6+NhjmqIZ$>WlaoAA-#!Lu&TQ|y=;>1?+)R+xSTyWs&NOtGfpdDAL>TCQOA&y_uC z(?6djc}wSOWTa(`sW^gjc&s?h$^)-=jrmRWou2J+Gc57s)Ih?#+P9M#{7Rv)w^hfo`>o*+7cUno{)4;3mv}Qo$s&B8_#=D!W7%Tb~UpXMt0-p=pizMLS06mX)gB**Xvox}B-B8SxB* zc&3E%wOoCo*!J*z&fJ$U?3Eze&+rW8Td^Pl2aJOvm_A@eGk0L?+r;u#b**!s#Pg@| z(e94WxdP6y+O|ZO8TSImoX$tkd|wB>QP-5czzphZ`I@>PP}t9dSg_*>pqpg z$04>K%}Rz9QS0Dc$4itqQX~Eif8C?Gw;cSSg_PX2RBiwG{p&Puv=FF`IvlJOlCYZ!5@E?k2jc%L%pbVH)cq_&cTHqxR&lQ4DzJ!}5+reuWR*-2}$Q$eEX( zQuNSytbk=7DSzlZ{Q~j_-V)C{R{ovkg-V}by_37|k9b3%BR}E{v{f{Va>sD&H9d#JcZTxKp(l}eV5>S48+4b zo3Z=EIeshv_WgvW!n}iGf(-q zc{s0iRg}`EVy4(1MeEbmF$H$tGjA_k2&V^Qr}wt8>fw6{+I6kEp-XsQaPI`)@VJJ4 z&ot&7%2CeoPU$r52TJi9Z+Y!S(>pr6k2JC2mRi|=APTSxE~9*TT9$pQ@?MJ9MR!#h z*kC8tA-hV+=ijt#t2Eas&Qtj@^Aeke_rCbn zl}*zLk9i!kuD8mUEeGrL8#?Vp~_umChk|_#sJ@&FKgZxW8uk{#k&r) z8OP(}y&vK+Br>jkM_^h2+r$p^V5^vq9&8xbp+{3gbI4Ekf>{E64tyi5r|HdLrT~8} z)}i%jd$fHtV^D{73OpbufmiJmaowsx0~TF)zu9jxu6oSA8SZQvJh}UU{+h>rryck3 z?dZXg)5XP zKdoWsT)b~Z-t9#mwHo_>3ijO>-AlV&;tIr|{Kv{EUBvqA{ubXKqHBEq&!lG0gXGMM z`;|EU$0RIg6Rvrnvu)wHZhd@Hgm0vqKrVDleFE=iejTm;>A&q$-oE%ph9m0Z8=^4& zRu+Hbb59WLx7x?ID|^S*Zv4|!APu}e;>$Ks8dr0c}Qn>Snoi`F>?Xue11 zJrcG9bE;P@1M;8_Dz|T*s0V3ohwV+ulc#WZIt%KLv2AeS;asQmUA`V0f771)Nxb*a l^O(n$#V~<^+zY4HX4pNU_o7V}?Y3aiU_DKz<**Lc{T~tOMwS2o literal 7406 zcmeI1cU)7~7r>7qmKf`3Ybk2g5Q`&hknvEqA_^oZ4sZm-5eG_(&jbgeID)H=qVU94 zyF{%)ZKbUx?$*@`Nmv2`G91*wP;nss&V42!ROIKc|Mc_g$MgA|-1pu+@7(*&yKv9< zJb-p!1h%$-tqG)c0dN9 z`X2@jR|;{AC+I&MG;W^I^z0ctM=cUZ!lUvE^zRROBLmRq7|6D=hdYOk!1c{rp&)o1 z`gMUaS_bDmd_nEx27h3C8CB!v1zFf;qc&VEfm@&N0X4afnuD5)nul6|n(pomSFk;V zZ6UTrsE@DTfV$t#!S{GAZ)6~p;kDZb4#LxWH8}P*P}w;_V|_i2ITRiiTmcQ`0ZomK zkn4l7`0YIW`E451U%UiW>o-Au0LCIq1$WX9LxCs+N~0Iz{TPq>`|v=M17!=PpdLcO zvxWw^_tP=B7P|}zL#Lp>XV6f570Q>z!>wJrA;;YZYEPYk;%PG>*Lwt1u1Ul(eut8| z3m|{A5bj^jf~R-yL6WC8sBDKoV_hBkb%Tfb1)yC74>n~h{C%3AhYTZW2!1LSt4??!U7M|X@1Np+SP`V%n$G{lW z)x!g|21;WVfy&Vp)TqxMK7_)Fli`|dDURy_4MoK`b|Ywpc|#8B^XJc@IAR8lS%u?V zg4_EJK*^l>=-&?g--W78TX2jJC_rtjt%b4}jE^G)YL{Wq^yCTL+_?)1Cx^qM(lRKI zPk;Ms!*aASKilu4I>#>E{P3X4E9)C-Tzer~kt;x_KD?MDPwnVX%a^Ufj6-&9q%FX^I`(zY}&I337LsQAXuS0(`HkBxd zy<%G{A=Df3Je1;Vz zb7om!`pf=#UoB*0%(r4<&*fPJF?^W}Z{W*BjDN2r?o0FGeLWfdPu1FUn7&FS)8m&^ z97V=N>{Ya7&&^!mg!e9-H$uXl@5At!#KW1L|N6Ww{AW@}e+YlOT?(bxeUK3`O#ig> zw(KdcP~3CG(M>`=pdOGC#EUGF<;$ z!}mog(n9bxiH=H4Q_j9vur2HrTyA=@C0Re#w)m11INurQf3Td}MUf$W$$v_kR4Uxt zJpk?3x8q5rX_*w|#O!0<8e}0%ay}LFm-(a&h&3@euKDr+mlk zO3=!#uCtFvEwNQ7c$rJaEMJv6W!Agmxh>{TaWgY)jRUn}Y-_YRLy7_AQW>_2;B=v> z1N$GK**{sj3ImCo8;9m7aSDk*L3=W-%UDu3g8n<&)}avmBU>Oj$H#8q0$!JSI$7d-62099~B@JmBf0XT`mEflB!Bfl3WG zw2Y`mPBdi0Y_w6K5=JC^NZ7FU%vqKN2@}4NeCHj$FPT;62sbWZy%P}$c)1CXZ)-UkjBz@?; zgic-M8n&jD`#C8w6GP}!GkWFnM8o-O$L9pdy=b#kdinw$#~?oX=Z{P>p;yr#ZH$bP z3-tZM$lg7IXxfwNZNmu|O4Acf=fy{In){V% z(^C6nn(oyZKAY-~PbQh+OV8?Hs*5it9K*?q8@+MnG&a68J)WnVf6V)|8!<>VGp672 zPq6Qf7LK7&a^3s_-dik_Ek^mg<0pG!8F>qFzGH8f*iI~SQ91nV6wN8nlRZzHJG1}nriv-1W;q{bLU_>)Evviy88vt;JL0Iezn)`rfNQZ!p?ddM?0%SyxlY##2<*;p^n z8x@2(+a$P(-wsMYrXdS+ux!+OKmWq!P2^jFu1-&C=cHDDZSgXFy}tJJ88+7-xd6$P zNIg6Y>)mRsE#Ld`XSViD>cF~MGxb;d~*MkbbFOY8>B)21Z5UJg>-x08uefRsL zaQ}}iHt!)dc~T>PBX1(`cO%eV6d2gky3gdm_lFOh)TdwP4k03+ci$cq9Bwo6gQyRC z^Nd17-KN<^_yvUt9Lys=8pWPRM}#`tj_qn;)n&A{Kh%bAAKflu`T#t4?>Z~OFWk9r zgvo;WJ&i(o4VLte7-8J4yVC>?zo(J!#2%3z5wl(1vvhrD$ebBQzHj-DpJzHHpp)3i zjLQ#1d*_*RgX|%E@Ki@H5uS^BvHxdDN}$mgVT<#Q<3bEY*o5$DBFmnR#aJ^W1ga*A*q%uax8m68UJF`vU-8!M_XZ12|X(002RNmL8N~ zixi8Vkk?Pv!4d#iYqZo=OkT_#R}{9plGdw;6LmVaR#y}PwP2i2n$ z^87DaGj6Yb`~6y44*g}mA9%h56AtfQ^^s*EkNJPy`aL<2c$&REZ*vqYAKJi;zYlWk zkRZsBQmtgTC}4=FR5|PID?Q)79b+VqmdryL4x?sae04LjLOz&qHGqSsM}{`-%uNqU z%tC<-k9}X_#A=U(MjExTgh!*&(YSa`&&$vA3nU*;)uPu3v0+#VlxdlY?~U4+{;a~~ zaWn0B`=pS8nquVB_d|@lI1DE`A`7`OUuMLXXb|Ie;eoN9uhmP27Z!OR#}p{iJPdph z;syL$Ova~tpDKy_1qT`E0{{n;xT5tSoxP}t8xWan@@(o?I_0%`qewFajPZQMkHXNz z;auH7J^@9pkJIS#ecCLpmLNkSd}AX}P`fS`v+78w;uoNLPKcKG=q)8(iL6`a23pfF z4^k+pzB+`rO%4?g$Hwa~t@1GKY6AhT)ln1JT-0Yd4w7cWwR9O-Sn7_}An|4Qrx4r+ zOiHk_VGrH5NUV37b8|#A0vHpK#RXfcXO2jyS)2|-IKR6s*7tN2c|xFpHl4cu!antX z8Ea%5x)~FRuSe~w-#FgOD?AQ(%V>Fw&q0|?95(aqj6;*?$xO{9TpG#@X%V?0$7UL{ zAm|tQOsFebM`urj#|-d*;GYY)0{-c7?+r-|7kJBnyy2&AtFz{y%rJl7#Dp!O_&@+o z31bz8nebD+oxPya?sTeF(+-(0Kc4B})XZnWReAnmkAk&AWw+jFU$mpg;^U+T+O
3@o>Xt zf5fvpS=nohNTcPmReLQU#;3%gYv$Ms!xk|#rw2dZ$lNIr8n3r^4L5Ag>k+CfQ?l>$ z1*&wY^mNrT8K7~JqPsRPqL2`q{I%$k7Dl_tjejBjDTi)&p*VW!gJngj+m?R-}PCG%Nm{9(tq{Yvt%?G@uDAvbXa|Zem8BO_&Kw^X zr@D*V9fhYCi?zff$}6SU2Hp-MW86eNp(zz@pPjyuqd`?Kbwf#rlj`|1z*la0dDu9L zfVzEswf#+z;c$EXpW%o&O>0vGH(yOHTa%*Ihu1S@&(~+P(W*5inT#Bd!YpMuzbY7H z8d^A*WGbh3KE#Eq<3e}_L=|gG_^1!}iIr{1&eN=3kMq}e;x(-Z7!=D{*SiS8IHwIq zy6LhqQ$R9=8Co7$`uLgmNZu6vd$n0-J7l@UO1ISGTIU-%gWl>-593q{o$ORxM(ok5 zKokQcRpjwwA}g-guM=uf1SxIns{&o$pQqNn?{xhOePHv?R_k8jV%Qm@??s&{7XKF@ zIc2&+p9wn*Pb>*Vr}K{Z_v4{`1KglfC*e{m&_%LWCTF;Af4HQ@qUtg=FO_(0pg7)< z#EitgbIz}L3FPG*3cG9%JXReVF;HLpxDYuZNZU1e=@rX7OT``*L}UJP+f2uuNL77R z4=BkZv7f!l+^{OJz!Aow9Jtna7!_msrLp}L|IlJx`r?1qJ!_k#vXyoim*1yx>2r|) zr@qwx*0df~rTmjp8ok9pyOr45pgLZfa>C0<8)s1`w1V9QuhkUvx-J)pZ5>@Of<84Y!6El9_!E?(EX%PcNkr{y}l-`jckzVc{lxb~mB zH~w-!O#sMRL*4-^O)3XT*K2kdp9Hk#S*4#6o@lIHa+E*C{Vxr)c|E)Td5UXoTy&#UN7PAlbKxNXl}l;sICL;oEzB$9g% zq(ku4j4KF}`QY8f+XVJ@&n@qc6sRyof%hG``roC_88CQ=`Ssz^}uYCl-6 zpKH(YURF{Hh24kA19HZdn3oM|<7H)uxhHa_2G6|v=$W55e7jEZ!`)#viCn7ZR{Rxf zb?qz}KG2gZPXua6zZ~n>-RH# zQ{Z3E12sa6UMchc6oLk0b22EmN#^H`6NGhsHjPdm6s>_^no91cBoC|@BW*5(gk#W9 z(X(`v>Qw9QEXR*We-ztaI<79`b2ZY#;Z_lbt5^)uwX91wr-Txn%G}VDNXl$t4h`~- zE(U)>oQxFa`T-pr+`Dg!N}UA0-fMyr^fnlw_@F_~h2UMLux?8cd2dcOOuR4vI1Tby?{w68bQQ^cPahVi2 zK1f*d0mXe^5>VBuOg-?G)l(tVV+@;4wEp1!B$+_kB0~WyHNg>XDO*j*j+#BKH;I?? z0!ZixUAQ_&Pt$!Ym=mM=w>6WWpzU#D7ef2Fah(|U6u!DWEyu-5{xcCc02HUdUqskp z?X`EgrR{L7HL!}5uO(r{_O;Ofi{{`mk^Y{#0g*TMWD&}*oy<=C2U@>S(?0Z`Y&E^M z+lvn(-j&>*GoCUg1NdNc4H z>QSrm-n6RelRMZ$T+h&lJ1i>^ot#R~_a@vE;xCYsuavOtDim#-h5-{?Z!FN~r^25f z$v88&mbAME?;I+t=!*>RRW)eAq_7{M$j1D5^mh<$TIfw8$s7SclDjxE%c0}Fu3b9+ zv*(l8(aUq>>yP1mdCl;ky?4_9BplS>^ENk5lJ44i&XPmMVU-a|0I=?3Kzot^pqSs%P>@ib5n@X9fA6J>g2 z1Bi{GMdvQbA#Wj(GUkbB>snrAa1LH}-1EnFUnJtywTE#2^|t6`$hsD~JB{&L_cGP9 z!{atx58vk?K1ZX0t+L%tAU5RSqp?|i@yII6Bd*d*pKnyi>ucFPkaPHLdS+x)Q`n$8 z4nyW=eI26Ev@`xv)sH4@()M1fT_Q`CQ5U8j7S6#UZ4WeELhpvG+2XoS4c2$)inQXv^zBTw^Hf5yi$BXE) z{=esRyJTGGP&iXTh;QS#QiKKcXlFA2#l|l?!q@G$*)nSQlUJ)$fRM1Y+c;3JY0HP} zm66T)A(%O*rkR(@8)!xbF zI}bk0me1gyeIN$aN=*~6x}wk=hPt>p7Or7$-ob|MHBsP1sKvy~HreZGNG-OA2=n43 zu#Qtv+&>S85VC3RM@Z>>wV3MuOJM!^vlQKWjO9Z>d*spR^dN&?`eOZ;gnYVBS+@{E zC2Q*FGWMSbO=*Y1s>fEB9~S6_aixM?i>d3^1t`J(SESWs4$%5eZJ`7oOh`ZBBf6xN z3auz5$$t1hvj*`AKJ2WTsz5rOUbN}%MLtS5BZ6`Sp*s_#;}3fO0Q4E;mGB|Sg^mfH zxB<1fWTH3QBm+YV{T7u~h1gWt@$6nsK=-=L%X{DPkWZUUuW@h8p5EB4wi6ux!oY6O zy*dl!w5j%`avQm*3c>#li>P=FET9 znp%+i#!ZMjrnod#!%ZTUq4zI8?~gwC5>vpsDyfR2Iqo*tbaWwuMv;|8n(b z%z<*K4JM$sne`oZQ(k!tDtI5ifL4Xa#*^DhiG^Fctyf~1G@u7t`$CBpkHL{sCGsgq zO}T_!mjc02&mYB0?^36zJu7Oi%Yakj3#N8w_^1lyNk=rufKPr zBU;BsEu_vZ_1EurOgve5@Kf_E@*kv2+?!axx`B3Itf~pm?9|Pc3Ys zMI#G~i7`Bbz|;`&x84*ScGKJjC_W!ws9av6>=_u`K~<$UDm}mB!u+>u2Y8FHuL>*1 zm>D5979-B#b1c?lzU1BbP2H8v(d%!b)ToqZI`P^uh4;np5^A)XFR!xnGY8aQ17s;9 z@(I9VSDiia$o|dz`fZe2-EQ@2Y}>b!(c^D4e=VY{Z!DsO)S;lEhxA+j6#S$NddK3( z&jS{6{Sr88^J{q-(RQ1~s|>U*mNP+Z57QQC$?!TKEIn*$Y5h-znZh8IErt9w3mRv| ztiLeKv+l*6-GktD>8f?$Bu>a)qWug%BBByHzm9eHr=(mPt8j%>J~xL^;tNI95>vup zUHX_L8l7eMYSIq`I;&LqmjrB-&!6i|H$DgOvPv$(*I;Oz)tP7w;g#O9YfIWou=tN4 ztkusD`iL~{fwhykSt{WMJFsh(_z`9F)Dz;Fcknn5F9ITi_LEygEVB+LRhtmje#s8_ zNk>*Frnn^=eql~gj^Z>z#9NN7h4LY->@7{;5a`>~o z{F7z<9$@XcL)Eusnw=XeLX@}2mYLID;BDdV1RugJ@3iipWYFgO4?2k2t^nYZszdoHgd*7BD zLiw(KGdMThu!?X?cQ5KH?!q$gHo-b=rml+GqB{JS_2=(Jd31q+To`QUZp`m=>UnqM zQ-Jivcc=DH>ahF0gBLN1w}PIJdBC7hd9N>F*J%Pyicj@e-%929)6wp}xLJq~6Sfis%EXK>5+^`*o-XEnj|3>hl=0-fVr70AWG~@U3f8i;d&tqJBEsE$9+!f!Qr2K zc+Ehluc;qV8;I;WtaV@sE2!0;TA1 zIbfkc1Wm2r?q?9saqPx$BuUsx8j)5YbH0C9Fya9hu?YPq8`q@sG?H(pxBqN zA31J_l{|W1I|6ZvXDQv0{dLv$fuQ&{o8ZLzpD`bC*WbEzY&@SUt*DkzEq zbLMsz$tg6oy%A8jbQ?!C@Vx@@n(G9I8*_7&EaTd@X@(}{^`>2Wc;w~~YLWmz^Rd4s zPIurX{uj+GjiFW|(I>QCKVhH?q0ARt11;5{(kyytGIpn2pD%S}(vwq0M;@&?j<;Al zGQBj|0gChUU)^{n4aOhL4mu4ky;GOERajd1@t#bplro)GhGQ1B1O*A5W`2pbAI<<~ z3VT9y8$;unR#4SjbqKP0&|LKxDk;-GwZjZG2{Hlk-+F)6&HC-6x>Y45$3`xMV82T$ zMioLtNAhOrxufUPZ<5zTFm?SOg!7mU)32=8b!mV^|5{++)>);SJs;vuZi3!3yfhzD z(ulfp{Dm|q!;AMp_IrH1bn%x<2Lp9?zlIE-GS(#yms+C1ZZ1QjR%ZV4?rkZr9yKAm zIcvqEqg1;XeNDd)>lrxo@7s_xn6!D{_H&pwO+H{cT48jk)Y=q>;eF=fyzU?tko?#- zV9)QHFrqWQ9f~Zk5no%!^wsqkNx!E>A?5{CLa;iz*+dczo~_O&0-@S9=Z~YVxSfOe zu@(H92h73PR0o}ihA#>_|F38&+g1V_`_t9SCFNNcK#UdVEo1lc^v{W7zE> z%Gl$UrIQhF)_N}6c~!$wy#KWMXD8d-kiDDR#XvsTIxT=N=Av8UTFtJA%Q3@v>)Wg; zU(>E|czYuzVw3!B(G9@krE%`@3e>RGCt*ZPZYmL~D#J}dn|#4XNi(bz%dGq9tKp-C z8=7QB85wKM)O>W)yaVH9{e5zu6v|YzoK(H2!o{}Fh)#EQ<5SH;sl-#;p=cxj*+^Pg zq7;}@{!Bxi>&MYoJ>T}csUqVy8YL-y8gX1FxwG4W{~Wlqe*0bSOLaY$CUGgmbV;tP zO@WNVtolh}-s*x#p01OsK0c7waD&%kIZ0jmSd<%6bkEaF8j=l!RHr`4I-Ux+2JHsm z5Ke5K8dL4#6#51&Pyd{lAi!W!hXG&~GIs~XGR=xIKH ziHV2Lr-1v<#WKlp?DFTko8y@h7nxsg460D#HoXkUh0Y$sevK}@8Cl4~H%RIS<0KrA zg6@1$BVotokqh(!g3F`oQYQ z76@>zSa%`Spo$6(>wnTqyMsBtJRGY-O{ixcBdk*{B4b%8*4PzhKI}$JoV0P0Eahs3 zu)8}H78Hk*mOjitC2Y0)qPsmCS9(63K08#cw?Y4m1LLOAXZ*t;Cca8-cO=(8)}?nX z004&s=e8w~V!rpB$d+A-EvM3>d1o@q;(@uLyT6Jj{$zzo$CG-{{}U2vD7Q#Uj>s>Imf+yDP|3K_upwe8z@v+nsn{qFWze8A_V}h zK)GRvSR9HRMhOyjU5@9`uF`GNKeIbNk;uLAX5E{25T@m=ZXK&>^hL}>8oc`-OreZ^nN*1}EkZ-yVp88d(<@R6dKJnE{uiXc z&O%X00uw$r@TPokYxUOpMx+?@wvExxMl-92WCyW`c7y``PqeaW7iJBxPM0QlI&xp3 zmzii}Z~%yUNYDeS*aw3Kd2h9$V$KefF3aq%rI(tjkG2kxJwIrj`ISEnSX)_MSrkwO zi^8b%iZpS6@Yu-Q2iUrH)oR4xpLy8vhFXWXuWliNj|B7K+K7WB2?d&t;6}GonUpMt+bzG4lY)}+>J&xR zgx`e$Z9^yq1PdNU-h+X)-%m5H@QEo-{J@lU% zrOx4>*0es)f(Rq(d|%$P|28%G8)p3hq*kSXO(6x72higy!1s>(ft+B!`!Tdun?>t*qBg~=k1VGIKoa_Uf+sV!4<^O*Jn;g>(0B{40|9)ZY?GgaD_j3l| caJYz@7tG($-p5(Q+s`%U*CVDBI!5pR0}{H?^Z)<= literal 6533 zcmeHM^;cA3^It+h7L<@~5Tr}GQBb<25s;-}>5!#cUTc zp%-vIsJ>MIJp4OyJByRh8eC6hbw%7wOlmSVmIh}7H~>J&rmP^Z=ew|<{V~h*T{67; zvU8!_@8^<{;kR&XrM|cFp4c+E%tRu@$;8u7S>$mQ(ul2bdNCBA5fP>KvOjr}q0Mqo zS4|?PA3~%Q`kV>4TQH@}H`CbdvmI|x-PSf`KWX-E@!k3O<>|*#jhXW18Pp==pmlo* z7|Mu;K674^J=pF}7MAVYb>8vd&3xwdTUHOIyIr=KSRVKQAP&_sBjDNHzqQ#Ey>z*JnZjdI6rhOf3Poc32M7Hq=fW<1 z6z)(scg4eq3yOU|)LngYvx?v2*|#*Y=h$8<;SO9G*TZ zz+fh5Q4q&b==nw6Q&58ADpM;@u|OEA^_u;}n+8J=HReo8P=*m>#@I|qM156q6&$L? z^=wU;i8k{>;CX@-!92w7wIR_T48&C|OL|W*AV#t^Mv)QkyvNn@*3vOJkC`ak&%$s$ zY8C7D%L(H&4W!ZDDveGan{k=~qQ08Q`@VN78i1|If=MI=#gjV{Vg~$A@t^UyV!Or+ zUyv(Jltn}YImBj=2Meg(6*kt-V5)R>TB?7)Yej&N7RWZ&@x<}JOR+a*Q(Ej+D;ed< z8Dzn;MDfTlRk}wq43v?t94QN(-`!_K-O6Up+`M<-+|D7y3YE7qJWdU@>cB_Nf&{5Y zCb2PNl%~H6^&A>p`8&i%m1)^k4%rAd5w>OxHVK!0RhP&+Mm-Dc9)4hJ`}19^9`opi z>`;n*P0BF1!>vL6f*6`+SE;S?PO~vf)WSp(QARM=CJs%uf+d$dE0_{-aUM(1*nRcb zgtMr$hFe_d_Qq!F_3oe1S`XWl`@l@QY4)sg;}UTU_D3m?bc<1~n>V;bczPz{=2T8d;;W0# z1O{fcp9~CMd{Q8Ag6zRP9f%dtn6Xr7q}6B^tB&nXD6Ol7UA*nz97j8js;}QF$23hc zVRsi#Fblvka`S3Fk&q zW%cXrOc9~&I%h|Y0es5<%h^j8?@2nwt z_$xMB{|2blXU7kl>z%*dZk~8M{Um{=YhZ}TPnQ7n-s!;_qwP7b{XG1S!fnRyMnPNS zgjkI`%W@vt89~{pSZ>x>TrHhe-o(x zCTrOEO*sEaMLW~@;-a{Ww>M4d?G1ri|KpFJXJ#a-5nu1TnhzU6SF|ed#Ug>f~!+A7}C;JpBG~uI{NopXZ@@9WuVE38_g~oRO zi^c?%`E|Y@k0F?>-@cZ$F=|>LB0f5UkBOnwh9Y~aX{sDMht24ZBf#5Tmu=BQDUu?q zeOb^*y4bd2UhKZp$9{L0GPNqAFsf=WD?sCs;VU*U0 zpX{(bX+t9l)kjhM(&|kx$o?Od8Uagq3d@kjpd!LvEW6F;tOB%x-&bV_D~)LuZ1g-s|7ijj+-eT+*(` z)Eac{j6aXJY?1C|F^O>Q-{6qZxN-$*<=BEKe=#)g>^JhOzf{BEybIA{QjB~koAL3yxPndYtvxc>0*>*BE^ zkJHMVm-b(R^bV3UYf*zV%2i$NKuI5)$Jhj(>9GRHNLSy(^jsBjE5ao&g^GMVu-jMK~se6VfWOEvEMz>1H0caMs(WIMH_=_YP0=eRl-p z{Xm zH%HoRRa$7BYbkN<2LG(c*IiF4>C$i$V{PAOne+m-vwp$g0&mJ@`f?y#5y;x>1NMz| zteziDQBQw7^uSSMW5#F+8vHZZD*npM%m_^;60gPJt_Oyr8%yo&My^WXq?%x+#F|#e z0gb>Q1aFhePm1qRao9G}+yblY44*nX*_7V%B$1JaX42dbK;4!# z2glRX`9j^+<1O*5W>3y2T56{B24z++OSVIYe0)A-b_$h{yp_`8>#Gr%&*~|Mtx*wv z_6XhD-0!t*n5=lZ%OZc2CQLL!{04XD&v4?{pWCwo(mN0i5yrHDv1FI8gmwK|s+rSb zM(<(u9*H72-i^1|-s$A{ALcbped|u_RGN%*PgRwv(Kb6L8L?cp6>?mK+XbxVu|JbJ z-@##a?A7-58$UHq>eOD4T(pObaC)`*HeOy{Z$a}51F~H*X28=G-s-dAk;hftU@khO zV4BS)1(jRGN|n58PYBbvjIChv{pI~XcGls@RI~Z8%}Ivgi;av_n%)?oxJE7UAa@SN zp(Y(mLfNePixFZr;{+!Wsy43uV;+XCN@;3uC~RUWT@(QHeRV>s(Y>TxH&=f)UFxh= zi->xu;(a?M#Ri?RI&PwIs=DoEHDv3_Tz?n3^W3%lLDaI7^0-e(J%uHu7Yo>J8gin*Os_w(gYUP zTSE_H4w?wzLAmKJ{vPDcNq3<7by4AOcs==I;OHr(yMb&;)FdknY6Rw;sAP!3siSWu zTUzfB`&^!e2_(tgg6)=HdShpQdBzdR;2vnS>k(e+bU0&@2cPZEqrlf(EcN< zsHxw0anVr~%Lg*pYo*D&2zf*CVym*kfw!E6AMaZOXRFlR5HZ;u4?AyCvSx?Ba)cE_ z`L^+;2V!%wf_nAzt5x(Gq!}@ZE_$HY>1^LW;IvlQ^j{0PfcG{+ZrY6+#D+_Yn@`5W z`XW3d*Tf%G2fPB7j>q{`H5^wF4~TcQ5Hbp-IW916x}{j@v&g);rNqsy_V(7DQ<|&E zLYj}O5n{(OF@Ko;bKhvjzOwo>L9hr**Ujyfba_luk9jVB=yq zw7xtr4J2?w*#zXsu>44TJ5Wlx8G1HjLfIO!baRv1; znI%825ud8%;k!%kRDV;Lrhr!l1CldnxB*X&oy%CVQC`gH*RsoLm`QW(JydVCzINr3 zMlJIIUN_QwP#25W6V_7S`HloRiylE1+da^Q8p~qzFDnhsXb#;dpVa#;TkUx`qaJDG zs?(=%b;cT(^48QCd(PR8j17kB7x0F)IId}<`qzeJO0h&3z5vlcn2Nm)$5@uQJa3mL z^`VTQil9+zoT|^K0w?|Yz|Oxo$xSx$t%>}0*;d!j=HuAX8|+-3x^8F_`k(wBQcM4{ zT@#@#(PTZ}!USD5Pv>W0cNgFJ>lSlTo0G32-OC&-F+dem9(`#nB%GPmP>`&v;j-C- z^*TbM>>~XiqJ(*;zpkZsWX$&k!XsSOavRQfs_6Pe)UO2+6iKo6xQ)sXLwzMD=ZPV~ zqef{J@@`!5$w&>NV41@_qRuRo{J|%LQJ(H$Lg;)5ym@qb2p#{jxTwp~&J5H?^Eh5J z_Tgc(*v2n@+nkv}$U|wO-8A>`kzUvZuGr?8ep{RS?cN1l_=zJbMHPD?vPoIyi3uf7 z!{av)O#nLC1-SU><*~Ki7EEQN=rh1jsT^n@B2vh=x4pK1Q}GtRcjPA=XocmxVh7dS zZf8Fy6_GKwcgD2M(c)JV+mD<5a_IawMabq8LWmX}33(2&`!Mw^pL;ztsS#wXfeLgG zJeC16122ANj}|D)1iCunN=uX9-_kxDxLpif{a)X69|sw{;IZGDo<$!v&e)X>4VJ_9-bz!+!M^Sd{D!OR1b+%zpjOf=!ZG4!W)pC>apR zKxy~lb76xQ{Fc6ne;C@l2VV@D9}BqjoNAR;^=TfcGHdPghefVtjf^+*RM09|;h;OV zvawz*y3({0PhdBeSJr7G@`fmBMNe18Xucxx>F**HbK z3A!(zYht4num=kY#Ex&rEph(jCYi6;I)?iRj15c4{`0+x0H$Pk>wwZArzNpm>Rpw7 zm1EU=*X8WkK$x;W%7*x5G5L$%BGFj)$BfT5F(*a&`-APqnV~QFI*`}yA%6fPlM4B4 zbaYe)SG(SA?H&=ItK2Op$Hi9Ua(%y4gb-$}CT^PIj&@#1f|s=?!lltwHetk`Svv_% zf3UgK?qhIfdN3S+pby6Ky5TwK_7Sb_%;3JE4E~@1@CtXf|0a+mdAPH2+|Lt4D7#W0vR=VCmS8 z37aEFPb4LG|JLJAWyizam2P4rBj@i9B4oCD*KqBgHRuGpSO>)`GW4_Yp$b;$DMNM8 zb0%v2&}U)}B#|VrzwWc|A9he#Nu|R971!XZjVBkye}*sqYUgjQA zi8}^-3DHRSc-n^@h9mQUj9uuQG1X5}TBtBdvgnT#;=AvJQJC-W5e)jgEk^m1KKLsD z6k7`4o5Kcv-WN}y9_->n)|apS@vX9E+j!0cV_%Bb8;zMW>~Bs)L27xRy9VeoW3h17 zBNIQgzw@K!9{MaL*<7>7le*);Fm&xyQ;0d(Qfqjqo-e}T$_?&!_-_wvzXQDZ#d<0; zJwPVXp7Rxx)h~~d*=;7wIpEB77<9X{z4{<@As-be?9~Jf$CL9l87$XzU{27(`!Bnk zFZBRzJB=Dx=ApP8P22L`&T%#Mcyc8a7Ysv<)LY*+-dUwG_kzl^8KlSuAQj+=TIS3cE$XlZYD*lVMcBgHW)f`c7T3k_7W*-6=J?v&RSmCJ?M;$R&sF7ZFD3!+ z-N03Z!?zY9K3@T`!9)DqIYP`xpO88N%I0KQt=eOX=9ou$#+1C#NxcI8J|lvmK+sbU zxl6_mx375kv+(L(zsD60kNS)I1O9-E(#3&LcSp;WutnMk%n{)Aa$ZBUWaWCJQ+dsd zo#qA;5P6x5dR%^KWArD(b=D(7Jr7t_VXamRZF&djp9rj;iiVybOHXSFD|c(O00{C6 z3h?j?@(7CP2?|KO6q9%<%*8Jt!Ot(@_=)!a892Lu>}@{&cLP-sfn2nKfuEkCr;eo$ zqpQ1%jlGjKqvuCgYesulPb&bxH*5Wb0MAXIoqbqyWK?-m2Y|%_oJbZP5<~l`knSW?ntmwt_m;U4+XL3$t&SxGz36dQA45Xl||_P0a?LP A9RL6T diff --git a/packages/website/static/img/favicon/android-chrome-512x512.png b/packages/website/static/img/favicon/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..4e42dbefc7d0839af90ce66fa6a00c15e7580d65 GIT binary patch literal 22034 zcmce71zS~7*X=&Ebc1vXNE>v@p+N)`=@bEJ0Rc(LgLI=blF|*5f`lTSBHi7ccOBpF ze((JSS05hq?7hxfd#$-=j4@`&v#0WS*i_gM1mP(vz%?KU1^g2Q!omQ*j@(8rz%Mil zX;oFbXE0OHP=%oP_aMkO0D_RW_^v^a3m*h+7(fro)crSNU=C85E8;au&^r;KZCK}v3#{%g01bX)mpLfkrv%~ zbkv{~qr@Ec0Sz68MOr;(0G`e2eCKgofK-g)O4=+vPXoEquiuTXJD!sLl|Ebk4^KVp zW9oMsSJRvzrvLwc1T}|X-KR%AXA;?+I<)43Z$7ubw!W7d+&#-q$)+!0u<&;6y70A; z*8S9APZAtRq;Tf0kzl##wiUL*P-_nM8cS*j;$|~H=tArJS?B8s3B6_p_gH6!13WHh zt%^99yPi;Kx|r++EhE~Qj!A?Q&$z(v!oq<=qPJJIBpM&S(t+Z8Gq*5OsyoWw1&0Lv zTA1O@Z(>yoF%vCVeHdv2euvQS9C7Nh<}ObaexPWzzk(-ZJbo=~`{p;nVQi$51*4M* zObYT1)l3Y0*?wN5QKuz>LsXxL@(xxf!26KZNCf8-CJywZ4UsbDu-*ZEQ?OuUiYypW zGI+@+>E7&2_y9B68HyS8m>9R69}=GHP4C|Diyw0$)^M_m!+)~UitkIWtY9!j{3`)7 zqsf_^>EJUJW!*g=X{B6e!k7+x-}DXf_vXGq+q1}_vqHx0Ef=``!fGN|KTTnCd0Usi z3^lP)vz-W|5qu4qtH(&#y{X8hrF4* z-A>LSyQn^C_{ta3&zM5n1j?%nyI|#Paaysh>4HS5K^Syf$u(8sUMGWJ> z#RKFlZx{vY(h~5cXWFfN$rGdbdzyRh)?+*q&#oklUcW0~yIUz{-Ac92u;ji4X;1ZS ztkfQ?sKKjWJ&fCwT_;?k1)plSgzd`US}ebYXvUedCWkwh&vpEp6C$M3z}5!d9gSaX zO_n4Y{bWmgPi5}<`@$J&O@3&Q&mR=3MdZE_Xb4Gq_vQ#Hbusjt!i?2}h|V7Qb|Rlt zkYg@zrk&hjo)5n9eB?u-71%n+lsR~(Tq{pe_s z0`ImW5IiU@IYd4z=<+iM(m;-24QL4S?aGmfvM7VfNQ-TL38;&p6Y2aixbu=bJRVB`DuP*0 zAPSKa8Im3Qfb)#bvkd&{yOJn}Gfyy#@;+x3j%L+_E|m=|u7U?oJd43;PHdfKi4N?U zRFsJrZ00JYyPb68$IO?PZ$FmHmO*=tA?w21)f%^Kss4zoCn;t=f7rn$({VwbDFR10 z*jO>(kZ+`|RTL;IqI$ygARLH(jMrry{TU?(azwC(Wkg2Q{*Z9~JTOkaVtsJ@j709q zV`i7R+{;>v5)py~^zlhGuaYn@lvWv-T1ZVbOYRIY=9>uN4PctT`dzX6R<0O*zyQ2{ z=iKejzMg(O|0$_}nR#J?*^0Sc^pOS~tXUzU_w^k5I^lDlE$A#MJ1nIPJC6s2kQ?j_ z)?}TSr1ik~5P$v-Fm!&h7Z)abz+Q4qk^}CLxbf~wUuB+0g=)6EK@SWDhfj2!*mizL zQva>LGwxSWa!BF_de=jUN)fE>0NS z^uh%jkZI6K3gQ3zIO`EzD1CEMa?Cj)7{S0V&UQzMAR6qMGX~KwbDt+7Xrpv_u+P&0 zcWMIYc?@9TI5}UUc0)HQgF-LijJf7~H1DWS=<-_$sFl>qPWY-4p30NYRdG&lU!J4Z zDq&_;nkoNTBGw|PqfO2&ec92P+jq0t{Q6p5<+Corwjn}U zo^3YAcHlbE0{_ZT1S|D!I*hOU*S$LW#&b<^c640DkDW!e#C&hHH+844U~_&uL`mmw zjKthLxSq&t4dqEUE8ZfY$>FZ*OI(XX|T<-OEEPvyj?^OTYz_^U2f zQyHfm!uo-N7Iy7fQ(i-P@aAr*_cwlVD(jTa@3|nA`;6R|kD*g=60<~fE3LH5q6~|_ zC?{-oE{6@Pcd+iMakibL3v)@iRMh91FVYp}9v39wKgsK)OTTm6^xjdPaznf$_)!7* z)0#^*$r)6y_X2@m%^O;3bgOZtFUX1qSi~S}!Gx^bpkefUt*kA!`=>iIkDPLx2}K^i zgH+fVZGYNG88D~%|K=@`q3nzdk%@Flc3XDCBzQ4jOd!N1Rs9a?`!#VTE7OzhKR{oO zYWyI?>dzhD&nV;;&KUFIGsmLwW}b_0R-J=yl#g4kaD_CW+IJ3oHcH_SOxfyu?T-pRC}%_*%j97%3LNv$0P zJ#E%;l~_{B>s+t!ZS?|8r`EK8oF4SLWPCh*F&AGOx;Onx2Fwd59Wi(R^fNTaX@GYL zllV^Yw;3T=tMNJw3$IXjgx2=m-@&+#GHY`>KDN_Dmh_+rtLLSYc5DB3 z4LU{_ce)o*IyqSS-gr_!m4^)-yc6&zvc~77BCC z1xLI|9;`Q>VW{y(D@SEuk>I|>Mi*mE^=~XZ7G_M^GZvh>$-~F8UTUdypv9-=5i8~3 z*_1 zLCX$fKu!e5T}!2hP)z7P`Sm4SNq(QB;UuLs&PulXcD@WuEmmyX*@1qD!JUY|5IGTg z^uXW+KY8Q1p000ukag*saG$2JM8VtlmVfV)mZ}QT$I|c4lPEK2`m>u)+*1nP1FLl# zWW784$W_F;2D0Qz4HWxg-=9kC~F;Za{-6?rDS;g++{WCPb46jjMvtmgz~;`?s`Db~o9ohtHq6WBDgyFfOCukZU~25HYBHKq z*S@Iq2Z5soKH|iCaFflx#R($~R@#uMFVSx&QX2$&f5+o5@Vdzy2o*03zfItnV_Ih! z;lpoeLoo8!9R@{U;hAjPVCbTTzCE1}KdoI*D9{waf2@zbb)Uz_?!a!H;l?-JlrAAD z;Sq7GKgbPCc-H7X{ER&P0Xz~Kn!`zv4mm*lb)+eg>!aK#i(Nl5HAN++cY7k@$Bi%8 zQn=>|aRa3}SMs=``%KI|F%1e4PQ6!EZKax z@nR}Bw-CmsS+Ic_W%;IcjJqU7OzCUc)3xFIVzT6}R*mc0qY(m|?CZ-V)!-Gyymhr^ z3kVd+UW~$|)Ljgnx^}y6;ug}?;-(FLqlhX<`YP9xCAIylHsmH{s(TVlRc9!InQAcJ z2V(8Lh{Ch;kcxvhATz-Kecnikk%x2UN86hczsjTgC~ljYV2;o?`B=4oJ;ztDb>Y_t zRWSP8PO`{+`R%43d9=;QS!jlo=!F4gNa&?pmV<{dKHZ8}#}dom@91acfYd=u(!Yx+EurutK9$lbQ5x!J`#O<*LVUv1@9{oMWW6*0@H z-a%9B-fn#_2Hf<)YIQ+o;I=+^80BbgjRw5Q>?}tP;a^7Fg2Yr*i|P;IvR$pxFimVN zjIEAj3vX81A8#gL4zXcjIwuBw`PI-jWsA&NYyzjbh-g~y6}UD6H@}7pil?v_EJqn^`m|Bj%_8m#0X$B5vwxYHI99Rl-YM?jL zmXP)#pLh?%Dok3Dg&(sPHXRhor;hfp!-2`y`ucqKg!EX>Bs}O_81bW>LVGLr*dSMM z+dI*2l&mMPzj(xlxr8c6_weK;R8$|Y7`9?(~n5+!4%m}F3 zvV!CkSNAN+w|%TmPq%*AUo8o<%BQ%+wxhf*D#6qq(%a_ia{q;6em1|4tr_bxM7tg++;?qu?Hx%7;W&58!c#2w- z_v0vq1?pE`-4on4eX>7Qw^L^Y*9$;998Y{TVS^1a#xPFJEXVAs&(@f3M$8mpUl)2G zCMaRT_vPXi^%VtW><2CITKgU|SNz=Fnf( zTM>0HoOnU;_T%L~=W}tE?0eH#fgagTXQAND+}|+j@5qRHG98IH!7GUmSQR?gU92$mPU+u>>c9E0f2nWl&5nXb{y z)z8&Ok+^M|1kN4Q{YOt4#xjQ-i~34zHh@QJ{z&U9vgWf~t6E4qst4_rEHQ%EXgZZ7 z1Q#SohR@;?&Xc^|f;?rG4q-rc+0PT|suFU8$Kpf?E<7?(pw zQ?w|L$&jM9qZ%Zy)t|m#lbG~RtYK<=g*oBF|Zw1lFj;Vx45<6gEO01M;4yb z>-g$)mVM@c5!eCIKRYe%a8WdjifJ{ps|Q?s=I@D4=;q3NscFj5 zMMQbi#m~yXw5|B9IzRHb@0P?-@us$qAA?+$LoFo|7SdbqNHADh6@I5oh=aH{B6EE4|N*);O9B#ZJ=F7bT}g}QKz`95k-lN8#JP5Nm0;>V?T@XAU~&JC_bA(weXfPJu*VHYscyX=eh~D@ z(tYFg6wC11T1~~f5p%pPzonI`7$7F|I1@0Ta3o|k&Tc{En=qu~shXaKObBQuoyZ<# zy)P_!J8yLO&ZIN1;h9129~77DYOQ^Aou8aJ{z-S~zf0gHzLmh9x!TNje?_=s+K}GO z?X5%HfLc=bhzcx`$sRA=x)2q8?I#qI4F-rpc>_prD9C^eW$xvKuEPYG9B#<>R6%FB zC005o>p_4yrxKsLF3|}su%*c%s+VN1ay)rb+l#cJlqXLnV@@HLLT7v+FwrlFJkaim&yc*lC(j&3eM%T&O-=Igs7H^nHM7i)gn~#UoKL3yKFHLy!P(h>ldx(- z(`zG0Eb;9O98&*%ufmF9r@o#9L=~BR!JzKAcRLaveh%Z5n{E@Wv%h|B_q=d|3@7$f z5tEPPTB6Yc1VlrjFR4?Q%)^9tl$={*VXwgl|Ow1uPYd{k92zmwSK3mGF5mMtXHj8d=C{rtm%*$|?G#bU zyX%L1Uwie-YB`6f*_*SFtIrxzHo<(^24mPSo}yCM()gd02DuGm2VXzi&;8^+B+YU@ z+Pmvh^---yC)YPLJJwCvEeX{%Y|A%{)6BT?d_6K1@zm;Y%*@UG4dWO^f};F>E_02P z#p-e;=H+$}w)Z(1AHP>?HAENFH;<1rmMKK>f-DoKwHnCl}YcQX=42rqchr6bS3MiDc5&J_n1_(FaLFLd^*9hkt}wmw<_Vxt5c3Eekl z@?DjUZ30byRNK)Ft93$+tFNd7|2Icw0<-vOw9df>>rTg>T9Om7(*`3vQ!*bncTY!- z&rJIbnI)uhXJift`gs4kzs@kT@)8GzZgoweeY7%Lf6cpnbJ%b|ElE@#tjd9_8qwJS z!f{^jtvU-`(;{P?sK3M|7*z=~IDs z!)&tauj3Uw+?hsjh+0O;R@})cw%A$2Vu=D>YN3pk;!UzHEL7}hB2$$aX|$k(IhUP~bhhTM_2*g93(K-a>2<;x({&UEX0rqX7%y^~x(E|W5BVZzT&65Zg~p7# zcDI@y>y&nx@$ZEgT^yCcvW(YJ=2pLU|9#|;2KJ(EvoitGxsu8A^pP!| zAz`uJ3Unz2g;s57RROHTn?g?4+%p`(wUsrKpkvW%^74I_GnQKAE11LJ9B{47hKmHU=~O@t^(blRgdl_%prCM_n=vtk-l>>yQo^qJ z>04uSIjSqk4P6HzV{0V11hY4fQlp-SI6?_ z@fi0D=!iN^T#C~r9zg6&6=C?ns84p{@aON4-v=XbRT7>`!{Ov#jx?_yG?z{3+w_n^ z`&Po^ur&Y#A`o181wD87%AB!WE8(yKaWgFjUyFY;Kjz54%oFx(G2ffmcbTq_fr)9j zT)I$kh;hpGfdrTL#1KA)LoIT#2NWXpMsNCz*GYHghS8xo>ns$mdMQ*QqEE4zVTlhP zy#ABp^eC>M9J(G#{K1Ld!!xJ=hriBwzxDOwH(3!`nR6SMvE^SllrWwB0fA6ang5fP z=<`QGL{8@H6^t-FEf#<66%xZN`f zl(~RmH&Ur8u&-deN4ZW}ZN7tI+=fPNQ}c6(AAvx;kwH~E z`A2L;O!B$F2wUE_st(iv_Q=oU|4Z|(iH%_7};qNHAKZTSUnxbc;=n;uIsGnGgbIUrI$^H9vWYsiP{MC7g15s zypoq{rJogTHIY$>q6H`s8ph|sbJwaOs@Y<(0Ke+s{o&jPq`Re-dmaM#ILMHAv`+NF z#J^Aa`NMRb^gu2+jMw7TZ(T8ulWM%nfjvl*47$_)mN@g+0id?Z)^ioqE%6a1R;%x@ zyDl{^5U+*Q=i6d-@r_OTB#Ne=Vatp+MTy1&{Gv$L6|HcL_WMX=%@+W0v#`pU?D<+& zNwC3>rhb+lUDba(SA}L0@ee$5??cAJv9Pm|*VyppH2_9!Oe9A_rwT*s)|s@>N95zvZL0aSWYPJonP^k@ zZr&dgw&8Tpo}Y7+(ZdcYAmRiM-g}Z{00XZ4TOCE)`hhy=)#kj?~3*6?F)0i?;zsw*&BJ2NXMW_L8Yyn4FIN zB$6N>enL~aDw8-9ReQl#(ozcHknhGvJQ*V^u{mMOmbv=u1{)Av+`LESrXhkEExF%$ zEopyjGIcPZRHWnc{KDCK86Jq!f9pkJcy@VD2t7!l`=V;hY$2F8BDT*l#tmldI!T90 z2+(E3)M_QG2mi@Az54qiT@j^JbMBeYhID=ZFXqjOsVclucLj!VT|>#CJIrr&IrBYo zcu}HT_FrMnHR*`%O;IP$Js8yXF}Mb>%BfhnoO2DD&e-UkcBc#FU?^J@dfXWbJ^43e zknSrap|kfe*SpH#;%Lfrvt+UEaR0H8XPhil|0$CVRoC;TKpRFVDR$|}?$UIG&Tt@~ zR(I`_)P)KY$Lu8QLs zVW#!9g`-QIhfs;}yEo;uu<~j*QaH7+1L9dLYoJ{HMfO^!t06D+0QhFIy_h9MlITl7 zvaL~st~FkqkQYsZ(!rk#&T;&FH>@;Sfp&Hiy|uq@#b>P5U4u;pzN5L%Gmajohe4 zX*EX^L(M3!Rf|GQ?fxZWooE{Ov9JaRderr`G}uL20b5N&Bc=&XbSY$_0NI_M{3MFD z_07LL&FEp(|oaLr+|ZZ|;0S zEb@zub)9P?B}7@tn76015eYBMX1^=hu-|XrNRL?f>qq?D-I8+_SvJjoFKH2$h)zBZ zGZLT6MKKN%#9x_5k>X7LmAdvRzU$}L&$4K9xkOBrrZ?98H%eURJHA~rK1*d|Sh!Jo zcmCQH-qw!ioU(9;JDCktCE#jAYR8bIa@jsBy5eaKhAf$;XtYX5bQ1IXe0vc0!g7Y6mIH17JV0*{3k!yW2{pUD;pinKv)7>vsE7Gav6cj`df2 z8-#Wz+-5&@Mxu@s7ylFTc>%+oz z-t8J{0vKrakCo~R`(PH?#rE+<_d~Xab)55GbIQ}ieC0);KHm+tIJs;#f0F1^+PyhB zA@yFrH(p;#aFR9L7Mh*Z>#iwJwj_^B0s$Ga5G}eGHPV0G#r8E1ny@y6qUH-w>zYub zlG29hs7~FEDu4=S$ZV9(V^?|c%UnUhu}LPrnAhjbz-;f{{e9~F#`D-a1=hrxmAoe- z4Gm4uz@(cxOggQJ9nSK7JyZAuaxkRmFCm>la`$gt8g6fH_xLcuw&Ib{3lk89d)doj zoMRUA-5sFg2%i=~8*rUiX!fOAPwjaEpILbzR+}qdiI9q1ZLxjjaaC79iXYszc$yNr z5`9(jBsY;VJt5UFD#U%q+pLxx5@@hxdQ_)@5iNT+%^J!mplA*h-NLpPo5q2}1g4~x z?6BXMf`BBc_qaGxuWN2f04*x%b1HT?>8=qK(*b$AKdtWu)ou~xS5o_%C8q_N%gFF| zr^(-PpziJ@^Kop$*O~8b>DkUXyiAmIsxD$!}F1#*-iC zLv=#Og<1m_((9aHvxvwy{?Pu&^Qxi^dQIWGR`tkkJMr5QifiKwe~?-xFX}+y*`=67 z?(&)h{iCy0$CMIh&WT4>#GgL(=IGnGuQktrvTrZPAk(q(D4v07*Xr;6k;Sg0ll^}R zi;L$WD#|c_5)BHYv4PV9SC}zn$;-L#+W{fno|CmFp0K&MR$|8+7{7J2xxBu?@4ZF} zP^d;aO2=M=3_@P;9*Sbwm+BO-k&xKfH!K)G{rhKdEWn{F9BK2p4d5BFF z{+6euDyLibg8JhxzLoM(%Ik?YfbeDVx{FYe=3JZyY|F83R^?Ole+e)8z#JPvNVjWs z81|D=J0jDrTSqgFPVp9eSMg?yb4iDJh65+vj-9Vz-@Z!l7Hh(cYyXsD)J^k7w=_uf z+7?ES{r!9_?|2(fU1xiB-&5~dn+008JqLA3asTGVbBLY6-~t|^V0hcCzBVyNW9@4T zeDxW{*nHw*)o3YQq2P)8A7xucCRcriyDWMGtAo-Bn(Ms zW3RI#4I^qL|3n;+JRXWhG_p2U+_@M(mIXte6efev|Hnltq}u}b>Bo~_ZBi~SAbQ&S zRG>1;t(t7e|8>kB;h+uaUc}AeE!wnxV*s(Et}3T95Pb@6FX4OlJjFR|_&#T8r$^;G z;~z<4jR)_Dlp@Lq88$U^$KCxiCMh6+X{`&ikZ%2pv{_QXuPSy4efg+F@!G3~`mXD> z1{RGeqZE1e2ObwM)nXh753Ydx?*8jq7dd7Edy*}DHk=REJHOhKAJ#5t3#St?Y(9IY zx_R+=(iPH%2nRWSRN;O%+9^0pB;ZFvseG;!CCv{B=zmXl=%BtLOXGwPh^H2F9o&4T z4q?t=A{=0;$gjG%#3@^9K-HJ`^)!$&FnV^0?~6e(e=lqJ{aj67U4};hxcAas4V^B% zitbdb9s{uNQ4uoFjpR2j{B$XxAT2Hku~vnGYU{TAGcBtJP4EXYkal8f&26jIeEAmC zj?;Q6YnG?&2f1?7&LW@C<&p@9+IyQ3rxZ3DW8LlL3uJJCDNTDx8 zokl-SJC1u?jEU;gyF7#hxZIo<)KVTOue|r$QI^TF`1E3_{XRp99)ngtmPdOIvH4VsyP!gZh2ikq&XRefTPniH!yl$TQODEA1$HGbReEO`M9ki)?;zZdh)y7 z%OS^&WrYF~SIKe=P$%4{4O|n98#?|bI9>pC-`YqK`HHQBEN+%$t_;Z-EPNSX96Y@e z;njVO&30d(^7JZ_eM*Z5jLLp1vmUu|*d{{o+bYK}MnaG2zyL{^T?81q9W<99-jK7< z=Jf%ZZEwIy(iEgQ>+J9W>|yK`Jdx+=<74#@ds2Gb9b^9^kdW?bY$RHsu3Rz0T&E|9 zOeD%a4V1>yl(bE(dIt>uME6&S!1%iL_#*zIxtT6<JQcSzf6yQ@X!{F)$E8x2ueK?^ z;ZJChf~MEE%tQn;bfF3AE8cQa*2Y64Pj+afX7Y|6_E-=|Ohwh^yTYOpKgExI0`Y_>^{lhx%H zs{EK{V)!dnAa4Nj1kWQmF+qmh#8x#H$))?K>ig*o1{s8o zgJBcgmOMn^k0|QRC5^d!+!e;*wYOp9v2azgGHJWFr_Q#*RdiaZ4R?t)ii%%IkUghr zlyWt8X?23mNO6hWWm|BV`HwqrkUxWfCyP@gCr>#w=dW{Qa8FSUzcd#}qn`PiXekp21zN%3!Yz8L{)ozmgN0o`*3fn zLiVM5>vuuOhNyuBAUvjjgXaq{zbzQ~Y$7>N*-FnegVk$o#G67Yo=dYGPnlX$Xw$-I z^Z7HiZhaCarVO*ca!FTkwMKz?&mS&Pf86;l8~h#Wh47{5GLH0a|3r4#PSq&78onOl zf@a;Xvw*Bp=}GBpx7&D$q&+FYD#X!_2+A_sn>uqo_qIW*#BE{MmV&?7kdzhW$52$F zXrW{c%9Ige`WB){B7d{Si;TIAWBDAlbS^p0#=1AsZ$lbp$HUQ~s1^ocf>!-f12U$p zhnA!pt?jOz^FTer&=~D1K%?8VlYe9tTfJ3-iPkb7BKXc420=mXZb`@)KIs$F2l_NS zFfuijb+vv|%}K#mu>0~sKB2!kzl~&f`vk=p34e3s+^(O4MC-W+^3|P96QTbuoi^=Q zb_K`7r*~0G=h5*EGSqbVE|~7NaXoDaK~hpKbHfl-l_HENx}l?npnYvq)a^=0a#x(u z>+36+Zoz&M-*+=nRrhR2`{bNezN$?*4J148<5(b4Fx3rmJECkjeV=Wne8XzpaTUjk z%vV7ZgAm=b13^5S<5zA>S>Lc7CZZ(j;^iaDJ%B{}4I!YBdDA2iUD&?Im8C8yXNAZd zJ-O)Wg?KdNyr}9Y9a}q-F1JrBGA>~_j@T4Ry{S$1{B(Fv)Tg3Xa4%xA52TQ z{NYB*A-_E9SH)QxYaM}><*MJ0QDYuh!XS2A%SCnj6fB}o?Gv_;-7KB?|kz=&Z3O_RWXZRVft?5)lIVdjOt+?x`AVx%%z7t+b)h} zV%jYL_00DvgSwj=l%?YH#jV*Zdi+IzgG0%?{bV`%@h9Q_!lI&ZycrX?!K> zeGc$&g89!l9*^p=$--x%k!VOmEo9#}g}r)ra_08TIC)**r?AFKeaHJYF#x~n#C1;k z;Us#`^~!+3knbCcG>m5(y|K(p{Xhv7*kyQehd`{dM$2iY&>Ht@c{$x-4I!-6%_+Qa zv=)1j=Ghum^lNV|OEPbv8pU|jZ;9BF2OqxFqt6rW!#feaxzj7(ci`{xej9k5I{P*P zAuS$B*`3Q5!D8PGeZc1P2&#~O8O^#Xk~Z?VECZD{#E`Ahgl(Kxs}_TxvO89jcU(l} z+}jY96;fAk37$gwS^0Y(i#6Jwsdfkh=J>)**q zj}ua7`kF2SG#(fB)Q~CN+GeVS(6WO!~dl3c6NIll(W00>*=i^5xFL{V%c^6 z-KY4I9vQ@dId;Di+SUtxf85w@L0eibnieBcH;x0|^<=!o?59bHz7n7!x)Jjx%T?ih zQXkx0U=K38q%JM9F1y{|@9&Fig=41cZ0;Ao2jtU$*n@7)Rd};1hq(Lbl(M)eoeKsE zI#lLq_)7z?T52OZWbFt^Y}SVBh4dOG)zktBG%~5EXg=Apm;>q*$1di=MhzQhJNlJ< zvnbZBT54%c7E}Z&1Q}b3)9KS7x}8BS97dIRsS$^z1!CneCTRof!bWWEB-9R=gOLTXh$2FjP8u;U{V-Ru2-8ymkv?;EAKZuV-Jqr z_w%Ds6Ha|B2sDXajEFS~pq>5rfugn*K%xj5pVJxa#{C;D;n5(SF zJ_@V`WSBqa8!6SA6!#nnX~Mi;ek#T4J@x$K)#Kpu$_eYjf*U!Ynfvi>ju1-yq(PaS zoXpkC5M&A4+ul+pxR=ZGDLdY^MuH`4vK~mc&b&t%_ib%Yw@QCZ@qWzVl`l3Rraw+z z2w01J{&eOlPIia`0uqf|!;cwJ9M}^`Oz_RH|_KxvV#!>59vhF*0D>h7nCLp9C>DDFiu5}@A5aLP7IO6bkq8(=3_ zbbhb9nDJJti7R#SR7Ddwfr>v}fES^XhPONhk_x~8Cq|ekjpx)zbG^L%^04gBk>+`5 zP=ey>nGDZ5)RG`*-zsO>$O$&Wo0D%K=%>&6hom*ab@tq$0$b)OcNt88gV`k)>OJCL z&T<71HPmWX3OJv&0|c;|US|J2Ao$97(PIoo5K@_TRW5#GW@vS$|MH4SX>tC=@I}(w zKOV!^E8dd3A5nEV2l0pzYa_aH=<~;Sny#9$%Knn2QIFHo{uKbCij@=9e@a!vFuwtC zrY9L0iLfg!SnwFA0<1~;x-xFKv%k2-gWc*jFc9MO>r;Z!mumA_20BL|$3PHzQ$llI<~X1@ zvNUn9tLEz+r}y_#9kK8$ZcL>=+zQVE^@O54=~$~_8&=5*d(79tW3enn|!N) znU5#>=0+E_D;;te;*O3)fM$>yg?E;z9ck7p(Tf#fHTJA~tfaKcT-% zPmFgzD6MPXj$Wh?BI)zTGG+rpVa48GYa6f5e>wr~Do_nLK0@OBdoP5J*`X9)CwrmSE-_GYiweJPw-H!desbVKL-#?7K*J$RkQObN-iv=w01E$?>Sg&5B z$??S(?S@QJq;vdYzGEcN1cXQL)BY|c-n!WO0h#{gROOvlhDrs0fW&`RaW$V4%mQWD zO8pd-6#cR@+Uh=}(>)22CM1%XV|EtEliD_zqbXFPY>Nu9&lr6`WqmQ>T1I@S{Po$} zI&2{7P}lt8*qDU@1R78C_LEPs93}{9Z2YH72=5Xhz%e4iu;2i4O!+HJGuV6Wv5RuR zo>x*X&O@6e;rSIx62H`a2_S!FNFuTC2|SHx_yHO}cl|csIR<*;r_(>aOzSkqCKpz| zEs5!$DhQRlxPe6?u4dHRUyJe5W;Fx$6oQJ6+#ossSwJr4&m0{By*h2oQ*|Q=9fYBYv1*m6lS;(Gh%jfE!M6Sc$Qn7%~4efdkU| zt#$)z4gU9tZ$DZe?T=^6)FqpP^tP=2$P9Y=j||08zbJo!6Qr{j4T;p$KU=< zj}=~h-qc+E%Jq*1m_o?86$j#a{8R=Ge-Nj!$YGrws0TzkU`MgN4p1Pt^Zi!rAi=qlFycLi($p_1-|sTbq-xTcq(KmhXsdQxFAIz zXs+*FJN!tMOCMPO1ZfZU3R^$s9_UzfohVOkpd*Psx1F{9gt^=k{^t1QI$_%DKj0>t z$s35POlUw5oplQZ^edYCxJrrmHK^#8^Zhvx?bZDTX{S9l#(U)H-M?bC{P^sE`l$^A z)1io#p+9ee?t;@BHCfqXQXt^~k_-rnQ@uu)0_=LwMHlAZvfYgSbPOV$k-}Y4oiCaN z`%95V2J;k)B?-LH!3x_hv=;>KM5aq@Z1$}o*f>`oh@x|lQabV#?M$`t-LupVa%{tA_7*a7B9wGyJr~ruZNYaeUVC(%7I#MSf??fltWYO4MfiyUq5(H70}CDlC};-Lyj z7@vknFdI@F`oE1%@Fg?c;(gg2@5Y-Ma?oa#5V5HEKOGn&F~#AP`#mTONHs@Uy}5gSZU^pH;DyFQ?(+A}a1U>X_ldm$TZ~q?F6qukN#z@BYG5)j% zE=575*IR+}tRt6zEih1oZ{r(&-D^wSt#>Uq`y}U0ZMMtEtp&yeI&8I{iD_Mx`)L5^k%4&LKH5|8NaiJ&e0eiV8Ab^6v?*P09;vS z_~@sMyfXlp<+R|8ddz}b2JK?)Xr9Wl{JY~+EN?ibu~b}@W>`Jlz_!xa^d z@9mn$@j}Gc&YJHVp{S!;|8#&$Wl%Klq>d*_Y#y0u$0YNRx{3^k7tnuyuvb{+Bk``d zRRUCKi*(^-j#HB2f7>Rxfa0t#D{Cl_V0E`GOc*G8%@n%$@$hWK>9mJzueYrKV4stb zLoEmC9Up3-xfu7Bw{NxQZvKieXF2*h(=dqyB4xT(Zx~M!pDW7q)BbN)@auMzIakot z)WsQ?2&PnDEQ6*bD#Ra@eEgug|1!86_uaPe2ae&7QMc_T>+JV(5>_ql8Q`+}_@EpR zYz@JF-^*H!=S0=d9OrxoyUF-v#Q@kD&)Ne*Q_%oNMH41z(7M(rX~A}L@k?%N(&>pv zgpL*UQTjXkowG`3!iNjvb(#n@qqnI;8_er8uU~6ozr?ltX#!({^=QQ*g}(ok5FJ}L zsp+2%*wzVOcc9G0{a0L>L<^3g(E^l5Drts@#!=9b=Qo`D;&fT(rydY5lS!7VF?*ja zc>gN%!ZiG%yFMvQgKX5$+PK-bJ2!zLrU57fL2dFW# z`bKh{ra2$vP(ZaA3{)i`c|N!c`UfAb?)VM=eCH!>W4}_g_04kd84tpN9L$$>T9(2d ztZENyrG2{r0Oz{*3b>v6v#@Z`uIelYHWJxMS!N;m_xd=8RBokL?GtNiI|b0_2L@EJ zMxuZg1Da;8uRyrGQU(oj&nv?l#KI=_!NXXR`Zcxfy)Sj-F)?rbI6tqc zLX(OX`!1m1YOUjUTpLMfM}a@)30I>aUreXBlab9)7KzxcEKojJW#x^HnCH}nMl_zh z=?i~$feP9IfQmkhlGtC=eho1|$RnqCW3?P94;18#@3vO%d)sC5A!VYYL;Rk1aC~)# zK|gRFBt^f@qDAyi1wKL~6Z<9S3!!^25Jk9c`rB&9HK>VvjDK#O>}dGCQ95u)8aYs8 zO;F6k*M#AvNbu;<&LHWcTvwJ1H9k(1OZoJ!dg-b~t^?<(h$-xu{2i-5pOCHk+Pyzb zJ|O$~qKv_9)kxhDct=exL0iZd?Lq#A;%|qihb40)aV|elG9oUrU%Qrb7NNG%I*4T; zh4kN|+fiQOu?83Jt*F#oiYrQse@^^#6$6y-;C8zIZ5u4BkPuG>ZLUI9_OyTs$nOJz zSQsai|M-iokoxy`EtuOS{1L7?)y9v59)0#3L&j-wAvZ zK!ZIkTtbk<=8`W|pVrJdSXDdI`0UBt1kO%{PU-VpXsUs>8qNP#RlffZi*Wq1Fc1Nr zkO>&#u*6KnBHJ6#&4VXnGVt-7Lm4#DJRpbg2-811g=$=Qt<&7FunzRmt$r@8Z-^S7-?Z-DKedH>i3U{!j-A(UaQTA`GX^;6@~EPlG0+c ztNWt+=1VV5Lw?ABC4V(XHjSbNjh!*MN*a2&;wVKrrWpB+oykjU{hA&UF7ie9rDn-C z_rU;N$uu_~0eyuBMBVMkUV&%N@6mRo$5W5qf7j9Wil=A}gA1DaZ+{f^3=XnEqch?o z62k`tYhc{}Ddx=Mq3r%Xe%WOh`Kd4&M0cUVAjKeCLZm{rl(FyGCL%GE?bZ)jyR(y| zqKT9(du1s^RLC|YT9nE@Jl|{XU(a(te>{Ib{+ZXy%$akpIp;d(dwsv3_b1(o{^fWO zxqId*alg1~=FNxUN(x@%fzVA92Q_Q=P1obmE$*|TKf7q?eG_-C+kxdyBS_QVj15N> zxp*&SHRb;K=UlaTV{H_MP`w3%9ISC)&Xlt|qAgIZnk>W4_0FIE?LhVPTo5<+I1L$i z`JwDN(ZhCE_|S`>#*mN03(8y#dvjWjS|imb;R(i`MFXBqHUQS$3WAi_Hp~s!O2qx{ z)pPbkQ5064gD~{jp5()3ET0XhaQWTOz)_6cMzuvTl>y4s1AR6hAHyc%R;WUg4i+C~ zxEBB1zVd?$IJ{O*=)^|XbJ6F-1p^Wn<5ff~$A4m)k3!MIU5aqj4Eo4|46P(TQh`Uw zJjQT_CMnN8AoJodW_hrQ3MwN1pzb41#*xBgF!DJYEtX&yEM66%9@?zUQ88 zTu$$U9fr5=QPRkhl}n~;Kae0q1462lZ7$|^MMG2QOfRd~K@uz(X1Wl5&BmU$ou}4K zOg-vTGt&cNDcHMUNwNzhkqO&~)_@$^Fd27X!tA$wSuTFRNk8&v?UMHY#EFil2#CgR z)b(M=kHIaEof1T&FSuoYYBrWaA5^H~j^Te%31tu7}*vcVJOi(%p|G1^_ zSAJFKQ4-g{8Sgbz?jM_bCd<&EfOPvdWukSZj_A}aZ}CRB&;NG!&u7VIr+Y?5rf{&Q zg84{mic&y}Y>VFd{|OhW639WnPhtAQL-s)~;jW#!C?Ly07217EUZgnPQN1fR z`e49#qSkrsXX%Qxcgt>02ejr(o6=^Z+fTO!H70ev>@hI{Xh}hJz5_GFjt>>;{RD(8 z1D#{5F`1S!x~1cLSJPd}37xV+qZ`iZ<&BNhgArqH+78(i?ueHAN@r89H#o-){^=u! zQB@=OZTjR0yi(OBC62-F7vTEA?be7Sz9kPlObP)&RA8}_&$&DzrST$C{YZdy(=ZB& zrOoPFH>|?)2*~TiwGOxpM0Eujaed#r{(7PCH)W(LOei)k@w+OHj|IeuiZsRcJxUTr9JD!WV#B8@RvfkPXPLjdU?7n3Pslu?lbfEoVdOxGyeN zzV}suyyCw0?RB1uE@9Qrx}eRwr=|8)cTOhif&is5c})e2Y5F2HEJeQ~{C3-BJ?;)v zme0Zr&s$c!_dPSW2?y_3n(0K+@|Hg&c4^MoxHGPRy-YSFOz0Ep^jkHr zi>|A!JH&y%fh9kIVby~)>cX!a$&p`~DsL-_>_~~TudDZOJRu)EGMd_x)wl^5tcEPU zW$gQ>xcub_H7glC1<-zvIz8TJr@5Q6=>9yF8Cv=8+wA{31_xopt7TQKebb?{!W)Sk zR2t0feHLD@p&8x&ZvWP$k&!Jx#!Ms?vHm`B8EOB3>c&tMhngdX5_I;^MPl$dC6*n?p8qD~xYN6J0}5|&PM*VHF`!kNd?|AJ z`_sNly|yI2c(c{!^%b_wJ^0Jv4h2afV;RZ04A%W(kl9&4$@uS1lfAE=$8!89BKSi8 zq8eU!goHKfe>-@uwqm$YU+?bCqFx1Stw;`>irCcMP zzkJ$3vSDeUrNyzQ=KQf^#B!EiJFo|7jpq@{_>f6{xoSp9;4|po6WMpov;#Dvj1Wb! zi?e${Secrr=jvqsX1nhk&6vc=*rAT>NhK20`3}4QnBYSotf=yx>L5VnB3GnHKHDggCT%H1dp0@oxK+s34_eOVZb?2zH>U3qqFnw_r<;H#F-zC!k?G= zOHZ}B%;#>R$vBChu-;8>+t2l3c&BZ*Kn2dN_pzJ#)t&g*pt2|G7hm_{?5Dmy|1|H@ z{7UKTjR%J7Lk+gj}>H_XC=>k{9j0WbPw6aG)p< zLdsZhdMSN?5KFHJsFh9hMI*X!`>s^Q@wR|k=UG$2=?hbgB&I9C@Vl=iw*5GMA?IQf zSgR$ly|#fO(7unyPC3i7EF#ZPW4|o6%$Bomn(>fx$MjdHy1Y401H;m}8&J2C!Cx^2 z%dL0@+`Dp!#*eB*g3Ld|DB4ESwQb;c&}Dv*Uh)z~_};zvzQT2_Z%)A9!-I#3yrSIN zA-?)OIhVtZn^4fusZT#^ot}FU8T2pLD`~RDGIUW?z{Y(>-`7znvON~%^5|ufB^!Xm~Vm?h8xw*+3It>DY zC~Zg2Meee1rLYN{fppPT(LtOQf4ojYd;ZvZmV1Vj;-Xn;Q2AHVy;GxJpCNS0**%AEH^@^}vg@N!}OFCXxv;j#)s3HHhLMkMY5 zEchj;y?TJr71OnksEH`>d3>c?`^&@X(F9OQj|k z)yqrpnv6TM#{726tf)mWTrtx;&T~8jZPROg+Hazd|EALk1{^^;&)JMeuk?-BXT@C+ zq1R02p>AlG2YVU@OZhb5V2WEGYC+4r#5_nwI_ul&=sKAHAQ)`<1tknw^yDzsCOZ?;K2HZ0bO zy6{0G7@8#W8Xt!0qVHYnw8>3hkEZYhD1aAQN?!U;U%oIj=S+BdB1X}a#9jk>2IG^s z15Tpoplkk}``2UgxaaJ)sc-^9xJ4e#pFVLNbs{4a6h0$Xe@xPUfY2mb&t2sj2ZrVF zA=6TsyF2V2!S)iui9s;7-)HlEaMxv_L0IOXYTTVajbKRy!hq8>d(~K=*c&(3;o5(E zS^;MZw+8CmrZ0zb-%+79Fx-`!F9+mq)PvuhMgj*lnj>>k1yM(x+k8*<(yfktGKUzN z`Ofr*Jyx=15CG^LZqV~0yzCOK)+TXnm?yK0b6Gm`t#k6AC4lzVviP8vyY#eLSeuSl^J=hC`G0}5&*S5p zhCKCTe!evUu-S8TvFvn3`q2@|;2&^V1`g5k99YH;SlRG`NE&>pWZ=oBD}av%P7t+V zDw4v~*ZMBoPH>=eE1Q+Xk+E)0VrRPi35HrcVI`vsoDzp#t8i8LV%3Po3;qYlH|3g| z4wa#p;btz@`1M?~xw5DiI%DwNA_QdpM00%_@Te%MRcM)`IuT|;VuuvXc*%mY`6%ma zlpfpd7<;m;eD(X?eTl|gyVQbak=-TWw`6QP@AXDh+kO^gzAEZ=xXV`I87*p?;ig7h z5+Pek)t2;TWym^)&gVmVkA#K~<}>v*?iHJk`yP7s<&kB5HgWAzp83DhlFiaz zWNGEJVG)KE=;L+SEQ(4VwmgBY_{Y|3r?*M#jioc!kc6{5ct`Rx8HP-3y^!q~hlCl4 zA6x)AX@)yPk22j59on<4kzS9#x4e1xf2GOcn zkx)9g1F`VZRM@OI>2BB*LiN0#ey;GLr)*AqyS>PeDz>;2`D_(bb%<$sV*+T}|L32x z<|cpbqdSXL?_|fJ4D|;^-^bO K;c{Ja)PDgr(QG>a literal 0 HcmV?d00001 diff --git a/packages/website/static/img/favicon/apple-touch-icon.png b/packages/website/static/img/favicon/apple-touch-icon.png index 0f5470bfdf9a94b064d95486f874956f2bb23fd6..332e607643d7379cef1105ce4d75f87f036b6daa 100644 GIT binary patch delta 5770 zcmbVQXEYpKw;sJl5Zy2my|;wXOC%B{`skwfPKY`oVi=4TMrV{DdhZe~dW%jNUDW7A zz4LwVx_7O+?z(@zU+2%+=j^r5v-f$PXPv!5AnrYMlN5`Vkl9Fbz6SuH9(%2%p!wW(OHz2C+YyU`&6UKIO7jIUQLX_G+B#kq4A;*3)l-e)ol_fFi zHDd7?N{CHI=iL$R0>BBf=xT>cXU0S-?zm`?LQ z+9KeLNWI9yo=`K^@QJ#wd-|TcwSFV?%;!DVF zz05-?$?FIXGnJub5+T7RZ^#yhpTj z&_^39p|TaEfbU(M)6WZ4%#BfuX>cp_xZ+P7p>d;xP; zKF+dHuJ&V({#wGK3Ck6ivwFE|uXGj$^52{YM4aR-F#te_U2Z)Ils223%nh^G?u62| z%bF#VKLB`>_m;K9I5nVQ?|kf(SFYS0K2*GGxOWTqq9U!6kN_zj|K23W+RDG?d)e8{ zZ^RPy{38p=%m!7mynzqpp@anpEJzxE_`axJ5Aq~72DzaCpAD|_xC{dra}`cw8v>CP z5NPmkinFbt@z~$WyEbG%UdLdSIw;b^gDOjQd2~a5ffru~n5lABN^SV=L8fk&_n15; zjZu%h?i7S$VhQD_;-LuRll%^aH@aCzFU;Yr+a|AXQnd%(^om=IKJ+mp=Mxt0_=|vO zPST{a1Za+_qz*%9T0eK)*?y587`c2h);<37D=DI}z`oF)`|+4YtANRlJrrF78jqbG z+|%&?^;1O)=+)2HU#%(bI5PFXes$Kbarvi)9#uwPzgeTeFRxaRm|Si)#BV0Prhr=x zqFvcHB5v^(yywO#2AKwbU`6~Se(^iaxi0OO&Pn55)1L>#*}L$C*xy@PTE@<;d~aVi zBmI1Wynrsb8LqqH0@tjl+thgItyOjmpAsfyX{pvDEowR<+pMJ7 zo@iHW=&?ksnFXI5t2eF3xN&YOhc~GQOoUYP=6)Y+l{IR$i+X6Ipa03xgN2ar{`bg7 z<$P&)6A2nmmXJH1dz!Rmyj)x?nbu$zk1BE#95K zVEk1_)w!HX0*n%~$IwyGvA8hmw`K7o<%OE^xIW`DmoOQ(Aei9~rB{n4Lq$~}0>@_< z{H3~oS*Q0fvz=0G7<Y=lS%{Np`Sfs;-*l9kO(3<-}JG<;|@L1su1*kb~yv`Ym0eW$4j44cy4et9?zdvL~ zHIs?h>D-jP(=vbMZjJ2LS=zh!@{q3=*-y_{ue6HeCu;{TCwg9%b9pqC))4$4V|aBH zKu^8O#g!lk9}(V^w&YDLT3S;+ofw<+`>k}86wP3Tp9-|UuK2xTov!i;3<*j|_xeVU zu5zZ?ZR^L;hYEPop8X3|QhviNl*Fn7M**qbnR#Z6mI`0v^P|=p_QF$`{4Nn^$3n4@ zasB~{OJr{-jRYSdO@1wf^bSU!)<-M|!*xmesbMcahL!gVaQ9|>5|-~amb5!8-F~Bs zkBibo&;A{LongjtzBaQ&=kz?wWgWg|=|83KftNxCwWu-B;he89T(yt@jGS|F{c1eo-HJ*WB3-}@eam;IxBs-w4n8P3>UI<2Mr>e_2JpRl!UcdcdO z8PbxV{b@3Si)$U=b(07HfH)6rGY)K(9(r&Ss1qfUn$vhv6333{o}gonRm8Gu z1w}q8S;B*LrQP6%7tH7&2N)|aUArE?02WZgLFE=H!6cU%!S{XdiLgLj7eB{~UrU>+ zh12IpSV6T>4BBvq`}N~GN6QO*`^RQLUl8=^{TA8K=fA-bFLB7SSv>QiX+nEKSj?f? za{L5@$RR29xeKB@bxJ-22Hmmn`JxtfQbGCm>^e_+P`Y2&5?`m%3)3lDMBaQIzkXsC z_R1sUwkr2a*3Zv=;jZ26w7%~sl7rP!!1L>0b&9QDSkaN@HVZ`{cfVjCH?7#U@6%J?%to7Xd;;8L?a z1sIdl)&$STj~UTuYn2bieq2s%=Th;B))C%qPdo~=PmV@z79&5o_)94lPxW2sm(Z5C zm>R0O%Yw*sdDyZdRKDOwSb59fKVsvgw)Wj4@YO7*RE_BhHh zuNwt%T77diXYPkoN&LY3#aHm#h6?^oy=2ovV-Yt-y~n*pa}x#GUsZXRTMQEVh8!lF zG(vlAG!7f8YE~K=N@_gQze0D-c9^>@LnJ0LISJ-F#6SQ5=9iB-sr%8^PxTECWVl_1mua zogI_ZpZv`1j+L9gDi_9?1RtDnv{mb9!klU>;ZYTPF*2U&QELxPUjG;9fn>ansOwWG z87@HWv_YcIjW6gkie0wJAVjS-n9Z354mOs28J**3kVlK~T z9M)(__*O!gEl$^41uDJs^MDr2=3bjyn<%dIVL0i; zOnFYNVpR}2`*D23h-rDw{b{RCF*kSDrlC+&US!5Pk3Z$p{>PPtJ|xf1m;&xi!2vz| zSAyy@&#V@@BMpHNn!r-nsiUmvmP}{KR)nL=^Q|wlH+tFYkSQNJAs!%R3JC=<*MOz{ zU7&4Zfhnn;7cPuPOU5`4{<@FcZn6tE{E@W}aj7F~G)Ybut>2eR=@DM6T$n_XA4-5K zfXz-5P9um;X1QNK=j;5P4%%*LW+A?Ix!?8y6#W`x#U=K&vFv-ipX8V6(kHHaT_g6I zXj4>ToZ-Wq+$T)pDA9~6=1@+;dfO_yd#D$haPx`Rt|UX$68MK3l_tH$QN{-(9?GS=jQ0FqjEl)5(r zOuLl3iTTYPGNz5qYYY_P~7XU zD_tvH3o9ix;<^gLHy=<<^uBj$Lp2ZhFQKv2RFR_E(ns}hl zJCY%~o5s5Oe0aRqhCS*fXOuCFJWp=4rvB;Cu}}l>yG}`bC#B!(CdIAj zq+!b#Aig^A9_S|CIry_rfsnkH+;{x5_+GSIw-QM4i-gTDNBKdto1@lUa7$IM0>|Y7 zc(#*!;QL1P6GbBTi*8(KbuP_$aSB~}&wTx~>K3y$4h1o|gr=pd8VZR^jKXpXlR*HueWxur6XEPx$57R5boZ7s_4m zn~grSwX}$|E7p2<9;J}jH=w}QfV{0k?~3(oT1j^Q7_jcazQFYRQ&P4#<^LhsDeVs) zM$Sc6^v2B;rJL=70wYR7Z+G*00_rd09GSOQ0f4|- z(LYz}87~@LO8@e1wx|a@T4-_a9v+55i*PO+10!s^jT~g%&+h zMyiO~*+BFj2t&^%Yt3x^Qqo6GeXdw|lcCga4|BfHB8*1osGglJ_EYIC<-P#|K4e47 zZmmb3V-wUqI$_=3vB40!?izMXiE-;sJ&`F{zoe4Y^@s%uR^`db@5VC;VhOM59q9j2 zb*LER_*FbkFT8f&j%a;XBM|##WDKZRo{O3Q0A;CIcDTG>jf~uexpiiN_NrM7EU~2; zRQ^%X@ncjTwXqwh{dQe5k}1rCINz))yrij5j>2EH7BrzfkZ3PV>tY)}S4(;yZjLD$ z4GG)+@x&Z)gfvS;Uapa_ub!A6Qz_1E_ikr^0O4yEBRS8*_Y{6iHih3dD*Xy*p%~qW z7YYUdS}1L}*OP0;agG$ zE)&p!1frJSBmgG)ccFTX+h*~~;L%8eVSeyQWgIt>={YP+t{XN`=+ZrtTWADWuX|lH-BT41FCf-6Y9YN zG+yWU^=z8JHLj4zRPGgz2UjnW_3Qq~K52P}+^L7Lw(+m|XfmAb;9Fz5&QkWUnVGw$D&UTHF%&3eji9<{V5i!Vu&fQZ!DtAS@)^!^mr+Hsan!7Esu&q>@ zN6gnZs46la_pfjn7|p7^>o%!jR)M`fqa2m1G=5a_5VNye*Jz_2^Z-W8J_*UO=osOp zeJ}r1o`k;}3-GF0lOa305bcld>dZhgfLL-B=0T=VI4r#V&z||jx3q-ZD(?exNiLi* zWgrJfhCAILfp^!q!eNIl_-ITY6@{s{LgF6xQic3;h~Tl1(3K*VcNGrcyKNPuiGh^k?%Hr znvRgc`^`lL_#T={nT--+%-8Dg)q3vH5X?@U2LIS)@h9Sl8UI~J8g`?}bo2dD%2UM4 ziV8tRWF2*8(PUrGDSYtTBvtZh9h9d4BPuOF47d84hBqb}XZF(B^CPynl6HR3uoFdE zyOSTzS$Yl(P^$hRC%~bym)tVX!TFD!(EsbFLjT)yy#sm4NXxS4oy!6M0Cw*e2Hw^d z-Zqj}o;H{TAR;6p!Y?esFC?rhA}T2amJ}7@6%vvZ5;BR}WBFeJE^gKiwtoMA0ROaZ U1|~q?U)R7}+rl^T1EuwU0Tkp8umAu6 literal 4836 zcmeHL_dgrnyHDw-qEr<%W7KHTCd6JJDn@K#MOEz?D`G368Z>5W*JzEZRh!zhX4_D; zYQ&1zHHxau&G-Ixf4KKAxUcg%=Xss+oc+At&pCJ_1Ne>WoYw&WzzuCJbz_RG|4#%` zQPSF~S56dh)kRfb6#%G7qC2zuhmz-W&@$Es07C8p01-F<;Dk~Xu?7J6ivs`~wg7-a zCIG;O&S^m?Q7W$4>%!Fmm;VWQ?ZqjS5*j~keGQsrD$d(?1?oMK{Q$tNC~b9B)1c|C z*{5h0csR}P?clA=?aj&np$b7k>-3jBL>i`R^x?bpLw&X$HkjM1)|IVGkV-+b(r>)T zw6gMVX3IOK#z>z~`1jr1-2Gh7Ps;n%-Dn!nS%4Vi_N^)Q49+wptKW*VsX+lZEuERi73v@3Q0{+2Y&=({$D6@!{8sQ44G^q+y z)gPn6q->4zf%|CLD|(C!pRSSs|1bV~3k1hb03A4kBOafMP6=2lzs}|1DR!6M2q%7V zCLD+Tt{0~^EnS8$1qtFoFy`=5uU4igs(c}JW`UmF$@Kf`Kv-%l)9Nm|b^y=6 z`Vu-c-|Y6JI9k;|A?q&KRj`6dUx3}A^4oH_XV+&R*PkBEPFd=4$Dh93alqzAG;=x@ zvIBJxf*zTD6Gha8p^5Z1;2yH()NvlmEm$y5qaHICSMTZca-~;u^P|0S+62|%^`-4e zjHuIlGf7rSjJzbLG$d!}h7A~}79!{9%1QFn*~l2@1Eun7FTR;$3c{G!E*@GpXUo=O z&sVc!Zk9$GeV2yniz+rx)lqtNF{~PyBYB`$cP?&KWgLbayHyzP_TS(--)-`_unJf( z{kv)VcceEI%Ks5Nnw16u$8TYaZLJo1G` z=~(w$Y2q$9!*ZIK%WQI`pWWY2&gRGqO|nM@H>?oHML|HrDV-QXuLw^^stKSiP;ffU@La=_J6Pv9xkfuN1Vj#%>@!G+>sp%#Lv>o;^ zc)jYe&SeFsQf}Dt@@_rKd=I2A^3D0hC)Z(q+{eH#&q9VbWDMVEb+&**kBybz-m{4p zO5fj%E!Y2QmnHRD>i!IHNI=@j zQy_{8uaRI{TY%16EPs@FY~!ntYhBf#vrtpG(RoQc8Ye_8vUVK(i4)OyE!7+vh5P+*X)>%+pUk@=5;|i&o zO-3KZ-GLtU%J@x((P1wJZz;KQs_^m=2dlpY{JdQTM?tQ*VF*y4Z`1 zo%y{i&TUOnj=BOPt$DF%tf*3D;YQMPaFn={&2r8=VGU%}l8MMD>QKi$`_DOBwt`|V z1$9=VF{EnicGYU3$mDKkP)yACl`eA2IGPXV`1)~O<@SZpw#hxobNJY^lqoHJ0V+~8 zM}NM%K$LC=PCUCb9*FA>kD`*FDTZtz zI5{iY$9?GfN;<49&a1si_J=J89Tx(qOZYm)4!ZKMnXAfe_WK<5+Va{TWIQnVs zHhb-oayE0bcz1z+^vgpY-u+BH+75J(LW|bzbTYSi5rtBnAd`Y#)1aecmBF*^n~|fI zLWnLWLssMKKzM^I=j?^~=5#}3JDVXRI?p<2W$NVZIr)!%HnpUSydW)eoM)}jqM`z; zkuNRm4PM?!rVI22I$Cpb$9w(o;1#K>A3hQV^H-Gg{_6bIrO*-{vw3qe^mIkeYLzV{ zBrPiLNv2v>bTaL8#>Y>|=xbdFjnsl&Xqca=dlgJM_AH!&-Rqke9VUaj363K@lka1! zDU(9P!pI?l_5h)59sx>8ELu@@9L6)VE_*ZTPWcVmZb3Q!3 zrjGEah?|zm`Z%w#ZZvq|A%;Q#!$a58hHg`nN)+N>y&o3fE!}O}9jH4XAVan#L`%E4 zrLXlC%lzZ~Jr#SXxip5?xrdEJ>*4H=p?)%KoV;8dA|BJA-^V!7*=Z1ims=7O{q-s@ zI;@|C^fzwdI6e^bd-f>wWYB(R!RmKsSc=X*)=VU73l>>bA-G`duA3$?z9G{tV zpjXoQpB=b07JRlIWd%W|K^oFo*TpW&nhVt+JLKQOk0nzJJkoP`zVN7&t<>UHYY2lx zD`c-0;%adU7ifTW&pbxup(4D(E?$BIv*Eb1gx7n3a^*}D{2<)+1pWew@=URZlDp*N zB)QZS`yC^oOjkj)T;Au(Em#}O1=Ymf?Kg??n10Yy`jjp=!}ix=D(ZWZ6yi=-29h!# z#NN`rJD^5mQcNS^>6sW6XGPgm)(3uOb2-u#W>$^)+siibk40bdfl}!DUab093aPo& zv5BpmCYAWEHvg`^exoQ=BE;895H6U31%GtMFT4(_8KGf@#F zBSXx-){c?q<($yD1ooBmIN@R!5FcA&C5bB4U8iHC7gmWLPlf!}D^rHk85~lzvdT~u za<%mi6uYpESHC4@wHe}(P*ps^T*9W8QYNy;+eshw;5+#1v@(>jbj1@C2l*v< zpGUW(yNz&H%+?P4dwK8RRmohVirH6tw%)LYkMf+)S+DJx;3PPhvxe?j`an(|KC~Di zhc9Yl0~<~3+dh)ZnLGB|^U{m^lZt$sB?vcRFZ&5YxvRBO8hXlbCfdS3+%P$hhd@kA z(=lDnFPS6c2h$lFS!lR!+@Hd?QZ!iJsq=7{8Gd}dQ&Psiq8fm$tB8IS;X~WF@tZKYO@vj5=OHgMg=F2s9t7&#jopv}|SMyY}oc@oF$KWZT69^C>jG zn_1)LyFj_tPVvyvoXV8K^Ysbq8#W!L;oQJ3#BKJ%&!ex6w0M+d=WNO z@Z3IeILmFcCp&})5h;vH*H7Aoo}V8wtqv{oT)xL{ohVEtvc|Pa(uW-AT-@~5q~MiX z!^k0?4`kNk^F@5EDDD_(&2x$N#*mr)3CN%}>o;{zcUg2^<&UB*h;@oJJKd(PRuleQ zD}1k~N!2F@_byg!+F(=k^0KMze$YeGTu)g{yYAD}hY!(mP2b7|qE&t6G31tjGmDew z|Kfi%S%-?(2!)!+gHksX%*;%LYqD<@S|yG-9&5zkD$*KVTYt9s`m>dTcuPI}wc^m! z_}1QWP|Uzr2}sx*R+y2pAx1t~kDcxN>NNxBL~h+;GnlZ($8g0qyY9w;uDBN;#};zT zg4Woj8@2vz_p;h^YxjAg7$z!t<$hXf(3$?=V%u@0ZHk<4dSMO1uUQ_kkh#pIfip6b z7O)EoYC?yZDhA4MF>sB)?uzACQjXGP&>2qnHT@T%Yr>%)DY*V-XyxfZ02^$#{PtkdX_O%V+8PGxl`z}L{{mQvAW{GT diff --git a/packages/website/static/img/favicon/favicon-16x16.png b/packages/website/static/img/favicon/favicon-16x16.png index c0edc07eb36c98697293a187c93e018715362e1f..d2d807d3fb591bbf939205c58dd20cc130b684d6 100644 GIT binary patch delta 723 zcmeyyHj#Zod_BYe0G|+71_lOW-_17Oht2%#{%menB1I-E83pB^ff4>=+ z0n}v|cF-~65Cg-1v%vi!8OP0h_nOxOmHO|i?6?fnV;TT8!o&|GSk-kUB=h+3b8r9u z|9|S@yV=X{{rdIy*YCf3j=bEo``MAxZzj#ZQ`dL(%FU0pJy-8M__FKJ%iQ`4{c~=w z+Vc4Ok3XNk{%)UoWA^gIOOL$r z`|lM-pFd7}|9#$I@cF&E=8EKbK)sAf-tI0YD>uIU3*>MXctjQh>2eTeoMUt34UoZJ z;_2(k{)~rFoI~+V%=aHaq55r}E{-7*mvj5C2QfJcxXzYg>D2QGDhk@seRfkyfXeD6 z|No1n&Cs21!5>@d9~ypNP3XoO^PH521&`WJ=W_OQ>ye+5nO2Eghm4&cBT$DV$co_nw370~qEv?R@^Zb*yzJuS#DY}4{G#;P M?`)(dvoq%d049-2RsaA1 delta 696 zcmbQp{*7%yd_7}ufKQ04i~Rv-`_s<$C!Ot2IoqFbaX8~*f5XN8nv4Av7l%_W_E%l( zFT2=Za&@@k?sV17@rtd*C1bq{W(F6{jV_w%Uog?T;ADHn(dM$L0g!vq(&VC><24)e zOQnVP49UxqtshdC3Di%gYu<7h9ViM~2?Cx4PWY`1r}= zpWW?GER8StxL>QSdZ?pz?)kI&pQlfLHaEJEmUQRezyD94{5*d2)8YlM%#F^wIGlEK zylQKHIXnICj&1J)eXeJu+}*S5!}+scW=wtV>TuQB?y`%+Nqeh{W`^gTY=L2O$;Rx0 ziT-(0gY(XIms}h!#(tK!VqjokO!9Vj(LH<1(H6*IFY)wsWq-;fC90;pB{%$dJy2|~ zr;B5V#O36KgcK*HGdetLa^9S1Xl|U`J)4>HgF(TjVga!SPnj77j`E8=5ET#+5)%{^ zo<3m;6Q{@N6Q@pUYiMb%Ua@Lrb_0va)-9zaU%&A3^!E7roOOsga#puQckPcgp}9Gx zZyefgSzEla>g2R|y=%v=M%Ev9Y)fqS)|hUVj$1OH!_AB3qNuu#dUg~)Lfa#^HRpfrc82Xq|Hssos~0xvN9A|DE?Uzc1#@T z6V(#eh?11Vl2ohYqEsNoU}RuqsB2)PYh)H;WN2ki3)agG5b%s{Qst?ep7f?RNwyXdQIGIPHuX)F6=Qmi`bmdrf`!I7J)+ zy2i{GsC~bs&t5a26wq1z`)ooESO@I~TF}sc?d|)YuipHK$v<`B+K2!D|DU?}E-d?m zL-@f(Yajmk^Y7R1zx69NJuYs(`0~waCA^j=Vg0;`OI5zjqvX@$1*$#tGM4q7H>-p0EtqU(|fDd*)65lw&vU zd^&XU^_80+??3+f{^PF`=ieSZ^QOGx^1pxor!T&H>W6z1y<)`NOAQQ|iml ze*6CC`K#}L|NXo3;7fkPh1kMVaYd&u-}rd$%KNC?lds?Xbd5gj6nQAV==Axk?>~I{ z)jst`>E&X7V4OLZ1o;Isa44}Tzq%{BVXEyfb;hIX!fn`YpDYX!c*EY6r||tX|I&8D zzjAvPn9Im6G+5mBHHY`bUDklB$NpLEU2gjCN4;XV^tnTG4+@0?&0|dRc6aglo-gnj z$l)yTh%5%u??IUH%EW*RKn8n>r>`sfGag294#hVy-+uu0%1Gj)utb-ye1CO?>z{I~VR#>rC-|bYg`^=aT@1)+fh~O`;1MDCUicY8L5(;$Ckcn#{9X=3A5ejyy3nSTC6#NeZva}E?rB; zPo41#SR>pLqZl=GxEQPy4y^LNBo%dk!*0!bhN?H>(i$5&rEeGISNmA=T$twJpvj=U zad-O#I~kcONru#>06v=s#@784cqFtAF_i3KSLc&l!K2;icQ?J@T!Yri_AF-h9eR4} z4~X7c5^$LDx>>{QXs#=4_ZBYdW87!`viSdlRNqx6ojI!-j#oc*wwlNA>gE2743>(z zhkvh|*EcLn`)2)mX_4GT@h$gVCr`u-L# zg2A?SzEpNan??8kCo4Vo%X_oCr)1jhvtKS;KCR#8x6`7w>+CD}2RVlmzU|-sOaCv^ z<{3xw_PQMgMW0D}wXWO3D+9QW?t2%k?tzvWt@w3sUv+i_&Mm cvylQS3a<)@C<#g|S12gTPs_}iyqqN#0Ggg95C8xG delta 1059 zcmV+;1l;?y3WN%fV1MRNOjJcfK&wMOz(YU0LqEMkKe|Og!bCsZL_gO=KiEV+*+f6p zL_oeoKhi`$(?mbiL_g3(K)*yk(M3SiMnTj>K-5M;)jvAZJvY)lIMO~i(?UJeM?%#? zJ<~ch(m6EIJ2uioKGa4*)mm2BWntW9VcTS2+h1GSVqM!!Nq^Q&NY-<2-+Fi8Z)@I3 zMAh2a_W%F?{QUm?{r~>{|M~g;f`8(Qhvf0_{OaoZdwAhFG}7VV_>76=Eho=}f#Y~| z;DdnUlaS_-j^^9i_ok!ji-_cqjpdb+=V4vj)6(^=s_bfJ-LbFj%E|LwSJ^;2(?vkl zH!;yVG}0_4&VRnV@LpQlE-BAGIn(3g`SS7nK|IqlEzo&&;KRZ3YiHd@L)F~e_nVmL z!ol%rW!yYB(l|5GqMzyd`u^VC_sh!jNIyBKpL)A=3){cwi<>dKa zTG~cI(Ks^FM?%q$jOEnR^;A#TG%wI8BhICw>Xnn{H-9qH!ocyYs_f$8_=$$(ZE4-~ z^!#^p;6_5x!NBqD?fcTv^+Z6?SykD@!}0t3{{8*_QB2oiUD|SP-fwK)KRMG~S=xYo z;)a9cfqvpeLDV}n(>pfPIWy8YGtxvryhTCLMnTX-K+r`&&_qAYX?b3x00001VoOIv zFC)|-5q|&x00(qQO+^Rg0vZ)2BeZQ-#{d8UxJg7oR5;6HU|?io#sgRwSlQS)a05;* z25xp9Ufh6>pFx0wmk&4K5*$^4sz68>3WS73z+6#bAru8-;u7K@AR#Fs#m6TtBP%Db zpopYEK}lIfMHvWG)zmelgyl4~v~_f4g%Jv*^ndgX4E6Q(jSP+TO=KlZ&Ge1*%`Gg2 z;R=MT^g;4KV4!bpV+)i90Xum`xEt&p98I0{^_^W@-P~n8^z}Wxy!Cy2{ruqyECT|A zg7x)7LM;Qrbi?%{BBO+&#l(dWz7Unx6_3%^j}_C66H6BFcH2rjIX-i@33WOAdGxQCO^fR;Mg|I5%6N;2d$OigYKPOias{+0}p_KfB zLVcsOqOf9Y3ZyK>_=HpPfSz?JDaC3;OfL;g<7zDS9cFkNpDP_m_L#)gk<_BOw^PCvV)88fB841dM2S+i$_Df)8(18NQ*zaSLMEuJ@@9|9JXmX^)~ z(t-;C>Y#&eB|;3}lRg9&8Zj*}GA%MTR5CF-GdMakH7hVNIxsLgYl$3_Zv+<_F)c7M dEiyJ#GBG+cI65;mD=;xSFfdCtF`$#h1aE2#5nuoS diff --git a/packages/website/static/img/favicon/mstile-150x150.png b/packages/website/static/img/favicon/mstile-150x150.png index 3cc8878a6c51757ac3857f9b927ac458fdc8ced4..230f652994833e0e6891e021859f04a8eaf4557b 100644 GIT binary patch literal 5883 zcmds5Wl$VZkX|G>8yo_QY(hc=Cj{640Rq8-YjAfBySQv{haiE#;=zM!U~vcz@7yl$8eE{yVc<3KM}5Lb$w=4BII$$2t$p%D;q%yy?s@qCZ7M6 zI&H0%9xapzCs=QeUG-fx@(vBLX|MFVTnVZ^et|P|z~lNH)xsfwy zj^(YaG8YO(5fdBUe^^jFydqsC2mEJ*sPY|vi>?4k)kJb;Gl1|S4-toQsTL=Fv;NA-TR|HMxouE zro8Sx`%)ma5;umvjQ-De@U+6R6{}nrJCmC#+vdo01FFN0UK6(Qxjlp$i4n4%UF z4d$vC`QQny9plr_TWlX<#lSrY0*5s?bspp^tDXCO*Ab1jCJs>*#m<$hErPvO4j5Nm z$EJbCx_IxA6~qIT5;Dro=~Y#mO~xJ$ z>bk$pYa6yO|JiuL*h=)3dss1jc_DFJh7%IWZcXD$WK!KQOm9KeXzn0twUCUgR6UDT zjngt}&&^+Zys*30%#+5Tjs9NU)6DS@8S*+}V(1FmL?g35e)+1%n5^2GJx71TB`)K& z!g58r@^YPJ*#7m*8)pML5Dk4r-4|Rb@9p4YJUZ~51Od`R=*RWnNAPg+4o)F*MTnN$ zVrauB){c^x?GYCNrGyerIL_ ziwJuNo(k1GSxkS~Z@&Op+10HW7|^qY6^2#dj&^8lFiZ;(M6I9olzkG$CoJ~KWqUCj zJtqs7_BCKQP14G1?b!QFP23&4X*rXaw&PoP)L}a$yr2i1&6+2z64K7G+7^0S&Y}Z(*kidjm_DBxTFaJBsciW zEIM<1pYb0>$MoX0ZN`SX-0D7dxXoew#mUv1a#^}ChT?{cG}>H;k7yaEw3%b~D<`6V z_#vim@6h{rTvtSWM-wKD=9T^-Q-tIzMyR~VfRF6UWM>QWI0kRoA9`>?SU#cD_KA^W zWn!(4n!HvE8OUh047RJQ3N1tXo;g;Qo)YrpQNw#}L?TVX&fSG26}?#(7qV()zm5ZR z*=hqPA*IA0#=0uLqb|L39W^Vr6c0-L2<_u*zCetbZBF(rRp{L?$oYABmNZeRtM?Nc zbeyBGtetui30dpAy9)v&Jff~*|9;A7eETIe!iGN3HP1g)w0^tP&Bg})w|}m*^d$TN zkQVpiR=R*5mas4~c^=fGVBe|F=CjfStF8SD@dzK$=K-uK!kY#$v;hWVC0Noaj+5;6 z%RfV;>NWKtk_}}9qmyIi1ZPnl;~Rt~5=%BjbTL`Mp{emOHo9x?hMt1lpOrHZZWhPq zsUtdj#@~DQ#E^3jJdumKLQL&~v8_f#%f&M-l(fHD8+64?_sRJhIR^W$3-7QneL7Kz z6Qif;(-od~SZ?e*MS9MEHoxB)I0~ICCH-*mC00kI<+=S_=$p9;t&LMzPKXnoL#Oj{ zH${l3B1j<7c?nen3u`mQy5x0G-+W}tN9Di>4ev8NnsY08ea=J&78>8t1J56el6*@{ zO-(RzsoA2r2@dH}0xGRQ!VJ9ynGk(aNfeJZTzkX`*~{&hSw=HFP?VSFu`u&XnGP%sathjIP>}iL7oBF>?ip%!t#+@aHS$x46U~W0>~{_X#m-z8N^T zO|1{lElxOzb9UT~dm>7dUAHwC|+zYtm)eERa+A`MLgSB~j`7tfmnWoLA89NONN!!3p86j10X1m8*a5h_DtyHP>6s za!tE4j0*OfVi9^k6_7gbczAzcHdNsBwPby&GV#PGE{(FF8<+XitAfv%D|A!A=^ZGe#W zu#iVJz76n_hR`D&etaJrGp7`a@2Yw zPmEW8oW)($9;n}L=T3jABO zTsN&-Z;$j#zQ0N5@tGgd@|~;grC_BG-MJSrTFdIq2(=>D;DCn|5Th>^P3K?bzuarh z8&qi%V#JA-SHA5n0)XDdly~6Nm{thravZwZ|Jhgx8=Sf(Jf@pP~b8MRX@;f`4~8Jc8p%hAw0-5@A2b#ta!n36#ib4AJ%33sAJZQ~GoRjUmtjiW z&Z+3Y9KY6;tGB6?cgN|70)qtKq6Jx4fkOQOuD0LIttG#`vvZ6@z0V7T zd&qQ7UAV1pz`vhcet>0gQ#7b)yZo!aI-i+Lm999cE3Tc<1u)K9ss6Ou1u3@d){ur- zIJ$X@;btR;3VoB(rQ_=dPdCAQtdPdNua6)y?l}?Glb`aa*WzHI1o26X|ac zr+_`3|5Vt(Bw>ANMtZdcv|`{ilucm3N)8?U?1hMu!2=a2Ie5ir@RU@4c0~1U+@}N6BlvWVEg) z+jEYfORjd`m?~WwCC8d-5x9Li8C{9bp}by+Tri z>haAvO!BT+ojE%*QL+Twe%(rVw(lEm5)md&F)xFJa zgyG6b+xbnbP3G}#vG*^hBKQ^q^kC?8p0BlOEGnnU#j|}lKjssZ# zT+D2(EC`YHLu4~XePU_XAw=;MNSVA>Gn!SvOf6UF3X47#6bK0CmZ8);5O0Ve`|g+6 z4BbBUw7Fk-^A=O5jlRaJeVtXEnZ@eMALuEPY&d!yTbW*Tvtk(9@FCA z{qSd93AYx>Y5sowX&=E$W4V(DaVl9ICnKEE;E#uFpaxDkS3@%`gFjg3lbHx|lp z@zZ@@tP?p^@I%|r@dMDUD5`&_7v)5tf0ds;hsKMSJYY#%#QTVCJ^5;Ofz?AdTC_Dg zi%q3Iw;yq|f5YULsMprsiG7G?y+Z_sA)I)=$ic0f0gS(TZ+ADkr~pA0N&0XGujiM^3(5)bT6(5UerW@|MT~Z@;gbz1h%gt(P|SYS7GqQ#1!2w2^l7 z0)2dn17KK~Y!m^~PzLV>kB&$FhX^t7ozO4zUny`CMg20FE~U*E@#N(;S6Z-xJ*NHk zgJA4sO{Vdp20g>Ow3PL!?G{F09pnCY>zXO96ED9UTXm4?WsTd}CE9#%ylQ|{x3(6N z-#pT|n2N{V{WqcR6TAWy&E3(N(-%J!*dt|D-Y`7XYDmO_eu>kdH{bT#;6FQF=H6

11<0rQMErl^^RW6VDkLyRwzDiEwx%~XXD@(q^6a-M0P5&65P#%4S z(tkY%M=7I$^ANH6N=yR6_OAEImt%khhX5TM>xZN$wBKS>SIRq&hqc~3Q>#k`?JN0& zs%XW2m`Gid7W*fsT9m5md)(+sJeT&!J)b${8ZloIr2C?11^0)RHO#cGC+?VI;KymP zajf|^(~hSHhEKH4lQlLV&uTU}{=I2`uPswD3I(d{%`s4TgS8;O$Qd9D`rE_i^MJ(c77WqUpaEl7-Xw&N6b4+_?3o035Z% zEjzZcmGXy1YF;DB+Diu!E741AGC=%uOWY2)c<0>5`~-U~qq<0B{g+P%-tRUEBYXkle(-Y*`Y!B>rM0h8lAkITi!< z+&zE}<>SU7i0cUu?jT{y@z->vU`ZuFMN;k88+@Lke}?gYI5;|6*jjo0 z?+(fYrUih5j<=>RT;0@z&E>tbm92v%8{EsqlFilyZVsr?sMSLQdW(PSH(p6Kfy>V|X^4kG2U6}UlL^px;JDZykQ P1V~;+S-M=xB=A1~(RISW literal 5168 zcmdT|XH*mG(~p0e7eVDBN(n_#Pp}p4Q)mBNr`eg5$5jV~%!SqCj>#PWpep6ekuw|fUJQO8Vgdk!NdN%RaR2~=Ns3+u z08k150PP_F0LlUYE+KLn%{7@1*jUXz=r#cLgR3PNHmh9IQCbJJ^tIFF9P$ z+_Jp{lZExNoI_aY#_O?b!hHD7Ej%c=E^|J^L6^-UPJsQ@pE_RsI7RtE^> zg}!}PYRMc!w2^M{#f)z<@HL1i=f!w&ulpl-Bea-o(ri{N-YQk+!0vr&ZH^7wWl|I-VdOpis|cJ)OzFkKP%;&k$>`9}S&`&OyG)(Pth;Lmv|)`SUKb)Ga^xsubq8so zDNU^owmS962K=-BseN>;*lA2)#5AnXCBrW`!&vZIYB>-LEpoeB;bJLg7n(Pw+X^dk z%@|OBM#_z4=YI2i)|02}ex3)4=Cy9y40;FY?nx3rJ!%Y^X&^F$NOi3@8DCDB#bZP- z%;Kule(mj}OTr^HieqAe3bqiy?wx|WtuQ68nx6+Ye$(k=fh4z@?HBc7;q!)txwK;e zURK)4yJz}ft#t(K zoIx@^SnZ+LkHqSJZ8z%^!&6WEDm3bh)(F z1xpu~1(JDvzoR(WoB|rR&NrVl-CJlJHItpz@P>`DbXuge+ZL7ek7+FJE!QX6IP9%R z(uYJjy?YzBHQTT@{G{P45l%g>K)0#s?v@&NPt6&74@u|GOe??9zgdR0>(H&Hz-=O_ z2jj(UQ$}}^7QbLe7-Tme{7OgZHr%n7eKY7bqK4DQZP)ne^V>4+=>zJYi0-n-yi9W% zKAKf%st{a_%bd^|IE_}#?s`ODjygnYp+`?js+m8Yw7`=Z761T3UGO26sDpb9J4D3m=f zErCTRuPd;?W!Ss_O`KeW&)b6hGj$sT{Ad)7?+Hnf?TmAHN(@*$ zeD;eMEoQMxdJ!>b6)x)@UT@e*>#HV^XLu{d)o2=dmBaWw+}@{#IIN*rlnqYpZO&*% zoYMpx8@XFtb6UDv{R4$CtL`o$y0?tlKH$3!<*t9+2Sh%8+~7Mlb!lQHYRVj~9ZY0b zjZqBxJi7c*5{{`&-^lw~lb7{cN}d=X8GDa$LcbTbd~V)QLfBiFTOUz#nxrVjhd$nw zY^SXoeYD?pyP~otz!p!}02ks{eyx?pOE>v?I@yGr`0D0~R?RpEC4yxn)~7Yz>9!dQ z9l0f1NHIet%N!Qc#Hh2`4BE~**?n+_dPK<=sn@A^c1cs7YD+IOTn;eZ9Ga}46|>)2 zM^m~(mCJo~X|Ojk3mU@ed`qg`ACWluLF&ehIQR zP>?7}j@URD`>4J5-9b=fFWof3@?AcU8%dm(F?~#+KPQ0c6{4CJB{0ciEtT&(fezSP z{yO<36|{+Rk`eQV?Sp&$jlstAi{lrkL+SrfPri_n?HyCHr0t@J<&(D0=v9NXyOrVU zO89we{E&|tYzcB2OI2UH8x*nFJR(xBJ%(QqDrm($T=p=1l!xtxcI>th3c&FFf-60 z9^AP0_Xk^+@8p65CPTv0@mWFBjS^h3s~_SG9bd7Qfp2{y_BTGUQx}o1K@+LxQ;96M z%Pd|oERzR7yd;-V&VtA9;nrMl+Q=F;n!f2;UcuRUXk9}%JkO$La^d_5)u-Uoj-5*X*696R(P4<(rR1c+P3`dw@8}G{uQke zi+=d%Uw(~qJ?*HU99BN<)oDFTXudPGAilS+%gbVBvshm8PZrsFjg%erMKu~DM?U>=Mx@AlSUKKY(R5hZlwWQ1V@Zp8 z{%8(H=y<5WGqC&-tIQYzpB-Ivvaf(TlFK38-kO_cxor>4w;))rh(W1r6mqJJ13Axq z7;8(?Oo&UsKSO9GW8Y>EOX^fx!R#9xC0i75hMmO<8@+*Ew;i~cy5vNZDPb%AGeM)3 zIo*ZFKX^s(xNG0N1_Onv8GRlTD@Z?Lv^^O!#1yTv#ubks^JlT2mnt^2uD; z`W7;B--)0I4KcG9ZCOwdK5R&(s4Lnzu`@;G(tdgm_Mku?SLN z<#~~DQ(Aps1^15Pl3V5HPNu3cmYq_GbkD087NaX`2Vd|6N=wW8)pCKMgC)O-OFAv! zTeW6iZ0)op@vq>D*uA|hX5>%# zYvtea7aisqG*~IECLn2E(#(Ljnz~Knjz;k9!kUVW_Ghx4Xt+k-7cHIw&e7_o3is4r zDun$q<7JRZZ-=Jj9$V-foxFIa*Fs^3q--HQ=DSMAOO1-v&8b%DS;F#{ZB4&MdzYmf zv*Q#~bgal8I@NZYp(N8|#y)Zz zPaQJm#*#{^6j(Vf>hbf>&l5ERPT*3QF4OKL0f#!j3Qo4Dfzel6RpY{WSJVaLW^Y5| zSsFR#iO+b6rdodSVPP&(eCti^?fbFlAPz=v*j7wFt{_igdHJ7V1&SDw^!`TT%S5;~2#S9oL=cHTo_o=c&;jX!9o@O7jgs`u2gR6Nps-iE_hDO351%oJ+;n5L-q zqo}%fOryf4DENd3c9^N6eU_bP_2UYNfL1ULdl|#$_Dj&8wkGTqWaXzDxKGJ^h=`W2_! zcKs#7wJf(P^QwI;dB3cSgl;})^Ir@qFV#8xVDkOO@IbC!sAHwtX?#ljW%bI3&YrtW zpw8X2DeRa3VhIizXV+h+mvIZKQ^SU({$RL}lQ21N=33{Reo?xzjdbOx|AJ+yK3JMr zDdtACUIy)>v|9Co)gH62i!zJi?w!)acOGuap^}*z~4O)GYfW`nB_;Qk&yU(K+ zsVJYFZjIw*jziS%fE@}EeHV+(@WNdn28>lJmA4#~KN5{Wh z{hrJmTzoeB8FN5PHzkD4hJ>P*rVe+zZqmmapv_m=4$Dd%bBFA{eZ$>totXXhiJhZ2 zEC^;0|Cdw4BN!9s$x}iwYH^2!nXzyRkLf>C2g`9HC(t|H1-zlz>_-}Zyjx}|u}ZU} zPUCn@y+@hJZd=RFVI)AJ%eVqvFq%AGYU15bDKJ(4`7j0h4|mR;wxgo~9&WC5yo;W3 z9vC5Wq1}1t{C7;pV(QqUU5HP_bQ-U7x_kYa)7LD}sM)%N2_2X=&(FOfyZS_Q4F+15 z@pMBOUsfMdAj%hxB#SWSSU#9iuJ^v2YOx~ ztnOI^9?vq48EuQ<#eTxi(P6WPtuOYn{l8XZ2LP=k=KI2VT#qy;>O%;kyjykh$?DXh zirSBr+)c+q-)uYC`u-gGxx-Z7A#5;don!Z4aNQi#zYoXq06m{6X!5MsE{I+gif!C`)11n`HO9qCQi4m8B!5{cDPOpFYcg|kt!?2D z5>6;d5S3eQ-i$Q%$Qdh|XetK}f@Cz-K@f%O(mlSDh@BM$8O(VlN)`O>L}cjgKgA`p zg4;AeG7G?}zPQ+2pz_X95)B1ZMc*x2Vsj`RH>9>iw)nTKM>~dvCDi6j7Kx`A!p<~Z zD0k5&A;X1`m5pN#E3trSro@{kh?dB(Rj8ow&-8wf>UWI3xcVy|c)?s;h0E|;)at!e zqoVZTFaN-VZ%_7Z^X0v%sUt{bloI!6F3&LLorQya^|PH`jQ*5#$9tph`uUa9Og^>M zS7;qy)7m05ZJZo@j6BS4+J+NHyugz(-0%AJ5i-0)`DkVVUfDiIpiu0Y?P~Myv?&4`-_nR9*~>7( zkcV-PHs!qXTS{YMKBaa)#MoD&G1pWso@%X1xSrN72@@$&3j@l0=_Ai|mJ7w{d3clxUgX-a)nslKvsJGGQO64XSw7By zujQ(xJ~bF0sDA~cZ>GuSeP6HobvoJ2y{P@6Gf5LQtE|O#Yqii?CNc5U|C&`KYfQeO zs`SVPSTzmO-@)8W^?SvgZg2&kp{_1&Mc%yBs)$Q1c-MW3b+BWmZH?=9SF1+qlT3!# zzc;!0*Ca(>+l@l9K`)Ppn*YrddJU;(jdXQJx`E(9Zp;Osq@biItDq#Sq-LR{2vSxD zDXU5=D1sCeKt4}_|AWCVz}3q=^#5isQd7)lGQh$ttdS7s5HUnhfV-Ekn;0?_;U?yV zK*E_Lyqx)MuG4{5*RS`O_4XMoLI5n{XXM~#c*S{*(k`&@is?qHw7as1S6hhnekFhD k=<5J>aP&ss&o`6<&@S;Hx9_TEFjW8y^h|Zj?>@x*7ZvW8iU0rr diff --git a/packages/website/static/img/favicon/mstile-310x310.png b/packages/website/static/img/favicon/mstile-310x310.png index d27d66fffc5c90923e46f1c4b6391b1950ab745b..9f9f3bb9f43abed4cd49fbd4557cff0ae5cf3c04 100644 GIT binary patch literal 12525 zcmeHtXH=72v}QmliXe(~DGDeZX#$~(fPjef4t@gCq(lf!Ix0xj&;)7HYmgp72`WW; zClu*YLx<4IoP77r+&e$!|EyU9iC0=_&*Qp;UYFSO)?j z79{+UlY%E-)I+Ah$7NeZO+^T#EQaFr9}@6CyVVmNO$fy29t0Bj4gxs_j{=t=5cmTK zWc39E0{sGk(7UFfwPnBy(w7>lk0BR?-;9R5Sn!0*T}@M&Z1EZqJvnE}!%LnJh)}fJ zV?{l$@%2e>U%iFN^KD$38gbA&f!D+xtO~bmK7Z%o{HCmZvyXJVumnz2q-FlYp@{AT z6>{uYR1&OZYF0>6#7|rJD43Ru2xdzW!9b+wLC(pUR2vXrWSYaBWc_MGR5bk{phVOS zDO&p1b-}l{Hs&&z$^ZZPf5!r0cUs{P_9@z1UHbt(l?z8BdA?TSed;A#Ty;I~eXcwi z=P2_0TM?miaI(m6o@~AXz4eKlTTtOLWd~n5y$kjX?r{t>f# zJv-cLSC6~x+WC7=b4LP=g;TM!3iA^GwEm4UG$9La&p{-kdx*8jzhtl&)w3V4U=;(s zelpUtKMnp7SNGWdN5El7tIQhoGPR53Jn_39f%QLG{j;vO9P>+ls6xMJIZa74UxLh$ z*qQ}C*kYFDR;P&m#h}S1oXOn|MzVNr7U%=zb7_}C?3gVD+Tx2}-#q<@qgJTTKtb>? zqk0cFJX49MUPaZuwVNt;$4UiyDZq$U@9?>-TyCfGNWGMXMYrlrE`#B(qa^9`v!+NY zbeRmR%&fAJ$O`s*aoEFH5yJ+r9$RDxq%2ZYP=O_f&FM%!j_w`1fD|=q5KhiM0&6A7 z4-svn6L);EuA;^W+T~sjR!l8>quApBR%_J4NS{H)bUCCZVj#Hh$WLyY82DOxV;|U58T4b;wz&>(?x}^-SWRz5#J<&ex`WsKtA6al;P&qh+X5_4P)AK)!qBUN)Ux7{v(rHO#IqjbekmLGiO zR@SfYuOuaQRJt8#WBcoo1DiFn(>}rnGz3e0`U{23z-je8!np;ef7?c?P`YH{gf??Q z4;N<_o^rKit&uWnz4dyz#sPe~aCjeFuhhYa=E1=ebTe>AI@eZ`Lpr5h3nxP>ggTeF zM`}xikGm#TAXa2px}v?Nabs|u)@Qk0hZgfI=k|0{$8s^ER;tL1jHo_ZRIsUroO=bE zS$UecSIKEE^{wJ+kBd^YMzEZnyk+QvTs?y(Uh+Ljn5x7rG?mtKMg6roa0=JkA+2;#-$&?bduB;iqGH__4jkp_t`3*S*NLxx)Y*_brg!X$=UaSrk&e3^ zXsB%#Xr-CD+UawULW?-Ai=G=uwEBkgAJFgqn)}$@ls2A7RyuLJAM?62KfmX6W>`Da z92n&HCfEvbIdqPjoi=Mv~7?_@gjQesrn>PZ15^s5M30+zEr+?)|@G|zhKw>V+GAneRo7RDCl@dl}DI4EI| zr~db4cfVH1n3`k@A#1$nru@;n#}+p*Pe!dyMH=6lheGN?`oC$}_F8ePzu;FM$cZ$ba7jNAxiT;m=+eeW z&snc{^xoLO1Sxs$XE)kZs?nNS%w{>H-QK<}e5cyLq|!aq|0FMJJmC8{JS9v-g(iGy zu?s}BtzeYw^Gj9n@rH*VB0tpj+~D~|YHhcZ{j|zyxDOr|CaGruCfs&*xI9m%AKySH zz|_6-^NAO~Lg>4P+@)KO7&T$395Bw!WLA2RD^lGD}nc_^uVKu{d@@3)RZtR)D)bD+bKU+BkoWvezO06GaUp2YfRn zw|+AvJ4;`&WYYBsOiV^yKWh55xx8Z;@E(nip4OK*DZ5P*EUXG2K5>|bYDiYPd@cNn zTtj}lBx0tz9S8qPweq7)qw3W!MXdJEoc|VzAci+_G9p_-;*Et9x5#pG6vMR){V}m= zC+iC8ov^*NWaNFe)0f+55SYx{u7rLF3Oup|r#ew`KKPyJVKCQvh`%mx!Dk#l9yY?* zE$;m?7g`;&G8vW}vM}tkb0pw1yWn(n{0l2PiH+EIYv&$btRjSd?!e&E4D%?bTg>aV zgoF`BN_RY$xfryr1jj9$qh?a>j4rS1VVP1Hw0#}6u>D!fV35nEj*1x71Pm2dT;Jkn z?YqfK+Lo>6pGDE@SekAzpj<#%i)@q&9&tE#Oke4jchNce%!GxlHZw@0y_`4hg8R-c z3&sA;dV#+2?n)if?VW={x=`z*RA}?s$GckN6{YGiJ>%H{^^Hnp60+rvy4Men0m5MU z+D(zq5l(TlwdwSyw#soR?)Epk_8~$6cP2^PRil}RfIG{j zuzR4vuc3m*pv|dz}UsJfG{6dn3_PS7E)!-$)Sn5YOGlEKI&xslmXMmDGa8IFWU zP=VkkTwg2WWE;_40E)lKdsQ$*Y8$Q(=@Y{N^5NRY7Y(>TsEf+$9+gwcfdMq zrR6k|nUf}4pl#)QF4rPNX-T+P?bFUhiStXVCk0cT3Fi}59J$DoEW)EJVK!whkeq{x z4xzD&OU}L#Vp0IcH>unHM4v9RE^4q|jZDWIf|Wj*2P+-V<#52nQuB>F0mk{LIMZ+}xEksqGN*t)au;4sH>v9lG=aOnyW71LDWT^h6f@hp22yPUy|z$sPF?Z_qd z8*w(3cLXC6lS@P+!H*$?;OH-2R$ zXLC6YNjVKwIHC#TD}`q5|6Sos-?n)TCV<3kLdfrfB@13-G979+sWZ@NW_~9;Q2T3Q z6`k&`znfd^6EQArLOV1l!T%0w4+4Mu^k(s9+Mvqy?$Hdy!M=)5tQ-!2QV>xH?ZB{$Hc_1*ZA-*KjZvJeg<&}zcf(%@fsuS!_G9Z>Z-$mt&5O^tJm3`y-u>cF6hNKj6WyF zE5j7Kc#E99-)B$tk0wm_F1!ef%+Ag~dkrVo(}()qBBiFfMcza4?alj54|TdD-cx9-?NkB8rMuT1q#TOZgPx z6ff2LZ1W;i^&xor%0aHq^*3Qspqt1a^H)PPpwoc)JhKKSNB05#p$A@&I|eIi0;Utj zrzksG_u^rUr0UaeDE52S3jz&B0}yZzpk5AfH9)NpI0gl7Zo#ek8yw+G9Y!0$kh@JL zZnhV}SisVVhUi*I(mb=18lLH>f;N)FA_e0YZh$Y0XQG-0Kcrr$xLLI*(uQ#sF`vYE zuiwH72aaceH-)i9{#*s`fk{#vzx>^uT!3DF&U}mBYotlI)U$fTY#mBgKWnG|Jl)Tt zz)6~~(#iHcRXi3Ieap5hhBV4}pcj61=CRRlinN7YGPdsqlx9n=Ja#4FQ{(VI7aoUC z6cinCd$sYZmkN>Ra}9FoLn!UZ>m({VCi55d80|vKkQ1Asx6@b`X!gS9#&F^F{er#u zH!PBRXO^Ygj9Iywh~WYy4m^k;n< z&V|yXi9QHumt@?ApcwQMw}&g-I>lD1J@wJGGOwkm5)5%uZ6hlqWO9XWN$Su2NE<~@ zb-?bqJc0$~MKWl|S!cgBTT+-DdqG}WHE@QpES)~{jt%~SHZOI%tC6@l0N0(Ke>p|X zV70j-|4NYqxWN23RFf`mvID}}r?w{uU2!J`=6yQWoqV#oA7*=Occy4AftO_|x%y3? zt9oB8cN-5pyG;oeWP1$&Gr=)wv!yLW16d*N;*Pe##CW;a*ith7=Y8$YDv$X)lP9B4 z2}^Z;5wrlG3yc|9$V%I6hLK1YUc^ZiXL+Mw`=cWnl|JrU5;NEeLyPGGjNs_1&w-UP zTD;K`O+|D&Vvbmg!S@GZ-vA8=@#8i&TbKUEOZv~M&z5z+Ru-&%$Ca|*V^~=&rm)!D zfRb(L1D|}5gh$aq1WzR_ylU+QAMtf3!Yw+<>zX9|8`R(%E79M^)sH ze-b+#-Ntien@MLa=eSkFS4(0x9%{NKECwgyD#wcF?dbCzXC&qW!^=hq?$Ynhd{>EY zG$Afrdk=HfcFu3+QHiPJ9oIZ3hH;|m@`Bi8N;1c@o%PB zNq)CW_pALtODcS^pu4d;C17ly!w1&y(XiK1O*17NmzIz%?LVTiWL;If+sMW1C}v)+ z#7UD*Z+<8Dx!KH6ld#4cPCt-*DRoFrD>f}%(Jt*h+@(l=r)SpcUz7SKv^x6t`R$Uc zs}15ON8gs&UsrU6a%X2NQD*L3q zn8v~w#gLuwR@z={1Rzq8;WIr$1#-JBN|T@1JF3~V^~oIzDtqiQOp!e@&h|%z7Lx<` zua>FbhCW!z!xG2)N&)pHJW#YR$jj&tX`pzO2SOg0cUQ*2hl?i$XTU4>*8b=-4&Vs4 z#|KIW3FWmn>Qs7MhrY*xHm&{_Gkdup8)4 zfqyfLGDRxm9qZug6f5{zB~x71KuCvOLMGc{y6;b%6E&0Ldg(EJ{eD-W)U?zLl;S3R z3(2#~g}g3e13Vx-f_~%&u|ml2&B4yJP*&VJk=lF#@h;)n6Xv#xb1(JYJ5-TpO*!xZWaHBpZox2K z%f0|icHcSv(Vt~kon?v%0)#DXEE|No`=$!LAeOlbdG_3lTKrO*0PAa;w%Q&d&jIH9 zE7>EINIrOCf+_0lVYbrm8(XQ=^$;Bh{&q55BAMN1D<1i! z<=lt**op7buz~vzI{*%H2DXr6bMV+NsX2<2gW7%cb&2wH^ zsAH@k>Qq2>f9M_yf2l`<>6K2lN_sRH>8Ctr7**CelA}r5-^ZT*2=^WJr;LiNpnp&( zf#;%QfdHSz8xHImk7>T=R{Dl+H(YLg z|H7FW4p#8sq1Py!)JsD>TiYijc)ko%Uu>^Se+#x$Z(I7U`KE)f=>8`h z`4j$I^p8Wgo!~4)Q-h68h3BqXmQ{{4=R0@RY$jrsKUiW)Cs+@|D7-jYeOIAGHz`_3 zwEu|$r%ma8Nk1=&b3?Bqw7!{(l(>kC$K5LB6-3~(liFS;xkh{D875{ zzdBg7QPd-3v0sZb|Hz~AYO#Yvs>pmvVGiJ=E0*fN>=8yV8oY;3Z*DToQhw6gPblZ% zUg+t$r`-6a5B*Cu?+g>qS}=qPEQqFa=~}_}R#(X5(a0X>qPESIqDmFDI}Mv4cwN1W z%BnGlWHtLYW5)30^(}hIin%WAg>_37gj!A(or_CIfAwK64d4`ywL*6mS-RJyk~(MK zanz6&l8vXSOnT2_&D#`w8Ko+#KuU*c;BED0HYx>BwGcy97?)^D7OJU$mf{TsSHm2X z?9W)kLB9XNl4c>2su#g7m#)3Jq4~(Ccb0=+z@3;a1yR1l1F|4$SDhHHJ$}4(ul=C$ z(EBNOP~dRNdsFebfbTv`tUSHW5}B@=;W9 zD-hw$fn_K%264zo&dgIGaq_hKeEP!a^k6J{iQczxVRP+D=Mo!|e0_S9l;`$UObZ{E zo0}!!YQBjn*}9Bz*obRBmFZcRH!69{YM%G8rXh>cv;(t0T^zshrBNk^EfKptcrkxQ zxa<7pTT|9fNEOrZ(~Ho{|3ZMDUw1KelMK?605hocnRNTX>sl>!Gf5)kW6wU+#dO9D zEq|z+x+vA53C~=ptF*y={xmg+geze!Ki_98k{3vqPm#Wu;Q?Sm<(KueyIMMcMqA^0 z9!7>|r!12fCwQolh2Kx?=A>ngqyLd}Dr+FhdGO98^PFxvbM~RT4s&=XOz(1JdR4*< zK=od&15#rPA_T7S6NgkCv4h*&#pFWWQ7RJWnEAo6Mc1y5;Q-l~RD zg?fbct;l}uu#Lo(wnyZaq)4O;m&{6C^O)ty&QXcd{9cd6$A&1Va>bCL@0^ke&Q zD(9Gk5juJ*MDL%wkvb3ue?~5qoYj&&eXASF)aNxH>s}Qsp~5Ws=%0mGzwD;3zat~;brY}y5!;?a1q1)tUap2UD8wDQfO;Fgc~?Awp=-FY2LyFFE$1(auKU*G#!VVO1) zO$)Tx*PM5=#=wvR;fZgi68SYE+dhkGIpsPEuFpYRG3IXe^i}iDnN|Yk!t$ZQ0y0r^ z#JxKt?sZ0Sf=Dxwja!<>|JY)M-Tj}L`nkB1VTJ4OasN`%n)L%cj_hEToMVM!P+)_P z+Yg_i=g}7Gu*$CUt>Ogq`gqzL)$+y8)Am0p`T+OdC&28SdpIIB0DBd@Qqu@1Kk~txT}e8@YVR6GcTdL<%fg?f%T8wkly*dj2^!I!YWjTd`Ns ziRLZQwl;iaH&`CT+L#sNT%TE&CrG`2Elbrv;P6=zU~x_WK6$e+uO;!=R{>*UI5GV# zR$Be17tEOiNu|2v=i9Q^ySY5*eN}V(X_hh5fc!7~h7Y1@TtD`(FbYWF|X%rCGz>HbukX$?$T$aT;BQ|7_4}*iIvdQGKhG^vpU-N z`Pt^!W5C+J6%Se1Yku8h1g8F$fntAkIVx$c!Xusm_JOkjh8SROn=17I7qxBL_*3xL z1&>47L>(O!GG1EU|8&3U#yOEfmywjjiL6>L0A9^x6}~NhZtR-nK^_s9_%_L!6C#>G z#3gaMuI1LnK;p~?2#m*)Up;U7KM49#VsEEkC;VE5Ab26A_9O0ubDf~pY3uu^+muN) z^8?=A^L00r1<`du7~XO&3yj(rp%aWJ-|A?1?}^fW(!Nn#1w zPg(2f0HF1`3@5n%kl;w4vjJjXOzT#$q<)+S8a@3!ZkATRbbz#i5Rw>Aca1M75y79Q zdd@@ik)E_Lhv}f@;)_={F6OefGV;H}yg~EIh22n$WA+k9Lu$>`)Vz=3jl6`CKP*w* zam8QKcZ2^;o6H4|9<)>m#()0P{IzJ`&VE}E`!-y%;vbFL#rk@Ixd~wdiHgzNbML3& zkc`G^UQZJiCyqFkb!n?t%Mu+)$xb7_tqm|j_!43Ts!8)nv444;?#`KbdYN%irslH{m|phz!I53XYxk>_$!}zPV=L)9$raI zgRh)_s;h6O!N$K(c0ct-!!4ZAiDPi?Ng>IYcI`2J7+rK_7@x5fg%Co2Xfy5i+D^;i z@*Zns%obbvrc|N4OoMSm!baF}b;+;*-{R6!w=)*VtO`u=PkRTSuae5I%!Wy!HdU;PyceMMy+~g#E@f);jAKeaSDS zj*p&cX$-{EFtBkI*2s_M5i;*KxEr>N#qQhT-ckXuGjqu2CT&_64l#iHIzx3bdCn!0yePQoD$78Icts9r1 zs!n_BlTTys+Z5t>qRds*xCxn(>sl@&_1NmS9{hXa2Ahd{C${o*UzP5HOyEB$@cuc$ z+}4^_e5QL9e&Nt=;JS2?@O)O-Rgg&rQ&<+&?LrThy#3c(bzHlujf+rHYRy~! zN>7=p)@zhNJ<7D%y=DIEko)C`6EvHQO=uY8Gt5=5M2SbJFWSatOxuX-obcs_Xf`kKHf7W_ID2YGG z9*987i0S2@yW_akh`N03!fANQm%Rm}<(h!;{4+8uJN`YmsK(;LQ+F0(*PyxJcY}2= zJk;k46C5LlhT#clhq25cWNl@Hifs*?g)6ss+WpDktGLxHyzoQ1WArca^X!cx3z;QR zf-uJ|_~ePPxAJsiS#NERw&j_Y3$mT2u4uPCGN!Tn+YVDV;Drs}UB3qZ_`*!#7bU!p zoU5(X1!XB_z_Ns&95hdN{h{LY*YMcs5CcZay+I8IHa|kzl0fj;kkT_y^-+eTqVOdf`4uSH zjE>pu??Gs$ILp1vcowkvlBvUawfD5T^xCMR%v51>eY0Saf^y)L+hTKBxA4Yjv5CQ6 zHpty5V3~*3YX~HfjlS1l3EEHghKbg(8 zV(5Mp#!-g8_tUUS+=wRX5VtBi#cEz+R$vIxlrt9%y{|zjRTdCy{Qy zn`%bUi%H?JZ!KPNM!BbQ>2y>Z+HDj~(2^UaCXDI%2drImmxJ<*$wS=r%G1<_vTcQC zXhntk;==h4_|+!9mlw+u@A&?_7AYPL((XsJ)p0D!YTat;*c5Tp!)hgG-|_i!A)1x&pTl!KJjk)|1Aw)?A7X??sF zNgIwle#X3SEad%iYprU>g+l`9>Rya3pql8?E=7QKHlU(j-QS5Ali$FB;5Npd4HEX3 z@u#OH$w#Mck?*7bDQ4wQOW$?FNB?C!|0oMlMi6;rH??ktpi1`bNRp1lASU^hm_ zflyyxXqqRcnG{zb>cesYUFDbmzLy=rpQ>fbIuOg`$qlR0csh#P_>F zMa0rlJqTgcj)W35-*(D8jpHHES3NJLO9;5kOWMG;o}+f{H*Kn6WH_qf4UuZ#b1#I_3C;(QB%FdC=2!a6fK{waS6-*Z1_869$A| zWoIQ6BZ{;aTz@hSxV%h}N;&^SvUgX&e&rFs9YazbC{dJPv|<%Xl6XU)0fZvOe_Y>m zAm!Eem9SDXQlYOOxYhtxAoC5pcmSALVDGUrfE%nnHJ zXO=R9dBd(=e^A=S&I&B{fDg<^6H(HR*ee8ei0I*acD)wD@=G>^rZ$8M(6NmApY<8; zvBFT(({I#mYoQ{G{X2gr11w~1edBRr3NoPDP5V=P4JrzMM8;=V*ExC(>-{`HuILTp z^all<7YiMjs6T7a>;LbR?Ee3i{9kARcHVP&&rlD9ogUQ(Fg-4JWg~a%f81@LR&Q*; z2Snt7h=_o&h`U*f3HWA7Xt`rX{se7l*fGw?}?P!y`NZy^a}gP1*G%VtOd6aSnuXU_ERdFQ-$-(7y^_s+ZbzIWwt zXn^%9`&9q{SO=nzXaM*O`ZQNqSu7KcHM=e1Pbd9C`~cud!D>_N7Z!a}910x*0HiGd zaPDUSSg@GRNdX|k1pwqR0N{BW0M@6LwI10E0H1F>d@#)465!$K;pycW5Dt0Gw&ah4Nq0C+Gp7;ola+7T3X_A^{p*4)H~AHsPW(* z8AXNSHyv|w#lo|vDqefYga#@4vg~n`iB*=>sLRty_gvq)ZC^>7-QPLel;mm zz+&o(ZiyB0g$N9rki^w$O#*@b*%MVJk)M&yf88-VJ#EY*PfksJe9 zJB8y2r#_}8@zM#r-@E2&suh?ctjWobe4f6TBEDZPd)_cT*stmBQ8zwQ9mlYx58eMynz z;(4J!@G&`&o0iP`^@ivmYD_9M@cDW^|6|x8W_09uS*f(ATOAWMZZs|Bk|*2SX2@BB z?)US!*ollZemPYNJyxpKrv5(laSY37Tw*e{nM6TL^K`^9_RIF!%NK>^RGC<8I1<8S zF|~!iiLPJ!FgIr`z9p%m$!QgGozCR%JBsufLHaf!eV-$J?>&!5J!q+q&xq*IqkylN zmGDXVDL4T67jj#YWe+ST28Q@A7kzGTx5cp`8T%Fhmh}W8{lc=wRa|3v7|!8U8Y1g; za;E)TR!1$aB%)!(V-y16yT<~E;p%` zDJSj-=jw7tgPq~25yU$9r=kDDrDy>LUy6H6x_R{peWjk)2Ku!;mJfcm=9!Toe@q?1 z(_r!Ptp}h~^JMFp^xt0^I8D;V3UK#PmD|$T#ft5U^;&s2#I}C$G|=26W6(fCbm^XC zVK#}O%vfw7S@Vy?^1Qy6VIby<%2B-f3q}H1jeQKx+zo~FZB6n~ClW)ZZ7&>FRLtR= z>-Oo*B!;vx3r)(2Nn+TH-S%olLY3s4Q-+Ff>f8*Dk=n#&Y#zIG;yLq9j_fexPR5u{ zWpQw%MixH6Y$#SRK!~cX8c;AIpbE!D^Mkr~Y!`VS$){G{o%S~;Op`8Rr--;=K2V4p0TSfrb#(Se*mXAd{`LXOi55Mh|p`q zw)VYqD{g^KnxN?ItK6mE4ARMP-Nv<%5lxNbeHgQ`k2N4yu5I*dnP{)W z7L#a%gDc!w--1FhbLsApYG^#bs;$5FG&zJJ_Ai(f51P@KVMJXb<*V zR*X@vk)xmnqY-m8%47w%4k7xen9VHdJ&-GStM9C<_ z1qisat~D4+(FDo1uC_bRr5XpGeLC=)@?+bI$d>?kT$<6@`o1fLLHB~ut&+iqF+L;o z12B5Q;4gv~*xN1nM$k$cX@qMp2kDWPkj#;sE_h7AXaoZ|sd=&Wy&JBQ8uLxlemF@sO@B$ssKln!N6Q&(P=;lL!tayE zEPP-0>+F3x?_)2KM4UZ3=BFxarkU~wo!IMdgDUMp-(rU&&1#)i9ts86eB+P@gWr6QE*KBpPOF|x?5@f!KfY)~a^ooq z%%Y=TMn$^JK2=UkmTMB5nIi-7;{54%4u&N6V&SC_eRrPj)fu*;?U&{1WjFXcBBAa2 z9Y2)l2ZRIvr23S3rIJ_yvlYkB zz>R$B^B}eJ+OKD_(wLPi3$-<(`@H6e%mN>=tP$=#VjPiEGaCUh>p$Nl$uURIGu#sM9fabZ91Jwj01qIGU5E6SEL==wypb6 zPj8?I4Ols@-Wj*r*3mY&aIKZ?Cgiz2Z{n>SpM`DeVU51)?CspxxxD8b>R!-JK)!wr UaeluW#XV!Z diff --git a/packages/website/static/img/favicon/safari-pinned-tab.svg b/packages/website/static/img/favicon/safari-pinned-tab.svg new file mode 100644 index 00000000000..0d301134d71 --- /dev/null +++ b/packages/website/static/img/favicon/safari-pinned-tab.svg @@ -0,0 +1,28 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + + + diff --git a/packages/website/static/img/favicon/site.webmanifest b/packages/website/static/img/favicon/site.webmanifest index ba9eb3dcb7b..938ae458ef3 100644 --- a/packages/website/static/img/favicon/site.webmanifest +++ b/packages/website/static/img/favicon/site.webmanifest @@ -1,14 +1,19 @@ { - "name": "TypeScript ESLint", - "short_name": "TypeScript ESLint", + "background_color": "#443fd4", + "display": "standalone", "icons": [ { "src": "/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" } ], - "theme_color": "#443fd4", - "background_color": "#443fd4", - "display": "standalone" + "name": "typescript-eslint", + "short_name": "typescript-eslint", + "theme_color": "#443fd4" } diff --git a/packages/website/static/img/logo-twitter-card.png b/packages/website/static/img/logo-twitter-card.png index b63a382629910cdc065823e8b3f4d1cb1c366f44..7e276da9a3824770e7d6616fd7fe81a61675f0ef 100644 GIT binary patch literal 6779 zcmb7p2|U!@`>6CPk&uW`gA_4lF$|M6YeYg!NPW!=24gfc_N~R55F*Kv3fVFeLZ}Hv z$(t;p(qc&n*|Yu6X!*VO-uHg)@A`bkoadb9Jm)<7^PGvcFgN1k*~P=b!NGUfSl^O^ zW5Z=Ie#XrS{vY;*m4mM>UdAWr92~qt?9T>{v~*Dpj!kuBYdiyQb_7SDQj{Pf)rq9! zNAUvK92^?jeqIp4oy34SkzB~0n$iN+)=?Pln$o)L17UbG3z#02MuMp- zA>jlh5)H$uE1^^|7*(Vq42?u15l9sT3Jpi8;*b~|3Jd%7Ck;-c5uI_C`i8&G0+6P( zD}&*MLm+&8eU*Hbm8diq1WH|99f3q6&}cZofYbdw8IT{`lP>d{f*{OcP3icPon z_aY%INpz|=jX*N+A$c-nes3od{_OSgrg^M0KqMeY9wZ7tql42>e~vObY-aHXo6WEb znc}s+1L)un78w6Q`q%6HKAJ&x{*V0r7fklbI-kE$y@u>NnGAW{irBJK}14kC~UszjtZ+?n940wj_gkfKS zP3^EJodJ0gNNj3gMu`k45tNlN>I8KX9IK|H49B2I&Tusq5)w{QM`DQ>g1R$F9sPU% zQ5qSTHRSQnTe0a70Ub2T8HrJc)Zs`h0S(8fJEP(1PU=XwvKmnZs{)af30P-o7?FT8 zq|zu5&^DO@xsVWEo-XUN&j05uTU9t+i^H1IXeFdHY#p@lfEa94O=&ZT06S{+YucJj zAz3jXw$@OpDynD<8imDRP)HSJ>@N%(5{(XQl}!tUR6?t*vxL*5kst<@W=*AfXiBpW zfU%eVu}0E|7$mR>2^;~1grilg(P$h7xRf#+I2Q63su`6?cJ}`#DjJSNS)){ND#|!C z7LHW;4=V6yBE*3HpU7_Ozx+G<$ojkx{}!1V=Drw3P-D2qtG}I-cT3?B#JFv#DB%W zzg_pg^MIe%{l_gpc>Nb0|0`ENgSN%*002Xyl+f!8l0DfW;SZ1h5HFh@1Us<)R1M;P z*V_8pKZ5XYbP(Cu!#^nn0DqDa$rEUf22zf#)Yu>ghY;bgzOJ=j?|8<1Xj12{M-!pm zx;nLQX~!h4IK|wz5ok&D&f(@F%IRGmH#jEugv(kCt)!Q2_B!EP!Z+R5$=`CxulJdy zbp$SS@Y6&#YhBz#*`AIaZ2;BaDmVER%x++Q0!* zT!*-Me?vNW4vt?Ci<9FQBp|}U@e^Wi`vv_X0-#?+&N2^4c1I02ZJbWo*p$jofA5&7 zqAhhWOi$x<$AKqJnzH>TDPxsY3-$3#SgKsfNGO%?zJE9`0^$xGq1QBT2;+LJ>zF^7 z6*K#hTv(dA`a#Q`%uInBw1=i&63rHkzxMcjzEJdDYk$=_rVjnB-{~fc&!7Eh zl5Ef(U-Yv3D)DCC6iVhmaqeTo2tY|7(!BdaZnN~rX)&?$OdSPG#nx7bJ9(zRxjG zyR0ND@D(>N=hK|)t*OtJ)ELzf>AH9UQCxN8+N@(l*X_x#H)kXxpZiJ{|NX(`dL69z zW(scv*zkB~zw0--Cv%9F(IcU|1KcQ;p{vJd?;BHsSq-&0#BD6j@_dyZ$LPb|aoje0 zg`I_GF0G}@CU?aKnqa&eq-5$Nmv!+s4v1@aUgUc3km5b=SlFj|912?+kwonoavj)+ zaLgJN^+`I!&1-!qtFJg58#;98UFksY?ikz3n9ZAv5=&B@-EZCdkZdn;2FR4hCo=G( zo8F`TMM`8#!RY3omC4v*z0Gw6+ZH0@qdI-(wkDZ!^X?dCwZ)zb?)$9W^888#pS30V zWP-Kmo4kcFqHI+dQ|Cl)jl_ncvl>+LP~)jxCuPuY&rJClmb|CL+KDmqKV7G{Xe=r(L5Q6J9;&tUuZ3%w{{1iYv_T4 zHDC*doqv6>BPeOOf#k4kFs{@R2hGne4J~fzanl+JKeek_DU1s}F?**{A2_$wYbD`M8{Lhqi)Ii*Pa1Nnf0&ye%}#R%r3(1!ZOJswIH zZZ&Q(HWh_Iy>EWZ=jHJ5JzEYNlR9`@LO^8Ud4|zAkBV2lPl<}3txo*CYNxIPmPJEj zgPZPcgU)H=H#<-fZHe>Y%TH@Y_P^}(W^4}5K40pja*yiK>R3c2mn8*q^9Bw1(K5zn zW5m-o>ye|X10v?L3KDBQwpB$kA7Q^<-$c@A5vb9^h9O#oMd5{&JDa~0EnD{L%P3BU z0}Chl&kr@Z1clZ%f8(C2CC0nV%so-9`ZmM8l5mcj_n~a%1K%H<`ThMd{ayn{D1o-3 zCvm0Q9=vq)TzFc8o*8;DeJ4XhA3y12_!cce!dI55d5BM{TpxD|IWRSumRiKOHSTgO zH?QNP*v-!JRJ)lpiB2AttC-%g68(wLB_Sgqg(K08U(?02KCbz6mghc}8sZB5oJ@6c_y0fy;YKRem`S&Yg_bl9lV`L*9%{U z?y(^O=-elX9}+8IK= z;&?+6%2!krG9{0HcfUUtF2Z6`Z%8pLqN2Sg_~(s@3tr3gOyX z4R>>gh$!HbrmBO~_f(B6C(FCuu?$EvKmI{sDu|W}4sv(DBo(?`-2vq|`^tADSO+oX zafw=g`#zl9-Ch{eUb$P*-9xNBm#Kd{($k7Rj4M=X6>==QWz5UkPL~J|QvvZP%=<48 z^&0+aS?ZUuX}xz!BgGVdMtnNmJWdT(WHDTKSFb7h(hg{ZW-XlZ?&DmEm~G3r2p^CV zi0lK(EFMzBA$hkPT^ZK)q@60^vpvlwYaxC2jn%tPp?TargEsZIOBY!Ty~x?*UwQHN zLnJoT>L|V^T+=e-qxR0x!mpd}?^6^6>F07Mw*rQ&+INZ_*_n6WQ;r+sKcOgX+|S2% zpDZu_65be=Sg|rci_tagxZ8fqo6IXi8 zw3Tpuj6Wxg>7?}{p}XKLle3u}q%zvJ@<7qy!(sKqy|rDOOL*V0rs# zNw4q-W>Xq9X`EZ(f#AgQLP;&l3@^5rw3}sj%^KgYCc2BY9V)t)IL)nq2iZtyKIOoC zz+W*;kgI_8T1oWc0xBwsUkh@w?CNq(uN$0kK6O`+x?Lo5b@G$r%dy5EAWJ=W|8c<% z|5}=CeU5oPMWNE}N+9;UDgKjf>vz_>*D|jwLL6=IT{~~H(moY!f+-f$zcBb%0WI;^ zw1-)FMSaK96S^fYu|D}ov3P9u9Sq%($=V(?6-(XJPkSU6$funXE}NO~!U(S$eQ4O= zf-OG8SVP)8^z%9Os4#D(M*Sg~q8qo%T>OBgu>!UQd-}fUl{l3LrzKn1TH}>>ezjhB z&jFpYOjomwWHu4Rcd2JNrBz~HFGa2Zfz5@N&z=@*l^3uPAe7>Q1K>~e@q{S;&^emk zi%50HZwTep67fY6&0^OpZ*-X?;~$a=g53krqI=o zt?`BOMQ!FbiGAD(e~I}7h!nlpb`&BFcq7bS>{*&>2yWUL(rx?t^!3T3^>ZQ4^{qLQ zkU_)On!w0rN|t?ySPvrF?Lwxon z{Md`c{DLf?izF>E7;wswtLNFubf)#D-eXtVve-Fn2^d6 zwE03`=u1PM*lt(!vhv}m=z!VPo+vdj)k_20yM|T_(PB_I7w}#6Gh)!a$YiUx3j1Vw z^WRFxFdHtG7lfQWVu=698nkcyI1T^USySA;$EUMGI=XKh%`^I?$Brfng$shzct7x?*uf9PY2mIGltMyZaZP3Y5#XGRDZooDQM<>)5AN*Bd}LVwRL-~ z6w8P96G1(D{XykSZ>^10jCAAVULMm|BE+-I`*9X$ox^iDohm*t0wTsd`~H6R;qRz- zA5%y!C#9e>6p-HzuBdj4uXb5%+W_Uq_p{Q3i-m;rHnA7#wU9E3^rZYo{ zZ7NrU=EY>Y)c6(5)8`ijnlnF3kaX}!K|LSe4wDNd)DF{QiE_j=WO zY!fJ664Sj%H;z{vTvJh!1kp`JT}e9IFy=;M*Xqdto#^cFh}M)H)p z%J|lC?#^)S90z4f?3&!smU7)- zPi#*V^F!l8DR$W*h*DZom%hvrKrPuzz8IDSc8=Pns=LB=x0}!NTYmq~D3BsUo zo)p8zbjmv*NFhHMXI4`Abi=sb%b4&BRgzg}NyP>gFIgwJx zH@dWCmx*3SyYt$Ban-|HGt(I&G=5Oxg0Ah#JSDx#!gq4?YuvXRS-M-d#_c_YGH4hX zl+0QP9gclag^gl9LfG|OQ^_Bn3mrsAB?ZvGPVC11~eQWrY`-k)$8ewEe2WIuIBYL zvP{{T64&0g+O+wE(>~K&DaFf??Ixq9b=?+oGNAj*9d`Y+Eu*wIO>QwF_Uf78V+Yw? ziTPYsf#vYHaH)TN>CFmli=(|=BLb$@gB69DF`a!e8drdXVTcUPCu;!+Jr$SMi(MJj zc&fOiclKV9+qRzN4}oiyKTQ`*-j_=w?qqQ;F0R@oxlzC474g@Cm!Ru7aeMW~T6X8L zxItS}mx~z2)$)PnFCt&RQBw<)l&9q^nLK5RT+nhhmDW{E~iIk<1b$6aHs<8MSY945bt;Qpyj;Z2TS&pK%wIdx<21=?f9+YL_Z_ zRj_E=Ufy!r_rc-);5f^EjGA7u%r+|zk9YnZ-=-GoOOtJ#j)m5It@``f2%io78&o5`W|%qq^z2f?x2; zUAla36h8Qo_8jOz(>CFpWfUzEK&j5P+!|V4>h0MQTm0(P{w!6RL4~2#Wb?H506&ZK zxS$AlmM9VAio)Ml-LDdO-btm&tq`x_HcYRpQY`E@90eUlflMGDX{2=Obz+{leQrv2 z@M?vFjnW-ZoWoA-pB|-t08G)VibBC1y>In(F)#JPH_;_3XZ5b@j0* zC>#g2vd-&#pXHB7C19set?7aye@WClDYh_*u(${kwS6DE+}GKt@nTH>u!FchUO>W6 zY=4aRvmpuuQ&j0FhfKDL@@@RSKo zDScY=SP!4{0$~la=rs#sw|!@|`@1ex2wG(Cx}9F$eXUTc>pam8LcYg`LB5*_s93cD z{nZND6Gf;I(JhX~llC7;W*(yHO(%}=jmA_fb8>HP1o=#fYI|Sl@7Ug@5{~%~dA>~8-CG?O{|+-ZiB4bN6+cF(#ScH(x@uZqNpEAnGsp17S=>w*mg=(?{JwbfeXcvJp?7{|8)h=fFk7{BcsMn= zR%YqSt$1T#yCFA{L)214FzHPW)<0{|sy>eOn}>_>6Ay;m*K?0!h7}Q{4wIUF_pVLi z(&iMyZZHT-gwsaf*smEWRY-`t(llF)d+XE-7u+yxPOD*0w^8UVM-**z4<&lsx*FGJ znugzWOxAQ5=#@&w=5crYj&^}kTi^#CX5rI$Zfb?yE1KT;N1F#Hi`5p?nvta%nY1JO zm(8pX3`oBd;J!#K?9G~%9$)pN=B_AZWK_HGDytwj+X@nY!QU3dr&~J@p(T8pXUo8L zqZJZ!QguPQ&vg{nqUn4~F)>v*H~NcSc934q2Z2N8 zuq{3G*Sz=I2HsCN;PzXnVY|B3#twyGP1wRxZpS_Nakx_6Br~?gbERS&+cZa8Ay^>R z;6qTcC985Z^GM=Q`boY8i`4Z5T95aRDpVx4DsH?2# zR!Bv=*eYIDEO{mMW$j0r=FZoB;{*xL$+s63yBk!>o=C>4ZM?h0cB0IjCYREkjG8`N zt7vB%92+aJTpgC$j$gC9=8D+ec;pf8csOCU%cuTK5ZCkU=CY=B!CsmMt+2O-ueRm- z;8zrQN0Y!_jkXS!p{+Tb)4XqKX7m4 zdvQ+=?mkbbZ4IyRBo~}yCT8K^Uaa~ispni4P{B!+9U&81d6RRzS!^$N3 z?{*bg9(+M-yrbo!T|qGY%jui1ze$tURLcu{zNc{XG79WV=oZXfp>*W9B-BRJqBioh z4StDOEU@%0?TuiATDsXUO4S32;_SVSks6m}3%q;e)ruxXaziv*8aqptLX~HWL}PE1 zMsO>@3m8~s*yA784PfgJ(@JbIVl&t<4DaYHS0FdGYoi3EIj(+8bF;0^&cMX6qj)uX zw?#b5&rh)CQaX7@J^sjVVMkl=Sr0>7y+mywqmg0YrxzU?Urf1^(UbAIAUvryCATDf zV%c~PjSL-6_{`3Sts1S!C_bu`YFTwT*>`vVvfOUIJ`y}~(86d+`ZUM+a)OrE%Ik~T z4N<+sk09zX@Gw!z7hi{CQ(v4XSY<8K;O`7(?@0@x8MPs_xYFIDyU5lThh4WKuQ?OQ(~j+ITzp%cqGfN%adAHhAgdZ!#a1eF(rihCCXP(ZFQ)B;WU1u5y1N z{7STxfxD>_!>=Sg;(fV`Q715A=H&WSf$+BEF!8q3(OVqM3s1kg$~xpudh%?Ous?hA zDkZl-UqOG%3OocWY3~mpd7` z`6wOx;P%PI201ySO`QW}3%8mbH-WkV(XYx1a$Z$l4xW!2IAsV)A=L>5Hd9ijX$Z6t z)e_t5!6K#fQDz_c#al^VlU`|K-!6U#Fzkzuy?sRZcrO2y9dTe!*1=R&46+Xm0& z%}>hXg(#Isrm+sPZVFh%-VC{9jK6dx@R(-MH&I>6Tvd8i7G$yL*s0N<0QyqQSIH-W3>ckT3cOT94e~5J} z6|zb8(|=8~#<#tct#x-n|G_gv+)~79#uO!RMx6Y$; zh6zXf9p)b1`1G*cRaehx`^CDLp`H*tw*Atz;+j^^`I~c;ys1~1gkLppz&;=9zhwEK zVvxoJmko9s!4Gw+HyR0!k*s@;AY$iSt0mvM7Suan4m&}G)VCCFX0>hlUTKBekMtL| zZLo+`oX>kP-Mj-FT_0kkq|_9or2agq0_W2d?`VX4t2pyplYVQNJCv?bvr#W#deroe z1MGA!Bwx|%yKvQPktg$AXXA_ruxV+De47^-R#rq=6ae1Cn_ZgET!P#DpAADH;GZHm8w5mG zMGY)v?}P^Paq@9;amcu1TzMd(WMB~|a|_sgY1v;8z!L&ug~K_(pinnAH%>QRPJ1Uy zD7Ub%FqDf2%EQ9}NN_lNU~x!y4y^OFGl)Mhq|weOCyWCQV~+)&VIs}!U2q5p1egc^ zX`h{gippQ`Sm$3X0DM5*kq%I9PA;gO9rSk%XPk^H0P@SA|5d|T6KKGo_tDPwE>0-4 zj4K+8yY@STIqENc2Nx&XpYE8WplDmP9U$rqtjhh5CFK-U)c(>qqrehl=kQYtAp0MZ zIE=;LWc|aovzedn{B8)K{uk~)r2q8&r!XL;q5_k)N4cDtryz}hoUIQtw?|>jVLxxp zc##%pb8a&ZUI9Ta4nA`W6o(MM5I={xxgg3ykc-QVpU>hqC#!w0sue90cT)RPG}^~-bvHm-WCBl zvk82r`7^)4B7a0h9^(v1c$}sDucX&NJO1(X#~!f7{G0-Vf95R=iTYy^XQV6I{O3Y| z-XBvaD!Enx|G3U~u#&`)o`xBuXh?VrZDS)tE};sSOzmjDNkfF?H&j9UQ4 z4HR~67#9}=`paYJ*}neMWfAEAAVuV-z;A^B(EDQyC@?_1g8o&oevx*@H3ct_>YAD&8~mx`i~g+kA(ltuK#azk^SBBps~O)$PH*{@*rXD zKr=*SrX(i~Iz9V7Z^(%OMo1mx^_)Q`;eHn|{J+?J@QQg<)OMP|O zwVq!W<`w4M_er}IdEqIqWeT_mEoMp z^{XI|p)vI)2t)w^gFstw;D?$TXwmWhy!iQnKqMrf-!9_fAP^xT=(h_P(89+D{dV~$ z#@W+9F@UH43j;v>FJJ&x{pQOrtA6w4msP*{^2@W|eEEOG*kEJz|1NDi!;lqG%Ki?b zclV^Er@{Na$#jRWsL#Nh&bSEdrY>#SwOC$$MRoNSMTPSk`n6g!GYKaR^LvhwwY}T9 zwY3^XsSSC>VmX1nBKcipRHv8m#890LGxF(Tg%0|jiIwZjz3;r=Ku>e@WFF`Vv|k#dnX!HF+0v~z|G8&j~}SKnlO()l{c^-98t*W+(Hrijyt zOGFf=RM(qzM&xW~0;hRY=`0dqR~I?z@2LM+W9)oRa3r$ELVinvlO3%&@_BYMR%$c` za{OhVv+kcXK|^!m_2f}2vfo=N=90XhUvonCyfph_ zGL6rvh{YsBPJXsD&vOu-fARc62T|LPSGV2rH@k(2=r*{&yt$m+*VoE-?740s2 zx4l6c{hFy8R{KwB6T<00)1R5&aiPscDs4pvi{0h#D>+v+?r*;w+kenX@2e^&7kSmU z;NGs!9OEWP+0Pl=`tf1tOb|zY{X`)GDoC|=XyTKrPD=Ws_Qv}6TU%o8#YP6{h!2JK zc=!P?<{cOXrw8LL?@=uu!r_OSM_X(+Za%W^8cY|3&f#2bIx30Q?vW%?2fyYry=Pg) zdaI;Yu5E7ru=W1oj(|;PRRk@SpC9<+(ZXrC7qO-0-=YG@NBTl0yqz1#qn}$bOk&6gyAqAHT82}%J@|DHIPq$lrAF|?*#M;5I&aV zr>*Bxfl5W;_kkhPfWTZ*7ARyo&x?DjM{OAHhFb>W6B4$*{iHZo^yQu+W&bXV3hL$A zkc5kv<=U}awh2pNFqteH>}KK0S;<68AD1=;fsmg0cn&l?)1 z(R(~GF|FlDR1iSD)$&D;UZp2;mZ{9nX#J{|7a6nMwb%m^0RdoKp8bx9=P6>{ zcpHI~d^l8~qO&qQ?ca=HkF#cv|G!jh>xa+&!f91TWuktevdFRCroADoW<;&6P zm*Ejnfcrj+lVT}@1~+i&#sPE?jfP3-izaSn=?2LFJEz3Ew^ge zn0245;tM6ea8_zQ^-a8#Bg+eZfaqZv8~YK~>qGa{N)n%%I?;HPrN?@(i@m>~7bq}e z`+a9xdNVWi%7C5*Tz9C5Ki@{VOf)*WB^mCUdE%v-eX^hpCm;lLNB#Q*>`p$hxwvd6 zTckoD0o$M5C7siZF+T?9_rP1Zy5-|;wi3*t7oXvxnt2EEGyy6uZmL+pZ^XWbtuXee`Gi{$*iNSLtaYd8 z&j6UP7#tnVDSWoF-CR1CJ8{I}~`To|SP+wQJ#@5>iifE2OVeLrkazR^Q=yf@mPO{!4antdz1Cu-0d=?4UWcjeo+{xu_&WWhSa zUQy>RI#x#^+gk4_c_Lykc;jMmV_$(s+4~9~yVSgVcreartwvDcl+S-f8qjU}?i#9e zTD$kEvEk^U;ttj1x5oGJIb4iqfrmYKCB=00P)(`PMR~kx@bG9u+d{kgJ2ngrJ`1~+ z-pnT@F`I#mVy)%Pj%7`g>4mb6G(_;7K_CoGi;la?g~yy6wPpA7wYBr}y5_b!aOS$( zkMggbrIo~UAzfGP-6?Nns^WtCT5*D^)dqa4wKTR4KX<0RUS0gOuc4|PEH@(JYOzTB zeEtXl9tjEl)A7lCZ!d##cZsa2?{DfVWpni6o_5jQ0uY;>U|w5$C>HBO)#dXht~;3| z0$f1uFByB5eA);J|D3iA!fV+Geb-W27R1pT-NJeoDBmNufn<=1N0mI_(}05T1CSX- z*-Gg3%1fmM-04VTK%_aRKs#*h#NtiVB*re9m!`cR$F{StFZ)GtIksM z8#jX4`1zGrhJBWPxLCbfxA;ks`bfI)HzujO^_ioxSuvOyHO9{>Dbg$!fX!dJ!}`AzqWBMYq7$BU zc({6noNatFvsc5zP*!ef+On4vdfHO0!bHqKUcZS=xsBN0Vm!;|%=r@|^F;^U3ZIw2 z>#zZico!f;O2%!~RBaJrUjme-y@s|-HScxemlepDQb~FQO#*LbURzHR1sC;f_9$1? z2zFQv*|kqnEJJ-=d4XWJh)=@qXhYY!1`_PUxy?NU45F@1C%$-OqN-Ld;jEG>R8i5FF0I#IW-Fd#Nz=bXDQC!0>GvPP6Z*mW2g~ZiLUpN8pe&~v+&%fnU9^S zE-&|XE-ate@JYtT(&gcTwFI8+MyB{|_`n0H0QI4v4`-!9_!aHaaa>|RpX)Di~oSgQ6mW)dg{YXv~d%*QM-O|RUYPx6g98jHxn7mS9 zTN0+}Onal`mh-MZc8q`obYL19%!P>;f8;zaR1%x+?*;>>k|~Gm7Y66<Y9l^j0t^(#%9Vl^*gycci z%LbiuRD)JZo0ulU(`4(&wWeL*ZA?NE)Ri`=QtOPZF>Z>{aIIf`Q;Cm7;1Pe+HbS5Y0mKyi>(xO^yjw*k7;R4W&xM& zI=8Wb4#N>Oli?sP|wbMGiiR8%-9-Y23sizR)r0-y2gDP9mZH{z;Vmp=&jD9GHC JE|N42_&+%mVGIBO diff --git a/packages/website/static/img/logo.png b/packages/website/static/img/logo.png index f6022cf5129e6e242e6962194e12af0a1f1f1beb..0d7ce9aee1a20153ef038c227f491e1148bda8ec 100644 GIT binary patch literal 23462 zcmcG!1yJ0)al$glFHpRp32A0 zeXyS42~axJE#ZJwhb32uXN*MoWA=gS1M5XB0C_Xu135s0iCK0uCJGIS@`JYKeLm!_hfKsVK8n`$@Jv`gZsW=%)q$IqAJ4IJxyPrp2 z;N!_RMp^?#J1oq7n+#Z`TDWv@amrWu+-v;`Nd8QvF+KeVMlqw zlm0f`FZ!7)A$pw+m_WI;q+r6k$O8hfxLI_OL@YE7o>BCZ%RS^<`f*>4Q@SQ};*tQC ze>msMXI!P8AP92;A&vZ5y2+Ol+-{iwyk~ADc$XaXs{qz&0GFi&Q#b5g4oMgU2@@8( zhrb(^A`aQq5K9w5Jpe`tjw_Hc2m1uzYWQXm5d-1|hRcAn=#iL4tqf`t1|syZv!Ja9 zentvB$9(%;WH}CKilQZkfrdUjzc=Sja(`Fvv1+$VQyGQPa{O$!1XxIRffZEcuAv{YVtq&B2;-C z%s7YC$mw$iV|%>ZI}wt3cQMA zZL)^cW#IDRa(ewr!`ZQ+OSy~rA;Zj4rL*M0z3PK%Y)N}bh{_wejy%+3?L)~!rumB5 zj(ooFMOFCuH1lQCd{jvDme1ustn={l9tWvRk{wGOOB}ylR7V8JG>@<)d`RFc6jwGj|EiWW zZ)UT&JfLmcG12Pq&Mj?)W2AoBirbEs%Ql@j{X@E+PN-eVsr8E63jVBoA&vY7M~C+V zKA%M!TANo}+s(V1_cvvye5VFHnmp&krNosy$|SHP8oX|xPM2CYY>=IM>zfY1Rz`Vr%%n94B^>*5c_NiBbgoQ-y&$`JLqcxv3^;Qzc$Iai{S*L#8&&+R#VqIb- zV`~e}ihk zXOQYpcE%^<-nHjP^Mv(E{wn&K1&D?$LPjBo0g?f|-G$v-Eb>5{8lG*xe9zt9 zVFQaTbBW2)v}@W?L2E5lcMe7`KNpj$6@rbF?Uc3}yqZ6Ym7w`%9!GS?v+d^{+3mN; zvpC5#x^i4EBc`w=aNiwT=v-w^P z*|>NFTUhULxC3>@NMyG1Rg2IrpFDItr|txwlwabyRg@?^GLBNU;~&I-(XBENV|zx9 zicbyrZGXBLtKY0Au{xWfoN+Jmp9r6_9HBD(U_qK}DLq47g#U|Kvpq-AnvpT?BVH@> zYAsk3@8e1myxGLW(Qsj2-w*1RkS9b>{}>GgwaG^b$4Cq&bpr-1AFGJ@cvo4{1BCsT zcHFwerh1#yty;CQhi`S?7Rn*&`Q^W~t=ifA_YC!w*0a>|)eg)2bnKd1O|R2AFKl=( zum4>BLG(j<$Sn~r5LO2}R}3wa2pRj~zAn~HI_eFyGKW0%qDr_)m`P;+y!>f!H}X>S zC%e;LdTm# zT+6Ggr?8gy(ERW_TT6)hWM)aN{`k^<#C{;FSfGeVm+0L)SE9)D%@3Zl)9XCm-naK> z$Ciy&l~zXexTlDZdym;K@lRvXu(^n>7_}H&WNZSeYoBZwZG)DR>(QGcm*0{^kobm) zVYs_`xir35KOX<443#R4u_k2{l;lnJKRLcw-Jzt(r^(93%_9Dlw&8lK+FN2%WRdxs z2ghrFb*a0qsC8*=Xv#B-&uRVnX$!R+^%P%^sZr0VbM7Ji(xF0tNx<%#9<%#Z>$Tg> z#4kR#fydF2vKNgh{TbiANle= z9&WN9*8Mnu_b+|bdhXpG$nElZY30aZ;lES9`Ey)$UDaT4=C^ZIXhY?++p{v>ly`=* zVbis78E~EZX!0~Plou(uC6wgf__TUYeKpomm1@xSsfF$L9W5jWrKk|*93>N{I07*3 z1tgz%;Zk`$&;z9T(BC;c+5INP#|IoK05B5}g$bB2;kX%zZF}MrTiZ7b6cwduPi3KoB=`HgU27yI48clmA6DGInrv z5uku_`cDz;!2gD|cm9`}pbBI5Fak5PGO_#>=|2eN<^T7jc6R@!c6O0)gO2hqe*a5g zXH`$I8MCsPvxBRXiJ63(nY|0;e+*`7^6$Q2S0~$lNNQ@rY-Vd_2PJccGRFGvp}>|7 zE)LF?4*!iD|8D-bG+}#2Pahr2iyNJl+u5okh8Hev60it8<|+y|HY;I%hSKQ zn28&?m1CnqllCnF0dFAK{*N#&uQU~1%I^#3O2=H+DPW###Q z5IdM!nS1_ENaf{uW$c|@jOz`yA0p2CQyuj>xdU*%5BOHGUjAt=V38p z|%$ULU78Ki0hYk*9OWMjAYFp2LO&}FB$A6V>5i?Zhue;Jx46xB_j3la2 zrSaF-3h2VWQ>dA4?`aG!N{iwOYrr*k_n&ORxe?@#an z9M;=C5jQ8&xz7OYo|pS15N>Dt0ygd=#4d- z&pm3HDtpBL_}E!1WSyX_g7Ovu_tXp=TOH z`Oh6km%7{c&5h(&OBoyLmwXIebvN9DHvS1OdKc%fFQ2Jm2ua%ljvPD~-b~zHf^64; za~nVxrKxB2wO8S_O66GY(nrgA7sAnpJr z#B)Nk*wUe~`BQyYR7;T=Hqx>21BvC!l7-;cEJyldL8-MSU;DdDm|pSW@~S%Dm_7Dk zUo(#lw1niT#MH;156@<&f)$<><;!LELh3ite+ax0H%Wv;VL_j@T58v}5;j~!LlupU zv`uH)$&W#BR{9J~LzE1t$(J24R*on$FT@L4aEW=){pYdw@c0x40iIjC$Z)`BjoOq( z@k&Am>^TPc8n9lSW^ko2gknZfdrWQ41^zpp%HW8#&iEXK@l))NuhP71hA+ zO}tdStO(;9BhhT}RYNAe?NF}(<~(QDF6eDlA?a0wP|g+L#Tf=qSE>qw6g(8dr#ec_ z+nZcKgz2-97nwm|pX_r-M;`S)2M+ck`NN+Xx_G`@|JeHc$`-bD&=8QnYIZCz}mJxcVR%PnGS9!HF z_f~fR#@JA19>&YosGrH0O$Dl2T9x4-ecT~uXo&4Z1@)^b9+uO26jGpObNM7>=ZhjQ zVR}MczMSYECRG*=EGT zV8sTbA(Pw87ABoE=KH|WU*(vQ>v%FqI$q|Vu&g&;cXnH#c13jpR3vs-jverX2>v;u z^-Qud;fouME@+z}6K_ci^FHYhte+=<%R?36k+R?xZ6$Gn73X87wb>&P9xDN&sUZ4m zbdQJhg_Q6{_BguM?)QmrP26}b^l~z83v08Wv#}Sj!hFm36yaTQX%y_@zy~n;djH`| z7*HJP{y6u-oQ104fjG@ZEPPD<197rlTjrtPaW7vLo;R=xTXgM1cDzWcLS%})dr z)QxqdjH$iVivjYw&}9e&&$Ac9r01)ksQcN&%4)4g>I~Pv#nk)!_J>`I#8U1$aJLE; zBw@J4ysb8mONfLJr~t;Y4Lx6JK#FRqG;O>}A&KpV47{OGzZ<#9adFqx9hSs+TE=bA zoGITsdZ819A67(!Q08{w5)-$W7)oLaxUCqXxKi)?k-;^?fM-1}8QQw7C}xm-C!utz#iS2(YJ!A|Ap4?f5hm!Xp}Q`o6=gP3F+ie4do zO56{Yhq)11qn|Ca0lgt3Z}hNWHL@5|vuzwd^s?3xgJ;p0;$&v*1V7q2l0?=obP`fc z5}pD6^aFKEG5+|8;C|JmaZK#evO$><(9+m=fWc22_ag~-lhaB%NUSrXu(0?xu011r z%+WB!I(;SoasHGVsz(tNh=#u_1YZl)X~vOaq?J6AmIRivG+LUh+_NbkzrJGXtasnp z@d~#G*}^~n_Dt{29}jH_e9~N@WbvGPb02baPuT%G?2CB*3{erT%S4;eC%~E8&2~|o zg-?DmkaoupNK>X7kwxn&5}p|lV)6$z$&U=MfSb{Vx2fw0Wb!54y%FP9Fg8JED?A+P zg`apmXF$?)x{S@VG_9O-=HtJ@s?y;5cBXAKsa;z0iFtKZ5l9e{4j+4}KhhGD9$;HH zZ%u#JPJs*U{kiVqn;hL0Am$fuu9HNvV*_a6JHL$QZAO$9&nhFENZH?sI#gCQCg%4y z{oOUafhyHM4^tJW@GV)at&`gNA~p!Ppa4NlY9Iq)D4g-(wH9~f2GL5p!*My`2A&7O zFgZ%)=S68o(*A(tofCPzKx+N>tWV1d_#pZeGAAct~5(OCW9?vYYui1oq7q9~1i*x=S0{4ENG9SxSAVb$y5Uz{XRo)0I=2 zzbf@tq@H8rF1#e@Bx%SgxiCxFYyi)w5q} z4C4%VM;Hl`{PD44y*j6o97&e5e>UN2-x9#$`t)I$iCqQ4Hx%Y;6B*ql`!29S`}7)P&8k;GKeBw;+!Y5{VE?Ydhw{wN!p6W z6lT&I9jbyVyO||r-gnh9kLl`dv5(Na6QDIMnb=)()X}P^Ub)fM9ioWDm=y)T_i*ZvxHtPJi<5jc7GF`er207BJ5kMW7J56M5pz0MehWP2Hd}L|b=lRr(bC+!%M*g7 zgwZL`3zp1`&g-1PNUUXjX#Nrs@czs9Wq%;$43aPR9InT(GmN?Wd{q7 zOpT~+%t5C)NAZ5$`9YbK)}vb$jeYjVZ=z)ic{#6~J6jF*BTZ2Ta3PeGG~~-0{knb<+su9?M^ktSg9pWB&+wgKrq$gytDr;C&ZRRi&J#X z-kjvzYgljT91zH^Pb5L3I795?v7&Q(wF7>-H&NBpN85N9k-Ibefw$PdrG9=KdgZ7|dDix}tA+WOwa>ar1Kv{qh!#h&2nXw{-3lF$2sf&}n9XO(z-!V- zb%KNMe;x{G45a5NQ+oEM72*(7RqG*sJ0AFHC(ZNpyhmMaG;41;dD;zxT+g>{O-(WX z1aIdhsq`l1gM$NV`SF^L7|c%;hptFf9wPAt=A;ai)K5P*HF+Y&k+{Y1TAqQCXq#zJ zblesHfDf6Z%PZUXjn@I) zHLw1&FB@8YU(mbB*wEZ3K1;jnOiR|;%g<89c2i&Z(oiK8w8L6TidEc(m8Utz(1($$ zT4so6Vx-WyTTfqg!jGH=4BvFKSbt$)Q`j1v8v z7{MbV9H>HL5P*_B)zuC&NupVZ|I&T@p?BDk{{1&DIdpycd$u#~Q*E zq4gk%u}0BO+e@Kklnq}~u8bd5xC*BN>iB3E?nT4_vhI+AOv|3TNF-1Ungn%dwRBtx zUi(}uEO*8G4{b9N(F3Wd2cP7nQiXTI4UF}p&etlxsTE6nMk@-(ZhpxsQR2B*8D6kk z)v?)1<0~xQ&@T6Ljv)Q40E}294#johl`KO*RxmY>mv=6rrXJP4cib#wWoTVBrAmq8 zK;tk}^|i}{U5Wb=$v5RP-^;4^^l0Tfbi}Ghwde72y;to!BshF)7x~HR<^D)H+Sqoj zLmKDnW~Z=EP^9_V$Mg?YH)Qm)D$PvdAk?kWt>IFlM3Us}I>6E%KtWyTH)V_mqDB1p zmt%_=wH4ZqKKLR15mvqS?M!xZV1a;QNN)-y_Xi(tou+}01NYans2stBw*xKK+2nD> zER2jft=u0P3$zbN51N7tbU2rI6F%Rzr&g6WxC5eXvgc?0KENPb9R%Ru33_5-Nhx6Y zE33}IAi7m%0rXUxV=wQEa1*-)-b{s-)RpBHI3!ruLiqdzQ58@IyKD3!U9_ifk1l+! zsrxL!P~c5vqvYfW$uR!5ng-f3zchKf9v>ILL1|`tCZ#f=G%1CgG$~swMP^Q~ynIDL zrL}ZZh(>E!=QBoPlmTp;+Zk*Zbt4JiZBNQ4Vm?2_&Q-HS1nlQA>YbL`c73`QNeqtKC`t6bL4apz2Nbz4x(buLG!z8dSi4ydg>R#-egAK*k|Ie zm*WZL*-F*;sL3T zNKK?&k(&$$Ar@4@J23mnQr$+?kyka=L{=A}{o{xnsM7)~qx{Co8f|&7{UnhncKF(| zFFZVjog$Ud*ijMrC&bMmPV&lVb_pjpq88#ffGKAW5!OZ$NC>6M&>WFGDyQ${LHIbQ)V>0u<`TpW;I~PdbyYhmqvCZWdzipYoz%21Um{`Jt7hATdW!V ziO3{l1$$o@c{+fA<7Nam^M*_RYpcFG#*ho+Oc1lb_dTWF9Pj3Web6M{rl9XpNbKg* z7=5m56UDDAVm>^CFk7O-{c6q?lr|?5Zm>XbA7LdG zEMWaie-g)=w2IVZEk6FJS`TVCc6*p#UJU7N;M+v($|#e{Q>3F+P#_v)XC+7m>nY*n zA{=t-2tZg-YZaf*44xReMM@uw$&@E@Q&3Df_P#;1HcR@3^NOy)a!sO?i!4)JH+(8r zNaY)8Zr<)c5$;Cy&U%rL2sUee#&C%{K&U6w0!2#33FYEBAT;9G=MA5_Ek6? zZ-PO{#Fqf>efKes@EGogBht64W?OrBVg>)W#@U*Wf9prhb$PS#{VmI8D>B$8mcrNe zoFF$GSt^L!Fbar@dYNGJ#DCggHUW<@>WX-d-ay#|hbJu6T?~^DLNXF}tkCOzA=r2s z=iD_k{ps$xF0wu`d80O8so9sA|Kj!y=NHV_&)%-($|y2iO0khyYxyRYNft#1Vwl7n zt9%ekH~!K`C8x>C`)3FpqFr7QlXT2c7Pn=Fy~z8wHyvFmu&Cecuj!d&o8Y}pJYv4U zjc)Gd5b)~rGi|}4MJY1*3748vHG_hdR|t{CFGEmYt5~cc)KD2OBI{FBtWq+lXrdRFZ-~f)Mt(1OZ9qFGomMZMQMAjg{l4u*^ms0au?!2EQBI< z_^cF8mZ%T8H7cOSD8!K5wt2PlnI-zr@z~Vxk`UvT9Wgt-LBw=G>7y8twhm3_tDDMw zo!Q0txGN;F7f##w-XRlh&!IwXt269u|F}`U0Dk8~CH#HG$hn#8c#U8V522VH;$St^;*~~dzHa%= z{N#$muG=@4DK%;CYaI2Pi_r~9T(M(P3Gkz$MQ?^@`qgmBhW1V2P|SP_w935u;sF29 zS)2-4FE~UjzEtSzZf!&CEnQomI}kf`^y4w@0}~O~${Z;g8H??6J@hmfbI6Or)a8k- zTFmdiVBdBAtnS|D3^Rq!FIBArIgo3O$10GNv%<$T%%eW?Z*97A+?=9+G~xY9$yqoy zZC%!q-Fifc=v!r!bbjLh&C3|0i-((ED(ikq`B%v#A-{WXYiOlQB4?Gdx4ls5NgZR- zTLPXJgn6c`=G191UaA5{zOLKw{_WR&-`NJIij5~cGo2Q5n$@Si!&ceggLqWz@hx-? z5Ud>hLxZYOoQZ_7@@Q0!Q`8L#g|={PH2VX=_a+6%+YiijPxn$2c2sf4y|zc@1!#dJ6p zUH|lM+OPuRG*Zj!i1h&@PNJwH+_@q_ae(sNuZE(@rOheBE|R%W5||7)iQca;CK#0L3PJ#>p}<_a@nbu9Ix>P{SBlHPD^k>*jcdwwKfdPE%v7SyaX%AI!jeG* zX=4`oWecSv+_r+Rk;ZwoDwkmg*Tm}Zr_j8$ju;Q*1sTy$ z1v{pn$0#RJ(fgErBx3Q&6kc7(p8T89{Kr3sN+CTf`XjjAe1I;_U|0|(AyA3oM?jFu z44tq35XW`MZ^!Q?R1@Xc&DB3gV4*n*Kbv!0L(2jpG%BkQD-2Y}KmJuym0FM>cfb&V zRVS@H*Wo5GE?EJZGWN46e+O{K9Hy3%I@kH|+NiW-(eCQ>ObmLVpfm}|kpjFwsF7Tn)^!C`%*CdD@JJjfpU#GDk#hz5z-=}SegVKBTI3l1Qs-R| zJ>?PnyoB%k1Na0JNl2Usoha^6uggyKXMm@lntFgwGHHBBySRiU-dPSBZi*+@ws<@H9AauQ+o0)Y3;@30A-+uomccq>`WYt5c-Y!~Z^O1V$1*jB1pFFbYT z4jk575gWMy@Vt}bRa#A``^@Vwf47y~pEPmMR*actjWxuC?{G8;&W7q9MwOPI2 z2h1rRp14&A^Crzg-|+Q_sa=YAj4ghQrE-|xS@GkC?Yz%B1dqjc`aP9d2uJWzYnaz@YCRzG=&gvJN?#F`e_q^~Xx6=lT=f+X_xBC=BaM^DUDHYp1 z{@aoeYHbxPbkEzB;-R84__?j`Y`?hbVI)^yFrFS9$a;4ViR#5h2@y8|FfDWC)^U~N zjX7Js{^|6s0O`wy(TK#_>WZIQ}CU#2glwR#r1dDvfe&E4;zz;g5O?*j$RzCs?c8ruHTt<3FM!adHK(W(O}`j zv(dXZH}hXSw#KT{X+)?iOD0j!@^J_Ws_`Wl5~-cezsSj4y=VUBA`j|B5*|&oGv^#nF)CXmH!{@nRjGEek0@ ztfjngDLLXSplYBiv*3G3UR%`9qcL{@5UP6ldR7Mp`6|4$P!n}stHU8gD{O7t2X=~% zk0Kpe1hcPw_U%!yBF6i*khi5n@BCIX?7C-=ZF23-u#rN|czND?!skYLBI0WV9`+}M z@@Z34su($ny+9R;(qe%wT4gtwQFbPJTjknVVX zk^bs@Z9B*aGk9Qx_^nOv}tEGpR77ak9I_<8=NXFx$w>RRiuevQ6c%CnJ0vyS@ zs@{~K_ft|tNxv(qU|4+ZR>rkepgpgvVhF+Uj%Jljk>M^12yanjTiC8skQ=nNnw=u- zjs#@++wl-D_@cSAdt_)o?Z^zILuRZK&CQDDj;r+pnrIiltYO)zncLuZCoLoN*Bg*i ziaWURw1*t|PP)i%aV5cmlzmHR*cF^cP=WF%rK+?xJ3yp-I(SPj#PcbQ2@G;_zoLkR z>3kkV^#nr8k+c<6l+ADe9^*=BCOk^{6_?&UGGfB^6n$JO18*ZL5D(eAI3%=WFv$Nd zM+A(5o(zLlQEw0x{?ZkV#8JE2G2ZF(^myO1Rh9-!)GvHMR zh31N3W&_z-yF9)KZLiSFs;pLX+ksHS%_;>XyWZ6GZSDMZvel3Q?H=J2@bc%$7*ujV z@QXLUU7euMsr~#c#QKLji7tj6s_dK~K^}V96M;a!zF6i}YeLS+G*?v*yhe0bl8w80 zEUa`My!*T(sDyypS@Fk42xi~`CpY%F=Cz1fZ_l9v(F+!<`%6DOs+lZ00Dl614tcfl zOw+Qg6V@-*ZRD|J$c`~o8-axBorZTqgWjGQh3Vk-l9jJ4PWD&x!YOO~hYU)-n7NQq z=%HMz>_yBWEx(6fvp6r*0KByg!=ojELR;fI_B^}wLuf*S>y7>El3eroGV+n{CzsiO{-p<KzpH4JO%3SwU3mG$LXJ zes*zdIB-PL3Qo}%7r$f0lM3--q=3gs3Fv>sJ*w^!l|nthU>-tqaN6BkqlLKmyA2>HKv zzVkqHW6(>7wrV@?o!yaF53>^e@{;onHz(uC7^9aRMP_j4!Hi;KA2oMp0X%n2(jvWj zNgGzUb^Fb4x@z#!&l7kUBP=CzWiMwYQ;KbPHWTz=kG0pTV~;{QzE++>AQ=)dB(^*L z7g=uicXyvUzV@7i41Y}adxdb$uL;f0=05qa~A z6i)Py?zYq(*~+O;_VpS*mk`bdt9aq{(7_K(yMjZK?S{~&Jg9s=?~ppM zOwWOVp>?ow#<^TDURTp zU8a7k!(9OD5k$O{#`~(Jw4pyAb4Y~nR)K~8>wLVS|s3er7^KyfJ z1in z32KO11fmcQi;VpAqlp@xva_}87MmxU`mW@GD_=V?_L-LJJqg;!nG6`JJHXGqdRWZl zo6jbE04mOw*NfZDUHyT{N;Ef=YP}TnoXo-~02@L8Qls_4^fxPhL6hj=Rzq^s=F;{b z#KQ60kM<&RobVWf1~_nY2xM;?ZzA%Og8xv%OIHEm-rw1p6ag0fU-z={E#VBOc9Rqd zw3Smxe+6cFtz~B$WOQM43nSw-yTG8UR0Yu2f3w%Du^~`+j?Bt zVsAcdT=Xx%N1BR|IwpqMev**B9aB4+knO(4EjytsWak5iQCY-pv%3B8_3B~Ag1QF> zUZ!SA|DV$shAh^P$Wl5?XzG|4;5e4mG|3O}pAC?hV{kEP4&Xb zrG<^qgdobg3$$g4`mxALXuu^eO00A^RVUuDeqR^=xcw%gh zCIsw1UqYP$HKp81r+6_a1$GY;ORRD2H`1X&H76(fEx!R?izLD-1pqK$vjkso1{0b- zPNMk^u$t7ec|YnXa6aca4T@G3C++4VOF_RFId)nGW*8a4p&0+JOazl7hJ z3g<1K)xjRXy{kpnl$Sqs{F6I;)WuX}ObI^`hMOa`hD%QT%n<>rv_eznF8pdU*jEBS zz-a|3gH_Q9uLx%Ph}{kIp4TM!p;P-wMjZ#z`URpOtPmyjTl8!Ahjl)M$-rjI%LM4o zH4dvA18eW-WH=fIpPGQuI0uFHUI`Y{3IsWq(O4A6ApeY}i$GIKyV))~IA0BHnRA$F z!vkSQM}m|46b>I?HMwdPrGqBy~IF$}AlDb~32wnWGK`D2-8Bt1F=Hv-FNc8oB zc6S0^JsBr}=5Tma4M(~z6MYF`)$k90p>=h_ez-6Ig(ANC6CIJ8aOG%_PHwk6KZfnf zPlr|Xjfab<{94757zC6mDq^76aKo9}4(G}_7Kvo9Cw^>@hOA(KuU0-u%5OmPHFIUW z>m~sShnXecxM56}XGSkiYPnt#W`M6RzbrY3XqG88n9=c^<7#BQd_;Qxl z1*INtzvGrOV&Y)}J2kd3iT>A{t4fvTs<#XP&j}wKWAwZ zpiHEklKY2c5+;X$PQi!*A%~1NaEqUHV$N|e`TaJ=r26N9gO%7h(K0O@AXOv;DE2t@ z#o+62S4`@r+(^SY`vJFPMRg zn>k3sRx44QfR#{wnAv?*8+aq#JLHHf3IVoql7QU>j|T$*Qo$nS0B?U*jgGT`eOEvU z7dd+q%>`5P1EnbGe7$hspB9<^3xX-$!=`g#r z@56yeiA)&ZNrcZ%oB@X`y#+cAa?6`l9Tgef1Z#rg@4ZjM!TuAMr!5MBQ5n(h7z0EefJ-9G zRREX^y@X>f*$5u*fnE~?x{W$sqvE45<}$h=#QXv&OW>j!ZFIs;K%LrFsC+VccWO*2 zynEW~aE`VWfWSJ9uL+AB#r1w5TvRlofCMj<8>1WU<47Qvq3_@8cdH5@aoK>ek&$)3 z=CTMI0X(@Y=taTwqkSV2BnWq|;LAXS2aL6XaO>=c>$IYG@&x@kyiTI%ym4Y?RH^I$ ztZyH+7u>C8x93 zZK|JGkQK0~TR#ZPSm!m+F@)A4+oW^DH@C-=YCFq%)e#4gKfDBR!o+NppTt#jHo}4= z4aWj{(8;NU+_yK!?4B>$BLH5ejlknMKzw<(ChX!|Fh60BUVs z3rd2S%Y}>79H@%TPpQBpczEp?eOUTwp#p+1(|cz|dvamYEq*{Ok)cUw7L5zb&uP@H zp(E*D??BuP3Q6C}3fu4AI@Ob7Jh?b_nf!*n`>DPTYJd~BT z;e$a=hh|Lj^c6!FaM`=JOEg}8kmOr}Oe~yH%XAcJAM<7BAf5tLGhb-c?K6vjmProX z(y5m(1O4xYC_wJQboECZ%FKb#yg=aDs}s}7sw?>NF{KslesEaZeox=l`5-5Xs?s;uSx_6$@<^q#9?H|Ek1Xq>{ z&vH^U7z*RC*h~byw-6O`a+JG`dMTKe(z~xQ3j1K)56`;25nRgf zTeQK8`}volZ@PPFXEm_^p^u9^En8V7e_#DPc>hA~qVjqZ<_bP(I^J{weUgBQeRAx? z*rPmn9qrNeznv4OXF(^l?Csgnyc!WqA;M*2%Crl=F@MwePbu)XMLnx z2`hMB9`)=7&u%{}qK^(uelc60IR`&z1*zp~qF$gu9J8d>Le z7nWN8KwuayG9n*~m?gl1zT)EJoL_ivrymkonO%JON58+HR1#)*H)s-tOz1AmQ;FwL zMYGY^o5W8D?$z)U>tm4o-)n$g;p=sp;*BshSD!bZ_9Q8R63A#Bp4cbL4OREV!d~`D%NQ~!_=(xHn^fs_TdW?6oi4F9`Wm*u{ z-tJq5xR^%!KLQuelkGXU(8S13+oAkIbOHnzN2~Mvwlxdiu5ql*F8W6bcLA<2SYgz; zSgr9bI7~EE16+cdVSGUdsf;$*iYffYzTc`F9r_aIi-STSbH-yK)5|;HJ%^7 zWEj2;-ebN$kl_VyjyJL)#K?9exj7fP#N(9G9Li}fPScpBf*b~EN|Ul zf!3x*ix~3oJ*;Gf1}<+yaqC`YTP)1hsS`OUnC=IWH{K>R@pgs$x;L43ozy%{u11RK zqKO+tep%|jia2H7R3jD2$W~&A0*Oz^r#&@jNRXVnb3kQj)pUxcXu>h z49VPg8b*XO(7qENy++EpzQ5rzgdXIeF_~Itt8`^!-Y_QypQaudLSK=p!5MYlaPJ{&VUjZS>UJRUohbWzWU4BUV+F-Z!%v^zJ93^w5f)s3B7X1lnPU@1u&CKi*m%V z^1boMHAuQ;9sJ58IIf|Y_rzjzn2>L+u^0{LZa{mhR;%t*GTY$48TaLD`T8fNhqj?< z6ulGFc!}=08oD^E*x48LOa6}tCST9LprC_#7=qcfR~B_ zfD(A(yMp$%?&fUhaq0c{h&}=K^_AkU!Bw~w5a?SNv@E|v%Ddyp$RuAl|JNz(q-BOM z)}*rQ<0E$Axf9`>#Q&?7v+jz5``-QxNW)0ikOL@4NJ+;~(%s!%BdK(YfYK=`Fm#uc zG)TxGDLr&I0+PSEzc1kV?|B1fopsha`<%T$*L88U*+Pd(cV&jRg-JtZ9_~Os%eKj= ze*Xb^?HXuRvR}@u5ysPiF2t!%8?suD08(lJoSmmM^Wh7tj=_1RdF8>)-oRd0DK-_6 z-ARsA*~C{_Q6ZDGZ`I@hL8A-QP$b~O0P6z>g#Z}etaE!3HAf~mvrWS2@i<`4SC#xF z)ycuJp1%UTsgiOA$dCvDoPiVYy_ZZ#Lt;ccj)s3BkONE$m3KCC*CwkkDqk*DrtZH1zcIQjLHxoaL=cYB#gfjy?b`h=*tW0QEBgI|HEK!LeLyb_L_6Q21Fs%r;pAI_W;!A z$}C6Dvzq36db&iIIBeQr?qk$3P%i)@+SE-#)iFQpHW74=*UtlKs$3w7Rm?{-x@-B= zCuJb=Ftry5lav2(T!D*+&#+mH;;i1vZtf5}XDqEZfWF8Y>1DbZ6wED9luI6K&SP?c zz^1(25*Nyy>f-_TKCs1pwgaS%H`g8&zHyHT+FiVyNR7sPfy%LJvuy)9R8%@}xC<5{ zE|A3xp2RKLQq#dYT9o{X;eSPQYG1dy-?Y~1ITzl5?9Y|+mM@?Z0;EU0H`+WcYI~5D zdHrYt1KhB*J33l_q{)aDrVQiosb>w96l>qj*LAs{Jr@wOf4r<2$m-{()EgGL7TSjv z;LZBkno?Vz#d5fzM;)~*R(le&us}w*8J*SQ8Oe+S)(@`L!W}&Yd#l4W>d%Zv|D4kF zbUeZ7Rpxd;YW!O3#Y>g~eXOEtKUZcn#Gg!hfe}X>DMI8)psy~!Ll|y=+E~Yb+~oX} z2wD#`PmV(nsNj@^(`&ZCXqgyWPa@b$S$@n8`c7wC`NKY_?nGy4iV3+q=N> ze!gg~gBe&ur|xv2xfEs7CHYR`MB}=~@z6U}8H6-w3OBD>hzN}T)F)s@luUw;FhMYjI7<`5&wffo?yuBBKxr3 zcVB>`03lJBW@#E)Sm2Bv7&-v%_oiR;ZX7>zyW3OA;P2bOFj}}et|Wl%pf_9!!@PEW zXRTD`i3on5ydv#v;h`-J6wlqD;2+2ud4mNjUC<03K22+G1v=(6e-mrc`>y+e7S|lo zMDDSgC!S9lbe4|69ehUK#d{tg1Ggpx3;X7aTY8+^%Da<*FivPYmiX^W>} z2lq0wLsZFlUa(Gie65I^5;b3n0X(cT%P7iO7X0AGr8B!C3NSL~h{$5L*`Qgp1wQK@Bf5+4WB|8KYEOW8feBDrPr*`i?q%{0@uaX+%sDhJL zHe~KFG7>D|1?>GBB3jG&Q|j@P!85KN>_*iWSOq(H{0Z1(t}na6#q5?Bv*JPC0_V-P zi*y8Qbg<=TohL*S;mcpqlpltsf%RlSwt3I;W9BhG^7rE_D<-j$?ljOzoUu4ag-aD! zq3wpr%1(*bShEz`0vbA)AYlqSIL^hL+Scp)l9L;pUm%!`$P;%b3HZC>2s4R?m@c1) zTLm1IR?EB*DSTi*+RRC56!t!jpc%c~Ho5<|4e%?G2hzmUhJ+BdYlSmFfH*$bexQnJ zhu*2XwC?!e3yFZsGl4vE{)uL<0iXBCPtW-USAUzzI~%?euaej3#fTefM$6X?=QaHu zQ~p{pu$tTtYXSxW9N9AU>+@o~EiQP&niI#V#}K_It2joH(vv<8E{@ey@B02suX=t> zA0{qHGat0wrR+sSe!bU!F0|rN@yJ%$uN>M zSgVE0_Vx1X1VS<{HriOuXBLBaNnWU4TMt#cj#N5*KiFxwbddlZT~a3XA9;2QrF3)@ z)f{HuRbIT+d*C*n#oNSYF(7p=_Bj<>?3N?s*(AZoVm0NC8=@x43&Uf>+Wrn1j%=h+#s4i!wvaY17qcc;Bh4~l+s9wKp z$zv{*6B9Ik<2#b=T$Hbg-#W!o*8l408$J~S#L#x^WnW}o92%i@497!%j{q46Tws9X z@yqi1KX`END%0e;T1WA?+Lc~f5nyrxCiPa8)p+NDi;x{(TSrpJ-r6T+3O0w>+KICr z1=?7j-nAGo=MPBKxHOg}ytHCwo|1S@SQx8d;|e|Rl?~J~PgTHE4xiEh6 zVuj4AA6<67P(KWFrIry^+eK`?gw>H+u2RPunqsCqEAU9ix<8?wA_-sXSi>97ZTE;1 zF(Kn*4`hbhj`EOWgzc{h5M#Zg=PfY2OpxKHwd+E1sPz|ye@ha!4-Kw4o7T7q^?j)i zF-9Re7;|rsJyyP3lTyYWIt0eLh#X%h`SlB!4?hkcrmc@EfG`Nu$Pt%f%KfTc?}5MtXZE(Ev{I5ht}A8tSw5v#~t1)KeUh7sZ)8uW|<$qq2RAQ zWWG#a;if)3IIyZk1AwEMYfAd~A{|!0OG~VEzhC@@j!Vl5AtmZtB`X`Pdllr;@;fVa zcQ}|MOnuJ&>Cah|YWvz=@ay0A{wRsM5!dplJ+D~9Rig96Q171ut#8|L$tB|P%z1Nm z2kVF(0gFEp6`(;rfdEN+%xv~cR*p_9q9z9geClFRNE~)8=Parv`y4rR$26+n3+J5w zNdKq9`*j>`7d57tpl0w~16B%)-#>CQ`5x$!9ODk*vjV(NgkDAOWvNd&a{cE!1dL+P zyIGN8)VJKjUFERa1utW?59#{H!iWQ>Y`&-CToz;a+TUc*~-asGl+sE%ns`j-(!2JNM$8+z(%1Z!i?hEcMXz^crZ)olbd6mb~F=^357kmPaE?;Zj5u$6Ljs% z>BYb9@5pDKwRi*LRJh3lzO#GOhMJaIk_D_j&c)3cd?0N+lqk~bi;*;&@vQPo7|fSFz0GKp;X4`X7#Rod7)W5=#nSZS9k3WGX%q4*KK?#!+q{eGEB4?Z8p z7zIlwU|(T)C#;*8gd~6hfpcVRBMN0jQv_41`?8eelzilv?a!+sHW07F1e~OTHn66^ z7?P*Ql}_T5OU>$^%7$&L$4dwPdC zv2KpExwPx~cyZH&7A@)q)iAsi&Ae8;)}eA%(jcC&aAc%P?H@Kkgcj+v0CG@fE#(M~ry(Mue6t(p8xA`13Cz^}?b%LN2Z*<=D;= zxmYQkY0d}vEN}pus48=5W;U4x#jo@xNshu_7_jY`*0Di&h1sodpInUfkn3ICjB6{S zpz37f)>4&CfQO3ygS&AR+&GbNCME9EP&ixTTbE&vZ|q9aE3#mFD$0dQH+4j0ulWWk z&=Uc)0A1p_;NiM;t%ja5tqqcw@{nkf<22gfR;Usw7O2F{`E*vAC|faA-fW}b?b!8^ z_0R>mTj*l20LenZ$QRb%Orw6aj(1;=?+phB;wy4Q!HT5xzXu8Ana%F|tYHLQ#&@ z{~1`f99?B>R^>2kbmpZPr^nNEpxhj0eXaD7)SR%m$@-{58m6V`O%~t^PYZ3ac%bsJ zy$)PtQZ!_#k^Of#o?`SzV*W`GD=Q}*V;EP6LR%DFW8-;FEzz&N2lK`^N>fd zIeKYRUoGcuN|;^rXI%NbuXt`eJWE1*LuHT6#TgDRp)8Uu=|-ChBcYLz!}Qm|Aw>l z@LIZ!BH_r%uA{t-dpGHAUTd$3^?PNL997OYa~+|4AAMBhFv+)V?TyyoBcKb{f{}Ci zb|S2wp~^OYDQxrpf*4w~LsDo9LC1b-?D2f0o7B5F*fW_w^@U=&XiI)r+y*|%^d&Wrw>M?MJb4&)#_eW>BEc% z%-ihwzPpS^A>?juScJ_k&V>NIgfy4x`}?o0#tMiPljPv0WE2lF2$59rUIL8_|i*=Vj-Zn?)WK}j08*~wD(jE+m4%7>7A2rlM*2IPvA z%bsc3l5=CYQ;Z*NqXGB_ z%tv;|=4b9|9jt)_TOE3aFBKMYqApr&f`%Y2cUv36sJYpq)xM2^ymSa{r(2S+!rRv- zhVma-)UlJb8n;w--%XI|u)cVnf_yDzEuy2I;{o z;^nsq+A&JJ?=M*BJ(0cri_yZ*(4V?lE|38oe4o{^RQ<99#XVMH1NJuE4bo_=_(?{DK@%VN?tac(Y$()8vRsoT- z&RoLBhn1VKCBJ=vDw7OZ=+J`-wWPiMGdey|Rk3qsOQcn2V#kD#g~=BBS4g6l$%kU& zZXMYisRWQFq4bAOoF}^UMOI;}?mh|mUnKiQ0VjY-+HS^SqKToDU)l)wZ-g$=^=DiB z^Z=PJW1YzLL$=Nko=kay-v%W|R+mLN$we~fl$kF2K~l->kcyK4TXj~^Iu?$g6Ttos zU_zoKx7}d*QCD10)v&4lh>b*1Ihe*Ecl1Uwg)=!5ffW(?^yS3zE?^_j@d;llz~cjnADbLPx^Gw00AIW;ZZ+p6$%d!(g^ zpu8X#7ng|DRdYuU?*AtU@NnkSaH9bZIv#%21H;87B>7L^<|-+b#8^X}q(DVLA+EA#WzqXN{0b1M8&j9VO7YGJJ49}ldi3tg}wS}99 z`C&r>LZhtAO-^$-I{v}_aOhvykG~?SrutXprbONTlAMINZ8TfG676MGpvX`^N7(WzcC zg&8x__Ux|2x`2zr$fN~`UP0ppK&2dAnqvL4Jw7JG-R%ZWZCB%up^g2@s2{!#$te#% zf4@g=C-)pCEn%&@SbJ}THxk({6l1-dUHb6%H#q8oIDoU$*LTlKQFfEme zlCxO*2GyC;4$MzWOLOwgH6=N>W_eIHt49M|j8#7V8y6ZF2-d#qTUA%`-Hm zV+&y8D^hnvALPYpB}cLDFMfYKWU6gTjQX41j=bzz;twhP7Bwg|x{Pi4skY*I;sLhZ z-jjCGBi@hb{6Y1HEy?Kubm(A~SY9sgUGcCX$Hw#z9A~%?m>6;74qx&-SpNj00))g;a5=ie)UQlenSUbk~N;O+EMZ#!3{EaVUXV+!s$Mvb1P@ zdQB`=6?T1rZvHIZLLFswCs{|!n$Y_z?8dm;Eq&H*!hH#8dfWDs3fs)>YWF`uJ%SUO zgjqh1a11UU`y_hHOEG8ENN#PRafO~+jCsND(+J9bCM6gj0GuBlz7~yicdxT%xzw@{ z_Eiy6E$x@P0tV+5Y-AKpX}I{*7VWoaYB}fE$Grunb-&Gx@#xsgR1kZ~#{GiAuH?AG zn#rB9g_(4Nz+4%`8tj{!GAC>@D3OcE+wA%`<*SE7pZE^Ujhu*zMLI%T+ZYM|V1dk+ zU)tr3hp}^jQ{uxb6p~=QY;l><7Xy2lF~naVWPj9rirc<2%q?5ANX^# zbAP`zCN_fQ{$zsDlVf`)n$}X%ur+CKA-}Epy%=lW>rFBqc%2u-nPVa%qy6bZ`n8+8-yp!zjg5R^T2F z`cAm+@U=Yt4yLT1h~}gDK7KnoYgD{I`~5|4Rv4ph^+?})cG$Dg412%*x@+uMNn!lv zqJ5D5#J-c(j{=mG++a@|Ja*pmbC&!YwG@+HXJhEQ zuNxsY?7YS9PIiB#g^y3s!NLK%U}FZh)@poH^O%k*D0rEvs4K*XuPUUihEU2&Ly8Vr zUh1=KAT3HApRoQkuC22AgS4ocI=-wI=*EV5x~?AWMx7Nb!B;#{QF`=%oSF|DWiHrJ zZu$i+rpl+HR&E+kJ~p6I=#gd}z88}YlD+2a-%a~3v1aH0ptuZ?gpUawVVv(Lku7rd z)ZENHWusHf(gk?uQtok7rL&L|na5EgYUc_TcpG1YCg>%rWtFdDOv%tNY7Rj5H02!m zLcCEQeumAR;WlwIWkya=z((HXz8rhQ30+&~R{aafBmm0T3FL6gDCL>5tv;2R?RI#) z0^+>IyuzLRB=VW<0V{7zBp;s!1eO*$AS%64uFZW4G$0V!7RloKAyT~my_DRJrt3#5 zqpWJCeGhjPP{@=VrB#3uSf+Cp7QZi?e-dGM$=xwdx8hZQJ@*w(&c$n6cW%Qvb#tKdl770%6w%aLL781&@N0>h3q@EHW~uD4mI|P58aLtDV!+ zrG*`GrOYK@)Mt8dQ@t-y1r!?#>ooH7$|A$me(1)%IH=LCY|7^=H#~_NKt?!t4zBBz z9wMvLX2HT$jz;RW$3j0;V=%Ihe@Rxeq`e;AktJm-2TNfHc!pfF_E}*}t|-R9(~hy* zw&bYwlC|4#QQ@NDI0wxcamPRA>OCZATg2a7D`r*tBvUPqbp2KzNcXY+c%1v49oK@-FuU1 z?-Ew3W4l%9q(V0rS3!f?I)wA9HO7@>{pnK8*2d)lA*~`eS64wy6o3O2eJqoh*w`7# z-+ito-4N3HeykhErXFvZQxHmgi3YwQ97Y?%y?<&Zb}E`ZAN(RdAsZ_`0SL=^pdoO2fgKUY2@r&VG%}f=r@qTEXcD7=Z(EjAT?-z(mvfjbllaTGy96kWQu3S(m z|K-<50)meIj}Ma2(oF1W5jk`B#_+x}WwEzg*~L*IThEE(`ZQWu*!r#9Xwu##_Y*=w zZV32D&~K%SsTYAghl+PiN}uDkH}2we!}1nGFS+MC+<}`=M_~*^R+{Cnzf!E}e`j0w zzk8mkZ*l4uP`Dv&0DR3xXjKW&5S>+f_*`6y z7`qN} zvAn$F^v__L5Ri;l!KXUBTTeLw#_O6h3yke+F}VwM9qS{{5LQWKb71Szy~*z0ydOw9 zg!Igs{$~VcnRPb4_3bTM`;u3la?e~xM(#fV#})IF)42e0|S6@SD(O z;a<5x5EJVa*i?p+Yp!kT?94eRkYd|ieGRI>j{FVA=yzxorT1k4O`>$&Gn z3{~~&9S@LOX6BSNwJmbxOy*@TMd4m@iTqmMMc;(My=f2bM8V@vr#`gea3;OrM7GX& zP|W^8`-60Ulfv$sYX}@=#+??+xP2g7(ZURGt$9;oHf=&cb1G()J$#vIUFJ=6{!MhF zYBq4y;Gsu7e@D{oT+aKyD;A`ZM83<{!*fDF=&H(JAda|2)bL5}Unf>M|4J^aD@gOF IroQ+70Ywe2qW}N^ diff --git a/packages/website/static/img/logo.svg b/packages/website/static/img/logo.svg index 557d2dbcac0..bfe61aecb7c 100644 --- a/packages/website/static/img/logo.svg +++ b/packages/website/static/img/logo.svg @@ -1,5 +1,22 @@ - - - - + + + + + + diff --git a/packages/website/static/img/logo_maskable.png b/packages/website/static/img/logo_maskable.png index 8c32267e15cfb00ff87daea65996945428d81d26..837410e605ccbe6c1c357d1a3f7f85e680928770 100644 GIT binary patch literal 9823 zcmcI~2UL^Y(k`D35do#DRH*_22_clwRJsIEX-W?%^aKbU1Ze^aC?Jqfq;~|Rcce)R zpcLsK(vc!v`hEG@f6lq*|L<9M-OE}b$-8IIo;@>r%Ci&lKvRY4(v3@GWMouos)~=u z$bN&IzAl~tp7g@-6u=vWz3LM@85t$r>FYPLxP)tDWaoFSbRIiB)_}v1I6Gkk3TKWM zcC)hwsL9A=mooaWOG*&}|M;kSIt51Qh{`3W3F8ATbzNg5%FWPGB`h6bAN4 zQTflcfN!##mQGIgFcA?~S65+Ih%nC4LIf-&B_#q96%iE`0w{#=?pP;;n-CVy^%n<4 zG#=?_W$$E#!*ZN*M4028on$!yN&nb_o&DczvG_mL1Sm|z4Ph?=76zSe>32dD@^3nO zXGh!L7e^sQ(6(qhG}Z|Z(1QP_wYS7M;qaEY|AzJ7!~e7Zpjr)$zt{M;ve?=Ey#(G# z$pzTPp9=Z6)Oa0td$hRi7ZVpl1KcFh2#gR~TnsE^E(wANVNPX%V89@VnCM^Jv>dH~BZ;v6 zN3N$*p#Y9(U~LdW93do*M4AhUnM;6$5Fo(qK~QsyBv=fBG8dOTb^PCb38rd=2dwP= z=TXu|JN)^{){5hI_kkghr^iB;6M5%iwVs zCs%|c`mP0_yZ^usMgBYS@d%gyS@{3Vn14w1kHY_3zx}@x{!i5)EfH7?G!SP+I8V1D zavG8TFpS8*+U)nSe~4axkpm&|^yA;L82IvcG)H3r){a1|UR(@uAtU3UR#UvI<2JIA zNUoz}u^%Msd0frELyN>cCbQ~I=NDHzN0oY&L0v2agAC=*Boe~ZNZ3$t97-aDr^|MX zK9Gob4%_0?y`%UdIr|yCk_Yqilb2CVx#~%tYh#}Cy9vAY7kwS(s@L%KYt^RApD&Po zV?X=g9N9-W85!vu8RiU`87~hj$O!e!pDD%o%EA2wohZtWj$c>eM5*}qKc5wY3 zWNP$6GxyG=2Kd~bl1pNw?J6B2*t_+sY`fZGd4xJB3cSP8_Dmn%QeJO#SGfUxVQ9xd z)X7}jFBQvKXqKt>nTn0`!&Rw0Xqzx$SWC2M?as{@b6;0fo(3bH_<|BzUf6xm(0JDdBMd_XlfnZ*MxWG3vd@UJoRls8>;=d@ZLq2gVfgG1SDrfz ztJD3%_h#5g%aLvP+1HAEi23V!`i1u{G?Ka<#_6floEUthy{=xr2$7!pHYoL3p*$iO zY7U~~;*kmEk$b4BL~v(kcICTwS+3c&-b6{fktBaHjGqB3Fj{!2{7Fs%NMCLY4(m07 zHA#I&=vE|VJ)6xhu)3?+NOFm>4W>1}5ak=Q+VLf(sP!F6tNyLm;Z}5y=1i4sD4XrF z!~i(i*r3P$rguTPe7hnrr;KZIj^e}Hbc2Y5gyrPNM@BWA`RUWs{R4T_No|Ss;*M_u zZND~hv<~>a+3eVc5po6}T(~G~!&=*@CY5__a1|b`UOBKhZ~ZXGM@Bn)4{AfhGf>dD zA6h-B?oagSB2O}c~aGALe6g`k$B3m56$q_sC;rhsfyM&DmKrZ1E*;1RrAKfEYyWWzr#*4o;=_6qo@ zmo;fTYJR6u>D^~X6MovaQL$T!hd zxG}6d4+ZAMC04fi0xPOVr3zj8f;6-1efsD0Jq;x&lxVz05o7?bPjuFy@Q| zt~8U`1C?UM;&Ki15xX9X>F1;vxbx-D18p7E9zSoX9%8(Y$I*#S{Cv{4p2w-yxV}|a zrJG{Q&FW?xaeuCztn!+)tzJz+8%Cj2>~f<5rQbE3lk2j`T3?Cs&8}RdbQm9c&9ke@rX(%7UFA!k3P& zs2}tpGC77lK~eF-Ji3v{{G+EPa2cW6iOfQs0Wo%1%ybdhgAme;;#c8H0;@5Aw9V|_ zX9h&}^g{z~II2r1lPgcyo^>7NSJ9jcOA=&9@Rl04@3&oYo-;HY0BNhfuOeRLVaXW3 zh+kBcZjlbMFB|hu=*ceo+pP^q`+j{fxuY6~9 z8)C3HgOw}{vt)nrgqE~~jRPzR(k25U)6iq)6k;g0hTE;pwjHodxa-Q}CwiVxTITx=1i+jk=(g?F@J{YYc{mT+jBOuo|O>{lY4e+<$o0>yb z`@Kqc9#BJ~Z;&Y6PAv5l(k^j+XlNPBwJYR#B^DcA91R($I9i9_B+alMchD*;^XII< zI_~W(GxNtb*TwnLoC}Dpz=pDkj`o;&Cm)SxO&Yk|QS2L~4KXyebWCH^|*m9J55!{aJr>o#HcT--pH2-o3k~G5RZL5^5K=?UTdb# z9g1W7Uy7^tkeryF&0HHpv&`-Xd7}wm6)o{cw`Jd4*gOj<%KLWK=NF&`=Yvu)?S)r< z0d{lML8XbDHnS-SOZ2Y^-pq18gXm5wQ=cZPJrtOM-Z~>5)nR<_k{sgRw%$h~>~)YY zg0#tNcAqek0*K=($~&xtcK-8&*4HZ?LE2-Of;}4<(#)H#Lhc4QVL1NE!VTBEao2A& z4aLzC_&p%=^4D)R;~xZAV4O85{eSG6WiE83yRD>MCbYvytDKaO?FRUZe$stHJ7=Z7 zHKEoFq^(8T@)D=U6tz8PqBG+qEt|GA-8bVE3}}r7dzYGJ9uq1N`e#U}Kn)R|M!5Kc zoc_{nA*i!Zsk4xfj9X}XB#}M^oB@hLa5uEr8VQJ#bn-?e1}}%!TxZmG!6`P!3L-mE zDJ{LP&G$Q0KdY-Lyo?5C9Ct(}_{B}stBHbcmn|Qq#d^8$3Hu0OrmEV`Pef4GaxES> zi*PRw#e00~RPPw-jbSV$kV-Z$=jG`)z&|C6IU2Cuq=x`!TU@Y_?d_EG7flBoyeO-1 zqUG%2ls$EECx{LMq7 zPe9s>(|V%4+nwyf_!^Dto|sDu-0ld18nL<8*}NTIE(8Y7YQFxhHOf~zh2po*)h?^z zt#ILptZQuJJ}n9LY+Zh(ym9T2*%HXv<0sv zaCQ=j+f)KfNee*K_=TLyYQ?h?7u8+1Jr$fZrgu&<6ZdA~jjj?ZoB3YMdwOk-kUnMV zmC?mfK?DWjS@eRKMW$X7k5hPj;v6yIhS@Rm^sf_QR#SjLAxrmw+X=!yam-DJ*@>d5 zui#dM2@`b1A&@g<)8(ibN!Ly{8P z=(34A7BEkhZWoHonN_*DcOeVw*D(9gjg;2d8#XKTyVII+7B)%p65YxZIfvo>GbSuD z9^uRF^F6Fm#Cay28D<@)pLr~Wtm`^wfmB%IDvjCa%jQ>)?C}xhganPhyC4OLNhyINAIt=4d%Jdd!xJeO~<|0I6ky{^*aA} zi=v+UY;QHUy4!1pVLxp?B$$-vH!;PO*4g0U93rpqO~y`z_6hI$U$~7QX}3|vPhG4V zj(;8u6dae8q&iGhWv`bx<{pyY*mGZl2Txnq+X{E3Ukt6FfOwwwC-2{wgzsl9QaM>? zF7{qoDm3}>{csN{&vbdkTpeAEzS-}e5my#3FCt)f4K=en#4al5yDY0QGfik98PJwVOmFno>ca zAMlgzgkhfQ-7KI7>pFb31>2^rzHvL_q@{=FAq*VF8Lp+$xZVc$K~wB9DU4x0@#@0~ zg5^(AmX`t=!FtEI!y`WfD#&P)o%&_casb1qIfAzsqc>Pq;>yo--WeL?dpw>}%%kp= zdKldTisFRjoWV@A&gPZEDrvuqN4XuPh2AXYp*Dt(TAF$&5|=a{}eGK}pQTMYq)#Ta*eDK=t**_n_rzk~qjahR4iD$p8( z)XqC=6J^yh5|@#?45a!hQ)Z0}>k>%_b_BK{F=TV8G?=)SK_MV_pcHLi=xJteQ)#^vVTd$_rF1_B>Y1*5CZLLo(XE=l6it z1cagWq(*%t)j3XMj=pa{d_~&I*vX9bCRgHE?q&g!i2$4^)@CIh* zRk>U@i`{S?Th+L5&+#ucy}pCJzJ3U^3H(9MknGo2JdpBwB4@HKQzWr@!k-8#_G!-0 z$@doae*b};A7+DiT^dv*v0}K-nroXSb^bHEW|@A?0Y4MpR1pf})geS^XB;RMB4Jfh z@enTB4)V|==im@jdgYd{o8@y6C@cP&tlo@8I~0Hfx+fx{mKmDh+(5`d0or>Hpbyto zCC=>MpX}4ZNRmf30rd`mU>Hj%)gONeBqa!7I|8U6rr(AUYvz#Rl~t2#=Ay;#vyc6I zM4o!c>=sA4(=;~};!m49-S$JS;}Mvyj`<$ncWL z{^(>6>8;(H>7SxTt#&{cb)02H1}pG?~dstAV8d)6ym zMbGDA^o(nHK6M=qoK$@)c*)U)vKJL1&D$omqv;(cKG@?C=$Ic?e}{cC zB)U*@7C2>=_$NSEV)VFq`AS2e*Zga}C@c2z4Ie9?8(!aNUVc^SuJC;PwBA31XBIO0u4>iBrFX@dbzJaw|LqlN zV|?pT>a(wdFV0RTb5fRn1`=tex zV!hbC9YU~vO>myCZ1;n7FOy2)@Mq0P82slh=eg?5HL&)IkhT5*3>4pR<>8`SMoFcI?d7kl-mGX=eOOKBwQiBtvUyg4Z}FU$ zqTWz|yjyb+^m&oEmQerjQ6WzA6SuD0N-!T^7EDy;{;)=Hbt0!D1f9~tlCIhcCdI6- z^c7iDpG%4{>Z9X}k2BcyBCG>-x1~C9j^esR#!4BF^4NLlJ6k!$)}AaDj%Ba%^Qn`j zSS0%uH)b~H&7%aHjmzpgaU?^!b(PI%K|bjE5l$bG`My$5rw9GXsh?RV2wtS0KXO%T zyX@EfZPTocSli ?9Xm4No>pxfZaaxq40ThRxv+nef?uG3>js=ro}t@}8a1$~75g za`MH1?0}7yA8FZNGtkCKhA7{9y_h9hF57+uw@oqgi zl8*Ue_m_aTY+QWx7ceiPMyeR)P>)-i41pFFKn50=>ytU((nlDKyZllVt_9}~%~u32 z&3wrVc8v%m8aMVwR9wbNiZy7;HNy8d4i;faUt)g87wXJr znFPd=s?l>5xiuF#3lR#r4ZF9wy5z_O0A4R-ZM%jO%wo)^R#B{aVKE8+Qm!~44GA$l zD%=!UfqnJrHW-@NGy2B5*ol~q!Ja!gygAtqMFFYN!bWlbhDU|!9riBnvQ@P?#IcpK z9`B>+uSQFo=J)J%_(x}dcGXid7Q9Sd@|Zg_0X0>^PXPBxX8{ECkklAXrJ)R5o)o>7 z-SoJx$0n#E70?pxZu>IB!!fefF9HSP4u_UwS5|6%_!NuJdKx1U;3eGxo?B9$vXv(lcI{IZw2{2uhV&XK}i(!Zf&}- zD60o&nvQAt?0Y`{6Xiko4?FLrLZTfE@U+2*XaITm5+j=XBm2{j$)GT`+~k-k0Avnh zBA0dx+&uBuzGz9!MM4p_t7*?gq{TteKo$p@AsX+*zAPx3dlTrZKaC}#T7e4@e{EEK zeSQxyXAP5SlufS~=OTs$N<@8uF6YL< z+cJ>tagz8-c=G^&#*@zb0woP&!4K@rrm6g#mh+`+w#ycCH#j-?pjT;)FG03hS6(#_ z=+5I)6BCwt!m8z;T9~WSf=pkf-@_-EKk=fHwhEGScpl z9|(n~FvZri?RZpZKmhSXiA|5wND7Lmy{D#m=}4P?-1ZJ|(Rbj6#pQnPGgw#$vKvq% zc)gA+x=@kQ^!S4iqZ)8u7&K6PbY)z{eBTbmL0V>szF%wkl%9J^E?dxd%bz&z@atTz z2J1Ozp4Y%ZlFqe`i~W^6G9v~6-uJ#Ykls?f67d%@dTvSm6zC_p^4m-Ns8iT?&p@P< zf}^YguL;Y2Q57c)OPqrd^&SJb^mDjB@o8G!U7oSwECPUGw!mj99e*{M0N@^1s~JY# z{l_%rgW#~&&*{0U%`hic4|9yYQg6~0ueVD`sR|KtgaB`qo@f-M|MdMMQ|xOU;3D@h zn#XXLTf~SdWWn^d0ek8E9cA+yneUqZO1{|obH3dih|h!rn~f$QAW}j-AVq4x5Rk57 zp(G$Bgkk^@0trZzP(!;pbN|5oct4yE@4S1~>^-w*&Dzg;o@b?)L-o1N37%tOV&XD1 zxNE`0#0>fOV>`o$!0nct7(eD<3w<4?#$jPH6O#zR@UFI1gwwBL_E#d-$gd};-4Lnn zDpm2a>=&80p1d7;_U7)z%ehUw%vm=d_1{jup86zFD>GIk44f=+|LI$i`qS+2y;8&8xD?os7DrUl*xvE?d}B1^&y&f93GsYxsW-2Jday zKDm}2el2{A;U9#Qw|!t1JrT zT-)rnbzKymAY|$0hKhH@u0f^EWWsBNyF4GXk%qnSsdDwZ ziQfRXRphw=T!uD4hM07+ngOLUAMC%O`O?RcPR&&c2^%Dct6P3knAwm%=#ZY)G z;}wZ!yteI2bPvWpQc4g`KHSNeU)edqw}Df&Bg%I?pBGwy>6f2af{=@0{ao`zk5 zy~36~-sp@wdeqokbsu$D11C92J1m~gge}&`O!FfBgzB=UeP~Lni`1K@MnIxhq+ZXk zS|>C~^!_j7xkKNr*I%6AQGdXSN>w|gXQi^CXuOZ*#F0PL2?8wU{BzzM} z*s+mAZcct-y(*5*b39r}jrBwn+h{E}~Ltu~Mu#Na#Y8|Jm7Lh6nwy z=-!12?2i1!^aA_Wqoozue&5*;Tu1_egjp-+_^ZOJ=3 z!&k~~#)Dd)f_;LfFSX{!>ErA*HTCdk9Ij0a86J>jo^xSLt`IVavldsi!=Xz6oUoD@dhObqhK=vwN zea$TjX4R&3_(01fhau!;3a*sUD7Df`M)`-miFct1ZIZh7BgbSrxkts5ti2XLJrGn> z!PJNWPQ`Z!@HW)g=CZn>`Uebu0Kf7x2I#5Ls(YotrB(c&OE*OVT-qBAXd>ni$cb&Q z?__ZsYRBpGW-vte-QC78lNdg}{f=W&^NiQZmb*wsb!DZQW@oQqhWZR8B`BKKgXPPC z!Nay*=yfbgZ40Wl{#_PV7>w*eIS^3FB>!(|qVcN@0YiAZP3r{gOOITPetrU5Z@~Lo zaHVdIhD*NP5TuP%>+LDF2NQ23)c1Zz$lwIq^9SnU4|O}++|A1ivkERWwd<%Yw|tP& zF2sA}fyk4;+Uh5SP~mUtL4Sg;&Qv>2^B|XvsxX1p*0u=1RdwP01NsjHIc4V6({`h{ z!M@PkYDF#RXx5IysdA)~$%< zv{LhOA%8z}FRz}o1uPwrp*dOZJmO^;?qS91m<~IL6^Hm-@0&jl7E;qEU70-5=)R}y zls97}QdsgKdJHKS8yM8y6aUBaC{{ZOAQCFV`9o^ox&QQ7pIX151?<=*_FQ#Wig=Fg zOP}ub9<7f)TgnZN@DVDtDiE(ga-#ztTQ)jzPuBf3xgiSbYJ$H0~GQ)%u5p5tvUWxi(E_6j&{fpC&z_%VXB`W!5Ap_P8Ar zwQzh5qp(}kTe=)k|6#jK+?{l4qDhI|f-Sc|Sob_^cPpZ-{fb)+UmkQK#(p*G-X=gp z!@pjNN^E(b1vB9Nsoz$V3p1HheIXSW`wpssndFJF|7}xEQk$z)cBW<`Gk{4^2<=P0 zDv4vGLP!rVlpLBn<(LaQ?3vz(enn1nSpTj(Yg08J+h!bm#b?xqrZO?hYi-73!O@3e zK_-ZET&6r-14DM-CFZR7knr2|^$kRiCA_7{A-L3Y+ooq#$<|w4p1OUtaUw>)7tbq( zc6oO;$cBIb{wcVGOC{zV-wvL~I`;NBXJ~vc->0dxxay&lPb<3Wc_VKIyXV5@9+%t{ zaOdw;>HI-z7Nm{~6tw1iazZbDvGmzG3|_;y2ex%|X4zlkxPnBy412#a$cnuD39x?7 zK&@J`?F;s_J&q9+9<|aqx|pC&SxqzI)QlZr1=Bmd zBbJx93qnV{8A%_izvZKpSbAJ>8oA%6_^N^Q9LpIa*&?!*s<8IB_>{B5eAi#w6WI*~ zs@0}G_L&9Fn%wRrf$8(Dg+5?NAMR*}aRCVBlz@Gga7jeH9s}hq9fT~G~6A?)DBdi#D>oQ=<(S8m6 z?pxY*Y)JZ06?L^?M=-Ym9jvuW?4CKOhns~@93$&RH!NHd&{8gm`PQPuEt{lS9b8&U!(R$D8S|&Ut(G%|w%lF%*(WXg7&P8e_E3x6P zq@~a4T;-xw&{lX9$YiP6uIduUva2V&y1)QrXht#!1_YLUc9mC5lbMV!X?waeg$60? zjxOqLuh`Cp(zs+MCTHXlJnk0pDP~~bN|=VJAlJaDmI@qlxjD<^SL16TpYG$qbrXqX zrIRpoHAJWJ&bjE{KE1{`G9mf=JI%Pm@w&x7GaZ1{(mAzPQ-+ts-LJ z-)xeThF|23kzyFklDZ-!C|0XF65DnInArR>oB=W7*@#(6>g*yJoy&m`f&84 zEPUtbviC!Zz9;)3e8F|v2SsOTzV2oMtFD{Fw z7u>#ovU?XehH&F9Gmx$3maR81>o#H`5*3lt6QR|<$suuBMz z#g&Qdt%2;~u?pO@(_62`eXLqQ`(In$`rH1sPy66KF@Np z3)x%H8}Ldg0LAXkg31w#@n*ooX{9tABcmRl9m|kXMR_Cjgq~8Ng0QpnD7PpQS+Rpm z=libgmX8cmNBEuU_x&lgdRU;+jQf~uz#DdBw0L*@RoJgfcaE2FT=b2$yog}pl!o~G z92mE?uIvyX03Fqorkw{6=@4 zHmBn9a}XruBbMh*x&yk#kceFwc`@6X(jgSD&^d(^j}w%svSX(X(4U(kUY!LqG%WdF z3JN{Z)-nz*eWAjM^xKyt4T6$dav7Mqd8^sRhO}nvd}G(9^O9=oQYlgivJ=0b3NYkG z@V&<2MX>5IgQjRS$o_i%bI^B`#^Duo7zjL zgqS(3cB_2;qK+=AXBI#JcOPi*DKpfHNT@G{`%Z63M}{;No2w0Y--P3`zd{kUu=r=hC2kP_!Ay-sMGe#lKVHUQ9nD$wO%XG^m; zqwG@nDx&`QBf^M}#u$S=j&vfwL(mqMu<2wDFvM1cUJ|CWJV#xy z-UGivdwaU_L6<|hYwCy(q+UN=c1t4>{Q0BlNrdL?>{*3A(6_y7910KjC6@+4GMHEP z)$lBso?cI5M_8Ih_u6EsRn@(f?AJC8l24CY4!AhaR)Oehaz5zC$nW4X1oZ^GC}K zqy37Rz(Zw&0j5A9w=$|LDsAVx%n|0}M>}pmAA0D|P*HMDUb}5;_n{d2mJP}*mH`Zb zRsfW+CG*v@x_BL$@cRZIyYlR~2>x|O%W8?L4LWXGY$6l(5s`DG+5v(%)X#=1VrnfEB4sJgU}zJU$;=>`rd9Le0lqlhN8Fo zQgb6EAdzlDMND9!qAW=C(i7|=4=dJ3pG3r2LQ&gJ^5A(CHnE{owRWF26FQ5N!OzTO z^uII^1RJy1v{DOXz^OcUaBBuYF`60^e)bn;Gu(*l2G}^=!RAU1gJelDdOC@Hy^hh~8P1Eh=k=Y9YF5QVg_nxDgM6af zo*TSATeBXMgY^&nl~Rd|>6TmNOC- z@x5ESZK~UJA0cp%Vzz}QuUbFnt{T6**U}pukz4KG9rAn+_rwL;EK{(K*0dxo@QBW9 z`2hoL%m>b%&P@Fu71SLSSqoJL4+=Ponkr9#;8yZHP#R& zmh(;844d&E10lwEYk{G}7jFD>>inZeTrB - + diff --git a/packages/website/static/manifest.json b/packages/website/static/manifest.json index 1c10758b3a7..3eccbd4b236 100644 --- a/packages/website/static/manifest.json +++ b/packages/website/static/manifest.json @@ -1,6 +1,6 @@ { "background_color": "#443FD4", - "description": "Documentation for TypeScript ESLint: the tooling that enables ESLint to support TypeScript.", + "description": "Documentation for typescript-eslint: the tooling that enables ESLint to support TypeScript.", "display": "standalone", "icons": [ { @@ -16,9 +16,9 @@ } ], "id": "/?source=pwa", - "name": "TypeScript ESLint", + "name": "typescript-eslint", "scope": "/", - "short_name": "TypeScript ESLint", + "short_name": "typescript-eslint", "start_url": "/?source=pwa", "theme_color": "#443FD4" } From 0c6bea6f10371f3feb72ad614f0863c94a1b9407 Mon Sep 17 00:00:00 2001 From: James Henry Date: Mon, 12 Dec 2022 18:10:49 +0400 Subject: [PATCH 181/193] chore: group nx renovate PRs together (#6198) --- .github/renovate.json5 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 0c18b35da84..a681df192af 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -47,6 +47,10 @@ extends: ['monorepo:docusaurus'], groupName: 'docusaurus', }, + { + extends: ['monorepo:nrwl'], + groupName: 'nx', + }, { extends: ['monorepo:babel'], matchPackagePrefixes: ['@types/babel'], From 88cd9cadac725f5d3cda850e5ff49ce62b5695e8 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Mon, 12 Dec 2022 11:52:12 -0500 Subject: [PATCH 182/193] chore: more aggressively clean local dev caches (#6197) --- packages/ast-spec/src/base/BaseNode.ts | 4 ++-- packages/types/package.json | 2 +- tools/postinstall.ts | 5 ++++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/ast-spec/src/base/BaseNode.ts b/packages/ast-spec/src/base/BaseNode.ts index 797b3d35132..6c753efd731 100644 --- a/packages/ast-spec/src/base/BaseNode.ts +++ b/packages/ast-spec/src/base/BaseNode.ts @@ -3,6 +3,8 @@ import type { AST_NODE_TYPES } from '../ast-node-types'; import type { NodeOrTokenData } from './NodeOrTokenData'; export interface BaseNode extends NodeOrTokenData { + type: AST_NODE_TYPES; + /** * The parent node of the current node * @@ -10,6 +12,4 @@ export interface BaseNode extends NodeOrTokenData { * while traversing. */ // parent?: Node; - - type: AST_NODE_TYPES; } diff --git a/packages/types/package.json b/packages/types/package.json index c0d527a45cd..db7b9e35cad 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -33,7 +33,7 @@ "build": "tsc -b tsconfig.build.json", "postbuild": "downlevel-dts dist _ts3.4/dist", "clean": "tsc -b tsconfig.build.json --clean", - "postclean": "rimraf dist && rimraf _ts3.4 && rimraf coverage", + "postclean": "rimraf dist && rimraf src/generated && rimraf _ts3.4 && rimraf coverage", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", "generate:lib": "../../node_modules/.bin/ts-node --files --transpile-only ../scope-manager/tools/generate-lib.ts", "lint": "nx lint", diff --git a/tools/postinstall.ts b/tools/postinstall.ts index b222b290e68..badd3f0137a 100644 --- a/tools/postinstall.ts +++ b/tools/postinstall.ts @@ -21,7 +21,10 @@ void (async function (): Promise { // Install git hooks await $`yarn husky install`; - // // Build all the packages ready for use + // Clean any caches that may be invalid now + await $`yarn clean`; + + // Build all the packages ready for use await $`yarn build`; })(); From c943b845c939944d309cea7a312db4ca645308f3 Mon Sep 17 00:00:00 2001 From: "typescript-eslint[bot]" Date: Mon, 12 Dec 2022 17:16:59 +0000 Subject: [PATCH 183/193] chore: publish v5.46.1 --- CHANGELOG.md | 4 ++++ lerna.json | 2 +- packages/ast-spec/CHANGELOG.md | 4 ++++ packages/ast-spec/package.json | 2 +- packages/eslint-plugin-internal/CHANGELOG.md | 4 ++++ packages/eslint-plugin-internal/package.json | 8 ++++---- packages/eslint-plugin-tslint/CHANGELOG.md | 4 ++++ packages/eslint-plugin-tslint/package.json | 6 +++--- packages/eslint-plugin/CHANGELOG.md | 4 ++++ packages/eslint-plugin/package.json | 8 ++++---- packages/experimental-utils/CHANGELOG.md | 4 ++++ packages/experimental-utils/package.json | 4 ++-- packages/parser/CHANGELOG.md | 4 ++++ packages/parser/package.json | 8 ++++---- packages/scope-manager/CHANGELOG.md | 4 ++++ packages/scope-manager/package.json | 8 ++++---- packages/shared-fixtures/CHANGELOG.md | 4 ++++ packages/shared-fixtures/package.json | 2 +- packages/type-utils/CHANGELOG.md | 4 ++++ packages/type-utils/package.json | 8 ++++---- packages/types/CHANGELOG.md | 4 ++++ packages/types/package.json | 2 +- packages/typescript-estree/CHANGELOG.md | 4 ++++ packages/typescript-estree/package.json | 8 ++++---- packages/utils/CHANGELOG.md | 4 ++++ packages/utils/package.json | 10 +++++----- packages/visitor-keys/CHANGELOG.md | 4 ++++ packages/visitor-keys/package.json | 4 ++-- packages/website-eslint/CHANGELOG.md | 4 ++++ packages/website-eslint/package.json | 16 ++++++++-------- packages/website/CHANGELOG.md | 4 ++++ packages/website/package.json | 8 ++++---- 32 files changed, 116 insertions(+), 52 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 92eb4de6edd..7fbfc4bba22 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.46.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.46.0...v5.46.1) (2022-12-12) + +**Note:** Version bump only for package @typescript-eslint/typescript-eslint + # [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) ### Bug Fixes diff --git a/lerna.json b/lerna.json index 51eefc81908..05ae3263abc 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "5.46.0", + "version": "5.46.1", "npmClient": "yarn", "useWorkspaces": true, "stream": true diff --git a/packages/ast-spec/CHANGELOG.md b/packages/ast-spec/CHANGELOG.md index 6228c3d8a5d..8b8f051a142 100644 --- a/packages/ast-spec/CHANGELOG.md +++ b/packages/ast-spec/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.46.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.46.0...v5.46.1) (2022-12-12) + +**Note:** Version bump only for package @typescript-eslint/ast-spec + # [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) **Note:** Version bump only for package @typescript-eslint/ast-spec diff --git a/packages/ast-spec/package.json b/packages/ast-spec/package.json index f032f072588..dd8390cfc5d 100644 --- a/packages/ast-spec/package.json +++ b/packages/ast-spec/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/ast-spec", - "version": "5.46.0", + "version": "5.46.1", "description": "Complete specification for the TypeScript-ESTree AST", "private": true, "keywords": [ diff --git a/packages/eslint-plugin-internal/CHANGELOG.md b/packages/eslint-plugin-internal/CHANGELOG.md index 0013d5c244b..84d3ba16372 100644 --- a/packages/eslint-plugin-internal/CHANGELOG.md +++ b/packages/eslint-plugin-internal/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.46.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.46.0...v5.46.1) (2022-12-12) + +**Note:** Version bump only for package @typescript-eslint/eslint-plugin-internal + # [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) **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 c1722e736b3..1d3a61a74ea 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": "5.46.0", + "version": "5.46.1", "private": true, "main": "dist/index.js", "scripts": { @@ -14,9 +14,9 @@ }, "dependencies": { "@types/prettier": "*", - "@typescript-eslint/scope-manager": "5.46.0", - "@typescript-eslint/type-utils": "5.46.0", - "@typescript-eslint/utils": "5.46.0", + "@typescript-eslint/scope-manager": "5.46.1", + "@typescript-eslint/type-utils": "5.46.1", + "@typescript-eslint/utils": "5.46.1", "prettier": "*" } } diff --git a/packages/eslint-plugin-tslint/CHANGELOG.md b/packages/eslint-plugin-tslint/CHANGELOG.md index 5ab0940e4a0..037d1977639 100644 --- a/packages/eslint-plugin-tslint/CHANGELOG.md +++ b/packages/eslint-plugin-tslint/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.46.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.46.0...v5.46.1) (2022-12-12) + +**Note:** Version bump only for package @typescript-eslint/eslint-plugin-tslint + # [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) **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 42ccb777fea..ade2a280892 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": "5.46.0", + "version": "5.46.1", "main": "dist/index.js", "typings": "src/index.ts", "description": "ESLint plugin that wraps a TSLint configuration and lints the whole source using TSLint", @@ -38,7 +38,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/utils": "5.46.0", + "@typescript-eslint/utils": "5.46.1", "lodash": "^4.17.21" }, "peerDependencies": { @@ -48,6 +48,6 @@ }, "devDependencies": { "@types/lodash": "*", - "@typescript-eslint/parser": "5.46.0" + "@typescript-eslint/parser": "5.46.1" } } diff --git a/packages/eslint-plugin/CHANGELOG.md b/packages/eslint-plugin/CHANGELOG.md index 52ddd83a1f7..74ddd9d67c6 100644 --- a/packages/eslint-plugin/CHANGELOG.md +++ b/packages/eslint-plugin/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.46.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.46.0...v5.46.1) (2022-12-12) + +**Note:** Version bump only for package @typescript-eslint/eslint-plugin + # [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) ### Bug Fixes diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index e72a8177cd8..31cf59e366d 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/eslint-plugin", - "version": "5.46.0", + "version": "5.46.1", "description": "TypeScript plugin for ESLint", "keywords": [ "eslint", @@ -44,9 +44,9 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/scope-manager": "5.46.0", - "@typescript-eslint/type-utils": "5.46.0", - "@typescript-eslint/utils": "5.46.0", + "@typescript-eslint/scope-manager": "5.46.1", + "@typescript-eslint/type-utils": "5.46.1", + "@typescript-eslint/utils": "5.46.1", "debug": "^4.3.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", diff --git a/packages/experimental-utils/CHANGELOG.md b/packages/experimental-utils/CHANGELOG.md index b23592d3c31..d958d143681 100644 --- a/packages/experimental-utils/CHANGELOG.md +++ b/packages/experimental-utils/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.46.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.46.0...v5.46.1) (2022-12-12) + +**Note:** Version bump only for package @typescript-eslint/experimental-utils + # [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) **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 79f51decab6..4030b20dcb4 100644 --- a/packages/experimental-utils/package.json +++ b/packages/experimental-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/experimental-utils", - "version": "5.46.0", + "version": "5.46.1", "description": "(Experimental) Utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -38,7 +38,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/utils": "5.46.0" + "@typescript-eslint/utils": "5.46.1" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" diff --git a/packages/parser/CHANGELOG.md b/packages/parser/CHANGELOG.md index de589752bf1..ab637d405ae 100644 --- a/packages/parser/CHANGELOG.md +++ b/packages/parser/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.46.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.46.0...v5.46.1) (2022-12-12) + +**Note:** Version bump only for package @typescript-eslint/parser + # [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) **Note:** Version bump only for package @typescript-eslint/parser diff --git a/packages/parser/package.json b/packages/parser/package.json index 0a5458c4b89..e2361a139ed 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/parser", - "version": "5.46.0", + "version": "5.46.1", "description": "An ESLint custom parser which leverages TypeScript ESTree", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -45,9 +45,9 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "dependencies": { - "@typescript-eslint/scope-manager": "5.46.0", - "@typescript-eslint/types": "5.46.0", - "@typescript-eslint/typescript-estree": "5.46.0", + "@typescript-eslint/scope-manager": "5.46.1", + "@typescript-eslint/types": "5.46.1", + "@typescript-eslint/typescript-estree": "5.46.1", "debug": "^4.3.4" }, "devDependencies": { diff --git a/packages/scope-manager/CHANGELOG.md b/packages/scope-manager/CHANGELOG.md index 6701340e904..7af02624853 100644 --- a/packages/scope-manager/CHANGELOG.md +++ b/packages/scope-manager/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.46.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.46.0...v5.46.1) (2022-12-12) + +**Note:** Version bump only for package @typescript-eslint/scope-manager + # [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) **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 dfd3cf37e09..933add59f67 100644 --- a/packages/scope-manager/package.json +++ b/packages/scope-manager/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/scope-manager", - "version": "5.46.0", + "version": "5.46.1", "description": "TypeScript scope analyser for ESLint", "keywords": [ "eslint", @@ -38,12 +38,12 @@ "typecheck": "nx typecheck" }, "dependencies": { - "@typescript-eslint/types": "5.46.0", - "@typescript-eslint/visitor-keys": "5.46.0" + "@typescript-eslint/types": "5.46.1", + "@typescript-eslint/visitor-keys": "5.46.1" }, "devDependencies": { "@types/glob": "*", - "@typescript-eslint/typescript-estree": "5.46.0", + "@typescript-eslint/typescript-estree": "5.46.1", "glob": "*", "jest-specific-snapshot": "*", "make-dir": "*", diff --git a/packages/shared-fixtures/CHANGELOG.md b/packages/shared-fixtures/CHANGELOG.md index a728263dd9d..8954c99d3f8 100644 --- a/packages/shared-fixtures/CHANGELOG.md +++ b/packages/shared-fixtures/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.46.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.46.0...v5.46.1) (2022-12-12) + +**Note:** Version bump only for package @typescript-eslint/shared-fixtures + # [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) **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 61b97091dc6..fe37cc39921 100644 --- a/packages/shared-fixtures/package.json +++ b/packages/shared-fixtures/package.json @@ -1,6 +1,6 @@ { "description": "Code fixtures used to test the typescript-estree parser.", "name": "@typescript-eslint/shared-fixtures", - "version": "5.46.0", + "version": "5.46.1", "private": true } diff --git a/packages/type-utils/CHANGELOG.md b/packages/type-utils/CHANGELOG.md index 938a1093178..8ef63cde40c 100644 --- a/packages/type-utils/CHANGELOG.md +++ b/packages/type-utils/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.46.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.46.0...v5.46.1) (2022-12-12) + +**Note:** Version bump only for package @typescript-eslint/type-utils + # [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) **Note:** Version bump only for package @typescript-eslint/type-utils diff --git a/packages/type-utils/package.json b/packages/type-utils/package.json index 0a112a99e35..6b4acb042ba 100644 --- a/packages/type-utils/package.json +++ b/packages/type-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/type-utils", - "version": "5.46.0", + "version": "5.46.1", "description": "Type utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -39,13 +39,13 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/typescript-estree": "5.46.0", - "@typescript-eslint/utils": "5.46.0", + "@typescript-eslint/typescript-estree": "5.46.1", + "@typescript-eslint/utils": "5.46.1", "debug": "^4.3.4", "tsutils": "^3.21.0" }, "devDependencies": { - "@typescript-eslint/parser": "5.46.0", + "@typescript-eslint/parser": "5.46.1", "typescript": "*" }, "peerDependencies": { diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index e05ec18ae74..3350b0f5470 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.46.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.46.0...v5.46.1) (2022-12-12) + +**Note:** Version bump only for package @typescript-eslint/types + # [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) **Note:** Version bump only for package @typescript-eslint/types diff --git a/packages/types/package.json b/packages/types/package.json index db7b9e35cad..68258118ae1 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/types", - "version": "5.46.0", + "version": "5.46.1", "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 c4d22164671..7c12eb686eb 100644 --- a/packages/typescript-estree/CHANGELOG.md +++ b/packages/typescript-estree/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.46.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.46.0...v5.46.1) (2022-12-12) + +**Note:** Version bump only for package @typescript-eslint/typescript-estree + # [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) **Note:** Version bump only for package @typescript-eslint/typescript-estree diff --git a/packages/typescript-estree/package.json b/packages/typescript-estree/package.json index 10bce9f50f5..f03bb3eeecf 100644 --- a/packages/typescript-estree/package.json +++ b/packages/typescript-estree/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/typescript-estree", - "version": "5.46.0", + "version": "5.46.1", "description": "A parser that converts TypeScript source code into an ESTree compatible form", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -42,8 +42,8 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "5.46.0", - "@typescript-eslint/visitor-keys": "5.46.0", + "@typescript-eslint/types": "5.46.1", + "@typescript-eslint/visitor-keys": "5.46.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -59,7 +59,7 @@ "@types/is-glob": "*", "@types/semver": "*", "@types/tmp": "*", - "@typescript-eslint/shared-fixtures": "5.46.0", + "@typescript-eslint/shared-fixtures": "5.46.1", "glob": "*", "jest-specific-snapshot": "*", "make-dir": "*", diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md index ae8facf9cba..40853481544 100644 --- a/packages/utils/CHANGELOG.md +++ b/packages/utils/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.46.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.46.0...v5.46.1) (2022-12-12) + +**Note:** Version bump only for package @typescript-eslint/utils + # [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) **Note:** Version bump only for package @typescript-eslint/utils diff --git a/packages/utils/package.json b/packages/utils/package.json index 82248615fa2..f0c35d911e1 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/utils", - "version": "5.46.0", + "version": "5.46.1", "description": "Utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -41,9 +41,9 @@ "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.46.0", - "@typescript-eslint/types": "5.46.0", - "@typescript-eslint/typescript-estree": "5.46.0", + "@typescript-eslint/scope-manager": "5.46.1", + "@typescript-eslint/types": "5.46.1", + "@typescript-eslint/typescript-estree": "5.46.1", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -52,7 +52,7 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "devDependencies": { - "@typescript-eslint/parser": "5.46.0", + "@typescript-eslint/parser": "5.46.1", "typescript": "*" }, "funding": { diff --git a/packages/visitor-keys/CHANGELOG.md b/packages/visitor-keys/CHANGELOG.md index be564a6aaf1..d3c1d03fde2 100644 --- a/packages/visitor-keys/CHANGELOG.md +++ b/packages/visitor-keys/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.46.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.46.0...v5.46.1) (2022-12-12) + +**Note:** Version bump only for package @typescript-eslint/visitor-keys + # [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) **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 8f901922dfb..57f71eee155 100644 --- a/packages/visitor-keys/package.json +++ b/packages/visitor-keys/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/visitor-keys", - "version": "5.46.0", + "version": "5.46.1", "description": "Visitor keys used to help traverse the TypeScript-ESTree AST", "keywords": [ "eslint", @@ -39,7 +39,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "5.46.0", + "@typescript-eslint/types": "5.46.1", "eslint-visitor-keys": "^3.3.0" }, "devDependencies": { diff --git a/packages/website-eslint/CHANGELOG.md b/packages/website-eslint/CHANGELOG.md index 6ab72c69153..1006fd2ea83 100644 --- a/packages/website-eslint/CHANGELOG.md +++ b/packages/website-eslint/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.46.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.46.0...v5.46.1) (2022-12-12) + +**Note:** Version bump only for package @typescript-eslint/website-eslint + # [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) **Note:** Version bump only for package @typescript-eslint/website-eslint diff --git a/packages/website-eslint/package.json b/packages/website-eslint/package.json index 85dd2680a89..b95f1231027 100644 --- a/packages/website-eslint/package.json +++ b/packages/website-eslint/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/website-eslint", - "version": "5.46.0", + "version": "5.46.1", "private": true, "description": "ESLint which works in browsers.", "engines": { @@ -16,19 +16,19 @@ "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore" }, "dependencies": { - "@typescript-eslint/types": "5.46.0", - "@typescript-eslint/utils": "5.46.0" + "@typescript-eslint/types": "5.46.1", + "@typescript-eslint/utils": "5.46.1" }, "devDependencies": { "@rollup/plugin-commonjs": "^23.0.0", "@rollup/plugin-json": "^5.0.0", "@rollup/plugin-node-resolve": "^15.0.0", "@rollup/pluginutils": "^5.0.0", - "@typescript-eslint/eslint-plugin": "5.46.0", - "@typescript-eslint/parser": "5.46.0", - "@typescript-eslint/scope-manager": "5.46.0", - "@typescript-eslint/typescript-estree": "5.46.0", - "@typescript-eslint/visitor-keys": "5.46.0", + "@typescript-eslint/eslint-plugin": "5.46.1", + "@typescript-eslint/parser": "5.46.1", + "@typescript-eslint/scope-manager": "5.46.1", + "@typescript-eslint/typescript-estree": "5.46.1", + "@typescript-eslint/visitor-keys": "5.46.1", "eslint": "*", "rollup": "^2.75.4", "rollup-plugin-terser": "^7.0.2", diff --git a/packages/website/CHANGELOG.md b/packages/website/CHANGELOG.md index a37e18804aa..b0a49ca4a19 100644 --- a/packages/website/CHANGELOG.md +++ b/packages/website/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.46.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.46.0...v5.46.1) (2022-12-12) + +**Note:** Version bump only for package website + # [5.46.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0) (2022-12-08) **Note:** Version bump only for package website diff --git a/packages/website/package.json b/packages/website/package.json index 0bc291bbd23..f2e254b7fd0 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -1,6 +1,6 @@ { "name": "website", - "version": "5.46.0", + "version": "5.46.1", "private": true, "scripts": { "build": "docusaurus build", @@ -21,8 +21,8 @@ "@docusaurus/remark-plugin-npm2yarn": "~2.2.0", "@docusaurus/theme-common": "~2.2.0", "@mdx-js/react": "1.6.22", - "@typescript-eslint/parser": "5.46.0", - "@typescript-eslint/website-eslint": "5.46.0", + "@typescript-eslint/parser": "5.46.1", + "@typescript-eslint/website-eslint": "5.46.1", "clsx": "^1.1.1", "eslint": "*", "json-schema": "^0.4.0", @@ -48,7 +48,7 @@ "@types/react": "^18.0.9", "@types/react-helmet": "^6.1.5", "@types/react-router-dom": "^5.3.3", - "@typescript-eslint/eslint-plugin": "5.46.0", + "@typescript-eslint/eslint-plugin": "5.46.1", "copy-webpack-plugin": "^11.0.0", "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-react": "^7.29.4", From 6b3ed1d5b66e20a67b20977084b654644c6f7311 Mon Sep 17 00:00:00 2001 From: Christopher Lee Date: Mon, 12 Dec 2022 18:16:00 -0500 Subject: [PATCH 184/193] docs: fixed typo "foo.property" (#6180) --- packages/eslint-plugin/docs/rules/no-non-null-assertion.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/eslint-plugin/docs/rules/no-non-null-assertion.md b/packages/eslint-plugin/docs/rules/no-non-null-assertion.md index d8ac3bd3104..874e01605c8 100644 --- a/packages/eslint-plugin/docs/rules/no-non-null-assertion.md +++ b/packages/eslint-plugin/docs/rules/no-non-null-assertion.md @@ -22,7 +22,7 @@ interface Example { } declare const example: Example; -const includesBaz = foo.property!.includes('baz'); +const includesBaz = example.property!.includes('baz'); ``` ### ✅ Correct @@ -33,7 +33,7 @@ interface Example { } declare const example: Example; -const includesBaz = foo.property?.includes('baz') ?? false; +const includesBaz = example.property?.includes('baz') ?? false; ``` ## When Not To Use It From 89130772b255071003d866ceb6e357edaeb26ca5 Mon Sep 17 00:00:00 2001 From: "typescript-eslint[bot]" <53356952+typescript-eslint[bot]@users.noreply.github.com> Date: Tue, 13 Dec 2022 09:46:47 +1030 Subject: [PATCH 185/193] chore: update contributors (#6182) Co-authored-by: typescript-eslint[bot] --- CONTRIBUTORS.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index ff1a7dbe9a4..2dcd4d3f847 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -48,21 +48,21 @@ Thanks goes to these wonderful people:
Ika +
cherryblossom

mackie

Bryan Mishkin

Kanitkorn Sujautra
-
cherryblossom
-
Zzzen
+
Omri Luzon
+
Zzzen

Anix

Daniil Dubrava

Pete Gonzalez

ldrick
-
Susisu
-
Omri Luzon
+
Susisu

SHIMA RYUHEI

Gavin Barron

Kevin Partington
@@ -72,21 +72,21 @@ Thanks goes to these wonderful people:
Niles Salter

Pavel Birukov

Shahar Dawn Or
-
koooge
-
thomas michael wallace
+
kmin-jeong
+
James Garbutt
-
ulrichb
-
Juan García
-
Sviatoslav Zaytsev
-
Daniel Cassidy
-
Daniel Nixon
+
Jonathan Delgado
+
Philipp A.
+
Pig Fang
+
Tadhg McDonald-Jensen
+
Thomas den Hollander
-
Denys Kniazevych
-
Dimitri Mitropoulos
-
James Garbutt
-
Philipp A.
+
Tim Kraut
+
Yasar Siddiqui
+
Yusuke Tanaka
+
zz
From d8ebe41b942e97e5dd060570213d8245b0297f6f Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Tue, 13 Dec 2022 02:48:27 -0500 Subject: [PATCH 186/193] chore(website): manually centered homepage buttons (#6201) --- packages/website/src/pages/index.tsx | 4 ++-- packages/website/src/pages/styles.module.css | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/website/src/pages/index.tsx b/packages/website/src/pages/index.tsx index c66571392d4..5f2528ba518 100644 --- a/packages/website/src/pages/index.tsx +++ b/packages/website/src/pages/index.tsx @@ -120,7 +120,7 @@ function Feature({ title, description }: FeatureItem): JSX.Element {

{description}

Get Started @@ -140,7 +140,7 @@ function Home(): JSX.Element {

{siteConfig.tagline}

Get Started diff --git a/packages/website/src/pages/styles.module.css b/packages/website/src/pages/styles.module.css index bcd6dd9be99..309dc8e9d9e 100644 --- a/packages/website/src/pages/styles.module.css +++ b/packages/website/src/pages/styles.module.css @@ -35,6 +35,10 @@ margin: 1rem 1rem; } +.buttonCentered { + margin: auto; +} + .buttonPrimary { border: var(--ifm-button-border-width) solid var(--ifm-button-color); } From 447bb27854ebf156e656f3cd358086816a30efbf Mon Sep 17 00:00:00 2001 From: James Henry Date: Tue, 13 Dec 2022 12:03:31 +0400 Subject: [PATCH 187/193] chore: make clean non-interactive, add explicit @nrwl/jest (#6205) --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 021f9250bef..a446df1bee7 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "check-docs": "nx run-many --target=check-docs --all --parallel", "check-format": "prettier --list-different .", "check-spelling": "cspell --config=.cspell.json \"**/*.{md,mdx,ts,mts,cts,js,cjs,mjs,tsx,jsx}\"", - "clean": "lerna clean && lerna run clean", + "clean": "lerna clean -y && nx run-many --target=clean", "format": "prettier --write .", "generate-contributors": "yarn ts-node --transpile-only ./tools/generate-contributors.ts", "generate-sponsors": "yarn ts-node --transpile-only ./tools/generate-sponsors.ts", @@ -55,6 +55,7 @@ "@babel/parser": "^7.20.3", "@babel/types": "^7.20.2", "@nrwl/nx-cloud": "15.0.2", + "@nrwl/jest": "15.2.4", "@nrwl/workspace": "15.2.4", "@swc/core": "^1.3.1", "@swc/jest": "^0.2.21", From c3cfe22b4ac152de42a136678dfda50d766a59c8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 13 Dec 2022 08:26:17 +0000 Subject: [PATCH 188/193] chore(deps): update nx to v15.3.0 (#6199) --- package.json | 6 +-- yarn.lock | 105 ++++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 87 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index a446df1bee7..47ee9e34f0b 100644 --- a/package.json +++ b/package.json @@ -55,8 +55,8 @@ "@babel/parser": "^7.20.3", "@babel/types": "^7.20.2", "@nrwl/nx-cloud": "15.0.2", - "@nrwl/jest": "15.2.4", - "@nrwl/workspace": "15.2.4", + "@nrwl/jest": "15.3.0", + "@nrwl/workspace": "15.3.0", "@swc/core": "^1.3.1", "@swc/jest": "^0.2.21", "@types/babel__code-frame": "^7.0.3", @@ -99,7 +99,7 @@ "make-dir": "^3.1.0", "markdownlint-cli": "^0.32.0", "ncp": "^2.0.0", - "nx": "15.2.4", + "nx": "15.3.0", "patch-package": "^6.4.7", "prettier": "2.8.0", "pretty-format": "^29.0.3", diff --git a/yarn.lock b/yarn.lock index 2e7212495ad..71ab165466d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3218,7 +3218,25 @@ dependencies: nx "15.2.4" -"@nrwl/devkit@15.2.4", "@nrwl/devkit@>=14.8.6 < 16": +"@nrwl/cli@15.3.0": + version "15.3.0" + resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-15.3.0.tgz#61b145d2ba613f9df4dbb9188e631ca50a4e42cb" + integrity sha512-WAki2+puBp6qel/VAxdQmr/L/sLyw8K6bynYNmMl4eIlR5hjefrUChPzUiJDAS9/CUYQNOyva2VV5wofzdv95w== + dependencies: + nx "15.3.0" + +"@nrwl/devkit@15.3.0": + version "15.3.0" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-15.3.0.tgz#4b0fc4c94f0b92413aa3d028f8cc75f586936d27" + integrity sha512-1O9QLB/eYS6ddw4MZnV4yj4CEqLIbpleZZiG/9w1TaiVO/jfNfXVaxc8EA87XSzMpk2W+/4Qggmabt6gAQaabA== + dependencies: + "@phenomnomnominal/tsquery" "4.1.1" + ejs "^3.1.7" + ignore "^5.0.4" + semver "7.3.4" + tslib "^2.3.0" + +"@nrwl/devkit@>=14.8.6 < 16": version "15.2.4" resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-15.2.4.tgz#ffcb69f462df19d3d282cf25bf346926ee23f141" integrity sha512-5JZWB4ydnu+NKNIfj958nML8AWwhareQ+Q1hLXoOIS/7brqfALNP3y/Ef1ljrLIo1f3xc484TPclqwSH7aRdvQ== @@ -3229,14 +3247,14 @@ semver "7.3.4" tslib "^2.3.0" -"@nrwl/jest@15.2.4": - version "15.2.4" - resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-15.2.4.tgz#c0be05b554f7078d900d829145ce40974a5387ab" - integrity sha512-b2GoUPPs4/EAGhJvUn41sphD0Ln9P3ybX2Cyb1U5upM9glOGU5qdGYO20ZMl7IJhEL17QRcojUudWTnk1RejHA== +"@nrwl/jest@15.3.0": + version "15.3.0" + resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-15.3.0.tgz#4b620c2149452c50026149a18b080432be2594aa" + integrity sha512-WPBxCj6xAsVT6UWZWPlHvL0mHSeiCMDdunH0KamSGkqUBiukqydJ4m/QkvDjR5zBnsxZG3CgD17m2hEkT+diZQ== dependencies: "@jest/reporters" "28.1.1" "@jest/test-result" "28.1.1" - "@nrwl/devkit" "15.2.4" + "@nrwl/devkit" "15.3.0" "@phenomnomnominal/tsquery" "4.1.1" chalk "4.1.0" dotenv "~10.0.0" @@ -3247,15 +3265,13 @@ resolve.exports "1.1.0" tslib "^2.3.0" -"@nrwl/linter@15.2.4": - version "15.2.4" - resolved "https://registry.yarnpkg.com/@nrwl/linter/-/linter-15.2.4.tgz#f61e25c905156c962a63df674340f8a66ac0cc5f" - integrity sha512-EINxMgb7uEYW2rhj8MomHLktUsVAVlGBSTEZSg7SC32vgzY+QJ144qubLNlCHzSV1O5J/LMugoAHt3E+0eNHyA== +"@nrwl/linter@15.3.0": + version "15.3.0" + resolved "https://registry.yarnpkg.com/@nrwl/linter/-/linter-15.3.0.tgz#dfb6f7bbeb65672d0614d835c4373d353d18e287" + integrity sha512-pxmL9taYRjKsQC3/XAD9JJCoIRGiuAs+xW4798kD/SFCRQEs5CddA3J4M1y9YoyPjiocNDfUE2AvVMOuM2qbDw== dependencies: - "@nrwl/devkit" "15.2.4" - "@nrwl/jest" "15.2.4" + "@nrwl/devkit" "15.3.0" "@phenomnomnominal/tsquery" "4.1.1" - nx "15.2.4" tmp "~0.2.1" tslib "^2.3.0" @@ -3280,14 +3296,20 @@ dependencies: nx "15.2.4" -"@nrwl/workspace@15.2.4": - version "15.2.4" - resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-15.2.4.tgz#9160cf7ce9ffe0fe40437a6bf8b3a0caf1a7764c" - integrity sha512-h35+NwG2zCeJpQzLevw8q9frrKCwsQyOfUxzyP7nApoxQNO70iGdTwRli/dvB7jVIckp3x78yLuu32D9oqiKEA== +"@nrwl/tao@15.3.0": + version "15.3.0" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-15.3.0.tgz#20266f1269815cb28e21677b0aa7f913a7e31b17" + integrity sha512-alyzKKSgfgPwQ/FUozvk43VGOZHyNMiSM6Udl49ZaQwT77GXRFkrOu21odW6dciWPd3iUOUjfJISNqrEJmxvpw== dependencies: - "@nrwl/devkit" "15.2.4" - "@nrwl/jest" "15.2.4" - "@nrwl/linter" "15.2.4" + nx "15.3.0" + +"@nrwl/workspace@15.3.0": + version "15.3.0" + resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-15.3.0.tgz#8aa8ee1e0cd31bec3e4117a7e54ce0b94953f2ee" + integrity sha512-MjDRzDZLke3A44FeMjaV9Zyc3XcgbZJlrvFe0nDj7lo3/aLP/SvltE30kfkTwlg7EwvyCSv61lt9zz2NMxpHQw== + dependencies: + "@nrwl/devkit" "15.3.0" + "@nrwl/linter" "15.3.0" "@parcel/watcher" "2.0.4" chalk "4.1.0" chokidar "^3.5.1" @@ -3302,7 +3324,7 @@ ignore "^5.0.4" minimatch "3.0.5" npm-run-path "^4.0.1" - nx "15.2.4" + nx "15.3.0" open "^8.4.0" rxjs "^6.5.4" semver "7.3.4" @@ -10634,6 +10656,47 @@ nx@15.2.4, "nx@>=14.8.6 < 16": yargs "^17.6.2" yargs-parser "21.1.1" +nx@15.3.0: + version "15.3.0" + resolved "https://registry.yarnpkg.com/nx/-/nx-15.3.0.tgz#50916064145cf33ba68fb8bd03ff8ffc2b9ebc7b" + integrity sha512-5tBrEF2zDkGBDfe8wThazJqBDhsVkRrxc6OttzfBmkXP4VPp8w5MMtUEOry181AXKfjDGkw//UnCSkUNynTDlw== + dependencies: + "@nrwl/cli" "15.3.0" + "@nrwl/tao" "15.3.0" + "@parcel/watcher" "2.0.4" + "@yarnpkg/lockfile" "^1.1.0" + "@yarnpkg/parsers" "^3.0.0-rc.18" + "@zkochan/js-yaml" "0.0.6" + axios "^1.0.0" + chalk "4.1.0" + chokidar "^3.5.1" + cli-cursor "3.1.0" + cli-spinners "2.6.1" + cliui "^7.0.2" + dotenv "~10.0.0" + enquirer "~2.3.6" + fast-glob "3.2.7" + figures "3.2.0" + flat "^5.0.2" + fs-extra "^10.1.0" + glob "7.1.4" + ignore "^5.0.4" + js-yaml "4.1.0" + jsonc-parser "3.2.0" + minimatch "3.0.5" + npm-run-path "^4.0.1" + open "^8.4.0" + semver "7.3.4" + string-width "^4.2.3" + strong-log-transformer "^2.1.0" + tar-stream "~2.2.0" + tmp "~0.2.1" + tsconfig-paths "^3.9.0" + tslib "^2.3.0" + v8-compile-cache "2.3.0" + yargs "^17.6.2" + yargs-parser "21.1.1" + object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" From 3ce2549466741de3624fce6b6c9729bca60767cc Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Tue, 13 Dec 2022 09:47:15 -0500 Subject: [PATCH 189/193] chore(website): put logo on the homepage (#6202) --- packages/website/src/pages/index.tsx | 1 + packages/website/src/pages/styles.module.css | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/packages/website/src/pages/index.tsx b/packages/website/src/pages/index.tsx index 5f2528ba518..4ea4f88fd86 100644 --- a/packages/website/src/pages/index.tsx +++ b/packages/website/src/pages/index.tsx @@ -136,6 +136,7 @@ function Home(): JSX.Element {
+

{siteConfig.title}

{siteConfig.tagline}

diff --git a/packages/website/src/pages/styles.module.css b/packages/website/src/pages/styles.module.css index 309dc8e9d9e..eec92f56346 100644 --- a/packages/website/src/pages/styles.module.css +++ b/packages/website/src/pages/styles.module.css @@ -17,6 +17,11 @@ text-align: center; } +.hero__logo { + height: 10rem; + width: 10rem; +} + .hero__subtitle { margin-bottom: 24px; } From 7c147edc51406776ee13d51e694371f9f6d37b53 Mon Sep 17 00:00:00 2001 From: Jeroen van Warmerdam Date: Wed, 14 Dec 2022 21:16:35 +0100 Subject: [PATCH 190/193] docs: fix contributors spelling (#6214) docs: grammar --- .../website/src/components/FinancialContributors/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/website/src/components/FinancialContributors/index.tsx b/packages/website/src/components/FinancialContributors/index.tsx index e0f83e34293..d71bd065004 100644 --- a/packages/website/src/components/FinancialContributors/index.tsx +++ b/packages/website/src/components/FinancialContributors/index.tsx @@ -10,8 +10,8 @@ export function FinancialContributors(): JSX.Element { return ( <>

- The typescript-estlint project would not be possible without the - generous support of our financial contributors. + The typescript-eslint project would not be possible without the generous + support of our financial contributors.

Date: Fri, 16 Dec 2022 10:02:17 +1030 Subject: [PATCH 191/193] chore(deps): update nx to v15.3.2 (#6220) * chore(deps): update nx to v15.3.2 * chore: run nx migrate for @nrwl/workspace v15.3.2 Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: JamesHenry --- package.json | 6 ++--- yarn.lock | 74 ++++++++++++++++++++++++++-------------------------- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/package.json b/package.json index 47ee9e34f0b..ead2b34ea82 100644 --- a/package.json +++ b/package.json @@ -55,8 +55,8 @@ "@babel/parser": "^7.20.3", "@babel/types": "^7.20.2", "@nrwl/nx-cloud": "15.0.2", - "@nrwl/jest": "15.3.0", - "@nrwl/workspace": "15.3.0", + "@nrwl/jest": "15.3.2", + "@nrwl/workspace": "15.3.2", "@swc/core": "^1.3.1", "@swc/jest": "^0.2.21", "@types/babel__code-frame": "^7.0.3", @@ -99,7 +99,7 @@ "make-dir": "^3.1.0", "markdownlint-cli": "^0.32.0", "ncp": "^2.0.0", - "nx": "15.3.0", + "nx": "15.3.2", "patch-package": "^6.4.7", "prettier": "2.8.0", "pretty-format": "^29.0.3", diff --git a/yarn.lock b/yarn.lock index 71ab165466d..0c714b7280a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3218,17 +3218,17 @@ dependencies: nx "15.2.4" -"@nrwl/cli@15.3.0": - version "15.3.0" - resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-15.3.0.tgz#61b145d2ba613f9df4dbb9188e631ca50a4e42cb" - integrity sha512-WAki2+puBp6qel/VAxdQmr/L/sLyw8K6bynYNmMl4eIlR5hjefrUChPzUiJDAS9/CUYQNOyva2VV5wofzdv95w== +"@nrwl/cli@15.3.2": + version "15.3.2" + resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-15.3.2.tgz#dd713e6d6a064587a0ededd75d301b72f820e222" + integrity sha512-3xlH5LlNDzQ1mvVk+8w2WPoDwaOuUKR+9+38nnxTW6jW8g8S+h259/2IGsXnJ+cD7oEv3TARTC6aCrwVNn7egA== dependencies: - nx "15.3.0" + nx "15.3.2" -"@nrwl/devkit@15.3.0": - version "15.3.0" - resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-15.3.0.tgz#4b0fc4c94f0b92413aa3d028f8cc75f586936d27" - integrity sha512-1O9QLB/eYS6ddw4MZnV4yj4CEqLIbpleZZiG/9w1TaiVO/jfNfXVaxc8EA87XSzMpk2W+/4Qggmabt6gAQaabA== +"@nrwl/devkit@15.3.2": + version "15.3.2" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-15.3.2.tgz#44ea9bc038ce87d9ea24447f6b3f3e1351a58787" + integrity sha512-h0MmDOjvhBJCrpXaAEK6eojpO5juaV6OEX0XjadPAQs4McxTALJxNP7Te6wIfgsY8t9WecARPIt85zKsLJeCjg== dependencies: "@phenomnomnominal/tsquery" "4.1.1" ejs "^3.1.7" @@ -3247,14 +3247,14 @@ semver "7.3.4" tslib "^2.3.0" -"@nrwl/jest@15.3.0": - version "15.3.0" - resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-15.3.0.tgz#4b620c2149452c50026149a18b080432be2594aa" - integrity sha512-WPBxCj6xAsVT6UWZWPlHvL0mHSeiCMDdunH0KamSGkqUBiukqydJ4m/QkvDjR5zBnsxZG3CgD17m2hEkT+diZQ== +"@nrwl/jest@15.3.2": + version "15.3.2" + resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-15.3.2.tgz#5616af79444914e8a6c4b0dd7426eac8993accfb" + integrity sha512-3ksxm7gtJjXp/WeThxs2H5bAYI0zWQwquTjaNwaGKWvtwjtUbu+sM4zEF2HgOu4CKP6In3wFA4q0gZH7QlCEsw== dependencies: "@jest/reporters" "28.1.1" "@jest/test-result" "28.1.1" - "@nrwl/devkit" "15.3.0" + "@nrwl/devkit" "15.3.2" "@phenomnomnominal/tsquery" "4.1.1" chalk "4.1.0" dotenv "~10.0.0" @@ -3265,12 +3265,12 @@ resolve.exports "1.1.0" tslib "^2.3.0" -"@nrwl/linter@15.3.0": - version "15.3.0" - resolved "https://registry.yarnpkg.com/@nrwl/linter/-/linter-15.3.0.tgz#dfb6f7bbeb65672d0614d835c4373d353d18e287" - integrity sha512-pxmL9taYRjKsQC3/XAD9JJCoIRGiuAs+xW4798kD/SFCRQEs5CddA3J4M1y9YoyPjiocNDfUE2AvVMOuM2qbDw== +"@nrwl/linter@15.3.2": + version "15.3.2" + resolved "https://registry.yarnpkg.com/@nrwl/linter/-/linter-15.3.2.tgz#7c947ece44d964d7331795e405966da71a02318b" + integrity sha512-sMOgmMufH5jhsseRLipKTk7GTfW3l0edjHFj9zVo49tQmGjMeurXdIw4MkJhX23JdSc1w1JGdrqeUi10iqtMyg== dependencies: - "@nrwl/devkit" "15.3.0" + "@nrwl/devkit" "15.3.2" "@phenomnomnominal/tsquery" "4.1.1" tmp "~0.2.1" tslib "^2.3.0" @@ -3296,20 +3296,20 @@ dependencies: nx "15.2.4" -"@nrwl/tao@15.3.0": - version "15.3.0" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-15.3.0.tgz#20266f1269815cb28e21677b0aa7f913a7e31b17" - integrity sha512-alyzKKSgfgPwQ/FUozvk43VGOZHyNMiSM6Udl49ZaQwT77GXRFkrOu21odW6dciWPd3iUOUjfJISNqrEJmxvpw== +"@nrwl/tao@15.3.2": + version "15.3.2" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-15.3.2.tgz#3498bd6596e582cbc5b922a45e5d8db5bcb2ce47" + integrity sha512-iP7e7gxSLn7xahz13Mj0c6KMSd9S2sUmD1Z6+F/H/lThikkrgURckSyZFtAW6OQNYOkWWi9RwdzVsH5He0syhQ== dependencies: - nx "15.3.0" + nx "15.3.2" -"@nrwl/workspace@15.3.0": - version "15.3.0" - resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-15.3.0.tgz#8aa8ee1e0cd31bec3e4117a7e54ce0b94953f2ee" - integrity sha512-MjDRzDZLke3A44FeMjaV9Zyc3XcgbZJlrvFe0nDj7lo3/aLP/SvltE30kfkTwlg7EwvyCSv61lt9zz2NMxpHQw== +"@nrwl/workspace@15.3.2": + version "15.3.2" + resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-15.3.2.tgz#143609997f1e391083a2934a7e5305f0ef385ea5" + integrity sha512-h5WtTpRTHBmcO/V7WPnkzGJADQtAubZAinTn5ptkvFOYr0jnidwiVOidm0AgNvYMJtHIUf8h3jbKUIBAsRFF0g== dependencies: - "@nrwl/devkit" "15.3.0" - "@nrwl/linter" "15.3.0" + "@nrwl/devkit" "15.3.2" + "@nrwl/linter" "15.3.2" "@parcel/watcher" "2.0.4" chalk "4.1.0" chokidar "^3.5.1" @@ -3324,7 +3324,7 @@ ignore "^5.0.4" minimatch "3.0.5" npm-run-path "^4.0.1" - nx "15.3.0" + nx "15.3.2" open "^8.4.0" rxjs "^6.5.4" semver "7.3.4" @@ -10656,13 +10656,13 @@ nx@15.2.4, "nx@>=14.8.6 < 16": yargs "^17.6.2" yargs-parser "21.1.1" -nx@15.3.0: - version "15.3.0" - resolved "https://registry.yarnpkg.com/nx/-/nx-15.3.0.tgz#50916064145cf33ba68fb8bd03ff8ffc2b9ebc7b" - integrity sha512-5tBrEF2zDkGBDfe8wThazJqBDhsVkRrxc6OttzfBmkXP4VPp8w5MMtUEOry181AXKfjDGkw//UnCSkUNynTDlw== +nx@15.3.2: + version "15.3.2" + resolved "https://registry.yarnpkg.com/nx/-/nx-15.3.2.tgz#3269b7c1c0be4dc4c389a4c54f463eb43636d542" + integrity sha512-i/y9pkZj6OACnk/+VmJaqrRIhY9VZw0twyeUp9z3gy7KElFoQZ7EMm4LcacFpVYy/MTsHYi0c87CDzkSyPogOA== dependencies: - "@nrwl/cli" "15.3.0" - "@nrwl/tao" "15.3.0" + "@nrwl/cli" "15.3.2" + "@nrwl/tao" "15.3.2" "@parcel/watcher" "2.0.4" "@yarnpkg/lockfile" "^1.1.0" "@yarnpkg/parsers" "^3.0.0-rc.18" From c50b89e69dcb69b2de721b3786f47d537420fa40 Mon Sep 17 00:00:00 2001 From: "typescript-eslint[bot]" <53356952+typescript-eslint[bot]@users.noreply.github.com> Date: Fri, 16 Dec 2022 12:29:12 +1030 Subject: [PATCH 192/193] chore: update sponsors (#6222) Co-authored-by: typescript-eslint[bot] --- packages/website/data/sponsors.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/website/data/sponsors.json b/packages/website/data/sponsors.json index 83e40bf42b2..d550faf83f8 100644 --- a/packages/website/data/sponsors.json +++ b/packages/website/data/sponsors.json @@ -132,6 +132,13 @@ "totalDonations": 15500, "website": "https://blacksheepcode.com" }, + { + "id": "THANKS.DEV", + "image": "https://images.opencollective.com/thanks-dev/ed78b39/logo.png", + "name": "THANKS.DEV", + "totalDonations": 14761, + "website": "https://thanks.dev" + }, { "id": "Joe Alden", "image": "https://images.opencollective.com/joealden/44a6738/avatar.png", From 9e35ef9af3ec51ab2dd49336699f3a94528bb4b1 Mon Sep 17 00:00:00 2001 From: kj <34977512+sena-anny@users.noreply.github.com> Date: Fri, 16 Dec 2022 12:17:36 +0900 Subject: [PATCH 193/193] feat(eslint-plugin): [no-floating-promises] add suggestion fixer to add an 'await' (#5943) --- .../src/rules/no-floating-promises.ts | 51 ++++++- .../tests/rules/no-floating-promises.test.ts | 141 ++++++++++++++++++ 2 files changed, 190 insertions(+), 2 deletions(-) diff --git a/packages/eslint-plugin/src/rules/no-floating-promises.ts b/packages/eslint-plugin/src/rules/no-floating-promises.ts index 05f0954e305..61829743e81 100644 --- a/packages/eslint-plugin/src/rules/no-floating-promises.ts +++ b/packages/eslint-plugin/src/rules/no-floating-promises.ts @@ -1,7 +1,7 @@ import type { TSESLint, TSESTree } from '@typescript-eslint/utils'; import { AST_NODE_TYPES } from '@typescript-eslint/utils'; import * as tsutils from 'tsutils'; -import type * as ts from 'typescript'; +import * as ts from 'typescript'; import * as util from '../util'; @@ -12,7 +12,11 @@ type Options = [ }, ]; -type MessageId = 'floating' | 'floatingVoid' | 'floatingFixVoid'; +type MessageId = + | 'floating' + | 'floatingVoid' + | 'floatingFixVoid' + | 'floatingFixAwait'; export default util.createRule({ name: 'no-floating-promises', @@ -27,6 +31,7 @@ export default util.createRule({ messages: { floating: 'Promises must be awaited, end with a call to .catch, or end with a call to .then with a rejection handler.', + floatingFixAwait: 'Add await operator.', floatingVoid: 'Promises must be awaited, end with a call to .catch, end with a call to .then with a rejection handler' + ' or be explicitly marked as ignored with the `void` operator.', @@ -95,12 +100,54 @@ export default util.createRule({ context.report({ node, messageId: 'floating', + suggest: [ + { + messageId: 'floatingFixAwait', + fix(fixer): TSESLint.RuleFix | TSESLint.RuleFix[] { + if ( + expression.type === AST_NODE_TYPES.UnaryExpression && + expression.operator === 'void' + ) { + return fixer.replaceTextRange( + [expression.range[0], expression.range[0] + 4], + 'await', + ); + } + const tsNode = parserServices.esTreeNodeToTSNodeMap.get( + node.expression, + ); + if (isHigherPrecedenceThanAwait(tsNode)) { + return fixer.insertTextBefore(node, 'await '); + } else { + return [ + fixer.insertTextBefore(node, 'await ('), + fixer.insertTextAfterRange( + [expression.range[1], expression.range[1]], + ')', + ), + ]; + } + }, + }, + ], }); } } }, }; + function isHigherPrecedenceThanAwait(node: ts.Node): boolean { + const operator = tsutils.isBinaryExpression(node) + ? node.operatorToken.kind + : ts.SyntaxKind.Unknown; + const nodePrecedence = util.getOperatorPrecedence(node.kind, operator); + const awaitPrecedence = util.getOperatorPrecedence( + ts.SyntaxKind.AwaitExpression, + ts.SyntaxKind.Unknown, + ); + return nodePrecedence > awaitPrecedence; + } + function isAsyncIife(node: TSESTree.ExpressionStatement): boolean { if (node.expression.type !== AST_NODE_TYPES.CallExpression) { return false; diff --git a/packages/eslint-plugin/tests/rules/no-floating-promises.test.ts b/packages/eslint-plugin/tests/rules/no-floating-promises.test.ts index 17ec0bb6198..a80acab989a 100644 --- a/packages/eslint-plugin/tests/rules/no-floating-promises.test.ts +++ b/packages/eslint-plugin/tests/rules/no-floating-promises.test.ts @@ -656,6 +656,147 @@ async function test() { { line: 3, messageId: 'floating', + suggestions: [ + { + messageId: 'floatingFixAwait', + output: ` +async function test() { + await Promise.resolve(); +} + `, + }, + ], + }, + ], + }, + { + code: ` +async function test() { + const promise = new Promise((resolve, reject) => resolve('value')); + promise; +} + `, + options: [{ ignoreVoid: false }], + errors: [ + { + line: 4, + messageId: 'floating', + suggestions: [ + { + messageId: 'floatingFixAwait', + output: ` +async function test() { + const promise = new Promise((resolve, reject) => resolve('value')); + await promise; +} + `, + }, + ], + }, + ], + }, + { + code: ` +async function returnsPromise() { + return 'value'; +} +void returnsPromise(); + `, + options: [{ ignoreVoid: false }], + errors: [ + { + line: 5, + messageId: 'floating', + suggestions: [ + { + messageId: 'floatingFixAwait', + output: ` +async function returnsPromise() { + return 'value'; +} +await returnsPromise(); + `, + }, + ], + }, + ], + }, + { + // eslint-disable-next-line @typescript-eslint/internal/plugin-test-formatting + code: ` +async function returnsPromise() { + return 'value'; +} +void /* ... */ returnsPromise(); + `, + options: [{ ignoreVoid: false }], + errors: [ + { + line: 5, + messageId: 'floating', + suggestions: [ + { + messageId: 'floatingFixAwait', + output: ` +async function returnsPromise() { + return 'value'; +} +await /* ... */ returnsPromise(); + `, + }, + ], + }, + ], + }, + { + code: ` +async function returnsPromise() { + return 'value'; +} +1, returnsPromise(); + `, + options: [{ ignoreVoid: false }], + errors: [ + { + line: 5, + messageId: 'floating', + suggestions: [ + { + messageId: 'floatingFixAwait', + output: ` +async function returnsPromise() { + return 'value'; +} +await (1, returnsPromise()); + `, + }, + ], + }, + ], + }, + { + code: ` +async function returnsPromise() { + return 'value'; +} +bool ? returnsPromise() : null; + `, + options: [{ ignoreVoid: false }], + errors: [ + { + line: 5, + messageId: 'floating', + suggestions: [ + { + messageId: 'floatingFixAwait', + output: ` +async function returnsPromise() { + return 'value'; +} +await (bool ? returnsPromise() : null); + `, + }, + ], }, ], },