typescript 4.6.0-dev.20220109 → 4.6.0-dev.20220113

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.
@@ -89,7 +89,7 @@ var ts;
89
89
  // The following is baselined as a literal template type without intervention
90
90
  /** The version of the TypeScript compiler release */
91
91
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
92
- ts.version = ts.versionMajorMinor + ".0-dev.20220109";
92
+ ts.version = ts.versionMajorMinor + ".0-dev.20220113";
93
93
  /* @internal */
94
94
  var Comparison;
95
95
  (function (Comparison) {
@@ -19780,16 +19780,6 @@ var ts;
19780
19780
  (symlinkedDirectories || (symlinkedDirectories = new ts.Map())).set(symlinkPath, real);
19781
19781
  }
19782
19782
  },
19783
- setSymlinkedDirectoryFromSymlinkedFile: function (symlink, real) {
19784
- this.setSymlinkedFile(ts.toPath(symlink, cwd, getCanonicalFileName), real);
19785
- var _a = guessDirectorySymlink(real, symlink, cwd, getCanonicalFileName) || ts.emptyArray, commonResolved = _a[0], commonOriginal = _a[1];
19786
- if (commonResolved && commonOriginal) {
19787
- this.setSymlinkedDirectory(commonOriginal, {
19788
- real: commonResolved,
19789
- realPath: ts.toPath(commonResolved, cwd, getCanonicalFileName),
19790
- });
19791
- }
19792
- },
19793
19783
  setSymlinksFromResolutions: function (files, typeReferenceDirectives) {
19794
19784
  var _this = this;
19795
19785
  var _a;
@@ -41498,9 +41488,7 @@ var ts;
41498
41488
  }
41499
41489
  }
41500
41490
  var failedLookupLocations = [];
41501
- var features = ts.getEmitModuleResolutionKind(options) === ts.ModuleResolutionKind.Node12 ? NodeResolutionFeatures.Node12Default :
41502
- ts.getEmitModuleResolutionKind(options) === ts.ModuleResolutionKind.NodeNext ? NodeResolutionFeatures.NodeNextDefault :
41503
- NodeResolutionFeatures.None;
41491
+ var features = getDefaultNodeResolutionFeatures(options);
41504
41492
  var moduleResolutionState = { compilerOptions: options, host: host, traceEnabled: traceEnabled, failedLookupLocations: failedLookupLocations, packageJsonInfoCache: cache, features: features, conditions: ["node", "require", "types"] };
41505
41493
  var resolved = primaryLookup();
41506
41494
  var primary = true;
@@ -41585,6 +41573,34 @@ var ts;
41585
41573
  }
41586
41574
  }
41587
41575
  ts.resolveTypeReferenceDirective = resolveTypeReferenceDirective;
41576
+ function getDefaultNodeResolutionFeatures(options) {
41577
+ return ts.getEmitModuleResolutionKind(options) === ts.ModuleResolutionKind.Node12 ? NodeResolutionFeatures.Node12Default :
41578
+ ts.getEmitModuleResolutionKind(options) === ts.ModuleResolutionKind.NodeNext ? NodeResolutionFeatures.NodeNextDefault :
41579
+ NodeResolutionFeatures.None;
41580
+ }
41581
+ /**
41582
+ * @internal
41583
+ * Does not try `@types/${packageName}` - use a second pass if needed.
41584
+ */
41585
+ function resolvePackageNameToPackageJson(packageName, containingDirectory, options, host, cache) {
41586
+ var moduleResolutionState = {
41587
+ compilerOptions: options,
41588
+ host: host,
41589
+ traceEnabled: isTraceEnabled(options, host),
41590
+ failedLookupLocations: [],
41591
+ packageJsonInfoCache: cache === null || cache === void 0 ? void 0 : cache.getPackageJsonInfoCache(),
41592
+ conditions: ts.emptyArray,
41593
+ features: NodeResolutionFeatures.None,
41594
+ };
41595
+ return ts.forEachAncestorDirectory(containingDirectory, function (ancestorDirectory) {
41596
+ if (ts.getBaseFileName(ancestorDirectory) !== "node_modules") {
41597
+ var nodeModulesFolder = ts.combinePaths(ancestorDirectory, "node_modules");
41598
+ var candidate = ts.combinePaths(nodeModulesFolder, packageName);
41599
+ return getPackageJsonInfo(candidate, /*onlyRecordFailures*/ false, moduleResolutionState);
41600
+ }
41601
+ });
41602
+ }
41603
+ ts.resolvePackageNameToPackageJson = resolvePackageNameToPackageJson;
41588
41604
  /**
41589
41605
  * Given a set of options, returns the set of type directive names
41590
41606
  * that should be included for this program automatically.
@@ -42158,11 +42174,6 @@ var ts;
42158
42174
  }
42159
42175
  ts.resolveJSModule = resolveJSModule;
42160
42176
  /* @internal */
