@typescript-deploys/pr-build 5.3.0-pr-56123-2 → 5.3.0-pr-56131-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/tsc.js CHANGED
@@ -13878,9 +13878,9 @@ function ownsJSDocTag(hostNode, tag) {
13878
13878
  }
13879
13879
  function getNextJSDocCommentLocation(node) {
13880
13880
  const parent = node.parent;
13881
- if (parent.kind === 303 /* PropertyAssignment */ || parent.kind === 277 /* ExportAssignment */ || parent.kind === 172 /* PropertyDeclaration */ || parent.kind === 244 /* ExpressionStatement */ && node.kind === 211 /* PropertyAccessExpression */ || parent.kind === 253 /* ReturnStatement */ || getNestedModuleDeclaration(parent) || isBinaryExpression(node) && node.operatorToken.kind === 64 /* EqualsToken */) {
13881
+ if (parent.kind === 303 /* PropertyAssignment */ || parent.kind === 277 /* ExportAssignment */ || parent.kind === 172 /* PropertyDeclaration */ || parent.kind === 244 /* ExpressionStatement */ && node.kind === 211 /* PropertyAccessExpression */ || parent.kind === 253 /* ReturnStatement */ || getNestedModuleDeclaration(parent) || isAssignmentExpression(node)) {
13882
13882
  return parent;
13883
- } else if (parent.parent && (getSingleVariableOfVariableStatement(parent.parent) === node || isBinaryExpression(parent) && parent.operatorToken.kind === 64 /* EqualsToken */)) {
13883
+ } else if (parent.parent && (getSingleVariableOfVariableStatement(parent.parent) === node || isAssignmentExpression(parent))) {
13884
13884
  return parent.parent;
13885
13885
  } else if (parent.parent && parent.parent.parent && (getSingleVariableOfVariableStatement(parent.parent.parent) || getSingleInitializerOfVariableStatementOrPropertyDeclaration(parent.parent.parent) === node || getSourceOfDefaultedAssignment(parent.parent.parent))) {
13886
13886
  return parent.parent.parent;
@@ -34843,7 +34843,7 @@ var commandOptionsWithoutBuild = [
34843
34843
  affectsBuildInfo: true,
34844
34844
  affectsDeclarationPath: true,
34845
34845
  isFilePath: false,
34846
- // This is intentionally broken to support compatability with existing tsconfig files
34846
+ // This is intentionally broken to support compatibility with existing tsconfig files
34847
34847
  // for correct behaviour, please use outFile
34848
34848
  category: Diagnostics.Backwards_Compatibility,
34849
34849
  paramType: Diagnostics.FILE,
@@ -67350,7 +67350,7 @@ function createTypeChecker(host) {
67350
67350
  return getWidenedType(contextualType ? getNonNullableType(contextualType) : checkExpressionCached(containingLiteral));
67351
67351
  }
67352
67352
  const parent = walkUpParenthesizedExpressions(func.parent);
67353
- if (parent.kind === 226 /* BinaryExpression */ && parent.operatorToken.kind === 64 /* EqualsToken */) {
67353
+ if (isAssignmentExpression(parent)) {
67354
67354
  const target = parent.left;
67355
67355
  if (isAccessExpression(target)) {
67356
67356
  const { expression } = target;
@@ -73543,12 +73543,7 @@ function createTypeChecker(host) {
73543
73543
  }
73544
73544
  }
73545
73545
  if (contextualSignature && !getReturnTypeFromAnnotation(node) && !signature.resolvedReturnType) {
73546
- const contextualReturnType = getContextualReturnType(
73547
- node,
73548
- /*contextFlags*/
73549
- void 0
73550
- );
73551
- const returnType = contextualReturnType && contextualReturnType.flags & (3 /* AnyOrUnknown */ | 16384 /* Void */) ? contextualReturnType : getReturnTypeFromBody(node, checkMode);
73546
+ const returnType = getReturnTypeFromBody(node, checkMode);
73552
73547
  if (!signature.resolvedReturnType) {
73553
73548
  signature.resolvedReturnType = returnType;
73554
73549
  }
@@ -73709,7 +73704,7 @@ function createTypeChecker(host) {
73709
73704
  return typeofType;
73710
73705
  }
73711
73706
  function checkVoidExpression(node) {
73712
- checkExpression(node.expression);
73707
+ checkNodeDeferred(node);
73713
73708
  return undefinedWideningType;
73714
73709
  }
73715
73710
  function checkAwaitGrammar(node) {
@@ -80905,6 +80900,9 @@ function createTypeChecker(host) {
80905
80900
  case 217 /* ParenthesizedExpression */:
80906
80901
  checkAssertionDeferred(node);
80907
80902
  break;
80903
+ case 222 /* VoidExpression */:
80904
+ checkExpression(node.expression);
80905
+ break;
80908
80906
  case 226 /* BinaryExpression */:
80909
80907
  if (isInstanceOfExpression(node)) {
80910
80908
  resolveUntypedCall(node);
package/lib/tsserver.js CHANGED
@@ -17745,9 +17745,9 @@ function ownsJSDocTag(hostNode, tag) {
17745
17745
  }
17746
17746
  function getNextJSDocCommentLocation(node) {
17747
17747
  const parent2 = node.parent;
17748
- if (parent2.kind === 303 /* PropertyAssignment */ || parent2.kind === 277 /* ExportAssignment */ || parent2.kind === 172 /* PropertyDeclaration */ || parent2.kind === 244 /* ExpressionStatement */ && node.kind === 211 /* PropertyAccessExpression */ || parent2.kind === 253 /* ReturnStatement */ || getNestedModuleDeclaration(parent2) || isBinaryExpression(node) && node.operatorToken.kind === 64 /* EqualsToken */) {
17748
+ if (parent2.kind === 303 /* PropertyAssignment */ || parent2.kind === 277 /* ExportAssignment */ || parent2.kind === 172 /* PropertyDeclaration */ || parent2.kind === 244 /* ExpressionStatement */ && node.kind === 211 /* PropertyAccessExpression */ || parent2.kind === 253 /* ReturnStatement */ || getNestedModuleDeclaration(parent2) || isAssignmentExpression(node)) {
17749
17749
  return parent2;
17750
- } else if (parent2.parent && (getSingleVariableOfVariableStatement(parent2.parent) === node || isBinaryExpression(parent2) && parent2.operatorToken.kind === 64 /* EqualsToken */)) {
17750
+ } else if (parent2.parent && (getSingleVariableOfVariableStatement(parent2.parent) === node || isAssignmentExpression(parent2))) {
17751
17751
  return parent2.parent;
17752
17752
  } else if (parent2.parent && parent2.parent.parent && (getSingleVariableOfVariableStatement(parent2.parent.parent) || getSingleInitializerOfVariableStatementOrPropertyDeclaration(parent2.parent.parent) === node || getSourceOfDefaultedAssignment(parent2.parent.parent))) {
17753
17753
  return parent2.parent.parent;
@@ -39247,7 +39247,7 @@ var commandOptionsWithoutBuild = [
39247
39247
  affectsBuildInfo: true,
39248
39248
  affectsDeclarationPath: true,
39249
39249
  isFilePath: false,
39250
- // This is intentionally broken to support compatability with existing tsconfig files
39250
+ // This is intentionally broken to support compatibility with existing tsconfig files
39251
39251
  // for correct behaviour, please use outFile
39252
39252
  category: Diagnostics.Backwards_Compatibility,
39253
39253
  paramType: Diagnostics.FILE,
@@ -72062,7 +72062,7 @@ function createTypeChecker(host) {
72062
72062
  return getWidenedType(contextualType ? getNonNullableType(contextualType) : checkExpressionCached(containingLiteral));
72063
72063
  }
72064
72064
  const parent2 = walkUpParenthesizedExpressions(func.parent);
72065
- if (parent2.kind === 226 /* BinaryExpression */ && parent2.operatorToken.kind === 64 /* EqualsToken */) {
72065
+ if (isAssignmentExpression(parent2)) {
72066
72066
  const target = parent2.left;
72067
72067
  if (isAccessExpression(target)) {
72068
72068
  const { expression } = target;
@@ -78255,12 +78255,7 @@ function createTypeChecker(host) {
78255
78255
  }
78256
78256
  }
78257
78257
  if (contextualSignature && !getReturnTypeFromAnnotation(node) && !signature.resolvedReturnType) {
78258
- const contextualReturnType = getContextualReturnType(
78259
- node,
78260
- /*contextFlags*/
78261
- void 0
78262
- );
78263
- const returnType = contextualReturnType && contextualReturnType.flags & (3 /* AnyOrUnknown */ | 16384 /* Void */) ? contextualReturnType : getReturnTypeFromBody(node, checkMode);
78258
+ const returnType = getReturnTypeFromBody(node, checkMode);
78264
78259
  if (!signature.resolvedReturnType) {
78265
78260
  signature.resolvedReturnType = returnType;
78266
78261
  }
@@ -78421,7 +78416,7 @@ function createTypeChecker(host) {
78421
78416
  return typeofType;
78422
78417
  }
78423
78418
  function checkVoidExpression(node) {
78424
- checkExpression(node.expression);
78419
+ checkNodeDeferred(node);
78425
78420
  return undefinedWideningType;
78426
78421
  }
78427
78422
  function checkAwaitGrammar(node) {
@@ -85617,6 +85612,9 @@ function createTypeChecker(host) {
85617
85612
  case 217 /* ParenthesizedExpression */:
85618
85613
  checkAssertionDeferred(node);
85619
85614
  break;
85615
+ case 222 /* VoidExpression */:
85616
+ checkExpression(node.expression);
85617
+ break;
85620
85618
  case 226 /* BinaryExpression */:
85621
85619
  if (isInstanceOfExpression(node)) {
85622
85620
  resolveUntypedCall(node);
@@ -138607,26 +138605,46 @@ function getRangeToExtract(context, considerEmptySpans = true) {
138607
138605
  const current = getTokenAtPosition(file, startPosition);
138608
138606
  const range = createTextRangeFromSpan(getRefactorContextSpan(context));
138609
138607
  const cursorRequest = range.pos === range.end && considerEmptySpans;
138610
- const selection = findAncestor(current, (node) => node.parent && isTypeNode(node) && !rangeContainsSkipTrivia(range, node.parent, file) && (cursorRequest || nodeOverlapsWithStartEnd(current, file, range.pos, range.end)));
138611
- if (!selection || !isTypeNode(selection))
138608
+ const firstType = findAncestor(current, (node) => node.parent && isTypeNode(node) && !rangeContainsSkipTrivia(range, node.parent, file) && (cursorRequest || nodeOverlapsWithStartEnd(current, file, range.pos, range.end)));
138609
+ if (!firstType || !isTypeNode(firstType))
138612
138610
  return { error: getLocaleSpecificMessage(Diagnostics.Selection_is_not_a_valid_type_node) };
138613
138611
  const checker = context.program.getTypeChecker();
138614
- const enclosingNode = getEnclosingNode(selection, isJS);
138612
+ const enclosingNode = getEnclosingNode(firstType, isJS);
138615
138613
  if (enclosingNode === void 0)
138616
138614
  return { error: getLocaleSpecificMessage(Diagnostics.No_type_could_be_extracted_from_this_type_node) };
138615
+ const typeList = [];
138616
+ if ((isUnionTypeNode(firstType.parent) || isIntersectionTypeNode(firstType.parent)) && range.end > firstType.end) {
138617
+ addRange(
138618
+ typeList,
138619
+ firstType.parent.types.filter((type) => {
138620
+ return type.getStart() >= range.pos && type.getEnd() <= range.end;
138621
+ })
138622
+ );
138623
+ }
138624
+ const selection = typeList.length > 1 ? typeList : firstType;
138617
138625
  const typeParameters = collectTypeParameters(checker, selection, enclosingNode, file);
138618
138626
  if (!typeParameters)
138619
138627
  return { error: getLocaleSpecificMessage(Diagnostics.No_type_could_be_extracted_from_this_type_node) };
138620
138628
  const typeElements = flattenTypeLiteralNodeReference(checker, selection);
138621
138629
  return { isJS, selection, enclosingNode, typeParameters, typeElements };
138622
138630
  }
138623
- function flattenTypeLiteralNodeReference(checker, node) {
138624
- if (!node)
138631
+ function flattenTypeLiteralNodeReference(checker, selection) {
138632
+ if (!selection)
138625
138633
  return void 0;
138626
- if (isIntersectionTypeNode(node)) {
138634
+ if (isArray(selection)) {
138635
+ const result = [];
138636
+ for (const type of selection) {
138637
+ const flattenedTypeMembers = flattenTypeLiteralNodeReference(checker, type);
138638
+ if (!flattenedTypeMembers)
138639
+ return void 0;
138640
+ addRange(result, flattenedTypeMembers);
138641
+ }
138642
+ return result;
138643
+ }
138644
+ if (isIntersectionTypeNode(selection)) {
138627
138645
  const result = [];
138628
138646
  const seen = /* @__PURE__ */ new Map();
138629
- for (const type of node.types) {
138647
+ for (const type of selection.types) {
138630
138648
  const flattenedTypeMembers = flattenTypeLiteralNodeReference(checker, type);
138631
138649
  if (!flattenedTypeMembers || !flattenedTypeMembers.every((type2) => type2.name && addToSeen(seen, getNameFromPropertyName(type2.name)))) {
138632
138650
  return void 0;
@@ -138634,18 +138652,30 @@ function flattenTypeLiteralNodeReference(checker, node) {
138634
138652
  addRange(result, flattenedTypeMembers);
138635
138653
  }
138636
138654
  return result;
138637
- } else if (isParenthesizedTypeNode(node)) {
138638
- return flattenTypeLiteralNodeReference(checker, node.type);
138639
- } else if (isTypeLiteralNode(node)) {
138640
- return node.members;
138655
+ } else if (isParenthesizedTypeNode(selection)) {
138656
+ return flattenTypeLiteralNodeReference(checker, selection.type);
138657
+ } else if (isTypeLiteralNode(selection)) {
138658
+ return selection.members;
138641
138659
  }
138642
138660
  return void 0;
138643
138661
  }
138644
138662
  function rangeContainsSkipTrivia(r1, node, file) {
138645
- return rangeContainsStartEnd(r1, skipTrivia(file.text, node.pos), node.end);
138663
+ const r1Range = arrayToNode(r1);
138664
+ const nodeRange = arrayToNode(node);
138665
+ return rangeContainsStartEnd(r1Range, skipTrivia(file.text, nodeRange.pos), nodeRange.end);
138666
+ function arrayToNode(rangeOrArray) {
138667
+ return isArray(rangeOrArray) ? { pos: rangeOrArray[0].pos, end: rangeOrArray[rangeOrArray.length - 1].end } : rangeOrArray;
138668
+ }
138646
138669
  }
138647
138670
  function collectTypeParameters(checker, selection, enclosingNode, file) {
138648
138671
  const result = [];
138672
+ if (isArray(selection)) {
138673
+ selection.forEach((t) => {
138674
+ if (!visitor(t))
138675
+ return void 0;
138676
+ });
138677
+ return result;
138678
+ }
138649
138679
  return visitor(selection) ? void 0 : result;
138650
138680
  function visitor(node) {
138651
138681
  if (isTypeReferenceNode(node)) {
@@ -138706,32 +138736,62 @@ function collectTypeParameters(checker, selection, enclosingNode, file) {
138706
138736
  }
138707
138737
  function doTypeAliasChange(changes, file, name, info) {
138708
138738
  const { enclosingNode, selection, typeParameters } = info;
138709
- const newTypeNode = factory.createTypeAliasDeclaration(
138710
- /*modifiers*/
138711
- void 0,
138712
- name,
138713
- typeParameters.map((id) => factory.updateTypeParameterDeclaration(
138714
- id,
138715
- id.modifiers,
138739
+ if (isArray(selection)) {
138740
+ const newTypeValue = isUnionTypeNode(selection[0].parent) ? factory.createUnionTypeNode(selection) : factory.createIntersectionTypeNode(selection);
138741
+ const newTypeDeclaration = factory.createTypeAliasDeclaration(
138742
+ /*modifiers*/
138743
+ void 0,
138744
+ name,
138745
+ typeParameters.map((id) => factory.updateTypeParameterDeclaration(
138746
+ id,
138747
+ id.modifiers,
138748
+ id.name,
138749
+ id.constraint,
138750
+ /*defaultType*/
138751
+ void 0
138752
+ )),
138753
+ newTypeValue
138754
+ );
138755
+ changes.insertNodeBefore(
138756
+ file,
138757
+ enclosingNode,
138758
+ ignoreSourceNewlines(newTypeDeclaration),
138759
+ /*blankLineBetween*/
138760
+ true
138761
+ );
138762
+ changes.replaceNodeRange(file, selection[0], selection[selection.length - 1], factory.createTypeReferenceNode(name, typeParameters.map((id) => factory.createTypeReferenceNode(
138716
138763
  id.name,
138717
- id.constraint,
138718
- /*defaultType*/
138764
+ /*typeArguments*/
138719
138765
  void 0
138720
- )),
138721
- selection
138722
- );
138723
- changes.insertNodeBefore(
138724
- file,
138725
- enclosingNode,
138726
- ignoreSourceNewlines(newTypeNode),
138727
- /*blankLineBetween*/
138728
- true
138729
- );
138730
- changes.replaceNode(file, selection, factory.createTypeReferenceNode(name, typeParameters.map((id) => factory.createTypeReferenceNode(
138731
- id.name,
138732
- /*typeArguments*/
138733
- void 0
138734
- ))), { leadingTriviaOption: ts_textChanges_exports.LeadingTriviaOption.Exclude, trailingTriviaOption: ts_textChanges_exports.TrailingTriviaOption.ExcludeWhitespace });
138766
+ ))), { leadingTriviaOption: ts_textChanges_exports.LeadingTriviaOption.Exclude, trailingTriviaOption: ts_textChanges_exports.TrailingTriviaOption.ExcludeWhitespace });
138767
+ } else {
138768
+ const newTypeNode = factory.createTypeAliasDeclaration(
138769
+ /*modifiers*/
138770
+ void 0,
138771
+ name,
138772
+ typeParameters.map((id) => factory.updateTypeParameterDeclaration(
138773
+ id,
138774
+ id.modifiers,
138775
+ id.name,
138776
+ id.constraint,
138777
+ /*defaultType*/
138778
+ void 0
138779
+ )),
138780
+ selection
138781
+ );
138782
+ changes.insertNodeBefore(
138783
+ file,
138784
+ enclosingNode,
138785
+ ignoreSourceNewlines(newTypeNode),
138786
+ /*blankLineBetween*/
138787
+ true
138788
+ );
138789
+ changes.replaceNode(file, selection, factory.createTypeReferenceNode(name, typeParameters.map((id) => factory.createTypeReferenceNode(
138790
+ id.name,
138791
+ /*typeArguments*/
138792
+ void 0
138793
+ ))), { leadingTriviaOption: ts_textChanges_exports.LeadingTriviaOption.Exclude, trailingTriviaOption: ts_textChanges_exports.TrailingTriviaOption.ExcludeWhitespace });
138794
+ }
138735
138795
  }
138736
138796
  function doInterfaceChange(changes, file, name, info) {
138737
138797
  var _a;
@@ -138753,19 +138813,36 @@ function doInterfaceChange(changes, file, name, info) {
138753
138813
  /*blankLineBetween*/
138754
138814
  true
138755
138815
  );
138756
- changes.replaceNode(file, selection, factory.createTypeReferenceNode(name, typeParameters.map((id) => factory.createTypeReferenceNode(
138757
- id.name,
138758
- /*typeArguments*/
138759
- void 0
138760
- ))), { leadingTriviaOption: ts_textChanges_exports.LeadingTriviaOption.Exclude, trailingTriviaOption: ts_textChanges_exports.TrailingTriviaOption.ExcludeWhitespace });
138816
+ if (isArray(selection)) {
138817
+ changes.replaceNodeRange(file, selection[0], selection[selection.length - 1], factory.createTypeReferenceNode(name, typeParameters.map((id) => factory.createTypeReferenceNode(
138818
+ id.name,
138819
+ /*typeArguments*/
138820
+ void 0
138821
+ ))), { leadingTriviaOption: ts_textChanges_exports.LeadingTriviaOption.Exclude, trailingTriviaOption: ts_textChanges_exports.TrailingTriviaOption.ExcludeWhitespace });
138822
+ } else {
138823
+ changes.replaceNode(file, selection, factory.createTypeReferenceNode(name, typeParameters.map((id) => factory.createTypeReferenceNode(
138824
+ id.name,
138825
+ /*typeArguments*/
138826
+ void 0
138827
+ ))), { leadingTriviaOption: ts_textChanges_exports.LeadingTriviaOption.Exclude, trailingTriviaOption: ts_textChanges_exports.TrailingTriviaOption.ExcludeWhitespace });
138828
+ }
138761
138829
  }
138762
138830
  function doTypedefChange(changes, context, file, name, info) {
138763
138831
  var _a;
138764
138832
  const { enclosingNode, selection, typeParameters } = info;
138765
- setEmitFlags(selection, 3072 /* NoComments */ | 4096 /* NoNestedComments */);
138833
+ let newTypeValue;
138834
+ if (isArray(selection)) {
138835
+ selection.forEach((typeNode) => {
138836
+ setEmitFlags(typeNode, 3072 /* NoComments */ | 4096 /* NoNestedComments */);
138837
+ });
138838
+ newTypeValue = isUnionTypeNode(selection[0].parent) ? factory.createUnionTypeNode(selection) : factory.createIntersectionTypeNode(selection);
138839
+ } else {
138840
+ setEmitFlags(selection, 3072 /* NoComments */ | 4096 /* NoNestedComments */);
138841
+ newTypeValue = selection;
138842
+ }
138766
138843
  const node = factory.createJSDocTypedefTag(
138767
138844
  factory.createIdentifier("typedef"),
138768
- factory.createJSDocTypeExpression(selection),
138845
+ factory.createJSDocTypeExpression(newTypeValue),
138769
138846
  factory.createIdentifier(name)
138770
138847
  );
138771
138848
  const templates = [];
@@ -138803,11 +138880,19 @@ function doTypedefChange(changes, context, file, name, info) {
138803
138880
  true
138804
138881
  );
138805
138882
  }
138806
- changes.replaceNode(file, selection, factory.createTypeReferenceNode(name, typeParameters.map((id) => factory.createTypeReferenceNode(
138807
- id.name,
138808
- /*typeArguments*/
138809
- void 0
138810
- ))));
138883
+ if (isArray(selection)) {
138884
+ changes.replaceNodeRange(file, selection[0], selection[selection.length - 1], factory.createTypeReferenceNode(name, typeParameters.map((id) => factory.createTypeReferenceNode(
138885
+ id.name,
138886
+ /*typeArguments*/
138887
+ void 0
138888
+ ))));
138889
+ } else {
138890
+ changes.replaceNode(file, selection, factory.createTypeReferenceNode(name, typeParameters.map((id) => factory.createTypeReferenceNode(
138891
+ id.name,
138892
+ /*typeArguments*/
138893
+ void 0
138894
+ ))));
138895
+ }
138811
138896
  }
138812
138897
  function getEnclosingNode(node, isJS) {
138813
138898
  return findAncestor(node, isStatement) || (isJS ? findAncestor(node, isJSDoc) : void 0);
package/lib/typescript.js CHANGED
@@ -15128,9 +15128,9 @@ ${lanes.join("\n")}
15128
15128
  }
15129
15129
  function getNextJSDocCommentLocation(node) {
15130
15130
  const parent2 = node.parent;
15131
- if (parent2.kind === 303 /* PropertyAssignment */ || parent2.kind === 277 /* ExportAssignment */ || parent2.kind === 172 /* PropertyDeclaration */ || parent2.kind === 244 /* ExpressionStatement */ && node.kind === 211 /* PropertyAccessExpression */ || parent2.kind === 253 /* ReturnStatement */ || getNestedModuleDeclaration(parent2) || isBinaryExpression(node) && node.operatorToken.kind === 64 /* EqualsToken */) {
15131
+ if (parent2.kind === 303 /* PropertyAssignment */ || parent2.kind === 277 /* ExportAssignment */ || parent2.kind === 172 /* PropertyDeclaration */ || parent2.kind === 244 /* ExpressionStatement */ && node.kind === 211 /* PropertyAccessExpression */ || parent2.kind === 253 /* ReturnStatement */ || getNestedModuleDeclaration(parent2) || isAssignmentExpression(node)) {
15132
15132
  return parent2;
15133
- } else if (parent2.parent && (getSingleVariableOfVariableStatement(parent2.parent) === node || isBinaryExpression(parent2) && parent2.operatorToken.kind === 64 /* EqualsToken */)) {
15133
+ } else if (parent2.parent && (getSingleVariableOfVariableStatement(parent2.parent) === node || isAssignmentExpression(parent2))) {
15134
15134
  return parent2.parent;
15135
15135
  } else if (parent2.parent && parent2.parent.parent && (getSingleVariableOfVariableStatement(parent2.parent.parent) || getSingleInitializerOfVariableStatementOrPropertyDeclaration(parent2.parent.parent) === node || getSourceOfDefaultedAssignment(parent2.parent.parent))) {
15136
15136
  return parent2.parent.parent;
@@ -38730,7 +38730,7 @@ ${lanes.join("\n")}
38730
38730
  affectsBuildInfo: true,
38731
38731
  affectsDeclarationPath: true,
38732
38732
  isFilePath: false,
38733
- // This is intentionally broken to support compatability with existing tsconfig files
38733
+ // This is intentionally broken to support compatibility with existing tsconfig files
38734
38734
  // for correct behaviour, please use outFile
38735
38735
  category: Diagnostics.Backwards_Compatibility,
38736
38736
  paramType: Diagnostics.FILE,
@@ -69829,7 +69829,7 @@ ${lanes.join("\n")}
69829
69829
  return getWidenedType(contextualType ? getNonNullableType(contextualType) : checkExpressionCached(containingLiteral));
69830
69830
  }
69831
69831
  const parent2 = walkUpParenthesizedExpressions(func.parent);
69832
- if (parent2.kind === 226 /* BinaryExpression */ && parent2.operatorToken.kind === 64 /* EqualsToken */) {
69832
+ if (isAssignmentExpression(parent2)) {
69833
69833
  const target = parent2.left;
69834
69834
  if (isAccessExpression(target)) {
69835
69835
  const { expression } = target;
@@ -76022,12 +76022,7 @@ ${lanes.join("\n")}
76022
76022
  }
76023
76023
  }
76024
76024
  if (contextualSignature && !getReturnTypeFromAnnotation(node) && !signature.resolvedReturnType) {
76025
- const contextualReturnType = getContextualReturnType(
76026
- node,
76027
- /*contextFlags*/
76028
- void 0
76029
- );
76030
- const returnType = contextualReturnType && contextualReturnType.flags & (3 /* AnyOrUnknown */ | 16384 /* Void */) ? contextualReturnType : getReturnTypeFromBody(node, checkMode);
76025
+ const returnType = getReturnTypeFromBody(node, checkMode);
76031
76026
  if (!signature.resolvedReturnType) {
76032
76027
  signature.resolvedReturnType = returnType;
76033
76028
  }
@@ -76188,7 +76183,7 @@ ${lanes.join("\n")}
76188
76183
  return typeofType;
76189
76184
  }
76190
76185
  function checkVoidExpression(node) {
76191
- checkExpression(node.expression);
76186
+ checkNodeDeferred(node);
76192
76187
  return undefinedWideningType;
76193
76188
  }
76194
76189
  function checkAwaitGrammar(node) {
@@ -83384,6 +83379,9 @@ ${lanes.join("\n")}
83384
83379
  case 217 /* ParenthesizedExpression */:
83385
83380
  checkAssertionDeferred(node);
83386
83381
  break;
83382
+ case 222 /* VoidExpression */:
83383
+ checkExpression(node.expression);
83384
+ break;
83387
83385
  case 226 /* BinaryExpression */:
83388
83386
  if (isInstanceOfExpression(node)) {
83389
83387
  resolveUntypedCall(node);
@@ -136918,26 +136916,46 @@ ${lanes.join("\n")}
136918
136916
  const current = getTokenAtPosition(file, startPosition);
136919
136917
  const range = createTextRangeFromSpan(getRefactorContextSpan(context));
136920
136918
  const cursorRequest = range.pos === range.end && considerEmptySpans;
136921
- const selection = findAncestor(current, (node) => node.parent && isTypeNode(node) && !rangeContainsSkipTrivia(range, node.parent, file) && (cursorRequest || nodeOverlapsWithStartEnd(current, file, range.pos, range.end)));
136922
- if (!selection || !isTypeNode(selection))
136919
+ const firstType = findAncestor(current, (node) => node.parent && isTypeNode(node) && !rangeContainsSkipTrivia(range, node.parent, file) && (cursorRequest || nodeOverlapsWithStartEnd(current, file, range.pos, range.end)));
136920
+ if (!firstType || !isTypeNode(firstType))
136923
136921
  return { error: getLocaleSpecificMessage(Diagnostics.Selection_is_not_a_valid_type_node) };
136924
136922
  const checker = context.program.getTypeChecker();
136925
- const enclosingNode = getEnclosingNode(selection, isJS);
136923
+ const enclosingNode = getEnclosingNode(firstType, isJS);
136926
136924
  if (enclosingNode === void 0)
136927
136925
  return { error: getLocaleSpecificMessage(Diagnostics.No_type_could_be_extracted_from_this_type_node) };
136926
+ const typeList = [];
136927
+ if ((isUnionTypeNode(firstType.parent) || isIntersectionTypeNode(firstType.parent)) && range.end > firstType.end) {
136928
+ addRange(
136929
+ typeList,
136930
+ firstType.parent.types.filter((type) => {
136931
+ return type.getStart() >= range.pos && type.getEnd() <= range.end;
136932
+ })
136933
+ );
136934
+ }
136935
+ const selection = typeList.length > 1 ? typeList : firstType;
136928
136936
  const typeParameters = collectTypeParameters(checker, selection, enclosingNode, file);
136929
136937
  if (!typeParameters)
136930
136938
  return { error: getLocaleSpecificMessage(Diagnostics.No_type_could_be_extracted_from_this_type_node) };
136931
136939
  const typeElements = flattenTypeLiteralNodeReference(checker, selection);
136932
136940
  return { isJS, selection, enclosingNode, typeParameters, typeElements };
136933
136941
  }
136934
- function flattenTypeLiteralNodeReference(checker, node) {
136935
- if (!node)
136942
+ function flattenTypeLiteralNodeReference(checker, selection) {
136943
+ if (!selection)
136936
136944
  return void 0;
136937
- if (isIntersectionTypeNode(node)) {
136945
+ if (isArray(selection)) {
136946
+ const result = [];
136947
+ for (const type of selection) {
136948
+ const flattenedTypeMembers = flattenTypeLiteralNodeReference(checker, type);
136949
+ if (!flattenedTypeMembers)
136950
+ return void 0;
136951
+ addRange(result, flattenedTypeMembers);
136952
+ }
136953
+ return result;
136954
+ }
136955
+ if (isIntersectionTypeNode(selection)) {
136938
136956
  const result = [];
136939
136957
  const seen = /* @__PURE__ */ new Map();
136940
- for (const type of node.types) {
136958
+ for (const type of selection.types) {
136941
136959
  const flattenedTypeMembers = flattenTypeLiteralNodeReference(checker, type);
136942
136960
  if (!flattenedTypeMembers || !flattenedTypeMembers.every((type2) => type2.name && addToSeen(seen, getNameFromPropertyName(type2.name)))) {
136943
136961
  return void 0;
@@ -136945,18 +136963,30 @@ ${lanes.join("\n")}
136945
136963
  addRange(result, flattenedTypeMembers);
136946
136964
  }
136947
136965
  return result;
136948
- } else if (isParenthesizedTypeNode(node)) {
136949
- return flattenTypeLiteralNodeReference(checker, node.type);
136950
- } else if (isTypeLiteralNode(node)) {
136951
- return node.members;
136966
+ } else if (isParenthesizedTypeNode(selection)) {
136967
+ return flattenTypeLiteralNodeReference(checker, selection.type);
136968
+ } else if (isTypeLiteralNode(selection)) {
136969
+ return selection.members;
136952
136970
  }
136953
136971
  return void 0;
136954
136972
  }
136955
136973
  function rangeContainsSkipTrivia(r1, node, file) {
136956
- return rangeContainsStartEnd(r1, skipTrivia(file.text, node.pos), node.end);
136974
+ const r1Range = arrayToNode(r1);
136975
+ const nodeRange = arrayToNode(node);
136976
+ return rangeContainsStartEnd(r1Range, skipTrivia(file.text, nodeRange.pos), nodeRange.end);
136977
+ function arrayToNode(rangeOrArray) {
136978
+ return isArray(rangeOrArray) ? { pos: rangeOrArray[0].pos, end: rangeOrArray[rangeOrArray.length - 1].end } : rangeOrArray;
136979
+ }
136957
136980
  }
136958
136981
  function collectTypeParameters(checker, selection, enclosingNode, file) {
136959
136982
  const result = [];
136983
+ if (isArray(selection)) {
136984
+ selection.forEach((t) => {
136985
+ if (!visitor(t))
136986
+ return void 0;
136987
+ });
136988
+ return result;
136989
+ }
136960
136990
  return visitor(selection) ? void 0 : result;
136961
136991
  function visitor(node) {
136962
136992
  if (isTypeReferenceNode(node)) {
@@ -137017,32 +137047,62 @@ ${lanes.join("\n")}
137017
137047
  }
137018
137048
  function doTypeAliasChange(changes, file, name, info) {
137019
137049
  const { enclosingNode, selection, typeParameters } = info;
137020
- const newTypeNode = factory.createTypeAliasDeclaration(
137021
- /*modifiers*/
137022
- void 0,
137023
- name,
137024
- typeParameters.map((id) => factory.updateTypeParameterDeclaration(
137025
- id,
137026
- id.modifiers,
137050
+ if (isArray(selection)) {
137051
+ const newTypeValue = isUnionTypeNode(selection[0].parent) ? factory.createUnionTypeNode(selection) : factory.createIntersectionTypeNode(selection);
137052
+ const newTypeDeclaration = factory.createTypeAliasDeclaration(
137053
+ /*modifiers*/
137054
+ void 0,
137055
+ name,
137056
+ typeParameters.map((id) => factory.updateTypeParameterDeclaration(
137057
+ id,
137058
+ id.modifiers,
137059
+ id.name,
137060
+ id.constraint,
137061
+ /*defaultType*/
137062
+ void 0
137063
+ )),
137064
+ newTypeValue
137065
+ );
137066
+ changes.insertNodeBefore(
137067
+ file,
137068
+ enclosingNode,
137069
+ ignoreSourceNewlines(newTypeDeclaration),
137070
+ /*blankLineBetween*/
137071
+ true
137072
+ );
137073
+ changes.replaceNodeRange(file, selection[0], selection[selection.length - 1], factory.createTypeReferenceNode(name, typeParameters.map((id) => factory.createTypeReferenceNode(
137027
137074
  id.name,
137028
- id.constraint,
137029
- /*defaultType*/
137075
+ /*typeArguments*/
137030
137076
  void 0
137031
- )),
137032
- selection
137033
- );
137034
- changes.insertNodeBefore(
137035
- file,
137036
- enclosingNode,
137037
- ignoreSourceNewlines(newTypeNode),
137038
- /*blankLineBetween*/
137039
- true
137040
- );
137041
- changes.replaceNode(file, selection, factory.createTypeReferenceNode(name, typeParameters.map((id) => factory.createTypeReferenceNode(
137042
- id.name,
137043
- /*typeArguments*/
137044
- void 0
137045
- ))), { leadingTriviaOption: ts_textChanges_exports.LeadingTriviaOption.Exclude, trailingTriviaOption: ts_textChanges_exports.TrailingTriviaOption.ExcludeWhitespace });
137077
+ ))), { leadingTriviaOption: ts_textChanges_exports.LeadingTriviaOption.Exclude, trailingTriviaOption: ts_textChanges_exports.TrailingTriviaOption.ExcludeWhitespace });
137078
+ } else {
137079
+ const newTypeNode = factory.createTypeAliasDeclaration(
137080
+ /*modifiers*/
137081
+ void 0,
137082
+ name,
137083
+ typeParameters.map((id) => factory.updateTypeParameterDeclaration(
137084
+ id,
137085
+ id.modifiers,
137086
+ id.name,
137087
+ id.constraint,
137088
+ /*defaultType*/
137089
+ void 0
137090
+ )),
137091
+ selection
137092
+ );
137093
+ changes.insertNodeBefore(
137094
+ file,
137095
+ enclosingNode,
137096
+ ignoreSourceNewlines(newTypeNode),
137097
+ /*blankLineBetween*/
137098
+ true
137099
+ );
137100
+ changes.replaceNode(file, selection, factory.createTypeReferenceNode(name, typeParameters.map((id) => factory.createTypeReferenceNode(
137101
+ id.name,
137102
+ /*typeArguments*/
137103
+ void 0
137104
+ ))), { leadingTriviaOption: ts_textChanges_exports.LeadingTriviaOption.Exclude, trailingTriviaOption: ts_textChanges_exports.TrailingTriviaOption.ExcludeWhitespace });
137105
+ }
137046
137106
  }
137047
137107
  function doInterfaceChange(changes, file, name, info) {
137048
137108
  var _a;
@@ -137064,19 +137124,36 @@ ${lanes.join("\n")}
137064
137124
  /*blankLineBetween*/
137065
137125
  true
137066
137126
  );
137067
- changes.replaceNode(file, selection, factory.createTypeReferenceNode(name, typeParameters.map((id) => factory.createTypeReferenceNode(
137068
- id.name,
137069
- /*typeArguments*/
137070
- void 0
137071
- ))), { leadingTriviaOption: ts_textChanges_exports.LeadingTriviaOption.Exclude, trailingTriviaOption: ts_textChanges_exports.TrailingTriviaOption.ExcludeWhitespace });
137127
+ if (isArray(selection)) {
137128
+ changes.replaceNodeRange(file, selection[0], selection[selection.length - 1], factory.createTypeReferenceNode(name, typeParameters.map((id) => factory.createTypeReferenceNode(
137129
+ id.name,
137130
+ /*typeArguments*/
137131
+ void 0
137132
+ ))), { leadingTriviaOption: ts_textChanges_exports.LeadingTriviaOption.Exclude, trailingTriviaOption: ts_textChanges_exports.TrailingTriviaOption.ExcludeWhitespace });
137133
+ } else {
137134
+ changes.replaceNode(file, selection, factory.createTypeReferenceNode(name, typeParameters.map((id) => factory.createTypeReferenceNode(
137135
+ id.name,
137136
+ /*typeArguments*/
137137
+ void 0
137138
+ ))), { leadingTriviaOption: ts_textChanges_exports.LeadingTriviaOption.Exclude, trailingTriviaOption: ts_textChanges_exports.TrailingTriviaOption.ExcludeWhitespace });
137139
+ }
137072
137140
  }
137073
137141
  function doTypedefChange(changes, context, file, name, info) {
137074
137142
  var _a;
137075
137143
  const { enclosingNode, selection, typeParameters } = info;
137076
- setEmitFlags(selection, 3072 /* NoComments */ | 4096 /* NoNestedComments */);
137144
+ let newTypeValue;
137145
+ if (isArray(selection)) {
137146
+ selection.forEach((typeNode) => {
137147
+ setEmitFlags(typeNode, 3072 /* NoComments */ | 4096 /* NoNestedComments */);
137148
+ });
137149
+ newTypeValue = isUnionTypeNode(selection[0].parent) ? factory.createUnionTypeNode(selection) : factory.createIntersectionTypeNode(selection);
137150
+ } else {
137151
+ setEmitFlags(selection, 3072 /* NoComments */ | 4096 /* NoNestedComments */);
137152
+ newTypeValue = selection;
137153
+ }
137077
137154
  const node = factory.createJSDocTypedefTag(
137078
137155
  factory.createIdentifier("typedef"),
137079
- factory.createJSDocTypeExpression(selection),
137156
+ factory.createJSDocTypeExpression(newTypeValue),
137080
137157
  factory.createIdentifier(name)
137081
137158
  );
137082
137159
  const templates = [];
@@ -137114,11 +137191,19 @@ ${lanes.join("\n")}
137114
137191
  true
137115
137192
  );
137116
137193
  }
137117
- changes.replaceNode(file, selection, factory.createTypeReferenceNode(name, typeParameters.map((id) => factory.createTypeReferenceNode(
137118
- id.name,
137119
- /*typeArguments*/
137120
- void 0
137121
- ))));
137194
+ if (isArray(selection)) {
137195
+ changes.replaceNodeRange(file, selection[0], selection[selection.length - 1], factory.createTypeReferenceNode(name, typeParameters.map((id) => factory.createTypeReferenceNode(
137196
+ id.name,
137197
+ /*typeArguments*/
137198
+ void 0
137199
+ ))));
137200
+ } else {
137201
+ changes.replaceNode(file, selection, factory.createTypeReferenceNode(name, typeParameters.map((id) => factory.createTypeReferenceNode(
137202
+ id.name,
137203
+ /*typeArguments*/
137204
+ void 0
137205
+ ))));
137206
+ }
137122
137207
  }
137123
137208
  function getEnclosingNode(node, isJS) {
137124
137209
  return findAncestor(node, isStatement) || (isJS ? findAncestor(node, isJSDoc) : void 0);
@@ -10593,9 +10593,9 @@ function ownsJSDocTag(hostNode, tag) {
10593
10593
  }
10594
10594
  function getNextJSDocCommentLocation(node) {
10595
10595
  const parent = node.parent;
10596
- if (parent.kind === 303 /* PropertyAssignment */ || parent.kind === 277 /* ExportAssignment */ || parent.kind === 172 /* PropertyDeclaration */ || parent.kind === 244 /* ExpressionStatement */ && node.kind === 211 /* PropertyAccessExpression */ || parent.kind === 253 /* ReturnStatement */ || getNestedModuleDeclaration(parent) || isBinaryExpression(node) && node.operatorToken.kind === 64 /* EqualsToken */) {
10596
+ if (parent.kind === 303 /* PropertyAssignment */ || parent.kind === 277 /* ExportAssignment */ || parent.kind === 172 /* PropertyDeclaration */ || parent.kind === 244 /* ExpressionStatement */ && node.kind === 211 /* PropertyAccessExpression */ || parent.kind === 253 /* ReturnStatement */ || getNestedModuleDeclaration(parent) || isAssignmentExpression(node)) {
10597
10597
  return parent;
10598
- } else if (parent.parent && (getSingleVariableOfVariableStatement(parent.parent) === node || isBinaryExpression(parent) && parent.operatorToken.kind === 64 /* EqualsToken */)) {
10598
+ } else if (parent.parent && (getSingleVariableOfVariableStatement(parent.parent) === node || isAssignmentExpression(parent))) {
10599
10599
  return parent.parent;
10600
10600
  } else if (parent.parent && parent.parent.parent && (getSingleVariableOfVariableStatement(parent.parent.parent) || getSingleInitializerOfVariableStatementOrPropertyDeclaration(parent.parent.parent) === node || getSourceOfDefaultedAssignment(parent.parent.parent))) {
10601
10601
  return parent.parent.parent;
@@ -26652,7 +26652,7 @@ var commandOptionsWithoutBuild = [
26652
26652
  affectsBuildInfo: true,
26653
26653
  affectsDeclarationPath: true,
26654
26654
  isFilePath: false,
26655
- // This is intentionally broken to support compatability with existing tsconfig files
26655
+ // This is intentionally broken to support compatibility with existing tsconfig files
26656
26656
  // for correct behaviour, please use outFile
26657
26657
  category: Diagnostics.Backwards_Compatibility,
26658
26658
  paramType: Diagnostics.FILE,
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@typescript-deploys/pr-build",
3
3
  "author": "Microsoft Corp.",
4
4
  "homepage": "https://www.typescriptlang.org/",
5
- "version": "5.3.0-pr-56123-2",
5
+ "version": "5.3.0-pr-56131-2",
6
6
  "license": "Apache-2.0",
7
7
  "description": "TypeScript is a language for application scale JavaScript development",
8
8
  "keywords": [
@@ -115,5 +115,5 @@
115
115
  "node": "20.1.0",
116
116
  "npm": "8.19.4"
117
117
  },
118
- "gitHead": "411465b5e0903fba0028e3d82720f4e76ee725c1"
118
+ "gitHead": "e200ac3a5a2ed19564bf2d945bff492fa5a9576f"
119
119
  }