Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: allow typescript@5.3.0-beta as devDependency #7821

Merged
46 changes: 46 additions & 0 deletions .yarn/patches/@microsoft-api-extractor-npm-7.38.0-955f1e0725.patch
@@ -0,0 +1,46 @@
diff --git a/lib/analyzer/ExportAnalyzer.js b/lib/analyzer/ExportAnalyzer.js
index 51f31b4f2f253d82adc9594faa58d8dc031957e0..1fddac54b08665f5a5a717fef740613ae921cb7a 100644
--- a/lib/analyzer/ExportAnalyzer.js
+++ b/lib/analyzer/ExportAnalyzer.js
@@ -193,7 +193,7 @@ class ExportAnalyzer {
const mode = specifier && ts.isStringLiteralLike(specifier)
? TypeScriptInternals_1.TypeScriptInternals.getModeForUsageLocation(importOrExportDeclaration.getSourceFile(), specifier)
: undefined;
- const resolvedModule = TypeScriptInternals_1.TypeScriptInternals.getResolvedModule(importOrExportDeclaration.getSourceFile(), moduleSpecifier, mode);
+ const resolvedModule = TypeScriptInternals_1.TypeScriptInternals.getResolvedModule(this._program, importOrExportDeclaration.getSourceFile(), moduleSpecifier, mode);
if (resolvedModule === undefined) {
// The TS compiler API `getResolvedModule` cannot resolve ambient modules. Thus, to match API Extractor's
// previous behavior, simply treat all ambient modules as external. This bug is tracked by
@@ -666,7 +666,7 @@ class ExportAnalyzer {
ts.isStringLiteralLike(importOrExportDeclaration.moduleSpecifier)
? TypeScriptInternals_1.TypeScriptInternals.getModeForUsageLocation(importOrExportDeclaration.getSourceFile(), importOrExportDeclaration.moduleSpecifier)
: undefined;
- const resolvedModule = TypeScriptInternals_1.TypeScriptInternals.getResolvedModule(importOrExportDeclaration.getSourceFile(), moduleSpecifier, mode);
+ const resolvedModule = TypeScriptInternals_1.TypeScriptInternals.getResolvedModule(this._program, importOrExportDeclaration.getSourceFile(), moduleSpecifier, mode);
if (resolvedModule === undefined) {
// Encountered in https://github.com/microsoft/rushstack/issues/1914.
//
diff --git a/lib/analyzer/TypeScriptInternals.js b/lib/analyzer/TypeScriptInternals.js
index ff13db7709ccf502fe202337869d4024431636c9..217c36b0303c3bf9871edabcd48fbf6e09f18561 100644
--- a/lib/analyzer/TypeScriptInternals.js
+++ b/lib/analyzer/TypeScriptInternals.js
@@ -84,10 +84,16 @@ class TypeScriptInternals {
* Retrieves the (cached) module resolution information for a module name that was exported from a SourceFile.
* The compiler populates this cache as part of analyzing the source file.
*/
- static getResolvedModule(sourceFile, moduleNameText, mode) {
+ static getResolvedModule(program, sourceFile, moduleNameText, mode) {
// Compiler internal:
- // https://github.com/microsoft/TypeScript/blob/v4.7.2/src/compiler/utilities.ts#L161
- return ts.getResolvedModule(sourceFile, moduleNameText, mode);
+ // https://github.com/microsoft/TypeScript/blob/v5.3-beta/src/compiler/types.ts#L4678
+ const result = program.getResolvedModule(
+ sourceFile,
+ moduleNameText,
+ mode
+ );
+ return result?.resolvedModule;
+
}
/**
* Gets the mode required for module resolution required with the addition of Node16/nodenext
@@ -1,8 +1,8 @@
diff --git a/lib/typescript.d.ts b/lib/typescript.d.ts
index ead6d07d8fb2af6aa74b790c9fd947f1062f6df4..f8dad7f06e74d7cfccfcd8fc9c5c7038a7fe4164 100644
index d785077fd9e4eb5959c0badb857358fad09d4d3f..54f71344b098e8d46acd8dd77638c60d505bb996 100644
--- a/lib/typescript.d.ts
+++ b/lib/typescript.d.ts
@@ -371,8 +371,8 @@ declare namespace ts {
@@ -4491,8 +4491,8 @@ declare namespace ts {
JSDocFunctionType = 324,
JSDocVariadicType = 325,
JSDocNamepathType = 326,
Expand All @@ -12,7 +12,7 @@ index ead6d07d8fb2af6aa74b790c9fd947f1062f6df4..f8dad7f06e74d7cfccfcd8fc9c5c7038
JSDocComment = 327,
JSDocText = 328,
JSDocTypeLiteral = 329,
@@ -738,6 +738,8 @@ declare namespace ts {
@@ -5066,6 +5066,8 @@ declare namespace ts {
readonly name: PropertyName;
readonly questionToken?: QuestionToken;
readonly type?: TypeNode;
Expand All @@ -21,7 +21,7 @@ index ead6d07d8fb2af6aa74b790c9fd947f1062f6df4..f8dad7f06e74d7cfccfcd8fc9c5c7038
}
interface PropertyDeclaration extends ClassElement, JSDocContainer {
readonly kind: SyntaxKind.PropertyDeclaration;
@@ -763,6 +765,10 @@ declare namespace ts {
@@ -5091,6 +5093,10 @@ declare namespace ts {
readonly parent: ObjectLiteralExpression;
readonly name: PropertyName;
readonly initializer: Expression;
Expand All @@ -32,7 +32,7 @@ index ead6d07d8fb2af6aa74b790c9fd947f1062f6df4..f8dad7f06e74d7cfccfcd8fc9c5c7038
}
interface ShorthandPropertyAssignment extends ObjectLiteralElement, JSDocContainer {
readonly kind: SyntaxKind.ShorthandPropertyAssignment;
@@ -770,6 +776,12 @@ declare namespace ts {
@@ -5098,6 +5104,12 @@ declare namespace ts {
readonly name: Identifier;
readonly equalsToken?: EqualsToken;
readonly objectAssignmentInitializer?: Expression;
Expand All @@ -45,7 +45,7 @@ index ead6d07d8fb2af6aa74b790c9fd947f1062f6df4..f8dad7f06e74d7cfccfcd8fc9c5c7038
}
interface SpreadAssignment extends ObjectLiteralElement, JSDocContainer {
readonly kind: SyntaxKind.SpreadAssignment;
@@ -892,6 +904,8 @@ declare namespace ts {
@@ -5222,6 +5234,8 @@ declare namespace ts {
}
interface FunctionTypeNode extends FunctionOrConstructorTypeNodeBase, LocalsContainer {
readonly kind: SyntaxKind.FunctionType;
Expand All @@ -54,7 +54,7 @@ index ead6d07d8fb2af6aa74b790c9fd947f1062f6df4..f8dad7f06e74d7cfccfcd8fc9c5c7038
}
interface ConstructorTypeNode extends FunctionOrConstructorTypeNodeBase, LocalsContainer {
readonly kind: SyntaxKind.ConstructorType;
@@ -4584,7 +4598,13 @@ declare namespace ts {
@@ -8978,7 +8992,13 @@ declare namespace ts {
function symbolName(symbol: Symbol): string;
function getNameOfJSDocTypedef(declaration: JSDocTypedefTag): Identifier | PrivateIdentifier | undefined;
function getNameOfDeclaration(declaration: Declaration | Expression | undefined): DeclarationName | undefined;
Expand All @@ -68,7 +68,7 @@ index ead6d07d8fb2af6aa74b790c9fd947f1062f6df4..f8dad7f06e74d7cfccfcd8fc9c5c7038
function getModifiers(node: HasModifiers): readonly Modifier[] | undefined;
/**
* Gets the JSDoc parameter tags for the node if present.
@@ -5110,7 +5130,13 @@ declare namespace ts {
@@ -9508,7 +9528,13 @@ declare namespace ts {
function isModuleName(node: Node): node is ModuleName;
function isBinaryOperatorToken(node: Node): node is BinaryOperatorToken;
function setTextRange<T extends TextRange>(range: T, location: TextRange | undefined): T;
Expand Down
5 changes: 3 additions & 2 deletions package.json
Expand Up @@ -114,12 +114,13 @@
"ts-node": "10.7.0",
"tslint": "^6.1.3",
"tsx": "^3.12.7",
"typescript": ">=4.3.5 <5.3.0"
"typescript": ">=4.3.5 <5.4.0"
},
"resolutions": {
"@jest/create-cache-key-function": "^29",
"@jest/reporters": "^29",
"@jest/test-result": "^29",
"@microsoft/api-extractor@^7.38.0": "patch:@microsoft/api-extractor@npm%3A7.38.0#./.yarn/patches/@microsoft-api-extractor-npm-7.38.0-955f1e0725.patch",
"@swc/core-android-arm-eabi": "link:./tools/dummypkg",
"@swc/core-android-arm64": "link:./tools/dummypkg",
"@swc/core-freebsd-x64": "link:./tools/dummypkg",
Expand All @@ -140,7 +141,7 @@
"pretty-format": "^29",
"react-split-pane@^0.1.92": "patch:react-split-pane@npm%3A0.1.92#./.yarn/patches/react-split-pane-npm-0.1.92-93dbf51dff.patch",
"tsx": "^3.12.7",
"typescript": "patch:typescript@npm%3A5.2.2#./.yarn/patches/typescript-npm-5.2.2-01717e9f84.patch"
"typescript": "patch:typescript@npm%3A5.3.0-beta#./.yarn/patches/typescript-npm-5.3.0-beta-33b1e90865.patch"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The future is now old man dot jpg

We can switch this to the 5.3 RC now

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yarnpkg/berry#4441 keeps hitting me shakes fist

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

microsoft/TypeScript#56371 never mind 🥲

},
"packageManager": "yarn@3.6.4"
}
2 changes: 1 addition & 1 deletion packages/ast-spec/package.json
Expand Up @@ -47,7 +47,7 @@
"@babel/core": "*",
"@babel/eslint-parser": "*",
"@babel/parser": "*",
"@microsoft/api-extractor": "^7.36.1",
"@microsoft/api-extractor": "^7.38.0",
"glob": "*",
"jest": "29.7.0",
"jest-diff": "^29.6.2",
Expand Down
Expand Up @@ -12,8 +12,16 @@ export interface ExportAllDeclaration extends BaseNode {
* ```
* export * from 'mod' assert { type: 'json' };
* ```
* @deprecated -- Replaced with {@link `attributes`}.
*/
assertions: ImportAttribute[];
/**
* The attributes declared for the export.
* ```
* export * from 'mod' assert { type: 'json' };
* ```
*/
attributes: ImportAttribute[];
/**
* The name for the exported items. `null` if no name is assigned.
*/
Expand Down
37 changes: 34 additions & 3 deletions packages/ast-spec/src/declaration/ExportNamedDeclaration/spec.ts
Expand Up @@ -14,8 +14,17 @@ interface ExportNamedDeclarationBase extends BaseNode {
* export { foo } from 'mod' assert { type: 'json' };
* ```
* This will be an empty array if `source` is `null`
* @deprecated Replaced with {@link `attributes`}.
*/
assertions: ImportAttribute[];
/**
* The attributes declared for the export.
* ```
* export { foo } from 'mod' assert { type: 'json' };
* ```
* This will be an empty array if `source` is `null`
*/
attributes: ImportAttribute[];
/**
* The exported declaration.
* ```
Expand Down Expand Up @@ -44,26 +53,48 @@ interface ExportNamedDeclarationBase extends BaseNode {

export interface ExportNamedDeclarationWithoutSourceWithMultiple
extends ExportNamedDeclarationBase {
// this will always be empty array
/**
* This will always be an empty array.
* @deprecated Replaced with {@link `attributes`}.
*/
assertions: ImportAttribute[];
/**
* This will always be an empty array.
*/
attributes: ImportAttribute[];
declaration: null;
source: null;
specifiers: ExportSpecifier[];
}

export interface ExportNamedDeclarationWithoutSourceWithSingle
extends ExportNamedDeclarationBase {
// this will always be empty array
/**
* This will always be an empty array.
* @deprecated Replaced with {@link `attributes`}.
*/
assertions: ImportAttribute[];
/**
* This will always be an empty array.
*/
attributes: ImportAttribute[];
declaration: NamedExportDeclarations;
source: null;
// this will always be empty array
// This will always be an empty array.
specifiers: ExportSpecifier[];
}

export interface ExportNamedDeclarationWithSource
extends ExportNamedDeclarationBase {
/**
* This will always be an empty array.
* @deprecated Replaced with {@link `attributes`}.
*/
assertions: ImportAttribute[];
/**
* This will always be an empty array.
*/
attributes: ImportAttribute[];
declaration: null;
source: StringLiteral;
specifiers: ExportSpecifier[];
Expand Down
8 changes: 8 additions & 0 deletions packages/ast-spec/src/declaration/ImportDeclaration/spec.ts
Expand Up @@ -12,8 +12,16 @@ export interface ImportDeclaration extends BaseNode {
* ```
* import * from 'mod' assert { type: 'json' };
* ```
* @deprecated -- Replaced with {@link `attributes`}.
*/
assertions: ImportAttribute[];
/**
* The attributes declared for the export.
* ```
* import * from 'mod' with { type: 'json' };
* ```
*/
attributes: ImportAttribute[];
/**
* The kind of the import.
*/
Expand Down
4 changes: 2 additions & 2 deletions packages/ast-spec/src/declaration/VariableDeclaration/spec.ts
Expand Up @@ -36,7 +36,7 @@ export interface LetOrConstOrVarDeclaration extends BaseNode {
kind: 'const' | 'let' | 'var';
}

export interface UsingInNomalConextDeclaration extends BaseNode {
export interface UsingInNormalContextDeclaration extends BaseNode {
type: AST_NODE_TYPES.VariableDeclaration;
/**
* The variables declared by this declaration.
Expand Down Expand Up @@ -91,6 +91,6 @@ export interface UsingInForOfDeclaration extends BaseNode {

export type UsingDeclaration =
| UsingInForOfDeclaration
| UsingInNomalConextDeclaration;
| UsingInNormalContextDeclaration;

export type VariableDeclaration = LetOrConstOrVarDeclaration | UsingDeclaration;
1 change: 1 addition & 0 deletions packages/eslint-plugin/src/rules/no-restricted-imports.ts
Expand Up @@ -306,6 +306,7 @@ export default createRule<Options, MessageIds>({
type: AST_NODE_TYPES.ImportDeclaration,
source: node.moduleReference.expression,
assertions: [],
attributes: [],
specifiers: [
{
...node.id,
Expand Down
1 change: 1 addition & 0 deletions packages/scope-manager/src/lib/es5.ts
Expand Up @@ -34,6 +34,7 @@ export const es5 = {
ImportMeta: TYPE,
ImportCallOptions: TYPE,
ImportAssertions: TYPE,
ImportAttributes: TYPE,
Math: TYPE_VALUE,
Date: TYPE_VALUE,
DateConstructor: TYPE,
Expand Down