42161
- function tryResolveJSModule(moduleName, initialDir, host) {
42162
- return tryResolveJSModuleWorker(moduleName, initialDir, host).resolvedModule;
42163
- }
42164
- ts.tryResolveJSModule = tryResolveJSModule;
42165
- /* @internal */
42166
42177
  var NodeResolutionFeatures;
42167
42178
  (function (NodeResolutionFeatures) {
42168
42179
  NodeResolutionFeatures[NodeResolutionFeatures["None"] = 0] = "None";
@@ -42470,6 +42481,97 @@ var ts;
42470
42481
  var versionPaths = packageInfo && packageInfo.versionPaths;
42471
42482
  return withPackageId(packageInfo, loadNodeModuleFromDirectoryWorker(extensions, candidate, onlyRecordFailures, state, packageJsonContent, versionPaths));
42472
42483
  }
42484
+ /* @internal */
42485
+ function getEntrypointsFromPackageJsonInfo(packageJsonInfo, options, host, cache, resolveJs) {
42486
+ if (!resolveJs && packageJsonInfo.resolvedEntrypoints !== undefined) {
42487
+ // Cached value excludes resolutions to JS files - those could be
42488
+ // cached separately, but they're used rarely.
42489
+ return packageJsonInfo.resolvedEntrypoints;
42490
+ }
42491
+ var entrypoints;
42492
+ var extensions = resolveJs ? Extensions.JavaScript : Extensions.TypeScript;
42493
+ var features = getDefaultNodeResolutionFeatures(options);
42494
+ var requireState = {
42495
+ compilerOptions: options,
42496
+ host: host,
42497
+ traceEnabled: isTraceEnabled(options, host),
42498
+ failedLookupLocations: [],
42499
+ packageJsonInfoCache: cache === null || cache === void 0 ? void 0 : cache.getPackageJsonInfoCache(),
42500
+ conditions: ["node", "require", "types"],
42501
+ features: features,
42502
+ };
42503
+ var requireResolution = loadNodeModuleFromDirectoryWorker(extensions, packageJsonInfo.packageDirectory,
42504
+ /*onlyRecordFailures*/ false, requireState, packageJsonInfo.packageJsonContent, packageJsonInfo.versionPaths);
42505
+ entrypoints = ts.append(entrypoints, requireResolution === null || requireResolution === void 0 ? void 0 : requireResolution.path);
42506
+ if (features & NodeResolutionFeatures.Exports && packageJsonInfo.packageJsonContent.exports) {
42507
+ for (var _i = 0, _a = [["node", "import", "types"], ["node", "require", "types"]]; _i < _a.length; _i++) {
42508
+ var conditions = _a[_i];
42509
+ var exportState = __assign(__assign({}, requireState), { failedLookupLocations: [], conditions: conditions });
42510
+ var exportResolutions = loadEntrypointsFromExportMap(packageJsonInfo, packageJsonInfo.packageJsonContent.exports, exportState, extensions);
42511
+ if (exportResolutions) {
42512
+ for (var _b = 0, exportResolutions_1 = exportResolutions; _b < exportResolutions_1.length; _b++) {
42513
+ var resolution = exportResolutions_1[_b];
42514
+ entrypoints = ts.appendIfUnique(entrypoints, resolution.path);
42515
+ }
42516
+ }
42517
+ }
42518
+ }
42519
+ return packageJsonInfo.resolvedEntrypoints = entrypoints || false;
42520
+ }
42521
+ ts.getEntrypointsFromPackageJsonInfo = getEntrypointsFromPackageJsonInfo;
42522
+ function loadEntrypointsFromExportMap(scope, exports, state, extensions) {
42523
+ var entrypoints;
42524
+ if (ts.isArray(exports)) {
42525
+ for (var _i = 0, exports_1 = exports; _i < exports_1.length; _i++) {
42526
+ var target = exports_1[_i];
42527
+ loadEntrypointsFromTargetExports(target);
42528
+ }
42529
+ }
42530
+ // eslint-disable-next-line no-null/no-null
42531
+ else if (typeof exports === "object" && exports !== null && allKeysStartWithDot(exports)) {
42532
+ for (var key in exports) {
42533
+ loadEntrypointsFromTargetExports(exports[key]);
42534
+ }
42535
+ }
42536
+ else {
42537
+ loadEntrypointsFromTargetExports(exports);
42538
+ }
42539
+ return entrypoints;
42540
+ function loadEntrypointsFromTargetExports(target) {
42541
+ var _a, _b;
42542
+ if (typeof target === "string" && ts.startsWith(target, "./") && target.indexOf("*") === -1) {
42543
+ var partsAfterFirst = ts.getPathComponents(target).slice(2);
42544
+ if (partsAfterFirst.indexOf("..") >= 0 || partsAfterFirst.indexOf(".") >= 0 || partsAfterFirst.indexOf("node_modules") >= 0) {
42545
+ return false;
42546
+ }
42547
+ var resolvedTarget = ts.combinePaths(scope.packageDirectory, target);
42548
+ var finalPath = ts.getNormalizedAbsolutePath(resolvedTarget, (_b = (_a = state.host).getCurrentDirectory) === null || _b === void 0 ? void 0 : _b.call(_a));
42549
+ var result = loadJSOrExactTSFileName(extensions, finalPath, /*recordOnlyFailures*/ false, state);
42550
+ if (result) {
42551
+ entrypoints = ts.appendIfUnique(entrypoints, result, function (a, b) { return a.path === b.path; });
42552
+ return true;
42553
+ }
42554
+ }
42555
+ else if (Array.isArray(target)) {
42556
+ for (var _i = 0, target_1 = target; _i < target_1.length; _i++) {
42557
+ var t = target_1[_i];
42558
+ var success = loadEntrypointsFromTargetExports(t);
42559
+ if (success) {
42560
+ return true;
42561
+ }
42562
+ }
42563
+ }
42564
+ // eslint-disable-next-line no-null/no-null
42565
+ else if (typeof target === "object" && target !== null) {
42566
+ return ts.forEach(ts.getOwnKeys(target), function (key) {
42567
+ if (key === "default" || ts.contains(state.conditions, key) || isApplicableVersionedTypesKey(state.conditions, key)) {
42568
+ loadEntrypointsFromTargetExports(target[key]);
42569
+ return true;
42570
+ }
42571
+ });
42572
+ }
42573
+ }
42574
+ }
42473
42575
  /**
42474
42576
  * A function for locating the package.json scope for a given path
42475
42577
  */
@@ -42526,7 +42628,7 @@ var ts;
42526
42628
  trace(host, ts.Diagnostics.Found_package_json_at_0, packageJsonPath);
42527
42629
  }
