From 264d4955e6c8e43d51dd90913023d461134a28f1 Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Sun, 5 Mar 2023 12:36:31 +0900 Subject: [PATCH 01/18] feat: update to typescript 5.0 --- package.json | 4 ++-- yarn.lock | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 1120ec8e8fca..567abd8359e0 100644 --- a/package.json +++ b/package.json @@ -107,10 +107,10 @@ "ts-node": "10.7.0", "tslint": "^6.1.3", "tsx": "^3.12.1", - "typescript": ">=3.3.1 <5.0.0" + "typescript": ">=3.3.1 <4.9.5 || 5.0.1-rc" }, "resolutions": { - "typescript": "~4.9.3", + "typescript": "~5.0.1-rc", "@types/node": "^18.11.9", "@jest/create-cache-key-function": "^29", "@jest/reporters": "^29", diff --git a/yarn.lock b/yarn.lock index 575b622913b7..843c5049235b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13372,10 +13372,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 <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== +typescript@*, "typescript@>=3.3.1 <4.9.5 || 5.0.1-rc", "typescript@^3 || ^4", typescript@next, typescript@~4.8.4, typescript@~5.0.1-rc: + version "5.0.1-rc" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.1-rc.tgz#f2ccabbdb9646b43b5e006dc6f7b0eaf9a222c8b" + integrity sha512-zh75jY8gPo/y7fpmlTVN2bb2MigoLx4hGk+Cla9pY6lgSTvzJrmQQrRt5S80VTsEt6biWPZJgLK2nm6f0Ya+mA== ua-parser-js@^0.7.30: version "0.7.31" From 033d6a900cd2827253b7f58e2cb71c4979fbf284 Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Sun, 5 Mar 2023 12:36:46 +0900 Subject: [PATCH 02/18] chore: update patch files --- ...+4.9.3.patch => typescript+5.0.1-rc.patch} | 29 +++++++------------ 1 file changed, 10 insertions(+), 19 deletions(-) rename patches/{typescript+4.9.3.patch => typescript+5.0.1-rc.patch} (72%) diff --git a/patches/typescript+4.9.3.patch b/patches/typescript+5.0.1-rc.patch similarity index 72% rename from patches/typescript+4.9.3.patch rename to patches/typescript+5.0.1-rc.patch index 520a9fde9363..3630b2660994 100644 --- a/patches/typescript+4.9.3.patch +++ b/patches/typescript+5.0.1-rc.patch @@ -1,8 +1,8 @@ diff --git a/node_modules/typescript/lib/typescript.d.ts b/node_modules/typescript/lib/typescript.d.ts -index 54e4c65..aa00912 100644 +index 2201712..6e04c82 100644 --- a/node_modules/typescript/lib/typescript.d.ts +++ b/node_modules/typescript/lib/typescript.d.ts -@@ -428,8 +428,8 @@ declare namespace ts { +@@ -368,8 +368,8 @@ declare namespace ts { JSDocFunctionType = 320, JSDocVariadicType = 321, JSDocNamepathType = 322, @@ -12,23 +12,23 @@ index 54e4c65..aa00912 100644 JSDocComment = 323, JSDocText = 324, JSDocTypeLiteral = 325, -@@ -4395,7 +4395,13 @@ declare namespace ts { +@@ -4517,7 +4517,13 @@ declare namespace ts { function symbolName(symbol: Symbol): string; function getNameOfJSDocTypedef(declaration: JSDocTypedefTag): Identifier | PrivateIdentifier | undefined; function getNameOfDeclaration(declaration: Declaration | Expression | undefined): DeclarationName | undefined; + /** -+ * @deprecated don't use this directly as it does not exist pre-4.8; instead use getModifiers from `@typescript-eslint/type-utils`. ++ * @deprecated don't use this directly as it does not exist pre-4.8; instead use getDecorators from `@typescript-eslint/type-utils`. + */ function getDecorators(node: HasDecorators): readonly Decorator[] | undefined; + /** -+ * @deprecated don't use this directly as it does not exist pre-4.8; instead use getDecorators from `@typescript-eslint/type-utils`. ++ * @deprecated don't use this directly as it does not exist pre-4.8; instead use getModifiers from `@typescript-eslint/type-utils`. + */ function getModifiers(node: HasModifiers): readonly Modifier[] | undefined; /** * Gets the JSDoc parameter tags for the node if present. -@@ -4857,7 +4863,13 @@ declare namespace ts { - } - declare namespace ts { +@@ -5022,7 +5028,13 @@ declare namespace ts { + function isModuleName(node: Node): node is ModuleName; + function isBinaryOperatorToken(node: Node): node is BinaryOperatorToken; function setTextRange(range: T, location: TextRange | undefined): T; + /** + * @deprecated don't use this directly as it does not exist pre-4.8; instead use getModifiers from `@typescript-eslint/type-utils`. @@ -38,14 +38,5 @@ index 54e4c65..aa00912 100644 + * @deprecated don't use this directly as it does not exist pre-4.8; instead use getDecorators from `@typescript-eslint/type-utils`. + */ function canHaveDecorators(node: Node): node is HasDecorators; - } - declare namespace ts { -@@ -7958,7 +7970,7 @@ declare namespace ts { - * const decorators = ts.canHaveDecorators(node) ? ts.getDecorators(node) : undefined; - * ``` - */ -- readonly decorators?: undefined; -+ readonly decorators?: NodeArray | undefined; - /** - * @deprecated `modifiers` has been removed from `Node` and moved to the `Node` subtypes that support them. - * Use `ts.canHaveModifiers()` to test whether a `Node` can have modifiers. + /** + * Invokes a callback for each child of the given node. The 'cbNode' callback is invoked for all child nodes From 5e6fe249850226b51977e30c8dbbcb627a6eba48 Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Sun, 5 Mar 2023 12:47:49 +0900 Subject: [PATCH 03/18] chore: update `api-extractor` --- packages/ast-spec/package.json | 2 +- yarn.lock | 77 ++++++++++++++++------------------ 2 files changed, 38 insertions(+), 41 deletions(-) diff --git a/packages/ast-spec/package.json b/packages/ast-spec/package.json index 433b1a89093e..e8a134a67cfe 100644 --- a/packages/ast-spec/package.json +++ b/packages/ast-spec/package.json @@ -46,7 +46,7 @@ "@babel/core": "*", "@babel/eslint-parser": "*", "@babel/parser": "*", - "@microsoft/api-extractor": "^7.23.2", + "@microsoft/api-extractor": "^7.34.4", "@types/babel__core": "*", "glob": "*", "jest-diff": "*", diff --git a/yarn.lock b/yarn.lock index 843c5049235b..fed1e5a415e1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2385,29 +2385,29 @@ 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.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== +"@microsoft/api-extractor-model@7.26.4": + version "7.26.4" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.26.4.tgz#77f2c17140249b846a61eea41e565289cc77181f" + integrity sha512-PDCgCzXDo+SLY5bsfl4bS7hxaeEtnXj7XtuzEE+BtALp7B5mK/NrS2kHWU69pohgsRmEALycQdaQPXoyT2i5MQ== dependencies: - "@microsoft/tsdoc" "0.14.1" + "@microsoft/tsdoc" "0.14.2" "@microsoft/tsdoc-config" "~0.16.1" - "@rushstack/node-core-library" "3.53.0" + "@rushstack/node-core-library" "3.55.2" -"@microsoft/api-extractor@^7.23.2": - 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== +"@microsoft/api-extractor@^7.34.4": + version "7.34.4" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.34.4.tgz#80677b5059b437bc07e9e55832c0cbde671c16a1" + integrity sha512-HOdcci2nT40ejhwPC3Xja9G+WSJmWhCUKKryRfQYsmE9cD+pxmBaKBKCbuS9jUcl6bLLb4Gz+h7xEN5r0QiXnQ== dependencies: - "@microsoft/api-extractor-model" "7.24.3" - "@microsoft/tsdoc" "0.14.1" + "@microsoft/api-extractor-model" "7.26.4" + "@microsoft/tsdoc" "0.14.2" "@microsoft/tsdoc-config" "~0.16.1" - "@rushstack/node-core-library" "3.53.0" - "@rushstack/rig-package" "0.3.16" - "@rushstack/ts-command-line" "4.12.4" + "@rushstack/node-core-library" "3.55.2" + "@rushstack/rig-package" "0.3.18" + "@rushstack/ts-command-line" "4.13.2" colors "~1.2.1" lodash "~4.17.15" - resolve "~1.17.0" + resolve "~1.22.1" semver "~7.3.0" source-map "~0.6.1" typescript "~4.8.4" @@ -2427,6 +2427,11 @@ resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz#155ef21065427901994e765da8a0ba0eaae8b8bd" integrity sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw== +"@microsoft/tsdoc@0.14.2": + version "0.14.2" + resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz#c3ec604a0b54b9a9b87e9735dfc59e1a5da6a5fb" + integrity sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug== + "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": version "5.1.1-v1" resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" @@ -3043,32 +3048,31 @@ 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" - integrity sha512-FXk3eDtTHKnaUq+fLyNY867ioRhMa6CJDJO5hZ3wuGlxm184nckAFiU+hx027AodjpnqjX6pYF0zZGq7k7P/vg== +"@rushstack/node-core-library@3.55.2": + version "3.55.2" + resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.55.2.tgz#d951470bac98171de13a8a351d4537c63fbfd0b6" + integrity sha512-SaLe/x/Q/uBVdNFK5V1xXvsVps0y7h1sN7aSJllQyFbugyOaxhNRF25bwEDnicARNEjJw0pk0lYnJQ9Kr6ev0A== dependencies: - "@types/node" "12.20.24" colors "~1.2.1" fs-extra "~7.0.1" import-lazy "~4.0.0" jju "~1.4.0" - resolve "~1.17.0" + resolve "~1.22.1" semver "~7.3.0" z-schema "~5.0.2" -"@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== +"@rushstack/rig-package@0.3.18": + version "0.3.18" + resolved "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.3.18.tgz#2b59eb8ed482e8cd6ad8d396414bf3200efdd682" + integrity sha512-SGEwNTwNq9bI3pkdd01yCaH+gAsHqs0uxfGvtw9b0LJXH52qooWXnrFTRRLG1aL9pf+M2CARdrA9HLHJys3jiQ== dependencies: - resolve "~1.17.0" + resolve "~1.22.1" strip-json-comments "~3.1.1" -"@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== +"@rushstack/ts-command-line@4.13.2": + version "4.13.2" + resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.13.2.tgz#2dfdcf418d58256671433b1da4a3b67e1814cc7a" + integrity sha512-bCU8qoL9HyWiciltfzg7GqdfODUeda/JpI0602kbN5YH22rzTxyqYvv7aRLENCM7XCQ1VRs7nMkEqgJUOU8Sag== dependencies: "@types/argparse" "1.0.38" argparse "~1.0.9" @@ -3613,7 +3617,7 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@12.20.24", "@types/node@^17.0.5", "@types/node@^18.11.9": +"@types/node@*", "@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== @@ -12036,7 +12040,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.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1, 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.22.1, resolve@^1.3.2, resolve@~1.22.1: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -12053,13 +12057,6 @@ resolve@^2.0.0-next.3: is-core-module "^2.2.0" path-parse "^1.0.6" -resolve@~1.17.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" - integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== - dependencies: - path-parse "^1.0.6" - resolve@~1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" From c7ab3946e8efdae157426ceb53527ac8924c5def Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Sun, 5 Mar 2023 12:53:42 +0900 Subject: [PATCH 04/18] chore: update `downlevel-dts` --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 567abd8359e0..3e3652b2c3e0 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,7 @@ "cross-env": "^7.0.3", "cross-fetch": "^3.1.5", "cspell": "^6.0.0", - "downlevel-dts": ">=0.10.0", + "downlevel-dts": ">=0.11.0", "eslint": "^8.15.0", "eslint-plugin-deprecation": "^1.3.2", "eslint-plugin-eslint-comments": "^3.2.0", diff --git a/yarn.lock b/yarn.lock index fed1e5a415e1..3be4d4b8c3fe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6116,10 +6116,10 @@ dotenv@~10.0.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== -downlevel-dts@>=0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/downlevel-dts/-/downlevel-dts-0.10.0.tgz#d2be7b4408a1f9eb3a39e15a361f8ea4f175facc" - integrity sha512-AZ7tnUy4XJArsjv6Bcuivvxx+weMvOGHF6seu7e7PVOqMDHMSlfgMl1kt+F4Y2+5TmDwKWHOdimM1DZKihQs8Q== +downlevel-dts@>=0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/downlevel-dts/-/downlevel-dts-0.11.0.tgz#514a2d723009c5845730c1db6c994484c596ed9c" + integrity sha512-vo835pntK7kzYStk7xUHDifiYJvXxVhUapt85uk2AI94gUUAQX9HNRtrcMHNSc3YHJUEHGbYIGsM99uIbgAtxw== dependencies: semver "^7.3.2" shelljs "^0.8.3" From 70f47a4b4f2152dc5747fad988dee8f0737e4afe Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Sun, 5 Mar 2023 13:03:42 +0900 Subject: [PATCH 05/18] chore(typescript-estree): use `@ts-ignore` for removed properties --- packages/typescript-estree/src/convert.ts | 2 +- packages/typescript-estree/src/getModifiers.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/typescript-estree/src/convert.ts b/packages/typescript-estree/src/convert.ts index 4f7a89d97c14..29335c60dc79 100644 --- a/packages/typescript-estree/src/convert.ts +++ b/packages/typescript-estree/src/convert.ts @@ -2553,7 +2553,7 @@ export class Converter { : undefined, initializer: this.convertChild( - // eslint-disable-next-line deprecation/deprecation -- TODO breaking change remove this from the AST + // @ts-ignore TODO breaking change remove this from the AST node.initializer, ) || undefined, readonly: hasModifier(SyntaxKind.ReadonlyKeyword, node) || undefined, diff --git a/packages/typescript-estree/src/getModifiers.ts b/packages/typescript-estree/src/getModifiers.ts index a584a7659a77..65cc9962ae5e 100644 --- a/packages/typescript-estree/src/getModifiers.ts +++ b/packages/typescript-estree/src/getModifiers.ts @@ -23,7 +23,7 @@ export function getModifiers( } return ( - // eslint-disable-next-line deprecation/deprecation -- intentional fallback for older TS versions + // @ts-ignore intentional fallback for older TS versions node.modifiers?.filter((m): m is ts.Modifier => !ts.isDecorator(m)) ); } @@ -47,7 +47,7 @@ export function getDecorators( } return ( - // eslint-disable-next-line deprecation/deprecation -- intentional fallback for older TS versions + // @ts-ignore intentional fallback for older TS versions node.decorators?.filter(ts.isDecorator) ); } From 6188c1a08a885910483c574589863adf7ef140b4 Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Sun, 5 Mar 2023 13:13:17 +0900 Subject: [PATCH 06/18] chore(type-utils): use `@ts-ignore` comment for invalid enum assignment --- packages/type-utils/src/typeFlagUtils.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/type-utils/src/typeFlagUtils.ts b/packages/type-utils/src/typeFlagUtils.ts index 134fdcf4ece1..1ccf8fe0f61c 100644 --- a/packages/type-utils/src/typeFlagUtils.ts +++ b/packages/type-utils/src/typeFlagUtils.ts @@ -5,6 +5,7 @@ import * as ts from 'typescript'; * Gets all of the type flags in a type, iterating through unions automatically */ export function getTypeFlags(type: ts.Type): ts.TypeFlags { + // @ts-ignore Since typescript 5.0, this is invalid, but uses 0 as the default value of TypeFlags. let flags: ts.TypeFlags = 0; for (const t of unionTypeParts(type)) { flags |= t.flags; From de114a5e3c61e1294e75346745999232b6b6dbbc Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Sun, 5 Mar 2023 13:28:00 +0900 Subject: [PATCH 07/18] test(typescript-estree): update snapshots for `convert.test.ts` --- .../tests/lib/__snapshots__/convert.test.ts.snap | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/typescript-estree/tests/lib/__snapshots__/convert.test.ts.snap b/packages/typescript-estree/tests/lib/__snapshots__/convert.test.ts.snap index 45d71e343243..16ece4e44606 100644 --- a/packages/typescript-estree/tests/lib/__snapshots__/convert.test.ts.snap +++ b/packages/typescript-estree/tests/lib/__snapshots__/convert.test.ts.snap @@ -2,11 +2,14 @@ exports[`convert deeplyCopy should convert array of nodes 1`] = ` { + "ambientModuleNames": undefined, "amdDependencies": [], "bindDiagnostics": [], "bindSuggestionDiagnostics": undefined, "checkJsDirective": undefined, + "classifiableNames": undefined, "commentDirectives": undefined, + "endFlowNode": undefined, "endOfFileToken": { "loc": { "end": { @@ -32,6 +35,8 @@ exports[`convert deeplyCopy should convert array of nodes 1`] = ` "foo" => "foo", "T" => "T", }, + "impliedNodeFormat": undefined, + "imports": undefined, "isDeclarationFile": false, "languageVariant": 1, "languageVersion": 99, @@ -49,14 +54,21 @@ exports[`convert deeplyCopy should convert array of nodes 1`] = ` "line": 1, }, }, + "moduleAugmentations": undefined, "nodeCount": 8, + "originalFileName": "", + "packageJsonLocations": undefined, + "packageJsonScope": undefined, "parseDiagnostics": [], + "path": "", "pragmas": Map {}, "range": [ 0, 12, ], "referencedFiles": [], + "resolvedModules": undefined, + "resolvedPath": "", "scriptKind": 4, "setExternalModuleIndicator": [Function], "statements": [ @@ -169,6 +181,7 @@ exports[`convert deeplyCopy should convert array of nodes 1`] = ` "type": "ExpressionStatement", }, ], + "symbolCount": 0, "text": "new foo()", "type": "TSSourceFile", "typeReferenceDirectives": [], @@ -191,6 +204,7 @@ exports[`convert deeplyCopy should convert node correctly 1`] = ` }, "name": { "escapedText": "foo", + "flowNode": undefined, "loc": { "end": { "column": 8, @@ -201,7 +215,6 @@ exports[`convert deeplyCopy should convert node correctly 1`] = ` "line": 1, }, }, - "originalKeywordKind": undefined, "range": [ 5, 8, From db619165845b9853825efe9fbd2e675c620f9bcf Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Sun, 5 Mar 2023 14:35:29 +0900 Subject: [PATCH 08/18] feat(typescript-estree): add `5.0.0-rc` to supported version --- .../typescript-estree/src/parseSettings/warnAboutTSVersion.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/typescript-estree/src/parseSettings/warnAboutTSVersion.ts b/packages/typescript-estree/src/parseSettings/warnAboutTSVersion.ts index 13eef19e7964..65ff64fd072d 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[] = []; +const SUPPORTED_PRERELEASE_RANGES: string[] = ['5.0.1-rc']; const ACTIVE_TYPESCRIPT_VERSION = ts.version; const isRunningSupportedTypeScriptVersion = semver.satisfies( ACTIVE_TYPESCRIPT_VERSION, From 1a2f0cd9ddcaa82aa6eaae19994a96b01b28f88c Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Sun, 5 Mar 2023 14:36:28 +0900 Subject: [PATCH 09/18] feat(typescript-estree): set `experimentalDecorators: true` --- .../src/create-program/createIsolatedProgram.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/typescript-estree/src/create-program/createIsolatedProgram.ts b/packages/typescript-estree/src/create-program/createIsolatedProgram.ts index 5ec1c8e0fe75..5aa06ea69493 100644 --- a/packages/typescript-estree/src/create-program/createIsolatedProgram.ts +++ b/packages/typescript-estree/src/create-program/createIsolatedProgram.ts @@ -66,6 +66,7 @@ function createIsolatedProgram(parseSettings: ParseSettings): ASTAndProgram { noResolve: true, target: ts.ScriptTarget.Latest, jsx: parseSettings.jsx ? ts.JsxEmit.Preserve : undefined, + experimentalDecorators: true, ...createDefaultCompilerOptionsFromExtra(parseSettings), }, compilerHost, From 7e7c143d8569b8aafa5523155f54e58b54e39be2 Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Sun, 5 Mar 2023 14:39:20 +0900 Subject: [PATCH 10/18] feat(scope-manager): run `generate:lib` --- .../src/lib/decorators.legacy.ts | 14 ++++++++++ packages/scope-manager/src/lib/decorators.ts | 20 ++++++++++++++ .../scope-manager/src/lib/dom.iterable.ts | 4 +++ packages/scope-manager/src/lib/dom.ts | 26 ++++++++++++++++--- .../src/lib/es2015.symbol.wellknown.ts | 1 + .../scope-manager/src/lib/es2022.regexp.ts | 14 ++++++++++ packages/scope-manager/src/lib/es2022.ts | 2 ++ .../scope-manager/src/lib/es2023.array.ts | 23 ++++++++++++++++ packages/scope-manager/src/lib/es2023.full.ts | 19 ++++++++++++++ packages/scope-manager/src/lib/es2023.ts | 13 ++++++++++ packages/scope-manager/src/lib/es5.ts | 8 +++--- packages/scope-manager/src/lib/esnext.ts | 4 +-- packages/scope-manager/src/lib/index.ts | 12 +++++++++ packages/scope-manager/src/lib/webworker.ts | 4 +++ 14 files changed, 155 insertions(+), 9 deletions(-) create mode 100644 packages/scope-manager/src/lib/decorators.legacy.ts create mode 100644 packages/scope-manager/src/lib/decorators.ts create mode 100644 packages/scope-manager/src/lib/es2022.regexp.ts create mode 100644 packages/scope-manager/src/lib/es2023.array.ts create mode 100644 packages/scope-manager/src/lib/es2023.full.ts create mode 100644 packages/scope-manager/src/lib/es2023.ts diff --git a/packages/scope-manager/src/lib/decorators.legacy.ts b/packages/scope-manager/src/lib/decorators.legacy.ts new file mode 100644 index 000000000000..8a02028b68e9 --- /dev/null +++ b/packages/scope-manager/src/lib/decorators.legacy.ts @@ -0,0 +1,14 @@ +// 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 } from './base-config'; + +export const decorators_legacy = { + ClassDecorator: TYPE, + PropertyDecorator: TYPE, + MethodDecorator: TYPE, + ParameterDecorator: TYPE, +} as Record; diff --git a/packages/scope-manager/src/lib/decorators.ts b/packages/scope-manager/src/lib/decorators.ts new file mode 100644 index 000000000000..cbeb41eba291 --- /dev/null +++ b/packages/scope-manager/src/lib/decorators.ts @@ -0,0 +1,20 @@ +// 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 } from './base-config'; + +export const decorators = { + ClassMemberDecoratorContext: TYPE, + DecoratorContext: TYPE, + ClassDecoratorContext: TYPE, + ClassMethodDecoratorContext: TYPE, + ClassGetterDecoratorContext: TYPE, + ClassSetterDecoratorContext: TYPE, + ClassAccessorDecoratorContext: TYPE, + ClassAccessorDecoratorTarget: TYPE, + ClassAccessorDecoratorResult: TYPE, + ClassFieldDecoratorContext: TYPE, +} as Record; diff --git a/packages/scope-manager/src/lib/dom.iterable.ts b/packages/scope-manager/src/lib/dom.iterable.ts index 1d43661478b4..10c5d0eada18 100644 --- a/packages/scope-manager/src/lib/dom.iterable.ts +++ b/packages/scope-manager/src/lib/dom.iterable.ts @@ -10,6 +10,7 @@ export const dom_iterable = { AudioParam: TYPE, AudioParamMap: TYPE, BaseAudioContext: TYPE, + CSSKeyframesRule: TYPE, CSSRuleList: TYPE, CSSStyleDeclaration: TYPE, Cache: TYPE, @@ -31,6 +32,9 @@ export const dom_iterable = { Headers: TYPE, IDBDatabase: TYPE, IDBObjectStore: TYPE, + MIDIInputMap: TYPE, + MIDIOutput: TYPE, + MIDIOutputMap: TYPE, MediaKeyStatusMap: TYPE, MediaList: TYPE, MessageEvent: TYPE, diff --git a/packages/scope-manager/src/lib/dom.ts b/packages/scope-manager/src/lib/dom.ts index 1087a238dfca..5976f8794927 100644 --- a/packages/scope-manager/src/lib/dom.ts +++ b/packages/scope-manager/src/lib/dom.ts @@ -38,6 +38,7 @@ export const dom = { CanvasRenderingContext2DSettings: TYPE, ChannelMergerOptions: TYPE, ChannelSplitterOptions: TYPE, + CheckVisibilityOptions: TYPE, ClientQueryOptions: TYPE, ClipboardEventInit: TYPE, ClipboardItemOptions: TYPE, @@ -115,6 +116,7 @@ export const dom = { ImageBitmapOptions: TYPE, ImageBitmapRenderingContextSettings: TYPE, ImageDataSettings: TYPE, + ImageEncodeOptions: TYPE, ImportMeta: TYPE, InputEventInit: TYPE, IntersectionObserverEntryInit: TYPE, @@ -128,6 +130,9 @@ export const dom = { LockInfo: TYPE, LockManagerSnapshot: TYPE, LockOptions: TYPE, + MIDIConnectionEventInit: TYPE, + MIDIMessageEventInit: TYPE, + MIDIOptions: TYPE, MediaCapabilitiesDecodingInfo: TYPE, MediaCapabilitiesEncodingInfo: TYPE, MediaCapabilitiesInfo: TYPE, @@ -354,6 +359,7 @@ export const dom = { CSSContainerRule: TYPE_VALUE, CSSCounterStyleRule: TYPE_VALUE, CSSFontFaceRule: TYPE_VALUE, + CSSFontFeatureValuesRule: TYPE_VALUE, CSSFontPaletteValuesRule: TYPE_VALUE, CSSGroupingRule: TYPE_VALUE, CSSImportRule: TYPE_VALUE, @@ -441,8 +447,6 @@ export const dom = { DeviceOrientationEvent: TYPE_VALUE, DocumentEventMap: TYPE, Document: TYPE_VALUE, - DocumentAndElementEventHandlersEventMap: TYPE, - DocumentAndElementEventHandlers: TYPE, DocumentFragment: TYPE_VALUE, DocumentOrShadowRoot: TYPE, DocumentTimeline: TYPE_VALUE, @@ -628,6 +632,17 @@ export const dom = { Location: TYPE_VALUE, Lock: TYPE_VALUE, LockManager: TYPE_VALUE, + MIDIAccessEventMap: TYPE, + MIDIAccess: TYPE_VALUE, + MIDIConnectionEvent: TYPE_VALUE, + MIDIInputEventMap: TYPE, + MIDIInput: TYPE_VALUE, + MIDIInputMap: TYPE_VALUE, + MIDIMessageEvent: TYPE_VALUE, + MIDIOutput: TYPE_VALUE, + MIDIOutputMap: TYPE_VALUE, + MIDIPortEventMap: TYPE, + MIDIPort: TYPE_VALUE, MathMLElementEventMap: TYPE, MathMLElement: TYPE_VALUE, MediaCapabilities: TYPE_VALUE, @@ -1078,6 +1093,7 @@ export const dom = { HTMLElementTagNameMap: TYPE, HTMLElementDeprecatedTagNameMap: TYPE, SVGElementTagNameMap: TYPE, + MathMLElementTagNameMap: TYPE, ElementTagNameMap: TYPE, AlgorithmIdentifier: TYPE, BigInteger: TYPE, @@ -1117,7 +1133,6 @@ export const dom = { HeadersInit: TYPE, IDBValidKey: TYPE, ImageBitmapSource: TYPE, - InsertPosition: TYPE, Int32List: TYPE, LineAndPositionSetting: TYPE, MediaProvider: TYPE, @@ -1182,6 +1197,7 @@ export const dom = { EndingType: TYPE, FileSystemHandleKind: TYPE, FillMode: TYPE, + FontDisplay: TYPE, FontFaceLoadStatus: TYPE, FontFaceSetLoadStatus: TYPE, FullscreenNavigationUI: TYPE, @@ -1195,12 +1211,16 @@ export const dom = { IDBTransactionMode: TYPE, ImageOrientation: TYPE, ImageSmoothingQuality: TYPE, + InsertPosition: TYPE, IterationCompositeOperation: TYPE, KeyFormat: TYPE, KeyType: TYPE, KeyUsage: TYPE, LineAlignSetting: TYPE, LockMode: TYPE, + MIDIPortConnectionState: TYPE, + MIDIPortDeviceState: TYPE, + MIDIPortType: TYPE, MediaDecodingType: TYPE, MediaDeviceKind: TYPE, MediaEncodingType: TYPE, diff --git a/packages/scope-manager/src/lib/es2015.symbol.wellknown.ts b/packages/scope-manager/src/lib/es2015.symbol.wellknown.ts index 94fd4ac4e70f..94e522cfe03d 100644 --- a/packages/scope-manager/src/lib/es2015.symbol.wellknown.ts +++ b/packages/scope-manager/src/lib/es2015.symbol.wellknown.ts @@ -12,6 +12,7 @@ export const es2015_symbol_wellknown = { SymbolConstructor: TYPE, Symbol: TYPE, Array: TYPE, + ReadonlyArray: TYPE, Date: TYPE, Map: TYPE, WeakMap: TYPE, diff --git a/packages/scope-manager/src/lib/es2022.regexp.ts b/packages/scope-manager/src/lib/es2022.regexp.ts new file mode 100644 index 000000000000..85998ffe3682 --- /dev/null +++ b/packages/scope-manager/src/lib/es2022.regexp.ts @@ -0,0 +1,14 @@ +// 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 } from './base-config'; + +export const es2022_regexp = { + RegExpMatchArray: TYPE, + RegExpExecArray: TYPE, + RegExpIndicesArray: TYPE, + RegExp: TYPE, +} as Record; diff --git a/packages/scope-manager/src/lib/es2022.ts b/packages/scope-manager/src/lib/es2022.ts index 0956c0111d6c..1e5eb867a2b6 100644 --- a/packages/scope-manager/src/lib/es2022.ts +++ b/packages/scope-manager/src/lib/es2022.ts @@ -9,6 +9,7 @@ import { es2022_array } from './es2022.array'; import { es2022_error } from './es2022.error'; import { es2022_intl } from './es2022.intl'; import { es2022_object } from './es2022.object'; +import { es2022_regexp } from './es2022.regexp'; import { es2022_sharedmemory } from './es2022.sharedmemory'; import { es2022_string } from './es2022.string'; @@ -20,4 +21,5 @@ export const es2022 = { ...es2022_object, ...es2022_sharedmemory, ...es2022_string, + ...es2022_regexp, } as Record; diff --git a/packages/scope-manager/src/lib/es2023.array.ts b/packages/scope-manager/src/lib/es2023.array.ts new file mode 100644 index 000000000000..029b058a8cdd --- /dev/null +++ b/packages/scope-manager/src/lib/es2023.array.ts @@ -0,0 +1,23 @@ +// 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 } from './base-config'; + +export const es2023_array = { + Array: TYPE, + ReadonlyArray: TYPE, + Int8Array: TYPE, + Uint8Array: TYPE, + Uint8ClampedArray: TYPE, + Int16Array: TYPE, + Uint16Array: TYPE, + Int32Array: TYPE, + Uint32Array: TYPE, + Float32Array: TYPE, + Float64Array: TYPE, + BigInt64Array: TYPE, + BigUint64Array: TYPE, +} as Record; diff --git a/packages/scope-manager/src/lib/es2023.full.ts b/packages/scope-manager/src/lib/es2023.full.ts new file mode 100644 index 000000000000..b8a3c9310b6e --- /dev/null +++ b/packages/scope-manager/src/lib/es2023.full.ts @@ -0,0 +1,19 @@ +// 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 { dom } from './dom'; +import { dom_iterable } from './dom.iterable'; +import { es2023 } from './es2023'; +import { scripthost } from './scripthost'; +import { webworker_importscripts } from './webworker.importscripts'; + +export const es2023_full = { + ...es2023, + ...dom, + ...webworker_importscripts, + ...scripthost, + ...dom_iterable, +} as Record; diff --git a/packages/scope-manager/src/lib/es2023.ts b/packages/scope-manager/src/lib/es2023.ts new file mode 100644 index 000000000000..9e98d3766115 --- /dev/null +++ b/packages/scope-manager/src/lib/es2023.ts @@ -0,0 +1,13 @@ +// 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 { es2022 } from './es2022'; +import { es2023_array } from './es2023.array'; + +export const es2023 = { + ...es2022, + ...es2023_array, +} as Record; diff --git a/packages/scope-manager/src/lib/es5.ts b/packages/scope-manager/src/lib/es5.ts index cef8eb253ce6..94c6eff46d0b 100644 --- a/packages/scope-manager/src/lib/es5.ts +++ b/packages/scope-manager/src/lib/es5.ts @@ -5,8 +5,12 @@ import type { ImplicitLibVariableOptions } from '../variable'; import { TYPE, TYPE_VALUE } from './base-config'; +import { decorators } from './decorators'; +import { decorators_legacy } from './decorators.legacy'; export const es5 = { + ...decorators, + ...decorators_legacy, Symbol: TYPE, PropertyKey: TYPE, PropertyDescriptor: TYPE, @@ -57,10 +61,6 @@ export const es5 = { Array: TYPE_VALUE, ArrayConstructor: TYPE, TypedPropertyDescriptor: TYPE, - ClassDecorator: TYPE, - PropertyDecorator: TYPE, - MethodDecorator: TYPE, - ParameterDecorator: TYPE, PromiseConstructorLike: TYPE, PromiseLike: TYPE, Promise: TYPE, diff --git a/packages/scope-manager/src/lib/esnext.ts b/packages/scope-manager/src/lib/esnext.ts index 31ac2762267a..72089f282dcc 100644 --- a/packages/scope-manager/src/lib/esnext.ts +++ b/packages/scope-manager/src/lib/esnext.ts @@ -4,10 +4,10 @@ // npx nx generate-lib @typescript-eslint/scope-manager import type { ImplicitLibVariableOptions } from '../variable'; -import { es2022 } from './es2022'; +import { es2023 } from './es2023'; import { esnext_intl } from './esnext.intl'; export const esnext = { - ...es2022, + ...es2023, ...esnext_intl, } as Record; diff --git a/packages/scope-manager/src/lib/index.ts b/packages/scope-manager/src/lib/index.ts index dfee880fa16e..a91568b6be6e 100644 --- a/packages/scope-manager/src/lib/index.ts +++ b/packages/scope-manager/src/lib/index.ts @@ -3,6 +3,8 @@ // RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE: // npx nx generate-lib @typescript-eslint/scope-manager +import { decorators } from './decorators'; +import { decorators_legacy } from './decorators.legacy'; import { dom } from './dom'; import { dom_iterable } from './dom.iterable'; import { es5 } from './es5'; @@ -64,8 +66,12 @@ import { es2022_error } from './es2022.error'; import { es2022_full } from './es2022.full'; import { es2022_intl } from './es2022.intl'; import { es2022_object } from './es2022.object'; +import { es2022_regexp } from './es2022.regexp'; import { es2022_sharedmemory } from './es2022.sharedmemory'; import { es2022_string } from './es2022.string'; +import { es2023 } from './es2023'; +import { es2023_array } from './es2023.array'; +import { es2023_full } from './es2023.full'; import { esnext } from './esnext'; import { esnext_array } from './esnext.array'; import { esnext_asynciterable } from './esnext.asynciterable'; @@ -94,6 +100,7 @@ const lib = { es2020, es2021, es2022, + es2023, esnext, dom, 'dom.iterable': dom_iterable, @@ -144,6 +151,8 @@ const lib = { 'es2022.object': es2022_object, 'es2022.sharedmemory': es2022_sharedmemory, 'es2022.string': es2022_string, + 'es2022.regexp': es2022_regexp, + 'es2023.array': es2023_array, 'esnext.array': esnext_array, 'esnext.symbol': esnext_symbol, 'esnext.asynciterable': esnext_asynciterable, @@ -152,6 +161,8 @@ const lib = { 'esnext.string': esnext_string, 'esnext.promise': esnext_promise, 'esnext.weakref': esnext_weakref, + decorators, + 'decorators.legacy': decorators_legacy, 'es2016.full': es2016_full, 'es2017.full': es2017_full, 'es2018.full': es2018_full, @@ -159,6 +170,7 @@ const lib = { 'es2020.full': es2020_full, 'es2021.full': es2021_full, 'es2022.full': es2022_full, + 'es2023.full': es2023_full, 'esnext.full': esnext_full, lib: libBase, } as const; diff --git a/packages/scope-manager/src/lib/webworker.ts b/packages/scope-manager/src/lib/webworker.ts index bddb6bf9aa4d..5e2aaad12f41 100644 --- a/packages/scope-manager/src/lib/webworker.ts +++ b/packages/scope-manager/src/lib/webworker.ts @@ -41,6 +41,7 @@ export const webworker = { FilePropertyBag: TYPE, FileSystemGetDirectoryOptions: TYPE, FileSystemGetFileOptions: TYPE, + FileSystemReadWriteOptions: TYPE, FileSystemRemoveOptions: TYPE, FontFaceDescriptors: TYPE, FontFaceSetLoadEventInit: TYPE, @@ -56,6 +57,7 @@ export const webworker = { ImageBitmapOptions: TYPE, ImageBitmapRenderingContextSettings: TYPE, ImageDataSettings: TYPE, + ImageEncodeOptions: TYPE, ImportMeta: TYPE, JsonWebKey: TYPE, KeyAlgorithm: TYPE, @@ -196,6 +198,7 @@ export const webworker = { FileSystemDirectoryHandle: TYPE_VALUE, FileSystemFileHandle: TYPE_VALUE, FileSystemHandle: TYPE_VALUE, + FileSystemSyncAccessHandle: TYPE_VALUE, FontFace: TYPE_VALUE, FontFaceSetEventMap: TYPE, FontFaceSet: TYPE_VALUE, @@ -441,6 +444,7 @@ export const webworker = { DocumentVisibilityState: TYPE, EndingType: TYPE, FileSystemHandleKind: TYPE, + FontDisplay: TYPE, FontFaceLoadStatus: TYPE, FontFaceSetLoadStatus: TYPE, FrameType: TYPE, From ced41d2eb0fbc23408d14f9fa770aa3fb2315638 Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Sun, 5 Mar 2023 14:40:05 +0900 Subject: [PATCH 11/18] feat(types): run `generate:lib` --- packages/types/src/lib.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/types/src/lib.ts b/packages/types/src/lib.ts index 880bafe5b5e6..c1c60650ffd4 100644 --- a/packages/types/src/lib.ts +++ b/packages/types/src/lib.ts @@ -15,6 +15,7 @@ type Lib = | 'es2020' | 'es2021' | 'es2022' + | 'es2023' | 'esnext' | 'dom' | 'dom.iterable' @@ -65,6 +66,8 @@ type Lib = | 'es2022.object' | 'es2022.sharedmemory' | 'es2022.string' + | 'es2022.regexp' + | 'es2023.array' | 'esnext.array' | 'esnext.symbol' | 'esnext.asynciterable' @@ -73,6 +76,8 @@ type Lib = | 'esnext.string' | 'esnext.promise' | 'esnext.weakref' + | 'decorators' + | 'decorators.legacy' | 'es2016.full' | 'es2017.full' | 'es2018.full' @@ -80,6 +85,7 @@ type Lib = | 'es2020.full' | 'es2021.full' | 'es2022.full' + | 'es2023.full' | 'esnext.full' | 'lib'; From f9d0594c9fa14feb30b49f9cd4713ae807a3da56 Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Sun, 5 Mar 2023 16:31:11 +0900 Subject: [PATCH 12/18] chore: fixes linting problems --- packages/type-utils/src/typeFlagUtils.ts | 1 + packages/typescript-estree/src/convert.ts | 3 ++- .../src/create-program/createDefaultProgram.ts | 1 + .../src/create-program/getWatchProgramsForProjects.ts | 1 + packages/typescript-estree/src/getModifiers.ts | 8 ++++++-- packages/typescript-estree/src/ts-estree/ts-nodes.ts | 2 ++ packages/typescript-estree/tests/lib/convert.test.ts | 1 + 7 files changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/type-utils/src/typeFlagUtils.ts b/packages/type-utils/src/typeFlagUtils.ts index 1ccf8fe0f61c..035b9fe2be0a 100644 --- a/packages/type-utils/src/typeFlagUtils.ts +++ b/packages/type-utils/src/typeFlagUtils.ts @@ -5,6 +5,7 @@ import * as ts from 'typescript'; * Gets all of the type flags in a type, iterating through unions automatically */ export function getTypeFlags(type: ts.Type): ts.TypeFlags { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore Since typescript 5.0, this is invalid, but uses 0 as the default value of TypeFlags. let flags: ts.TypeFlags = 0; for (const t of unionTypeParts(type)) { diff --git a/packages/typescript-estree/src/convert.ts b/packages/typescript-estree/src/convert.ts index 29335c60dc79..ec162e19728f 100644 --- a/packages/typescript-estree/src/convert.ts +++ b/packages/typescript-estree/src/convert.ts @@ -2553,8 +2553,9 @@ export class Converter { : undefined, initializer: this.convertChild( + // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore TODO breaking change remove this from the AST - node.initializer, + node.initializer as unknown as ts.Node, ) || undefined, readonly: hasModifier(SyntaxKind.ReadonlyKeyword, node) || undefined, static: hasModifier(SyntaxKind.StaticKeyword, node) || undefined, diff --git a/packages/typescript-estree/src/create-program/createDefaultProgram.ts b/packages/typescript-estree/src/create-program/createDefaultProgram.ts index a2de81399d20..b533746fff60 100644 --- a/packages/typescript-estree/src/create-program/createDefaultProgram.ts +++ b/packages/typescript-estree/src/create-program/createDefaultProgram.ts @@ -45,6 +45,7 @@ function createDefaultProgram( ); if (parseSettings.moduleResolver) { + // eslint-disable-next-line deprecation/deprecation -- intentional for older TS versions compilerHost.resolveModuleNames = getModuleResolver( parseSettings.moduleResolver, ).resolveModuleNames; diff --git a/packages/typescript-estree/src/create-program/getWatchProgramsForProjects.ts b/packages/typescript-estree/src/create-program/getWatchProgramsForProjects.ts index d9d4de9c833f..c1263ce342a2 100644 --- a/packages/typescript-estree/src/create-program/getWatchProgramsForProjects.ts +++ b/packages/typescript-estree/src/create-program/getWatchProgramsForProjects.ts @@ -270,6 +270,7 @@ function createWatchProgram( ) as WatchCompilerHostOfConfigFile; if (parseSettings.moduleResolver) { + // eslint-disable-next-line deprecation/deprecation -- intentional for older TS versions watchCompilerHost.resolveModuleNames = getModuleResolver( parseSettings.moduleResolver, ).resolveModuleNames; diff --git a/packages/typescript-estree/src/getModifiers.ts b/packages/typescript-estree/src/getModifiers.ts index 65cc9962ae5e..6ecd66f48a70 100644 --- a/packages/typescript-estree/src/getModifiers.ts +++ b/packages/typescript-estree/src/getModifiers.ts @@ -23,8 +23,11 @@ export function getModifiers( } return ( + // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore intentional fallback for older TS versions - node.modifiers?.filter((m): m is ts.Modifier => !ts.isDecorator(m)) + (node.modifiers as ts.Modifier[])?.filter( + (m): m is ts.Modifier => !ts.isDecorator(m), + ) ); } @@ -47,7 +50,8 @@ export function getDecorators( } return ( + // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore intentional fallback for older TS versions - node.decorators?.filter(ts.isDecorator) + (node.decorators as ts.Node[])?.filter(ts.isDecorator) ); } diff --git a/packages/typescript-estree/src/ts-estree/ts-nodes.ts b/packages/typescript-estree/src/ts-estree/ts-nodes.ts index 0ba5414e1376..fe1042260d8d 100644 --- a/packages/typescript-estree/src/ts-estree/ts-nodes.ts +++ b/packages/typescript-estree/src/ts-estree/ts-nodes.ts @@ -182,7 +182,9 @@ export type TSNode = | ts.ExportAssignment | ts.SourceFile | ts.Bundle + // eslint-disable-next-line deprecation/deprecation -- intentional for old TS versions | ts.InputFiles + // eslint-disable-next-line deprecation/deprecation -- intentional for old TS versions | ts.UnparsedSource | ts.JsonMinusNumericLiteral | ts.TemplateLiteralTypeNode diff --git a/packages/typescript-estree/tests/lib/convert.test.ts b/packages/typescript-estree/tests/lib/convert.test.ts index fb3ac3f63139..7b5cf272252f 100644 --- a/packages/typescript-estree/tests/lib/convert.test.ts +++ b/packages/typescript-estree/tests/lib/convert.test.ts @@ -21,6 +21,7 @@ describe('convert', () => { function fakeUnknownKind(node: ts.Node): void { ts.forEachChild(node, fakeUnknownKind); // @ts-expect-error -- intentionally writing to a readonly field + // eslint-disable-next-line deprecation/deprecation node.kind = ts.SyntaxKind.UnparsedPrologue; } From d022d8e5b6efdcd79f607e8592a39f54a0921c8d Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Sun, 5 Mar 2023 17:02:01 +0900 Subject: [PATCH 13/18] chore: use `ts.identifierToKeywordKind` instead of `originalKeywordKind` --- packages/typescript-estree/src/node-utils.ts | 24 +++++++++++++++---- .../typescript-estree/src/version-check.ts | 2 ++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/packages/typescript-estree/src/node-utils.ts b/packages/typescript-estree/src/node-utils.ts index 2b7351b0408f..4be3ae8e3739 100644 --- a/packages/typescript-estree/src/node-utils.ts +++ b/packages/typescript-estree/src/node-utils.ts @@ -4,6 +4,9 @@ import { getModifiers } from './getModifiers'; import { xhtmlEntities } from './jsx/xhtml-entities'; import type { TSESTree } from './ts-estree'; import { AST_NODE_TYPES, AST_TOKEN_TYPES } from './ts-estree'; +import { typescriptVersionIsAtLeast } from './version-check'; + +const isAtLeast50 = typescriptVersionIsAtLeast['5.0']; const SyntaxKind = ts.SyntaxKind; @@ -433,12 +436,19 @@ export function isChildUnwrappableOptionalChain( export function getTokenType( token: ts.Identifier | ts.Token, ): Exclude { - if ('originalKeywordKind' in token && token.originalKeywordKind) { - if (token.originalKeywordKind === SyntaxKind.NullKeyword) { + let keywordKind: ts.SyntaxKind | undefined; + if (isAtLeast50 && token.kind === SyntaxKind.Identifier) { + keywordKind = ts.identifierToKeywordKind(token as ts.Identifier); + } else if ('originalKeywordKind' in token) { + // eslint-disable-next-line deprecation/deprecation -- intentional fallback for older TS versions + keywordKind = token.originalKeywordKind; + } + if (keywordKind) { + if (keywordKind === SyntaxKind.NullKeyword) { return AST_TOKEN_TYPES.Null; } else if ( - token.originalKeywordKind >= SyntaxKind.FirstFutureReservedWord && - token.originalKeywordKind <= SyntaxKind.LastKeyword + keywordKind >= SyntaxKind.FirstFutureReservedWord && + keywordKind <= SyntaxKind.LastKeyword ) { return AST_TOKEN_TYPES.Identifier; } @@ -663,7 +673,11 @@ export function firstDefined( } export function identifierIsThisKeyword(id: ts.Identifier): boolean { - return id.originalKeywordKind === SyntaxKind.ThisKeyword; + return ( + // eslint-disable-next-line deprecation/deprecation -- intentional for older TS versions + (isAtLeast50 ? ts.identifierToKeywordKind(id) : id.originalKeywordKind) === + SyntaxKind.ThisKeyword + ); } export function isThisIdentifier( diff --git a/packages/typescript-estree/src/version-check.ts b/packages/typescript-estree/src/version-check.ts index 194636cb5870..62bef222eb5c 100644 --- a/packages/typescript-estree/src/version-check.ts +++ b/packages/typescript-estree/src/version-check.ts @@ -24,6 +24,8 @@ const versions = [ '4.6', '4.7', '4.8', + '4.9', + '5.0', ] as const; type Versions = typeof versions extends ArrayLike ? U : never; From 49e64cb57556a920ddccd21d2028cf5d3fc8a112 Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Mon, 6 Mar 2023 00:51:21 +0900 Subject: [PATCH 14/18] fix(eslint-plugin): fix printing BigInt literal --- .../src/rules/no-redundant-type-constituents.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/eslint-plugin/src/rules/no-redundant-type-constituents.ts b/packages/eslint-plugin/src/rules/no-redundant-type-constituents.ts index 33237a8ae4e2..4e737b996b72 100644 --- a/packages/eslint-plugin/src/rules/no-redundant-type-constituents.ts +++ b/packages/eslint-plugin/src/rules/no-redundant-type-constituents.ts @@ -83,6 +83,12 @@ function describeLiteralType(type: ts.Type): string { } if (type.isLiteral()) { + if (typeof type.value === 'object') { + // Print ts.PseudoBigInt + return `${ + type.value.negative ? '-' : '' + }${type.value.base10Value.toString()}n`; + } return type.value.toString(); } From ef5475fc64b1d67daed2d77b0971753b2def0563 Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Mon, 6 Mar 2023 01:00:17 +0900 Subject: [PATCH 15/18] chore(website): add `@ts-expect-error` for imcompatible types --- packages/website/src/components/editor/LoadedEditor.tsx | 1 + packages/website/src/components/editor/config.ts | 1 + packages/website/src/components/editor/useSandboxServices.ts | 1 + 3 files changed, 3 insertions(+) diff --git a/packages/website/src/components/editor/LoadedEditor.tsx b/packages/website/src/components/editor/LoadedEditor.tsx index 48ea1c591776..c8a734c78efc 100644 --- a/packages/website/src/components/editor/LoadedEditor.tsx +++ b/packages/website/src/components/editor/LoadedEditor.tsx @@ -113,6 +113,7 @@ export const LoadedEditor: React.FC = ({ jsx, parseTSConfig(tsconfig).compilerOptions, ); + // @ts-expect-error Monaco typescript.CompilerOptions is incompatible with typescript 5.0 types webLinter.updateCompilerOptions(config); sandboxInstance.setCompilerSettings(config); }, [jsx, sandboxInstance, tsconfig, webLinter]); diff --git a/packages/website/src/components/editor/config.ts b/packages/website/src/components/editor/config.ts index 2428a5502699..39cb1db3cd9b 100644 --- a/packages/website/src/components/editor/config.ts +++ b/packages/website/src/components/editor/config.ts @@ -28,6 +28,7 @@ export function createCompilerOptions( const options = config.options as Monaco.languages.typescript.CompilerOptions; if (!options.lib) { + // @ts-expect-error Monaco typescript.CompilerOptions is incompatible with typescript 5.0 types options.lib = [window.ts.getDefaultLibFileName(options)]; } diff --git a/packages/website/src/components/editor/useSandboxServices.ts b/packages/website/src/components/editor/useSandboxServices.ts index a6f4cbb7dfff..01fb9e76608d 100644 --- a/packages/website/src/components/editor/useSandboxServices.ts +++ b/packages/website/src/components/editor/useSandboxServices.ts @@ -109,6 +109,7 @@ export const useSandboxServices = ( const system = sandboxInstance.tsvfs.createSystem(libEntries); + // @ts-expect-error Monaco typescript.CompilerOptions is incompatible with typescript 5.0 types const webLinter = new WebLinter(system, compilerOptions, lintUtils); onLoaded( From 1210fec96805b89c436b87eb5fe1569034d9ce84 Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Mon, 6 Mar 2023 21:20:55 +0900 Subject: [PATCH 16/18] feat(typescript-estree): disable `experimentalDecorators` --- .../create-program/createIsolatedProgram.ts | 1 - .../semantic-diagnostics-enabled.test.ts.snap | 81 ++++++++++++++++--- 2 files changed, 72 insertions(+), 10 deletions(-) diff --git a/packages/typescript-estree/src/create-program/createIsolatedProgram.ts b/packages/typescript-estree/src/create-program/createIsolatedProgram.ts index 5aa06ea69493..5ec1c8e0fe75 100644 --- a/packages/typescript-estree/src/create-program/createIsolatedProgram.ts +++ b/packages/typescript-estree/src/create-program/createIsolatedProgram.ts @@ -66,7 +66,6 @@ function createIsolatedProgram(parseSettings: ParseSettings): ASTAndProgram { noResolve: true, target: ts.ScriptTarget.Latest, jsx: parseSettings.jsx ? ts.JsxEmit.Preserve : undefined, - experimentalDecorators: true, ...createDefaultCompilerOptionsFromExtra(parseSettings), }, compilerHost, diff --git a/packages/typescript-estree/tests/lib/__snapshots__/semantic-diagnostics-enabled.test.ts.snap b/packages/typescript-estree/tests/lib/__snapshots__/semantic-diagnostics-enabled.test.ts.snap index f3e70c9914e8..7cbfcd17b93d 100644 --- a/packages/typescript-estree/tests/lib/__snapshots__/semantic-diagnostics-enabled.test.ts.snap +++ b/packages/typescript-estree/tests/lib/__snapshots__/semantic-diagnostics-enabled.test.ts.snap @@ -1352,7 +1352,14 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/class-decorators/fixtures/class-decorator-factory/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`; -exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/class-decorators/fixtures/class-parameter-property/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`; +exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/class-decorators/fixtures/class-parameter-property/fixture 1`] = ` +TSError { + "column": 14, + "index": 97, + "lineNumber": 4, + "message": "Decorators are not valid here.", +} +`; exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/class-decorators/fixtures/export-default-class-decorator/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`; @@ -1797,21 +1804,77 @@ exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" e exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/namespaces-and-modules/fixtures/shorthand-ambient-module-declaration/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`; -exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/_error_/parameter-array-pattern-decorator/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`; +exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/_error_/parameter-array-pattern-decorator/fixture 1`] = ` +TSError { + "column": 6, + "index": 91, + "lineNumber": 4, + "message": "Decorators are not valid here.", +} +`; -exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/_error_/parameter-rest-element-decorator/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`; +exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/_error_/parameter-rest-element-decorator/fixture 1`] = ` +TSError { + "column": 6, + "index": 91, + "lineNumber": 4, + "message": "Decorators are not valid here.", +} +`; -exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/parameter-decorator-constructor/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`; +exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/parameter-decorator-constructor/fixture 1`] = ` +TSError { + "column": 14, + "index": 103, + "lineNumber": 4, + "message": "Decorators are not valid here.", +} +`; -exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/parameter-decorator-decorator-instance-member/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`; +exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/parameter-decorator-decorator-instance-member/fixture 1`] = ` +TSError { + "column": 6, + "index": 91, + "lineNumber": 4, + "message": "Decorators are not valid here.", +} +`; -exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/parameter-decorator-decorator-static-member/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`; +exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/parameter-decorator-decorator-static-member/fixture 1`] = ` +TSError { + "column": 13, + "index": 104, + "lineNumber": 4, + "message": "Decorators are not valid here.", +} +`; -exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/parameter-decorator-instance-member/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`; +exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/parameter-decorator-instance-member/fixture 1`] = ` +TSError { + "column": 8, + "index": 97, + "lineNumber": 4, + "message": "Decorators are not valid here.", +} +`; -exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/parameter-decorator-static-member/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`; +exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/parameter-decorator-static-member/fixture 1`] = ` +TSError { + "column": 15, + "index": 110, + "lineNumber": 4, + "message": "Decorators are not valid here.", +} +`; -exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/parameter-object-pattern-decorator/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`; +exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/parameter-decorators/fixtures/parameter-object-pattern-decorator/fixture 1`] = ` +TSError { + "column": 6, + "index": 91, + "lineNumber": 4, + "message": "Decorators are not valid here.", +} +`; exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/legacy-fixtures/property-decorators/fixtures/property-decorator-factory-instance-member/fixture 1`] = `"TEST OUTPUT: No semantic or syntactic issues found"`; From fc536c56df64d09729852a54adfcf4e998bea744 Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Mon, 6 Mar 2023 22:20:43 +0900 Subject: [PATCH 17/18] chore: use `@ts-expect-error` instead of `@ts-ignore` --- packages/type-utils/src/typeFlagUtils.ts | 3 +-- packages/typescript-estree/src/convert.ts | 5 ++--- packages/typescript-estree/src/getModifiers.ts | 6 ++---- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/packages/type-utils/src/typeFlagUtils.ts b/packages/type-utils/src/typeFlagUtils.ts index 035b9fe2be0a..aa71d702b19a 100644 --- a/packages/type-utils/src/typeFlagUtils.ts +++ b/packages/type-utils/src/typeFlagUtils.ts @@ -5,8 +5,7 @@ import * as ts from 'typescript'; * Gets all of the type flags in a type, iterating through unions automatically */ export function getTypeFlags(type: ts.Type): ts.TypeFlags { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore Since typescript 5.0, this is invalid, but uses 0 as the default value of TypeFlags. + // @ts-expect-error Since typescript 5.0, this is invalid, but uses 0 as the default value of TypeFlags. let flags: ts.TypeFlags = 0; for (const t of unionTypeParts(type)) { flags |= t.flags; diff --git a/packages/typescript-estree/src/convert.ts b/packages/typescript-estree/src/convert.ts index ec162e19728f..4d07c341bb2a 100644 --- a/packages/typescript-estree/src/convert.ts +++ b/packages/typescript-estree/src/convert.ts @@ -2553,9 +2553,8 @@ export class Converter { : undefined, initializer: this.convertChild( - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore TODO breaking change remove this from the AST - node.initializer as unknown as ts.Node, + // @ts-expect-error TODO breaking change remove this from the AST + node.initializer as ts.Node, ) || undefined, readonly: hasModifier(SyntaxKind.ReadonlyKeyword, node) || undefined, static: hasModifier(SyntaxKind.StaticKeyword, node) || undefined, diff --git a/packages/typescript-estree/src/getModifiers.ts b/packages/typescript-estree/src/getModifiers.ts index 6ecd66f48a70..24ef670a2c0b 100644 --- a/packages/typescript-estree/src/getModifiers.ts +++ b/packages/typescript-estree/src/getModifiers.ts @@ -23,8 +23,7 @@ export function getModifiers( } return ( - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore intentional fallback for older TS versions + // @ts-expect-error intentional fallback for older TS versions (node.modifiers as ts.Modifier[])?.filter( (m): m is ts.Modifier => !ts.isDecorator(m), ) @@ -50,8 +49,7 @@ export function getDecorators( } return ( - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore intentional fallback for older TS versions + // @ts-expect-error intentional fallback for older TS versions (node.decorators as ts.Node[])?.filter(ts.isDecorator) ); } From 43ae7de86dd9249ab88fecb5659d35e31d2ac7ed Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Sun, 12 Mar 2023 01:38:08 +0900 Subject: [PATCH 18/18] chore(eslint-plugin): move the branch for printing BigInt literal --- .../src/rules/no-redundant-type-constituents.ts | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/packages/eslint-plugin/src/rules/no-redundant-type-constituents.ts b/packages/eslint-plugin/src/rules/no-redundant-type-constituents.ts index 4e737b996b72..bc8fc8a4a3f5 100644 --- a/packages/eslint-plugin/src/rules/no-redundant-type-constituents.ts +++ b/packages/eslint-plugin/src/rules/no-redundant-type-constituents.ts @@ -82,13 +82,11 @@ function describeLiteralType(type: ts.Type): string { return JSON.stringify(type.value); } + if (util.isTypeBigIntLiteralType(type)) { + return `${type.value.negative ? '-' : ''}${type.value.base10Value}n`; + } + if (type.isLiteral()) { - if (typeof type.value === 'object') { - // Print ts.PseudoBigInt - return `${ - type.value.negative ? '-' : '' - }${type.value.base10Value.toString()}n`; - } return type.value.toString(); } @@ -108,10 +106,6 @@ function describeLiteralType(type: ts.Type): string { return 'template literal type'; } - if (util.isTypeBigIntLiteralType(type)) { - return `${type.value.negative ? '-' : ''}${type.value.base10Value}n`; - } - if (tsutils.isBooleanLiteralType(type, true)) { return 'true'; } pFad - Phonifier reborn

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

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


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy