typescript 5.1.0-dev.20230413 → 5.1.0-dev.20230414

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.1";
21
- var version = `${versionMajorMinor}.0-dev.20230413`;
21
+ var version = `${versionMajorMinor}.0-dev.20230414`;
22
22
 
23
23
  // src/compiler/core.ts
24
24
  var emptyArray = [];
@@ -5294,6 +5294,10 @@ function isAnyDirectorySeparator(charCode) {
5294
5294
  function isRootedDiskPath(path) {
5295
5295
  return getEncodedRootLength(path) > 0;
5296
5296
  }
5297
+ function isDiskPathRoot(path) {
5298
+ const rootLength = getEncodedRootLength(path);
5299
+ return rootLength > 0 && rootLength === path.length;
5300
+ }
5297
5301
  function pathIsAbsolute(path) {
5298
5302
  return getEncodedRootLength(path) !== 0;
5299
5303
  }
@@ -5442,11 +5446,11 @@ function getPathComponents(path, currentDirectory = "") {
5442
5446
  path = combinePaths(currentDirectory, path);
5443
5447
  return pathComponents(path, getRootLength(path));
5444
5448
  }
5445
- function getPathFromPathComponents(pathComponents2) {
5449
+ function getPathFromPathComponents(pathComponents2, length2) {
5446
5450
  if (pathComponents2.length === 0)
5447
5451
  return "";
5448
5452
  const root = pathComponents2[0] && ensureTrailingDirectorySeparator(pathComponents2[0]);
5449
- return root + pathComponents2.slice(1).join(directorySeparator);
5453
+ return root + pathComponents2.slice(1, length2).join(directorySeparator);
5450
5454
  }
5451
5455
  function normalizeSlashes(path) {
5452
5456
  return path.indexOf("\\") !== -1 ? path.replace(backslashRegExp, directorySeparator) : path;
@@ -18559,7 +18563,7 @@ function createNodeFactory(flags, baseFactory2) {
18559
18563
  function createBigIntLiteral(value) {
18560
18564
  const node = createBaseToken(10 /* BigIntLiteral */);
18561
18565
  node.text = typeof value === "string" ? value : pseudoBigIntToString(value) + "n";
18562
- node.transformFlags |= 4 /* ContainsESNext */;
18566
+ node.transformFlags |= 32 /* ContainsES2020 */;
18563
18567
  return node;
18564
18568
  }
18565
18569
  function createBaseStringLiteral(text, isSingleQuote) {
@@ -20069,7 +20073,7 @@ function createNodeFactory(flags, baseFactory2) {
20069
20073
  node.transformFlags |= 1024 /* ContainsES2015 */;
20070
20074
  break;
20071
20075
  case 102 /* ImportKeyword */:
20072
- node.transformFlags |= 4 /* ContainsESNext */;
20076
+ node.transformFlags |= 32 /* ContainsES2020 */;
20073
20077
  break;
20074
20078
  default:
20075
20079
  return Debug.assertNever(keywordToken);
@@ -20597,7 +20601,7 @@ function createNodeFactory(flags, baseFactory2) {
20597
20601
  function createNamespaceExport(name) {
20598
20602
  const node = createBaseDeclaration(279 /* NamespaceExport */);
20599
20603
  node.name = name;
20600
- node.transformFlags |= propagateChildFlags(node.name) | 4 /* ContainsESNext */;
20604
+ node.transformFlags |= propagateChildFlags(node.name) | 32 /* ContainsES2020 */;
20601
20605
  node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */;
20602
20606
  return node;
20603
20607
  }
@@ -118099,60 +118103,62 @@ function removeIgnoredPath(path) {
118099
118103
  }
118100
118104
  return some(ignoredPaths, (searchPath) => stringContains(path, searchPath)) ? void 0 : path;
118101
118105
  }
118102
- function canWatchDirectoryOrFile(dirPath) {
118103
- const rootLength = getRootLength(dirPath);
118104
- if (dirPath.length === rootLength) {
118105
- return false;
118106
- }
118107
- let nextDirectorySeparator = dirPath.indexOf(directorySeparator, rootLength);
118108
- if (nextDirectorySeparator === -1) {
118109
- return false;
118110
- }
118111
- let pathPartForUserCheck = dirPath.substring(rootLength, nextDirectorySeparator + 1);
118112
- const isNonDirectorySeparatorRoot = rootLength > 1 || dirPath.charCodeAt(0) !== 47 /* slash */;
118113
- if (isNonDirectorySeparatorRoot && dirPath.search(/[a-zA-Z]:/) !== 0 && // Non dos style paths
118114
- pathPartForUserCheck.search(/[a-zA-Z]\$\//) === 0) {
118115
- nextDirectorySeparator = dirPath.indexOf(directorySeparator, nextDirectorySeparator + 1);
118116
- if (nextDirectorySeparator === -1) {
118117
- return false;
118118
- }
118119
- pathPartForUserCheck = dirPath.substring(rootLength + pathPartForUserCheck.length, nextDirectorySeparator + 1);
118120
- }
118121
- if (isNonDirectorySeparatorRoot && pathPartForUserCheck.search(/users\//i) !== 0) {
118122
- return true;
118106
+ function perceivedOsRootLengthForWatching(pathComponents2, length2) {
118107
+ if (length2 <= 1)
118108
+ return 1;
118109
+ let userCheckIndex = 1;
118110
+ let isDosStyle = pathComponents2[0].search(/[a-zA-Z]:/) === 0;
118111
+ if (pathComponents2[0] !== directorySeparator && !isDosStyle && // Non dos style paths
118112
+ pathComponents2[1].search(/[a-zA-Z]\$$/) === 0) {
118113
+ if (length2 === 2)
118114
+ return 2;
118115
+ userCheckIndex = 2;
118116
+ isDosStyle = true;
118123
118117
  }
118124
- for (let searchIndex = nextDirectorySeparator + 1, searchLevels = 2; searchLevels > 0; searchLevels--) {
118125
- searchIndex = dirPath.indexOf(directorySeparator, searchIndex) + 1;
118126
- if (searchIndex === 0) {
118127
- return false;
118128
- }
118118
+ if (isDosStyle && !pathComponents2[userCheckIndex].match(/^users$/i)) {
118119
+ return userCheckIndex;
118129
118120
  }
118130
- return true;
118121
+ return userCheckIndex + 2;
118122
+ }
118123
+ function canWatchDirectoryOrFile(pathComponents2, length2) {
118124
+ if (length2 === void 0)
118125
+ length2 = pathComponents2.length;
118126
+ if (length2 <= 2)
118127
+ return false;
118128
+ const perceivedOsRootLength = perceivedOsRootLengthForWatching(pathComponents2, length2);
118129
+ return length2 > perceivedOsRootLength + 1;
118131
118130
  }
118132
- function canWatchAtTypes(atTypes, rootPath) {
118133
- const dirPath = getDirectoryPath(getDirectoryPath(atTypes));
118134
- return dirPath === rootPath || canWatchDirectoryOrFile(dirPath);
118131
+ function canWatchAtTypes(atTypes) {
118132
+ return canWatchAffectedPackageJsonOrNodeModulesOfAtTypes(getDirectoryPath(atTypes));
118135
118133
  }
118136
- function isInDirectoryPath(dir, file) {
118137
- if (dir === void 0 || file.length <= dir.length) {
118134
+ function isInDirectoryPath(dirComponents, fileOrDirComponents) {
118135
+ if (fileOrDirComponents.length < fileOrDirComponents.length)
118138
118136
  return false;
118137
+ for (let i = 0; i < dirComponents.length; i++) {
118138
+ if (fileOrDirComponents[i] !== dirComponents[i])
118139
+ return false;
118139
118140
  }
118140
- return startsWith(file, dir) && file[dir.length] === directorySeparator;
118141
+ return true;
118142
+ }
118143
+ function canWatchAffectedPackageJsonOrNodeModulesOfAtTypes(fileOrDirPath) {
118144
+ return canWatchDirectoryOrFile(getPathComponents(fileOrDirPath));
118141
118145
  }
118142
118146
  function canWatchAffectingLocation(filePath) {
118143
- return canWatchDirectoryOrFile(filePath);
118144
- }
118145
- function getDirectoryToWatchFailedLookupLocation(failedLookupLocation, failedLookupLocationPath, rootDir, rootPath, rootSplitLength, getCurrentDirectory) {
118146
- if (isInDirectoryPath(rootPath, failedLookupLocationPath)) {
118147
- failedLookupLocation = isRootedDiskPath(failedLookupLocation) ? normalizePath(failedLookupLocation) : getNormalizedAbsolutePath(failedLookupLocation, getCurrentDirectory());
118148
- const failedLookupPathSplit = failedLookupLocationPath.split(directorySeparator);
118149
- const failedLookupSplit = failedLookupLocation.split(directorySeparator);
118150
- Debug.assert(failedLookupSplit.length === failedLookupPathSplit.length, `FailedLookup: ${failedLookupLocation} failedLookupLocationPath: ${failedLookupLocationPath}`);
118151
- if (failedLookupPathSplit.length > rootSplitLength + 1) {
118152
- return {
118153
- dir: failedLookupSplit.slice(0, rootSplitLength + 1).join(directorySeparator),
118154
- dirPath: failedLookupPathSplit.slice(0, rootSplitLength + 1).join(directorySeparator)
118155
- };
118147
+ return canWatchAffectedPackageJsonOrNodeModulesOfAtTypes(filePath);
118148
+ }
118149
+ function getDirectoryToWatchFailedLookupLocation(failedLookupLocation, failedLookupLocationPath, rootDir, rootPath, rootPathComponents, getCurrentDirectory) {
118150
+ const failedLookupPathComponents = getPathComponents(failedLookupLocationPath);
118151
+ failedLookupLocation = isRootedDiskPath(failedLookupLocation) ? normalizePath(failedLookupLocation) : getNormalizedAbsolutePath(failedLookupLocation, getCurrentDirectory());
118152
+ const failedLookupComponents = getPathComponents(failedLookupLocation);
118153
+ const perceivedOsRootLength = perceivedOsRootLengthForWatching(failedLookupPathComponents, failedLookupPathComponents.length);
118154
+ if (failedLookupPathComponents.length <= perceivedOsRootLength + 1)
118155
+ return void 0;
118156
+ const nodeModulesIndex = failedLookupPathComponents.indexOf("node_modules");
118157
+ if (nodeModulesIndex !== -1 && nodeModulesIndex + 1 <= perceivedOsRootLength + 1)
118158
+ return void 0;
118159
+ if (isInDirectoryPath(rootPathComponents, failedLookupPathComponents)) {
118160
+ if (failedLookupPathComponents.length > rootPathComponents.length + 1) {
118161
+ return getDirectoryOfFailedLookupWatch(failedLookupComponents, failedLookupPathComponents, Math.max(rootPathComponents.length + 1, perceivedOsRootLength + 1));
118156
118162
  } else {
118157
118163
  return {
118158
118164
  dir: rootDir,
@@ -118162,45 +118168,55 @@ function getDirectoryToWatchFailedLookupLocation(failedLookupLocation, failedLoo
118162
118168
  }
118163
118169
  }
118164
118170
  return getDirectoryToWatchFromFailedLookupLocationDirectory(
118165
- getDirectoryPath(getNormalizedAbsolutePath(failedLookupLocation, getCurrentDirectory())),
118166
- getDirectoryPath(failedLookupLocationPath),
118167
- rootPath
118171
+ failedLookupComponents,
118172
+ failedLookupPathComponents,
118173
+ failedLookupPathComponents.length - 1,
118174
+ perceivedOsRootLength,
118175
+ nodeModulesIndex,
118176
+ rootPathComponents
118168
118177
  );
118169
118178
  }
118170
- function getDirectoryToWatchFromFailedLookupLocationDirectory(dir, dirPath, rootPath) {
118171
- while (pathContainsNodeModules(dirPath)) {
118172
- dir = getDirectoryPath(dir);
118173
- dirPath = getDirectoryPath(dirPath);
118174
- }
118175
- if (isNodeModulesDirectory(dirPath)) {
118176
- return canWatchDirectoryOrFile(getDirectoryPath(dirPath)) ? { dir, dirPath } : void 0;
118179
+ function getDirectoryToWatchFromFailedLookupLocationDirectory(dirComponents, dirPathComponents, dirPathComponentsLength, perceivedOsRootLength, nodeModulesIndex, rootPathComponents) {
118180
+ if (nodeModulesIndex !== -1) {
118181
+ return getDirectoryOfFailedLookupWatch(dirComponents, dirPathComponents, nodeModulesIndex + 1);
118177
118182
  }
118178
118183
  let nonRecursive = true;
118179
- let subDirectoryPath, subDirectory;
118180
- if (rootPath !== void 0) {
118181
- while (!isInDirectoryPath(dirPath, rootPath)) {
118182
- const parentPath = getDirectoryPath(dirPath);
118183
- if (parentPath === dirPath) {
118184
- break;
118185
- }
118184
+ let length2 = dirPathComponentsLength;
118185
+ for (let i = 0; i < dirPathComponentsLength; i++) {
118186
+ if (dirPathComponents[i] !== rootPathComponents[i]) {
118186
118187
  nonRecursive = false;
118187
- subDirectoryPath = dirPath;
118188
- subDirectory = dir;
118189
- dirPath = parentPath;
118190
- dir = getDirectoryPath(dir);
118188
+ length2 = Math.max(i + 1, perceivedOsRootLength + 1);
118189
+ break;
118191
118190
  }
118192
118191
  }
118193
- return canWatchDirectoryOrFile(dirPath) ? { dir: subDirectory || dir, dirPath: subDirectoryPath || dirPath, nonRecursive } : void 0;
118192
+ return getDirectoryOfFailedLookupWatch(dirComponents, dirPathComponents, length2, nonRecursive);
118194
118193
  }
118195
- function getDirectoryToWatchFailedLookupLocationFromTypeRoot(typeRoot, typeRootPath, rootPath, filterCustomPath) {
118196
- if (isInDirectoryPath(rootPath, typeRootPath)) {
118194
+ function getDirectoryOfFailedLookupWatch(dirComponents, dirPathComponents, length2, nonRecursive) {
118195
+ return {
118196
+ dir: getPathFromPathComponents(dirComponents, length2),
118197
+ dirPath: getPathFromPathComponents(dirPathComponents, length2),
118198
+ nonRecursive
118199
+ };
118200
+ }
118201
+ function getDirectoryToWatchFailedLookupLocationFromTypeRoot(typeRoot, typeRootPath, rootPath, rootPathComponents, getCurrentDirectory, filterCustomPath) {
118202
+ const typeRootPathComponents = getPathComponents(typeRootPath);
118203
+ if (isInDirectoryPath(rootPathComponents, typeRootPathComponents)) {
118197
118204
  return rootPath;
118198
118205
  }
118199
- const toWatch = getDirectoryToWatchFromFailedLookupLocationDirectory(typeRoot, typeRootPath, rootPath);
118206
+ typeRoot = isRootedDiskPath(typeRoot) ? normalizePath(typeRoot) : getNormalizedAbsolutePath(typeRoot, getCurrentDirectory());
118207
+ const toWatch = getDirectoryToWatchFromFailedLookupLocationDirectory(
118208
+ getPathComponents(typeRoot),
118209
+ typeRootPathComponents,
118210
+ typeRootPathComponents.length,
118211
+ perceivedOsRootLengthForWatching(typeRootPathComponents, typeRootPathComponents.length),
118212
+ typeRootPathComponents.indexOf("node_modules"),
118213
+ rootPathComponents
118214
+ );
118200
118215
  return toWatch && filterCustomPath(toWatch.dirPath) ? toWatch.dirPath : void 0;
118201
118216
  }
118202
118217
  function getRootDirectoryOfResolutionCache(rootDirForResolution, getCurrentDirectory) {
118203
- return rootDirForResolution && removeTrailingDirectorySeparator(getNormalizedAbsolutePath(rootDirForResolution, getCurrentDirectory()));
118218
+ const normalized = getNormalizedAbsolutePath(rootDirForResolution, getCurrentDirectory());
118219
+ return !isDiskPathRoot(normalized) ? removeTrailingDirectorySeparator(normalized) : normalized;
118204
118220
  }
118205
118221
  function createResolutionCache(resolutionHost, rootDirForResolution, logChangesWhenResolvingModule) {
118206
118222
  let filesWithChangedSetOfUnresolvedImports;
@@ -118232,13 +118248,11 @@ function createResolutionCache(resolutionHost, rootDirForResolution, logChangesW
118232
118248
  resolutionHost.getCompilationSettings(),
118233
118249
  moduleResolutionCache.getPackageJsonInfoCache()
118234
118250
  );
118235
- const failedLookupDefaultExtensions = [".ts" /* Ts */, ".tsx" /* Tsx */, ".js" /* Js */, ".jsx" /* Jsx */, ".json" /* Json */];
118236
- const customFailedLookupPaths = /* @__PURE__ */ new Map();
118237
118251
  const directoryWatchesOfFailedLookups = /* @__PURE__ */ new Map();
118238
118252
  const fileWatchesOfAffectingLocations = /* @__PURE__ */ new Map();
118239
118253
  const rootDir = getRootDirectoryOfResolutionCache(rootDirForResolution, getCurrentDirectory);
118240
- const rootPath = rootDir && resolutionHost.toPath(rootDir);
118241
- const rootSplitLength = rootPath !== void 0 ? rootPath.split(directorySeparator).length : 0;
118254
+ const rootPath = resolutionHost.toPath(rootDir);
118255
+ const rootPathComponents = getPathComponents(rootPath);
118242
118256
  const typeRootsWatches = /* @__PURE__ */ new Map();
118243
118257
  return {
118244
118258
  getModuleResolutionCache: () => moduleResolutionCache,
@@ -118272,7 +118286,6 @@ function createResolutionCache(resolutionHost, rootDirForResolution, logChangesW
118272
118286
  function clear2() {
118273
118287
  clearMap(directoryWatchesOfFailedLookups, closeFileWatcherOf);
118274
118288
  clearMap(fileWatchesOfAffectingLocations, closeFileWatcherOf);
118275
- customFailedLookupPaths.clear();
118276
118289
  nonRelativeExternalModuleResolutions.clear();
118277
118290
  closeTypeRootsWatch();
118278
118291
  resolvedModuleNames.clear();
@@ -118552,9 +118565,6 @@ function createResolutionCache(resolutionHost, rootDirForResolution, logChangesW
118552
118565
  function isNodeModulesAtTypesDirectory(dirPath) {
118553
118566
  return endsWith(dirPath, "/node_modules/@types");
118554
118567
  }
118555
- function isPathWithDefaultFailedLookupExtension(path) {
118556
- return fileExtensionIsOneOf(path, failedLookupDefaultExtensions);
118557
- }
118558
118568
  function watchFailedLookupLocationsOfExternalModuleResolutions(name, resolution, filePath, getResolutionWithResolvedFileName) {
118559
118569
  var _a2, _b;
118560
118570
  if (resolution.refCount) {
@@ -118595,15 +118605,11 @@ function createResolutionCache(resolutionHost, rootDirForResolution, logChangesW
118595
118605
  failedLookupLocationPath,
118596
118606
  rootDir,
118597
118607
  rootPath,
118598
- rootSplitLength,
118608
+ rootPathComponents,
118599
118609
  getCurrentDirectory
118600
118610
  );
118601
118611
  if (toWatch) {
118602
118612
  const { dir, dirPath, nonRecursive } = toWatch;
118603
- if (!isPathWithDefaultFailedLookupExtension(failedLookupLocationPath)) {
118604
- const refCount = customFailedLookupPaths.get(failedLookupLocationPath) || 0;
118605
- customFailedLookupPaths.set(failedLookupLocationPath, refCount + 1);
118606
- }
118607
118613
  if (dirPath === rootPath) {
118608
118614
  Debug.assert(nonRecursive);
118609
118615
  setAtRoot = true;
@@ -118738,20 +118744,11 @@ function createResolutionCache(resolutionHost, rootDirForResolution, logChangesW
118738
118744
  failedLookupLocationPath,
118739
118745
  rootDir,
118740
118746
  rootPath,
118741
- rootSplitLength,
118747
+ rootPathComponents,
118742
118748
  getCurrentDirectory
118743
118749
  );
118744
118750
  if (toWatch) {
118745
118751
  const { dirPath } = toWatch;
118746
- const refCount = customFailedLookupPaths.get(failedLookupLocationPath);
118747
- if (refCount) {
118748
- if (refCount === 1) {
118749
- customFailedLookupPaths.delete(failedLookupLocationPath);
118750
- } else {
118751
- Debug.assert(refCount > 1);
118752
- customFailedLookupPaths.set(failedLookupLocationPath, refCount - 1);
118753
- }
118754
- }
118755
118752
  if (dirPath === rootPath) {
118756
118753
  removeAtRoot = true;
118757
118754
  } else {
@@ -118849,10 +118846,10 @@ function createResolutionCache(resolutionHost, rootDirForResolution, logChangesW
118849
118846
  (failedLookupChecks || (failedLookupChecks = /* @__PURE__ */ new Set())).add(fileOrDirectoryPath);
118850
118847
  (startsWithPathChecks || (startsWithPathChecks = /* @__PURE__ */ new Set())).add(fileOrDirectoryPath);
118851
118848
  } else {
118852
- if (!isPathWithDefaultFailedLookupExtension(fileOrDirectoryPath) && !customFailedLookupPaths.has(fileOrDirectoryPath)) {
118849
+ if (isEmittedFileOfProgram(resolutionHost.getCurrentProgram(), fileOrDirectoryPath)) {
118853
118850
  return false;
118854
118851
  }
118855
- if (isEmittedFileOfProgram(resolutionHost.getCurrentProgram(), fileOrDirectoryPath)) {
118852
+ if (fileExtensionIs(fileOrDirectoryPath, ".map")) {
118856
118853
  return false;
118857
118854
  }
118858
118855
  (failedLookupChecks || (failedLookupChecks = /* @__PURE__ */ new Set())).add(fileOrDirectoryPath);
@@ -118899,7 +118896,7 @@ function createResolutionCache(resolutionHost, rootDirForResolution, logChangesW
118899
118896
  return (_a2 = resolution.failedLookupLocations) == null ? void 0 : _a2.some((location) => isInvalidatedFailedLookup(resolutionHost.toPath(location)));
118900
118897
  }
118901
118898
  function isInvalidatedFailedLookup(locationPath) {
118902
- return (failedLookupChecks == null ? void 0 : failedLookupChecks.has(locationPath)) || firstDefinedIterator((startsWithPathChecks == null ? void 0 : startsWithPathChecks.keys()) || [], (fileOrDirectoryPath) => startsWith(locationPath, fileOrDirectoryPath) ? true : void 0) || firstDefinedIterator((isInDirectoryChecks == null ? void 0 : isInDirectoryChecks.keys()) || [], (fileOrDirectoryPath) => isInDirectoryPath(fileOrDirectoryPath, locationPath) ? true : void 0);
118899
+ return (failedLookupChecks == null ? void 0 : failedLookupChecks.has(locationPath)) || firstDefinedIterator((startsWithPathChecks == null ? void 0 : startsWithPathChecks.keys()) || [], (fileOrDirectoryPath) => startsWith(locationPath, fileOrDirectoryPath) ? true : void 0) || firstDefinedIterator((isInDirectoryChecks == null ? void 0 : isInDirectoryChecks.keys()) || [], (dirPath) => locationPath.length > dirPath.length && startsWith(locationPath, dirPath) && (isDiskPathRoot(dirPath) || locationPath[dirPath.length] === directorySeparator) ? true : void 0);
118903
118900
  }
118904
118901
  function canInvalidatedFailedLookupResolutionWithAffectingLocation(resolution) {
118905
118902
  var _a2;
@@ -118920,6 +118917,8 @@ function createResolutionCache(resolutionHost, rootDirForResolution, logChangesW
118920
118917
  typeRoot,
118921
118918
  typeRootPath,
118922
118919
  rootPath,
118920
+ rootPathComponents,
118921
+ getCurrentDirectory,
118923
118922
  (dirPath2) => directoryWatchesOfFailedLookups.has(dirPath2)
118924
118923
  );
118925
118924
  if (dirPath) {
@@ -118950,7 +118949,7 @@ function createResolutionCache(resolutionHost, rootDirForResolution, logChangesW
118950
118949
  function canWatchTypeRootPath(typeRoot) {
118951
118950
  if (resolutionHost.getCompilationSettings().typeRoots)
118952
118951
  return true;
118953
- return canWatchAtTypes(resolutionHost.toPath(typeRoot), rootPath);
118952
+ return canWatchAtTypes(resolutionHost.toPath(typeRoot));
118954
118953
  }
118955
118954
  }
118956
118955
  function resolutionIsSymlink(resolution) {