42528
42630
  var versionPaths = readPackageJsonTypesVersionPaths(packageJsonContent, state);
42529
- var result = { packageDirectory: packageDirectory, packageJsonContent: packageJsonContent, versionPaths: versionPaths };
42631
+ var result = { packageDirectory: packageDirectory, packageJsonContent: packageJsonContent, versionPaths: versionPaths, resolvedEntrypoints: undefined };
42530
42632
  (_b = state.packageJsonInfoCache) === null || _b === void 0 ? void 0 : _b.setPackageJsonInfo(packageJsonPath, result);
42531
42633
  return result;
42532
42634
  }
@@ -42823,8 +42925,8 @@ var ts;
42823
42925
  }
42824
42926
  return toSearchResult(/*value*/ undefined);
42825
42927
  }
42826
- for (var _d = 0, target_1 = target; _d < target_1.length; _d++) {
42827
- var elem = target_1[_d];
42928
+ for (var _d = 0, target_2 = target; _d < target_2.length; _d++) {
42929
+ var elem = target_2[_d];
42828
42930
  var result = loadModuleFromTargetImportOrExport(elem, subpath, pattern);
42829
42931
  if (result) {
42830
42932
  return result;
@@ -49853,7 +49955,7 @@ var ts;
49853
49955
  if (!sigs || !sigs.length) {
49854
49956
  sigs = getSignaturesOfStructuredType(type, 1 /* Construct */);
49855
49957
  }
49856
- if ((sigs && sigs.length) || getPropertyOfType(type, "default" /* Default */)) {
49958
+ if ((sigs && sigs.length) || getPropertyOfType(type, "default" /* Default */, /*skipObjectFunctionPropertyAugment*/ true)) {
49857
49959
  var moduleType = getTypeWithSyntheticDefaultImportType(type, symbol, moduleSymbol, reference);
49858
49960
  return cloneTypeAsModuleType(symbol, moduleType, referenceParent);
49859
49961
  }
@@ -52057,8 +52159,8 @@ var ts;
52057
52159
  }
52058
52160
  else {
52059
52161
  if (parent && getExportsOfSymbol(parent)) {
52060
- var exports_1 = getExportsOfSymbol(parent);
52061
- ts.forEachEntry(exports_1, function (ex, name) {
52162
+ var exports_2 = getExportsOfSymbol(parent);
52163
+ ts.forEachEntry(exports_2, function (ex, name) {
52062
52164
  if (getSymbolIfSameReference(ex, symbol) && !isLateBoundName(name) && name !== "export=" /* ExportEquals */) {
52063
52165
  symbolName = ts.unescapeLeadingUnderscores(name);
52064
52166
  return true;
@@ -57169,6 +57271,11 @@ var ts;
57169
57271
  return simplified !== type ? simplified : getConstraintOfType(type);
57170
57272
  }
57171
57273
  function getConstraintFromIndexedAccess(type) {
57274
+ if (isMappedTypeGenericIndexedAccess(type)) {
57275
+ // For indexed access types of the form { [P in K]: E }[X], where K is non-generic and X is generic,
57276
+ // we substitute an instantiation of E where P is replaced with X.
57277
+ return substituteIndexedMappedType(type.objectType, type.indexType);
57278
+ }
57172
57279
  var indexConstraint = getSimplifiedTypeOrConstraint(type.indexType);
57173
57280
  if (indexConstraint && indexConstraint !== type.indexType) {
57174
57281
  var indexedAccess = getIndexedAccessTypeOrUndefined(type.objectType, indexConstraint, type.accessFlags);
@@ -57373,6 +57480,11 @@ var ts;
57373
57480
  return constraint ? getStringMappingType(t.symbol, constraint) : stringType;
57374
57481
  }
57375
57482
  if (t.flags & 8388608 /* IndexedAccess */) {
57483
+ if (isMappedTypeGenericIndexedAccess(t)) {
57484
+ // For indexed access types of the form { [P in K]: E }[X], where K is non-generic and X is generic,
57485
+ // we substitute an instantiation of E where P is replaced with X.
57486
+ return getBaseConstraint(substituteIndexedMappedType(t.objectType, t.indexType));
57487
+ }
57376
57488
  var baseObjectType = getBaseConstraint(t.objectType);
57377
57489
  var baseIndexType = getBaseConstraint(t.indexType);
57378
57490
  var baseIndexedAccess = baseObjectType && baseIndexType && getIndexedAccessTypeOrUndefined(baseObjectType, baseIndexType, t.accessFlags);
@@ -57457,13 +57569,7 @@ var ts;
57457
57569
  * type itself.
57458
57570
  */
57459
57571
  function getApparentType(type) {
57460
- // We obtain the base constraint for all instantiable types, except indexed access types of the form
57461
- // { [P in K]: E }[X], where K is non-generic and X is generic. For those types, we instead substitute an
57462
- // instantiation of E where P is replaced with X. We do this because getBaseConstraintOfType directly
57463
- // lowers to an instantiation where X's constraint is substituted for X, which isn't always desirable.
57464
- var t = !(type.flags & 465829888 /* Instantiable */) ? type :
57465
- isMappedTypeGenericIndexedAccess(type) ? substituteIndexedMappedType(type.objectType, type.indexType) :
57466
- getBaseConstraintOfType(type) || unknownType;
57572
+ var t = !(type.flags & 465829888 /* Instantiable */) ? type : getBaseConstraintOfType(type) || unknownType;
57467
57573
  return ts.getObjectFlags(t) & 32 /* Mapped */ ? getApparentTypeOfMappedType(t) :
57468
57574
  t.flags & 2097152 /* Intersection */ ? getApparentTypeOfIntersectionType(t) :
57469
57575
  t.flags & 402653316 /* StringLike */ ? globalStringType :
@@ -64127,6 +64233,17 @@ var ts;
64127
64233
  resetErrorInfo(saveErrorInfo);
64128
64234
  return result;
64129
64235
  }
64236
+ if (isMappedTypeGenericIndexedAccess(source)) {
64237
+ // For an indexed access type { [P in K]: E}[X], above we have already explored an instantiation of E with X
64238
+ // substituted for P. We also want to explore type { [P in K]: E }[C], where C is the constraint of X.
64239
+ var indexConstraint = getConstraintOfType(source.indexType);
64240
+ if (indexConstraint) {
64241
+ if (result = isRelatedTo(getIndexedAccessType(source.objectType, indexConstraint), target, 1 /* Source */, reportErrors)) {
64242
+ resetErrorInfo(saveErrorInfo);
64243
+ return result;
64244
+ }
64245
+ }
64246
+ }
64130
64247
  }
64131
64248
  }
64132
64249
  else if (source.flags & 4194304 /* Index */) {
@@ -83245,9 +83362,9 @@ var ts;
83245
83362
  }
83246
83363
  }
83247
83364
  // Checks for export * conflicts
83248
- var exports_2 = getExportsOfModule(moduleSymbol);
83249
- if (exports_2) {
83250
- exports_2.forEach(function (_a, id) {
83365
+ var exports_3 = getExportsOfModule(moduleSymbol);
83366
+ if (exports_3) {
83367
+ exports_3.forEach(function (_a, id) {
83251
83368
  var declarations = _a.declarations, flags = _a.flags;
83252
83369
  if (id === "__export") {
83253
83370
  return;
@@ -90471,6 +90588,7 @@ var ts;
90471
90588
  case 176 /* TypePredicate */:
90472
90589
  case 133 /* BooleanKeyword */:
90473
90590
  return factory.createIdentifier("Boolean");
90591
+ case 197 /* TemplateLiteralType */:
90474
90592
  case 149 /* StringKeyword */:
90475
90593
  return factory.createIdentifier("String");
90476
90594
  case 147 /* ObjectKeyword */:
@@ -92803,6 +92921,11 @@ var ts;
92803
92921
  ts.setSourceMapRange(statement, ts.moveRangePastModifiers(property));
92804
92922
  ts.setCommentRange(statement, property);
92805
92923
  ts.setOriginalNode(statement, property);
92924
+ // `setOriginalNode` *copies* the `emitNode` from `property`, so now both
92925
+ // `statement` and `expression` have a copy of the synthesized comments.
92926
+ // Drop the comments from expression to avoid printing them twice.
92927
+ ts.setSyntheticLeadingComments(expression, undefined);
92928
+ ts.setSyntheticTrailingComments(expression, undefined);
92806
92929
  statements.push(statement);
92807
92930
  }
92808
92931
  }
@@ -119143,28 +119266,37 @@ var ts;
119143
119266
  useCaseSensitiveFileNames: (_a = host.useCaseSensitiveFileNames) === null || _a === void 0 ? void 0 : _a.call(host),
119144
119267
  };
119145
119268
  }
119146
- function updateModuleSpecifier(compilerOptions, importingSourceFileName, toFileName, host, oldImportSpecifier) {
119147
- var res = getModuleSpecifierWorker(compilerOptions, importingSourceFileName, toFileName, host, getPreferencesForUpdate(compilerOptions, oldImportSpecifier, importingSourceFileName, host), {});
119269
+ // `importingSourceFile` and `importingSourceFileName`? Why not just use `importingSourceFile.path`?
119270
+ // Because when this is called by the file renamer, `importingSourceFile` is the file being renamed,
119271
+ // while `importingSourceFileName` its *new* name. We need a source file just to get its
119272
+ // `impliedNodeFormat` and to detect certain preferences from existing import module specifiers.
119273
+ function updateModuleSpecifier(compilerOptions, importingSourceFile, importingSourceFileName, toFileName, host, oldImportSpecifier) {
119274
+ var res = getModuleSpecifierWorker(compilerOptions, importingSourceFile, importingSourceFileName, toFileName, host, getPreferencesForUpdate(compilerOptions, oldImportSpecifier, importingSourceFileName, host), {});
119148
119275
  if (res === oldImportSpecifier)
119149
119276
  return undefined;
119150
119277
  return res;
119151
119278
  }
119152
119279
  moduleSpecifiers_1.updateModuleSpecifier = updateModuleSpecifier;
119153
- // Note: importingSourceFile is just for usesJsExtensionOnImports
119280
+ // `importingSourceFile` and `importingSourceFileName`? Why not just use `importingSourceFile.path`?
119281
+ // Because when this is called by the declaration emitter, `importingSourceFile` is the implementation
119282
+ // file, but `importingSourceFileName` and `toFileName` refer to declaration files (the former to the
119283
+ // one currently being produced; the latter to the one being imported). We need an implementation file
119284
+ // just to get its `impliedNodeFormat` and to detect certain preferences from existing import module
119285
+ // specifiers.
119154
119286
  function getModuleSpecifier(compilerOptions, importingSourceFile, importingSourceFileName, toFileName, host) {
119155
- return getModuleSpecifierWorker(compilerOptions, importingSourceFileName, toFileName, host, getPreferences(host, {}, compilerOptions, importingSourceFile), {});
119287
+ return getModuleSpecifierWorker(compilerOptions, importingSourceFile, importingSourceFileName, toFileName, host, getPreferences(host, {}, compilerOptions, importingSourceFile), {});
119156
119288
  }
119157
119289
  moduleSpecifiers_1.getModuleSpecifier = getModuleSpecifier;
119158
- function getNodeModulesPackageName(compilerOptions, importingSourceFileName, nodeModulesFileName, host, preferences) {
119159
- var info = getInfo(importingSourceFileName, host);
119160
- var modulePaths = getAllModulePaths(importingSourceFileName, nodeModulesFileName, host, preferences);
119161
- return ts.firstDefined(modulePaths, function (modulePath) { return tryGetModuleNameAsNodeModule(modulePath, info, host, compilerOptions, /*packageNameOnly*/ true); });
119290
+ function getNodeModulesPackageName(compilerOptions, importingSourceFile, nodeModulesFileName, host, preferences) {
119291
+ var info = getInfo(importingSourceFile.path, host);
119292
+ var modulePaths = getAllModulePaths(importingSourceFile.path, nodeModulesFileName, host, preferences);
119293
+ return ts.firstDefined(modulePaths, function (modulePath) { return tryGetModuleNameAsNodeModule(modulePath, info, importingSourceFile, host, compilerOptions, /*packageNameOnly*/ true); });
119162
119294
  }
119163
119295
  moduleSpecifiers_1.getNodeModulesPackageName = getNodeModulesPackageName;
119164
- function getModuleSpecifierWorker(compilerOptions, importingSourceFileName, toFileName, host, preferences, userPreferences) {
119296
+ function getModuleSpecifierWorker(compilerOptions, importingSourceFile, importingSourceFileName, toFileName, host, preferences, userPreferences) {
119165
119297
  var info = getInfo(importingSourceFileName, host);
119166
119298
  var modulePaths = getAllModulePaths(importingSourceFileName, toFileName, host, userPreferences);
119167
- return ts.firstDefined(modulePaths, function (modulePath) { return tryGetModuleNameAsNodeModule(modulePath, info, host, compilerOptions); }) ||
119299
+ return ts.firstDefined(modulePaths, function (modulePath) { return tryGetModuleNameAsNodeModule(modulePath, info, importingSourceFile, host, compilerOptions); }) ||
119168
119300
  getLocalModuleSpecifier(toFileName, info, compilerOptions, host, preferences);
119169
119301
  }
119170
119302
  function tryGetModuleSpecifiersFromCache(moduleSymbol, importingSourceFile, host, userPreferences) {
@@ -119231,7 +119363,7 @@ var ts;
119231
119363
  var relativeSpecifiers;
119232
119364
  for (var _i = 0, modulePaths_1 = modulePaths; _i < modulePaths_1.length; _i++) {
119233
119365
  var modulePath = modulePaths_1[_i];
119234
- var specifier = tryGetModuleNameAsNodeModule(modulePath, info, host, compilerOptions);
119366
+ var specifier = tryGetModuleNameAsNodeModule(modulePath, info, importingSourceFile, host, compilerOptions);
119235
119367
  nodeModulesSpecifiers = ts.append(nodeModulesSpecifiers, specifier);
119236
119368
  if (specifier && modulePath.isRedirect) {
119237
119369
  // If we got a specifier for a redirect, it was a bare package specifier (e.g. "@foo/bar",
@@ -119623,7 +119755,7 @@ var ts;
119623
119755
  ? removeExtensionAndIndexPostFix(relativePath, ending, compilerOptions)
119624
119756
  : ts.removeFileExtension(relativePath);
119625
119757
  }
119626
- function tryGetModuleNameAsNodeModule(_a, _b, host, options, packageNameOnly) {
119758
+ function tryGetModuleNameAsNodeModule(_a, _b, importingSourceFile, host, options, packageNameOnly) {
119627
119759
  var path = _a.path, isRedirect = _a.isRedirect;
119628
119760
  var getCanonicalFileName = _b.getCanonicalFileName, sourceDirectory = _b.sourceDirectory;
119629
119761
  if (!host.fileExists || !host.readFile) {
@@ -119686,11 +119818,19 @@ var ts;
119686
119818
  var moduleFileToTry = path;
119687
119819
  if (host.fileExists(packageJsonPath)) {
119688
119820
  var packageJsonContent = JSON.parse(host.readFile(packageJsonPath));
119689
- // TODO: Inject `require` or `import` condition based on the intended import mode
119690
119821
  if (ts.getEmitModuleResolutionKind(options) === ts.ModuleResolutionKind.Node12 || ts.getEmitModuleResolutionKind(options) === ts.ModuleResolutionKind.NodeNext) {
119691
- var fromExports = packageJsonContent.exports && typeof packageJsonContent.name === "string" ? tryGetModuleNameFromExports(options, path, packageRootPath, packageJsonContent.name, packageJsonContent.exports, ["node", "types"]) : undefined;
119822
+ // `conditions` *could* be made to go against `importingSourceFile.impliedNodeFormat` if something wanted to generate
119823
+ // an ImportEqualsDeclaration in an ESM-implied file or an ImportCall in a CJS-implied file. But since this function is
119824
+ // usually called to conjure an import out of thin air, we don't have an existing usage to call `getModeForUsageAtIndex`
119825
+ // with, so for now we just stick with the mode of the file.
119826
+ var conditions = ["node", importingSourceFile.impliedNodeFormat === ts.ModuleKind.ESNext ? "import" : "require", "types"];
119827
+ var fromExports = packageJsonContent.exports && typeof packageJsonContent.name === "string"
119828
+ ? tryGetModuleNameFromExports(options, path, packageRootPath, ts.getPackageNameFromTypesPackageName(packageJsonContent.name), packageJsonContent.exports, conditions)
119829
+ : undefined;
119692
119830
  if (fromExports) {
119693
- var withJsExtension = !ts.hasTSFileExtension(fromExports.moduleFileToTry) ? fromExports : { moduleFileToTry: ts.removeFileExtension(fromExports.moduleFileToTry) + tryGetJSExtensionForFile(fromExports.moduleFileToTry, options) };
119831
+ var withJsExtension = !ts.hasTSFileExtension(fromExports.moduleFileToTry)
119832
+ ? fromExports
119833
+ : { moduleFileToTry: ts.removeFileExtension(fromExports.moduleFileToTry) + tryGetJSExtensionForFile(fromExports.moduleFileToTry, options) };
119694
119834
  return __assign(__assign({}, withJsExtension), { verbatimFromExports: true });
119695
119835
  }
119696
119836
  if (packageJsonContent.exports) {
@@ -119796,8 +119936,8 @@ var ts;
119796
119936
  }
119797
119937
  function getPathRelativeToRootDirs(path, rootDirs, getCanonicalFileName) {
119798
119938
  return ts.firstDefined(rootDirs, function (rootDir) {
119799
- var relativePath = getRelativePathIfInDirectory(path, rootDir, getCanonicalFileName); // TODO: GH#18217
119800
- return isPathRelativeToParent(relativePath) ? undefined : relativePath;
119939
+ var relativePath = getRelativePathIfInDirectory(path, rootDir, getCanonicalFileName);
119940
+ return relativePath !== undefined && isPathRelativeToParent(relativePath) ? undefined : relativePath;
119801
119941
  });
119802
119942
  }
119803
119943
  function removeExtensionAndIndexPostFix(fileName, ending, options) {
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": "4.6.0-dev.20220109",
5
+ "version": "4.6.0-dev.20220113",
6
6
  "license": "Apache-2.0",
7
7
  "description": "TypeScript is a language for application scale JavaScript development",
8
8
  "keywords": [