typescript 5.2.0-dev.20230724 → 5.2.0-dev.20230725

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
@@ -18,7 +18,7 @@ and limitations under the License.
18
18
 
19
19
  // src/compiler/corePublic.ts
20
20
  var versionMajorMinor = "5.2";
21
- var version = `${versionMajorMinor}.0-dev.20230724`;
21
+ var version = `${versionMajorMinor}.0-dev.20230725`;
22
22
 
23
23
  // src/compiler/core.ts
24
24
  var emptyArray = [];
@@ -39242,6 +39242,9 @@ function getModuleInstanceStateForAliasTarget(specifier, visited) {
39242
39242
  if (found === 1 /* Instantiated */) {
39243
39243
  return found;
39244
39244
  }
39245
+ if (statement.kind === 271 /* ImportEqualsDeclaration */) {
39246
+ found = 1 /* Instantiated */;
39247
+ }
39245
39248
  }
39246
39249
  }
39247
39250
  if (found !== void 0) {
@@ -46187,7 +46190,7 @@ function createTypeChecker(host) {
46187
46190
  return isStringLiteralLike(moduleReferenceExpression) ? resolveExternalModule(location, moduleReferenceExpression.text, moduleNotFoundError, moduleReferenceExpression, isForAugmentation) : void 0;
46188
46191
  }
46189
46192
  function resolveExternalModule(location, moduleReference, moduleNotFoundError, errorNode, isForAugmentation = false) {
46190
- var _a, _b, _c, _d, _e, _f, _g, _h, _i;
46193
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
46191
46194
  if (startsWith(moduleReference, "@types/")) {
46192
46195
  const diag2 = Diagnostics.Cannot_import_type_declaration_files_Consider_importing_0_instead_of_1;
46193
46196
  const withoutAtTypePrefix = removePrefix(moduleReference, "@types/");
@@ -46222,8 +46225,11 @@ function createTypeChecker(host) {
46222
46225
  );
46223
46226
  }
46224
46227
  } else if (resolvedModule.resolvedUsingTsExtension && !shouldAllowImportingTsExtension(compilerOptions, currentSourceFile.fileName)) {
46225
- const tsExtension = Debug.checkDefined(tryExtractTSExtension(moduleReference));
46226
- error(errorNode, Diagnostics.An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled, tsExtension);
46228
+ const importOrExport = ((_h = findAncestor(location, isImportDeclaration)) == null ? void 0 : _h.importClause) || findAncestor(location, or(isImportEqualsDeclaration, isExportDeclaration));
46229
+ if (!((importOrExport == null ? void 0 : importOrExport.isTypeOnly) || findAncestor(location, isImportTypeNode))) {
46230
+ const tsExtension = Debug.checkDefined(tryExtractTSExtension(moduleReference));
46231
+ error(errorNode, Diagnostics.An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled, tsExtension);
46232
+ }
46227
46233
  }
46228
46234
  if (sourceFile.symbol) {
46229
46235
  if (resolvedModule.isExternalLibraryImport && !resolutionExtensionIsTSOrJson(resolvedModule.extension)) {
@@ -46240,7 +46246,7 @@ function createTypeChecker(host) {
46240
46246
  if (moduleResolutionKind === 3 /* Node16 */ || moduleResolutionKind === 99 /* NodeNext */) {
46241
46247
  const isSyncImport = currentSourceFile.impliedNodeFormat === 1 /* CommonJS */ && !findAncestor(location, isImportCall) || !!findAncestor(location, isImportEqualsDeclaration);
46242
46248
  const overrideClauseHost = findAncestor(location, (l) => isImportTypeNode(l) || isExportDeclaration(l) || isImportDeclaration(l));
46243
- const overrideClause = overrideClauseHost && isImportTypeNode(overrideClauseHost) ? (_h = overrideClauseHost.assertions) == null ? void 0 : _h.assertClause : overrideClauseHost == null ? void 0 : overrideClauseHost.assertClause;
46249
+ const overrideClause = overrideClauseHost && isImportTypeNode(overrideClauseHost) ? (_i = overrideClauseHost.assertions) == null ? void 0 : _i.assertClause : overrideClauseHost == null ? void 0 : overrideClauseHost.assertClause;
46244
46250
  if (isSyncImport && sourceFile.impliedNodeFormat === 99 /* ESNext */ && !getResolutionModeOverrideForClause(overrideClause)) {
46245
46251
  if (findAncestor(location, isImportEqualsDeclaration)) {
46246
46252
  error(errorNode, Diagnostics.Module_0_cannot_be_imported_using_this_construct_The_specifier_only_resolves_to_an_ES_module_which_cannot_be_imported_with_require_Use_an_ECMAScript_import_instead, moduleReference);
@@ -46343,7 +46349,7 @@ function createTypeChecker(host) {
46343
46349
  error(errorNode, Diagnostics.Cannot_find_module_0_Consider_using_resolveJsonModule_to_import_module_with_json_extension, moduleReference);
46344
46350
  } else if (mode === 99 /* ESNext */ && resolutionIsNode16OrNext && isExtensionlessRelativePathImport) {
46345
46351
  const absoluteRef = getNormalizedAbsolutePath(moduleReference, getDirectoryPath(currentSourceFile.path));
46346
- const suggestedExt = (_i = suggestedExtensions.find(([actualExt, _importExt]) => host.fileExists(absoluteRef + actualExt))) == null ? void 0 : _i[1];
46352
+ const suggestedExt = (_j = suggestedExtensions.find(([actualExt, _importExt]) => host.fileExists(absoluteRef + actualExt))) == null ? void 0 : _j[1];
46347
46353
  if (suggestedExt) {
46348
46354
  error(
46349
46355
  errorNode,
@@ -47779,11 +47785,13 @@ function createTypeChecker(host) {
47779
47785
  return !!type2.target && isMappedTypeHomomorphic(type2.target) && !isMappedTypeHomomorphic(type2);
47780
47786
  }
47781
47787
  function createMappedTypeNodeFromType(type2) {
47788
+ var _a2;
47782
47789
  Debug.assert(!!(type2.flags & 524288 /* Object */));
47783
47790
  const readonlyToken = type2.declaration.readonlyToken ? factory.createToken(type2.declaration.readonlyToken.kind) : void 0;
47784
47791
  const questionToken = type2.declaration.questionToken ? factory.createToken(type2.declaration.questionToken.kind) : void 0;
47785
47792
  let appropriateConstraintTypeNode;
47786
47793
  let newTypeVariable;
47794
+ const needsModifierPreservingWrapper = !isMappedTypeWithKeyofConstraintDeclaration(type2) && !(getModifiersTypeFromMappedType(type2).flags & 2 /* Unknown */) && context.flags & 4 /* GenerateNamesForShadowedTypeParams */ && !(getConstraintTypeFromMappedType(type2).flags & 262144 /* TypeParameter */ && ((_a2 = getConstraintOfTypeParameter(getConstraintTypeFromMappedType(type2))) == null ? void 0 : _a2.flags) & 4194304 /* Index */);
47787
47795
  if (isMappedTypeWithKeyofConstraintDeclaration(type2)) {
47788
47796
  if (isHomomorphicMappedTypeWithNonHomomorphicInstantiation(type2) && context.flags & 4 /* GenerateNamesForShadowedTypeParams */) {
47789
47797
  const newParam = createTypeParameter(createSymbol(262144 /* TypeParameter */, "T"));
@@ -47791,6 +47799,11 @@ function createTypeChecker(host) {
47791
47799
  newTypeVariable = factory.createTypeReferenceNode(name);
47792
47800
  }
47793
47801
  appropriateConstraintTypeNode = factory.createTypeOperatorNode(143 /* KeyOfKeyword */, newTypeVariable || typeToTypeNodeHelper(getModifiersTypeFromMappedType(type2), context));
47802
+ } else if (needsModifierPreservingWrapper) {
47803
+ const newParam = createTypeParameter(createSymbol(262144 /* TypeParameter */, "T"));
47804
+ const name = typeParameterToName(newParam, context);
47805
+ newTypeVariable = factory.createTypeReferenceNode(name);
47806
+ appropriateConstraintTypeNode = newTypeVariable;
47794
47807
  } else {
47795
47808
  appropriateConstraintTypeNode = typeToTypeNodeHelper(getConstraintTypeFromMappedType(type2), context);
47796
47809
  }
@@ -47821,6 +47834,18 @@ function createTypeChecker(host) {
47821
47834
  result,
47822
47835
  factory.createKeywordTypeNode(146 /* NeverKeyword */)
47823
47836
  );
47837
+ } else if (needsModifierPreservingWrapper) {
47838
+ return factory.createConditionalTypeNode(
47839
+ typeToTypeNodeHelper(getConstraintTypeFromMappedType(type2), context),
47840
+ factory.createInferTypeNode(factory.createTypeParameterDeclaration(
47841
+ /*modifiers*/
47842
+ void 0,
47843
+ factory.cloneNode(newTypeVariable.typeName),
47844
+ factory.createTypeOperatorNode(143 /* KeyOfKeyword */, typeToTypeNodeHelper(getModifiersTypeFromMappedType(type2), context))
47845
+ )),
47846
+ result,
47847
+ factory.createKeywordTypeNode(146 /* NeverKeyword */)
47848
+ );
47824
47849
  }
47825
47850
  return result;
47826
47851
  }
@@ -122048,7 +122073,6 @@ function createWatchProgram(host) {
122048
122073
  if (hasChangedCompilerOptions) {
122049
122074
  newLine = updateNewLine();
122050
122075
  if (program && changesAffectModuleResolution(program.getCompilerOptions(), compilerOptions)) {
122051
- debugger;
122052
122076
  resolutionCache.onChangesAffectModuleResolution();
122053
122077
  }
122054
122078
  }
package/lib/tsserver.js CHANGED
@@ -2329,7 +2329,7 @@ module.exports = __toCommonJS(server_exports);
2329
2329
 
2330
2330
  // src/compiler/corePublic.ts
2331
2331
  var versionMajorMinor = "5.2";
2332
- var version = `${versionMajorMinor}.0-dev.20230724`;
2332
+ var version = `${versionMajorMinor}.0-dev.20230725`;
2333
2333
  var Comparison = /* @__PURE__ */ ((Comparison3) => {
2334
2334
  Comparison3[Comparison3["LessThan"] = -1] = "LessThan";
2335
2335
  Comparison3[Comparison3["EqualTo"] = 0] = "EqualTo";
@@ -43891,6 +43891,9 @@ function getModuleInstanceStateForAliasTarget(specifier, visited) {
43891
43891
  if (found === 1 /* Instantiated */) {
43892
43892
  return found;
43893
43893
  }
43894
+ if (statement.kind === 271 /* ImportEqualsDeclaration */) {
43895
+ found = 1 /* Instantiated */;
43896
+ }
43894
43897
  }
43895
43898
  }
43896
43899
  if (found !== void 0) {
@@ -50896,7 +50899,7 @@ function createTypeChecker(host) {
50896
50899
  return isStringLiteralLike(moduleReferenceExpression) ? resolveExternalModule(location, moduleReferenceExpression.text, moduleNotFoundError, moduleReferenceExpression, isForAugmentation) : void 0;
50897
50900
  }
50898
50901
  function resolveExternalModule(location, moduleReference, moduleNotFoundError, errorNode, isForAugmentation = false) {
50899
- var _a, _b, _c, _d, _e, _f, _g, _h, _i;
50902
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
50900
50903
  if (startsWith(moduleReference, "@types/")) {
50901
50904
  const diag2 = Diagnostics.Cannot_import_type_declaration_files_Consider_importing_0_instead_of_1;
50902
50905
  const withoutAtTypePrefix = removePrefix(moduleReference, "@types/");
@@ -50931,8 +50934,11 @@ function createTypeChecker(host) {
50931
50934
  );
50932
50935
  }
50933
50936
  } else if (resolvedModule.resolvedUsingTsExtension && !shouldAllowImportingTsExtension(compilerOptions, currentSourceFile.fileName)) {
50934
- const tsExtension = Debug.checkDefined(tryExtractTSExtension(moduleReference));
50935
- error2(errorNode, Diagnostics.An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled, tsExtension);
50937
+ const importOrExport = ((_h = findAncestor(location, isImportDeclaration)) == null ? void 0 : _h.importClause) || findAncestor(location, or(isImportEqualsDeclaration, isExportDeclaration));
50938
+ if (!((importOrExport == null ? void 0 : importOrExport.isTypeOnly) || findAncestor(location, isImportTypeNode))) {
50939
+ const tsExtension = Debug.checkDefined(tryExtractTSExtension(moduleReference));
50940
+ error2(errorNode, Diagnostics.An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled, tsExtension);
50941
+ }
50936
50942
  }
50937
50943
  if (sourceFile.symbol) {
50938
50944
  if (resolvedModule.isExternalLibraryImport && !resolutionExtensionIsTSOrJson(resolvedModule.extension)) {
@@ -50949,7 +50955,7 @@ function createTypeChecker(host) {
50949
50955
  if (moduleResolutionKind === 3 /* Node16 */ || moduleResolutionKind === 99 /* NodeNext */) {
50950
50956
  const isSyncImport = currentSourceFile.impliedNodeFormat === 1 /* CommonJS */ && !findAncestor(location, isImportCall) || !!findAncestor(location, isImportEqualsDeclaration);
50951
50957
  const overrideClauseHost = findAncestor(location, (l) => isImportTypeNode(l) || isExportDeclaration(l) || isImportDeclaration(l));
50952
- const overrideClause = overrideClauseHost && isImportTypeNode(overrideClauseHost) ? (_h = overrideClauseHost.assertions) == null ? void 0 : _h.assertClause : overrideClauseHost == null ? void 0 : overrideClauseHost.assertClause;
50958
+ const overrideClause = overrideClauseHost && isImportTypeNode(overrideClauseHost) ? (_i = overrideClauseHost.assertions) == null ? void 0 : _i.assertClause : overrideClauseHost == null ? void 0 : overrideClauseHost.assertClause;
50953
50959
  if (isSyncImport && sourceFile.impliedNodeFormat === 99 /* ESNext */ && !getResolutionModeOverrideForClause(overrideClause)) {
50954
50960
  if (findAncestor(location, isImportEqualsDeclaration)) {
50955
50961
  error2(errorNode, Diagnostics.Module_0_cannot_be_imported_using_this_construct_The_specifier_only_resolves_to_an_ES_module_which_cannot_be_imported_with_require_Use_an_ECMAScript_import_instead, moduleReference);
@@ -51052,7 +51058,7 @@ function createTypeChecker(host) {
51052
51058
  error2(errorNode, Diagnostics.Cannot_find_module_0_Consider_using_resolveJsonModule_to_import_module_with_json_extension, moduleReference);
51053
51059
  } else if (mode === 99 /* ESNext */ && resolutionIsNode16OrNext && isExtensionlessRelativePathImport) {
51054
51060
  const absoluteRef = getNormalizedAbsolutePath(moduleReference, getDirectoryPath(currentSourceFile.path));
51055
- const suggestedExt = (_i = suggestedExtensions.find(([actualExt, _importExt]) => host.fileExists(absoluteRef + actualExt))) == null ? void 0 : _i[1];
51061
+ const suggestedExt = (_j = suggestedExtensions.find(([actualExt, _importExt]) => host.fileExists(absoluteRef + actualExt))) == null ? void 0 : _j[1];
51056
51062
  if (suggestedExt) {
51057
51063
  error2(
51058
51064
  errorNode,
@@ -52488,11 +52494,13 @@ function createTypeChecker(host) {
52488
52494
  return !!type2.target && isMappedTypeHomomorphic(type2.target) && !isMappedTypeHomomorphic(type2);
52489
52495
  }
52490
52496
  function createMappedTypeNodeFromType(type2) {
52497
+ var _a2;
52491
52498
  Debug.assert(!!(type2.flags & 524288 /* Object */));
52492
52499
  const readonlyToken = type2.declaration.readonlyToken ? factory.createToken(type2.declaration.readonlyToken.kind) : void 0;
52493
52500
  const questionToken = type2.declaration.questionToken ? factory.createToken(type2.declaration.questionToken.kind) : void 0;
52494
52501
  let appropriateConstraintTypeNode;
52495
52502
  let newTypeVariable;
52503
+ const needsModifierPreservingWrapper = !isMappedTypeWithKeyofConstraintDeclaration(type2) && !(getModifiersTypeFromMappedType(type2).flags & 2 /* Unknown */) && context.flags & 4 /* GenerateNamesForShadowedTypeParams */ && !(getConstraintTypeFromMappedType(type2).flags & 262144 /* TypeParameter */ && ((_a2 = getConstraintOfTypeParameter(getConstraintTypeFromMappedType(type2))) == null ? void 0 : _a2.flags) & 4194304 /* Index */);
52496
52504
  if (isMappedTypeWithKeyofConstraintDeclaration(type2)) {
52497
52505
  if (isHomomorphicMappedTypeWithNonHomomorphicInstantiation(type2) && context.flags & 4 /* GenerateNamesForShadowedTypeParams */) {
52498
52506
  const newParam = createTypeParameter(createSymbol(262144 /* TypeParameter */, "T"));
@@ -52500,6 +52508,11 @@ function createTypeChecker(host) {
52500
52508
  newTypeVariable = factory.createTypeReferenceNode(name);
52501
52509
  }
52502
52510
  appropriateConstraintTypeNode = factory.createTypeOperatorNode(143 /* KeyOfKeyword */, newTypeVariable || typeToTypeNodeHelper(getModifiersTypeFromMappedType(type2), context));
52511
+ } else if (needsModifierPreservingWrapper) {
52512
+ const newParam = createTypeParameter(createSymbol(262144 /* TypeParameter */, "T"));
52513
+ const name = typeParameterToName(newParam, context);
52514
+ newTypeVariable = factory.createTypeReferenceNode(name);
52515
+ appropriateConstraintTypeNode = newTypeVariable;
52503
52516
  } else {
52504
52517
  appropriateConstraintTypeNode = typeToTypeNodeHelper(getConstraintTypeFromMappedType(type2), context);
52505
52518
  }
@@ -52530,6 +52543,18 @@ function createTypeChecker(host) {
52530
52543
  result,
52531
52544
  factory.createKeywordTypeNode(146 /* NeverKeyword */)
52532
52545
  );
52546
+ } else if (needsModifierPreservingWrapper) {
52547
+ return factory.createConditionalTypeNode(
52548
+ typeToTypeNodeHelper(getConstraintTypeFromMappedType(type2), context),
52549
+ factory.createInferTypeNode(factory.createTypeParameterDeclaration(
52550
+ /*modifiers*/
52551
+ void 0,
52552
+ factory.cloneNode(newTypeVariable.typeName),
52553
+ factory.createTypeOperatorNode(143 /* KeyOfKeyword */, typeToTypeNodeHelper(getModifiersTypeFromMappedType(type2), context))
52554
+ )),
52555
+ result,
52556
+ factory.createKeywordTypeNode(146 /* NeverKeyword */)
52557
+ );
52533
52558
  }
52534
52559
  return result;
52535
52560
  }
@@ -127053,7 +127078,6 @@ function createWatchProgram(host) {
127053
127078
  if (hasChangedCompilerOptions) {
127054
127079
  newLine = updateNewLine();
127055
127080
  if (program && changesAffectModuleResolution(program.getCompilerOptions(), compilerOptions)) {
127056
- debugger;
127057
127081
  resolutionCache.onChangesAffectModuleResolution();
127058
127082
  }
127059
127083
  }
@@ -150891,6 +150915,14 @@ function promoteFromTypeOnly(changes, aliasDeclaration, compilerOptions, sourceF
150891
150915
  }
150892
150916
  function promoteImportClause(importClause) {
150893
150917
  changes.delete(sourceFile, getTypeKeywordOfTypeOnlyImport(importClause, sourceFile));
150918
+ if (!compilerOptions.allowImportingTsExtensions) {
150919
+ const moduleSpecifier = tryGetModuleSpecifierFromDeclaration(importClause.parent);
150920
+ const resolvedModule = moduleSpecifier && getResolvedModule(sourceFile, moduleSpecifier.text, getModeForUsageLocation(sourceFile, moduleSpecifier));
150921
+ if (resolvedModule == null ? void 0 : resolvedModule.resolvedUsingTsExtension) {
150922
+ const changedExtension = changeAnyExtension(moduleSpecifier.text, getOutputExtension(moduleSpecifier.text, compilerOptions));
150923
+ changes.replaceNode(sourceFile, moduleSpecifier, factory.createStringLiteral(changedExtension));
150924
+ }
150925
+ }
150894
150926
  if (convertExistingToTypeOnly) {
150895
150927
  const namedImports = tryCast(importClause.namedBindings, isNamedImports);
150896
150928
  if (namedImports && namedImports.elements.length > 1) {
@@ -35,7 +35,7 @@ var ts = (() => {
35
35
  "src/compiler/corePublic.ts"() {
36
36
  "use strict";
37
37
  versionMajorMinor = "5.2";
38
- version = `${versionMajorMinor}.0-dev.20230724`;
38
+ version = `${versionMajorMinor}.0-dev.20230725`;
39
39
  Comparison = /* @__PURE__ */ ((Comparison3) => {
40
40
  Comparison3[Comparison3["LessThan"] = -1] = "LessThan";
41
41
  Comparison3[Comparison3["EqualTo"] = 0] = "EqualTo";
@@ -41750,6 +41750,9 @@ ${lanes.join("\n")}
41750
41750
  if (found === 1 /* Instantiated */) {
41751
41751
  return found;
41752
41752
  }
41753
+ if (statement.kind === 271 /* ImportEqualsDeclaration */) {
41754
+ found = 1 /* Instantiated */;
41755
+ }
41753
41756
  }
41754
41757
  }
41755
41758
  if (found !== void 0) {
@@ -48661,7 +48664,7 @@ ${lanes.join("\n")}
48661
48664
  return isStringLiteralLike(moduleReferenceExpression) ? resolveExternalModule(location, moduleReferenceExpression.text, moduleNotFoundError, moduleReferenceExpression, isForAugmentation) : void 0;
48662
48665
  }
48663
48666
  function resolveExternalModule(location, moduleReference, moduleNotFoundError, errorNode, isForAugmentation = false) {
48664
- var _a, _b, _c, _d, _e, _f, _g, _h, _i;
48667
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
48665
48668
  if (startsWith(moduleReference, "@types/")) {
48666
48669
  const diag2 = Diagnostics.Cannot_import_type_declaration_files_Consider_importing_0_instead_of_1;
48667
48670
  const withoutAtTypePrefix = removePrefix(moduleReference, "@types/");
@@ -48696,8 +48699,11 @@ ${lanes.join("\n")}
48696
48699
  );
48697
48700
  }
48698
48701
  } else if (resolvedModule.resolvedUsingTsExtension && !shouldAllowImportingTsExtension(compilerOptions, currentSourceFile.fileName)) {
48699
- const tsExtension = Debug.checkDefined(tryExtractTSExtension(moduleReference));
48700
- error2(errorNode, Diagnostics.An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled, tsExtension);
48702
+ const importOrExport = ((_h = findAncestor(location, isImportDeclaration)) == null ? void 0 : _h.importClause) || findAncestor(location, or(isImportEqualsDeclaration, isExportDeclaration));
48703
+ if (!((importOrExport == null ? void 0 : importOrExport.isTypeOnly) || findAncestor(location, isImportTypeNode))) {
48704
+ const tsExtension = Debug.checkDefined(tryExtractTSExtension(moduleReference));
48705
+ error2(errorNode, Diagnostics.An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled, tsExtension);
48706
+ }
48701
48707
  }
48702
48708
  if (sourceFile.symbol) {
48703
48709
  if (resolvedModule.isExternalLibraryImport && !resolutionExtensionIsTSOrJson(resolvedModule.extension)) {
@@ -48714,7 +48720,7 @@ ${lanes.join("\n")}
48714
48720
  if (moduleResolutionKind === 3 /* Node16 */ || moduleResolutionKind === 99 /* NodeNext */) {
48715
48721
  const isSyncImport = currentSourceFile.impliedNodeFormat === 1 /* CommonJS */ && !findAncestor(location, isImportCall) || !!findAncestor(location, isImportEqualsDeclaration);
48716
48722
  const overrideClauseHost = findAncestor(location, (l) => isImportTypeNode(l) || isExportDeclaration(l) || isImportDeclaration(l));
48717
- const overrideClause = overrideClauseHost && isImportTypeNode(overrideClauseHost) ? (_h = overrideClauseHost.assertions) == null ? void 0 : _h.assertClause : overrideClauseHost == null ? void 0 : overrideClauseHost.assertClause;
48723
+ const overrideClause = overrideClauseHost && isImportTypeNode(overrideClauseHost) ? (_i = overrideClauseHost.assertions) == null ? void 0 : _i.assertClause : overrideClauseHost == null ? void 0 : overrideClauseHost.assertClause;
48718
48724
  if (isSyncImport && sourceFile.impliedNodeFormat === 99 /* ESNext */ && !getResolutionModeOverrideForClause(overrideClause)) {
48719
48725
  if (findAncestor(location, isImportEqualsDeclaration)) {
48720
48726
  error2(errorNode, Diagnostics.Module_0_cannot_be_imported_using_this_construct_The_specifier_only_resolves_to_an_ES_module_which_cannot_be_imported_with_require_Use_an_ECMAScript_import_instead, moduleReference);
@@ -48817,7 +48823,7 @@ ${lanes.join("\n")}
48817
48823
  error2(errorNode, Diagnostics.Cannot_find_module_0_Consider_using_resolveJsonModule_to_import_module_with_json_extension, moduleReference);
48818
48824
  } else if (mode === 99 /* ESNext */ && resolutionIsNode16OrNext && isExtensionlessRelativePathImport) {
48819
48825
  const absoluteRef = getNormalizedAbsolutePath(moduleReference, getDirectoryPath(currentSourceFile.path));
48820
- const suggestedExt = (_i = suggestedExtensions.find(([actualExt, _importExt]) => host.fileExists(absoluteRef + actualExt))) == null ? void 0 : _i[1];
48826
+ const suggestedExt = (_j = suggestedExtensions.find(([actualExt, _importExt]) => host.fileExists(absoluteRef + actualExt))) == null ? void 0 : _j[1];
48821
48827
  if (suggestedExt) {
48822
48828
  error2(
48823
48829
  errorNode,
@@ -50253,11 +50259,13 @@ ${lanes.join("\n")}
50253
50259
  return !!type2.target && isMappedTypeHomomorphic(type2.target) && !isMappedTypeHomomorphic(type2);
50254
50260
  }
50255
50261
  function createMappedTypeNodeFromType(type2) {
50262
+ var _a2;
50256
50263
  Debug.assert(!!(type2.flags & 524288 /* Object */));
50257
50264
  const readonlyToken = type2.declaration.readonlyToken ? factory.createToken(type2.declaration.readonlyToken.kind) : void 0;
50258
50265
  const questionToken = type2.declaration.questionToken ? factory.createToken(type2.declaration.questionToken.kind) : void 0;
50259
50266
  let appropriateConstraintTypeNode;
50260
50267
  let newTypeVariable;
50268
+ const needsModifierPreservingWrapper = !isMappedTypeWithKeyofConstraintDeclaration(type2) && !(getModifiersTypeFromMappedType(type2).flags & 2 /* Unknown */) && context.flags & 4 /* GenerateNamesForShadowedTypeParams */ && !(getConstraintTypeFromMappedType(type2).flags & 262144 /* TypeParameter */ && ((_a2 = getConstraintOfTypeParameter(getConstraintTypeFromMappedType(type2))) == null ? void 0 : _a2.flags) & 4194304 /* Index */);
50261
50269
  if (isMappedTypeWithKeyofConstraintDeclaration(type2)) {
50262
50270
  if (isHomomorphicMappedTypeWithNonHomomorphicInstantiation(type2) && context.flags & 4 /* GenerateNamesForShadowedTypeParams */) {
50263
50271
  const newParam = createTypeParameter(createSymbol(262144 /* TypeParameter */, "T"));
@@ -50265,6 +50273,11 @@ ${lanes.join("\n")}
50265
50273
  newTypeVariable = factory.createTypeReferenceNode(name);
50266
50274
  }
50267
50275
  appropriateConstraintTypeNode = factory.createTypeOperatorNode(143 /* KeyOfKeyword */, newTypeVariable || typeToTypeNodeHelper(getModifiersTypeFromMappedType(type2), context));
50276
+ } else if (needsModifierPreservingWrapper) {
50277
+ const newParam = createTypeParameter(createSymbol(262144 /* TypeParameter */, "T"));
50278
+ const name = typeParameterToName(newParam, context);
50279
+ newTypeVariable = factory.createTypeReferenceNode(name);
50280
+ appropriateConstraintTypeNode = newTypeVariable;
50268
50281
  } else {
50269
50282
  appropriateConstraintTypeNode = typeToTypeNodeHelper(getConstraintTypeFromMappedType(type2), context);
50270
50283
  }
@@ -50295,6 +50308,18 @@ ${lanes.join("\n")}
50295
50308
  result,
50296
50309
  factory.createKeywordTypeNode(146 /* NeverKeyword */)
50297
50310
  );
50311
+ } else if (needsModifierPreservingWrapper) {
50312
+ return factory.createConditionalTypeNode(
50313
+ typeToTypeNodeHelper(getConstraintTypeFromMappedType(type2), context),
50314
+ factory.createInferTypeNode(factory.createTypeParameterDeclaration(
50315
+ /*modifiers*/
50316
+ void 0,
50317
+ factory.cloneNode(newTypeVariable.typeName),
50318
+ factory.createTypeOperatorNode(143 /* KeyOfKeyword */, typeToTypeNodeHelper(getModifiersTypeFromMappedType(type2), context))
50319
+ )),
50320
+ result,
50321
+ factory.createKeywordTypeNode(146 /* NeverKeyword */)
50322
+ );
50298
50323
  }
50299
50324
  return result;
50300
50325
  }
@@ -125208,7 +125233,6 @@ ${lanes.join("\n")}
125208
125233
  if (hasChangedCompilerOptions) {
125209
125234
  newLine = updateNewLine();
125210
125235
  if (program && changesAffectModuleResolution(program.getCompilerOptions(), compilerOptions)) {
125211
- debugger;
125212
125236
  resolutionCache.onChangesAffectModuleResolution();
125213
125237
  }
125214
125238
  }
@@ -149619,6 +149643,14 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")}
149619
149643
  }
149620
149644
  function promoteImportClause(importClause) {
149621
149645
  changes.delete(sourceFile, getTypeKeywordOfTypeOnlyImport(importClause, sourceFile));
149646
+ if (!compilerOptions.allowImportingTsExtensions) {
149647
+ const moduleSpecifier = tryGetModuleSpecifierFromDeclaration(importClause.parent);
149648
+ const resolvedModule = moduleSpecifier && getResolvedModule(sourceFile, moduleSpecifier.text, getModeForUsageLocation(sourceFile, moduleSpecifier));
149649
+ if (resolvedModule == null ? void 0 : resolvedModule.resolvedUsingTsExtension) {
149650
+ const changedExtension = changeAnyExtension(moduleSpecifier.text, getOutputExtension(moduleSpecifier.text, compilerOptions));
149651
+ changes.replaceNode(sourceFile, moduleSpecifier, factory.createStringLiteral(changedExtension));
149652
+ }
149653
+ }
149622
149654
  if (convertExistingToTypeOnly) {
149623
149655
  const namedImports = tryCast(importClause.namedBindings, isNamedImports);
149624
149656
  if (namedImports && namedImports.elements.length > 1) {
package/lib/typescript.js CHANGED
@@ -35,7 +35,7 @@ var ts = (() => {
35
35
  "src/compiler/corePublic.ts"() {
36
36
  "use strict";
37
37
  versionMajorMinor = "5.2";
38
- version = `${versionMajorMinor}.0-dev.20230724`;
38
+ version = `${versionMajorMinor}.0-dev.20230725`;
39
39
  Comparison = /* @__PURE__ */ ((Comparison3) => {
40
40
  Comparison3[Comparison3["LessThan"] = -1] = "LessThan";
41
41
  Comparison3[Comparison3["EqualTo"] = 0] = "EqualTo";
@@ -41750,6 +41750,9 @@ ${lanes.join("\n")}
41750
41750
  if (found === 1 /* Instantiated */) {
41751
41751
  return found;
41752
41752
  }
41753
+ if (statement.kind === 271 /* ImportEqualsDeclaration */) {
41754
+ found = 1 /* Instantiated */;
41755
+ }
41753
41756
  }
41754
41757
  }
41755
41758
  if (found !== void 0) {
@@ -48661,7 +48664,7 @@ ${lanes.join("\n")}
48661
48664
  return isStringLiteralLike(moduleReferenceExpression) ? resolveExternalModule(location, moduleReferenceExpression.text, moduleNotFoundError, moduleReferenceExpression, isForAugmentation) : void 0;
48662
48665
  }
48663
48666
  function resolveExternalModule(location, moduleReference, moduleNotFoundError, errorNode, isForAugmentation = false) {
48664
- var _a, _b, _c, _d, _e, _f, _g, _h, _i;
48667
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
48665
48668
  if (startsWith(moduleReference, "@types/")) {
48666
48669
  const diag2 = Diagnostics.Cannot_import_type_declaration_files_Consider_importing_0_instead_of_1;
48667
48670
  const withoutAtTypePrefix = removePrefix(moduleReference, "@types/");
@@ -48696,8 +48699,11 @@ ${lanes.join("\n")}
48696
48699
  );
48697
48700
  }
48698
48701
  } else if (resolvedModule.resolvedUsingTsExtension && !shouldAllowImportingTsExtension(compilerOptions, currentSourceFile.fileName)) {
48699
- const tsExtension = Debug.checkDefined(tryExtractTSExtension(moduleReference));
48700
- error2(errorNode, Diagnostics.An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled, tsExtension);
48702
+ const importOrExport = ((_h = findAncestor(location, isImportDeclaration)) == null ? void 0 : _h.importClause) || findAncestor(location, or(isImportEqualsDeclaration, isExportDeclaration));
48703
+ if (!((importOrExport == null ? void 0 : importOrExport.isTypeOnly) || findAncestor(location, isImportTypeNode))) {
48704
+ const tsExtension = Debug.checkDefined(tryExtractTSExtension(moduleReference));
48705
+ error2(errorNode, Diagnostics.An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled, tsExtension);
48706
+ }
48701
48707
  }
48702
48708
  if (sourceFile.symbol) {
48703
48709
  if (resolvedModule.isExternalLibraryImport && !resolutionExtensionIsTSOrJson(resolvedModule.extension)) {
@@ -48714,7 +48720,7 @@ ${lanes.join("\n")}
48714
48720
  if (moduleResolutionKind === 3 /* Node16 */ || moduleResolutionKind === 99 /* NodeNext */) {
48715
48721
  const isSyncImport = currentSourceFile.impliedNodeFormat === 1 /* CommonJS */ && !findAncestor(location, isImportCall) || !!findAncestor(location, isImportEqualsDeclaration);
48716
48722
  const overrideClauseHost = findAncestor(location, (l) => isImportTypeNode(l) || isExportDeclaration(l) || isImportDeclaration(l));
48717
- const overrideClause = overrideClauseHost && isImportTypeNode(overrideClauseHost) ? (_h = overrideClauseHost.assertions) == null ? void 0 : _h.assertClause : overrideClauseHost == null ? void 0 : overrideClauseHost.assertClause;
48723
+ const overrideClause = overrideClauseHost && isImportTypeNode(overrideClauseHost) ? (_i = overrideClauseHost.assertions) == null ? void 0 : _i.assertClause : overrideClauseHost == null ? void 0 : overrideClauseHost.assertClause;
48718
48724
  if (isSyncImport && sourceFile.impliedNodeFormat === 99 /* ESNext */ && !getResolutionModeOverrideForClause(overrideClause)) {
48719
48725
  if (findAncestor(location, isImportEqualsDeclaration)) {
48720
48726
  error2(errorNode, Diagnostics.Module_0_cannot_be_imported_using_this_construct_The_specifier_only_resolves_to_an_ES_module_which_cannot_be_imported_with_require_Use_an_ECMAScript_import_instead, moduleReference);
@@ -48817,7 +48823,7 @@ ${lanes.join("\n")}
48817
48823
  error2(errorNode, Diagnostics.Cannot_find_module_0_Consider_using_resolveJsonModule_to_import_module_with_json_extension, moduleReference);
48818
48824
  } else if (mode === 99 /* ESNext */ && resolutionIsNode16OrNext && isExtensionlessRelativePathImport) {
48819
48825
  const absoluteRef = getNormalizedAbsolutePath(moduleReference, getDirectoryPath(currentSourceFile.path));
48820
- const suggestedExt = (_i = suggestedExtensions.find(([actualExt, _importExt]) => host.fileExists(absoluteRef + actualExt))) == null ? void 0 : _i[1];
48826
+ const suggestedExt = (_j = suggestedExtensions.find(([actualExt, _importExt]) => host.fileExists(absoluteRef + actualExt))) == null ? void 0 : _j[1];
48821
48827
  if (suggestedExt) {
48822
48828
  error2(
48823
48829
  errorNode,
@@ -50253,11 +50259,13 @@ ${lanes.join("\n")}
50253
50259
  return !!type2.target && isMappedTypeHomomorphic(type2.target) && !isMappedTypeHomomorphic(type2);
50254
50260
  }
50255
50261
  function createMappedTypeNodeFromType(type2) {
50262
+ var _a2;
50256
50263
  Debug.assert(!!(type2.flags & 524288 /* Object */));
50257
50264
  const readonlyToken = type2.declaration.readonlyToken ? factory.createToken(type2.declaration.readonlyToken.kind) : void 0;
50258
50265
  const questionToken = type2.declaration.questionToken ? factory.createToken(type2.declaration.questionToken.kind) : void 0;
50259
50266
  let appropriateConstraintTypeNode;
50260
50267
  let newTypeVariable;
50268
+ const needsModifierPreservingWrapper = !isMappedTypeWithKeyofConstraintDeclaration(type2) && !(getModifiersTypeFromMappedType(type2).flags & 2 /* Unknown */) && context.flags & 4 /* GenerateNamesForShadowedTypeParams */ && !(getConstraintTypeFromMappedType(type2).flags & 262144 /* TypeParameter */ && ((_a2 = getConstraintOfTypeParameter(getConstraintTypeFromMappedType(type2))) == null ? void 0 : _a2.flags) & 4194304 /* Index */);
50261
50269
  if (isMappedTypeWithKeyofConstraintDeclaration(type2)) {
50262
50270
  if (isHomomorphicMappedTypeWithNonHomomorphicInstantiation(type2) && context.flags & 4 /* GenerateNamesForShadowedTypeParams */) {
50263
50271
  const newParam = createTypeParameter(createSymbol(262144 /* TypeParameter */, "T"));
@@ -50265,6 +50273,11 @@ ${lanes.join("\n")}
50265
50273
  newTypeVariable = factory.createTypeReferenceNode(name);
50266
50274
  }
50267
50275
  appropriateConstraintTypeNode = factory.createTypeOperatorNode(143 /* KeyOfKeyword */, newTypeVariable || typeToTypeNodeHelper(getModifiersTypeFromMappedType(type2), context));
50276
+ } else if (needsModifierPreservingWrapper) {
50277
+ const newParam = createTypeParameter(createSymbol(262144 /* TypeParameter */, "T"));
50278
+ const name = typeParameterToName(newParam, context);
50279
+ newTypeVariable = factory.createTypeReferenceNode(name);
50280
+ appropriateConstraintTypeNode = newTypeVariable;
50268
50281
  } else {
50269
50282
  appropriateConstraintTypeNode = typeToTypeNodeHelper(getConstraintTypeFromMappedType(type2), context);
50270
50283
  }
@@ -50295,6 +50308,18 @@ ${lanes.join("\n")}
50295
50308
  result,
50296
50309
  factory.createKeywordTypeNode(146 /* NeverKeyword */)
50297
50310
  );
50311
+ } else if (needsModifierPreservingWrapper) {
50312
+ return factory.createConditionalTypeNode(
50313
+ typeToTypeNodeHelper(getConstraintTypeFromMappedType(type2), context),
50314
+ factory.createInferTypeNode(factory.createTypeParameterDeclaration(
50315
+ /*modifiers*/
50316
+ void 0,
50317
+ factory.cloneNode(newTypeVariable.typeName),
50318
+ factory.createTypeOperatorNode(143 /* KeyOfKeyword */, typeToTypeNodeHelper(getModifiersTypeFromMappedType(type2), context))
50319
+ )),
50320
+ result,
50321
+ factory.createKeywordTypeNode(146 /* NeverKeyword */)
50322
+ );
50298
50323
  }
50299
50324
  return result;
50300
50325
  }
@@ -125208,7 +125233,6 @@ ${lanes.join("\n")}
125208
125233
  if (hasChangedCompilerOptions) {
125209
125234
  newLine = updateNewLine();
125210
125235
  if (program && changesAffectModuleResolution(program.getCompilerOptions(), compilerOptions)) {
125211
- debugger;
125212
125236
  resolutionCache.onChangesAffectModuleResolution();
125213
125237
  }
125214
125238
  }
@@ -149634,6 +149658,14 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")}
149634
149658
  }
149635
149659
  function promoteImportClause(importClause) {
149636
149660
  changes.delete(sourceFile, getTypeKeywordOfTypeOnlyImport(importClause, sourceFile));
149661
+ if (!compilerOptions.allowImportingTsExtensions) {
149662
+ const moduleSpecifier = tryGetModuleSpecifierFromDeclaration(importClause.parent);
149663
+ const resolvedModule = moduleSpecifier && getResolvedModule(sourceFile, moduleSpecifier.text, getModeForUsageLocation(sourceFile, moduleSpecifier));
149664
+ if (resolvedModule == null ? void 0 : resolvedModule.resolvedUsingTsExtension) {
149665
+ const changedExtension = changeAnyExtension(moduleSpecifier.text, getOutputExtension(moduleSpecifier.text, compilerOptions));
149666
+ changes.replaceNode(sourceFile, moduleSpecifier, factory.createStringLiteral(changedExtension));
149667
+ }
149668
+ }
149637
149669
  if (convertExistingToTypeOnly) {
149638
149670
  const namedImports = tryCast(importClause.namedBindings, isNamedImports);
149639
149671
  if (namedImports && namedImports.elements.length > 1) {
@@ -54,7 +54,7 @@ var path = __toESM(require("path"));
54
54
 
55
55
  // src/compiler/corePublic.ts
56
56
  var versionMajorMinor = "5.2";
57
- var version = `${versionMajorMinor}.0-dev.20230724`;
57
+ var version = `${versionMajorMinor}.0-dev.20230725`;
58
58
 
59
59
  // src/compiler/core.ts
60
60
  var emptyArray = [];
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "typescript",
3
3
  "author": "Microsoft Corp.",
4
4
  "homepage": "https://www.typescriptlang.org/",
5
- "version": "5.2.0-dev.20230724",
5
+ "version": "5.2.0-dev.20230725",
6
6
  "license": "Apache-2.0",
7
7
  "description": "TypeScript is a language for application scale JavaScript development",
8
8
  "keywords": [
@@ -113,5 +113,5 @@
113
113
  "node": "20.1.0",
114
114
  "npm": "8.19.4"
115
115
  },
116
- "gitHead": "01b18215eccec4e3b32743ab545bf8c6b570d782"
116
+ "gitHead": "b1bec34f20690c6fdf6cc6e3d8cacee1e075f5ae"
117
117
  }