Code refactoring for module resolution api (#51675)

* Refactoring so CacheWithRedirects has Key and Value type parameters

* ModuleResolutionCache or TypeRefDirectiveCache will look in directory before solving, so ResolutionCache doesnt need this check

* Test showing module resolution is not shared because resolution cache doesnt update own options

* Enable traceResolution on some of the project reference tests

* Simplify CacheWithRedirects and ensure the options are set in all common scenarios so cache can be shared between redirects
This commit is contained in:
Sheetal Nandi
2022-12-01 10:17:58 -08:00
committed by GitHub
parent 9089d5390a
commit 7b7f6a75ea
18 changed files with 1494 additions and 342 deletions
+4 -7
View File
@@ -99,6 +99,7 @@ import {
createFileDiagnostic,
createGetCanonicalFileName,
createGetSymbolWalker,
createModeAwareCacheKey,
createPrinter,
createPropertyNameNodeForIdentifierOrLiteral,
createScanner,
@@ -337,8 +338,8 @@ import {
hasAccessorModifier,
hasAmbientModifier,
hasContextSensitiveParameters,
hasDecorators,
HasDecorators,
hasDecorators,
hasDynamicName,
hasEffectiveModifier,
hasEffectiveModifiers,
@@ -347,8 +348,8 @@ import {
hasExtension,
HasIllegalDecorators,
HasIllegalModifiers,
hasInitializer,
HasInitializer,
hasInitializer,
hasJSDocNodes,
hasJSDocParameterTags,
hasJsonModuleEmitEnabled,
@@ -7406,7 +7407,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
}
const contextFile = getSourceFileOfNode(getOriginalNode(context.enclosingDeclaration));
const resolutionMode = overrideImportMode || contextFile?.impliedNodeFormat;
const cacheKey = getSpecifierCacheKey(contextFile.path, resolutionMode);
const cacheKey = createModeAwareCacheKey(contextFile.path, resolutionMode);
const links = getSymbolLinks(symbol);
let specifier = links.specifierCache && links.specifierCache.get(cacheKey);
if (!specifier) {
@@ -7435,10 +7436,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
links.specifierCache.set(cacheKey, specifier);
}
return specifier;
function getSpecifierCacheKey(path: string, mode: ResolutionMode | undefined) {
return mode === undefined ? path : `${mode}|${path}`;
}
}
function symbolToEntityNameNode(symbol: Symbol): EntityName {
+98 -108
View File
@@ -5,6 +5,7 @@ import {
changeAnyExtension,
CharacterCodes,
combinePaths,
CommandLineOption,
comparePaths,
Comparison,
CompilerOptions,
@@ -35,6 +36,7 @@ import {
getBaseFileName,
GetCanonicalFileName,
getCommonSourceDirectory,
getCompilerOptionValue,
getDirectoryPath,
GetEffectiveTypeRootsHost,
getEmitModuleKind,
@@ -66,14 +68,13 @@ import {
ModuleKind,
ModuleResolutionHost,
ModuleResolutionKind,
moduleResolutionOptionDeclarations,
noop,
noopPush,
normalizePath,
normalizeSlashes,
optionsHaveModuleResolutionChanges,
PackageId,
packageIdToString,
ParsedCommandLine,
Path,
pathIsRelative,
Pattern,
@@ -718,58 +719,97 @@ export interface PerModuleNameCache {
set(directory: string, result: ResolvedModuleWithFailedLookupLocations): void;
}
/** @internal */
export interface CacheWithRedirects<T> {
getOwnMap: () => Map<string, T>;
redirectsMap: Map<Path, Map<string, T>>;
getOrCreateMapOfCacheRedirects(redirectedReference: ResolvedProjectReference | undefined): Map<string, T>;
clear(): void;
setOwnOptions(newOptions: CompilerOptions): void;
setOwnMap(newOwnMap: Map<string, T>): void;
function compilerOptionValueToString(value: unknown): string {
if (value === null || typeof value !== "object") { // eslint-disable-line no-null/no-null
return "" + value;
}
if (isArray(value)) {
return `[${value.map(e => compilerOptionValueToString(e))?.join(",")}]`;
}
let str = "{";
for (const key in value) {
if (hasProperty(value, key)) {
str += `${key}: ${compilerOptionValueToString((value as any)[key])}`;
}
}
return str + "}";
}
/** @internal */
export function createCacheWithRedirects<T>(options?: CompilerOptions): CacheWithRedirects<T> {
let ownMap: Map<string, T> = new Map();
const redirectsMap = new Map<Path, Map<string, T>>();
export function getKeyForCompilerOptions(options: CompilerOptions, affectingOptionDeclarations: readonly CommandLineOption[]) {
return affectingOptionDeclarations.map(option => compilerOptionValueToString(getCompilerOptionValue(options, option))).join("|") + (options.pathsBasePath ? `|${options.pathsBasePath}` : undefined);
}
/** @internal */
export interface CacheWithRedirects<K, V> {
getOrCreateMapOfCacheRedirects(redirectedReference: ResolvedProjectReference | undefined): Map<K, V>;
update(newOptions: CompilerOptions): void;
clear(): void;
}
/** @internal */
export function createCacheWithRedirects<K, V>(ownOptions: CompilerOptions | undefined): CacheWithRedirects<K, V> {
type RedirectsCacheKey = string & { __compilerOptionsKey: any; };
const redirectsMap = new Map<CompilerOptions, Map<K, V>>();
const optionsToRedirectsKey = new Map<CompilerOptions, RedirectsCacheKey>();
const redirectsKeyToMap = new Map<RedirectsCacheKey, Map<K, V>>();
let ownMap = new Map<K, V>();
if (ownOptions) redirectsMap.set(ownOptions, ownMap);
return {
getOwnMap,
redirectsMap,
getOrCreateMapOfCacheRedirects,
update,
clear,
setOwnOptions,
setOwnMap
};
function getOwnMap() {
return ownMap;
function getOrCreateMapOfCacheRedirects(redirectedReference: ResolvedProjectReference | undefined): Map<K, V> {
return redirectedReference ?
getOrCreateMap(redirectedReference.commandLine.options) :
ownMap;
}
function setOwnOptions(newOptions: CompilerOptions) {
options = newOptions;
}
function setOwnMap(newOwnMap: Map<string, T>) {
ownMap = newOwnMap;
}
function getOrCreateMapOfCacheRedirects(redirectedReference: ResolvedProjectReference | undefined) {
if (!redirectedReference) {
return ownMap;
function update(newOptions: CompilerOptions) {
if (ownOptions !== newOptions) {
if (ownOptions) ownMap = getOrCreateMap(newOptions); // set new map for new options as ownMap
else redirectsMap.set(newOptions, ownMap); // Use existing map if oldOptions = undefined
ownOptions = newOptions;
}
const path = redirectedReference.sourceFile.path;
let redirects = redirectsMap.get(path);
if (!redirects) {
// Reuse map if redirected reference map uses same resolution
redirects = !options || optionsHaveModuleResolutionChanges(options, redirectedReference.commandLine.options) ? new Map() : ownMap;
redirectsMap.set(path, redirects);
}
function getOrCreateMap(redirectOptions: CompilerOptions): Map<K, V> {
let result = redirectsMap.get(redirectOptions);
if (result) return result;
const key = getRedirectsCacheKey(redirectOptions);
result = redirectsKeyToMap.get(key);
if (!result) {
if (ownOptions) {
const ownKey = getRedirectsCacheKey(ownOptions);
if (ownKey === key) result = ownMap;
else if (!redirectsKeyToMap.has(ownKey)) redirectsKeyToMap.set(ownKey, ownMap);
}
redirectsKeyToMap.set(key, result ??= new Map());
}
return redirects;
redirectsMap.set(redirectOptions, result);
return result;
}
function clear() {
const ownKey = ownOptions && optionsToRedirectsKey.get(ownOptions);
ownMap.clear();
redirectsMap.clear();
optionsToRedirectsKey.clear();
redirectsKeyToMap.clear();
if (ownOptions) {
if (ownKey) optionsToRedirectsKey.set(ownOptions, ownKey);
redirectsMap.set(ownOptions, ownMap);
}
}
function getRedirectsCacheKey(options: CompilerOptions) {
let result = optionsToRedirectsKey.get(options);
if (!result) {
optionsToRedirectsKey.set(options, result = getKeyForCompilerOptions(options, moduleResolutionOptionDeclarations) as RedirectsCacheKey);
}
return result;
}
}
@@ -794,7 +834,7 @@ function createPackageJsonInfoCache(currentDirectory: string, getCanonicalFileNa
}
}
function getOrCreateCache<T>(cacheWithRedirects: CacheWithRedirects<T>, redirectedReference: ResolvedProjectReference | undefined, key: string, create: () => T): T {
function getOrCreateCache<K, V>(cacheWithRedirects: CacheWithRedirects<K, V>, redirectedReference: ResolvedProjectReference | undefined, key: K, create: () => V): V {
const cache = cacheWithRedirects.getOrCreateMapOfCacheRedirects(redirectedReference);
let result = cache.get(key);
if (!result) {
@@ -804,35 +844,7 @@ function getOrCreateCache<T>(cacheWithRedirects: CacheWithRedirects<T>, redirect
return result;
}
function updateRedirectsMap<T>(
options: CompilerOptions,
directoryToModuleNameMap: CacheWithRedirects<ModeAwareCache<T>>,
moduleNameToDirectoryMap?: CacheWithRedirects<PerModuleNameCache>
) {
if (!options.configFile) return;
if (directoryToModuleNameMap.redirectsMap.size === 0) {
// The own map will be for projectCompilerOptions
Debug.assert(!moduleNameToDirectoryMap || moduleNameToDirectoryMap.redirectsMap.size === 0);
Debug.assert(directoryToModuleNameMap.getOwnMap().size === 0);
Debug.assert(!moduleNameToDirectoryMap || moduleNameToDirectoryMap.getOwnMap().size === 0);
directoryToModuleNameMap.redirectsMap.set(options.configFile.path, directoryToModuleNameMap.getOwnMap());
moduleNameToDirectoryMap?.redirectsMap.set(options.configFile.path, moduleNameToDirectoryMap.getOwnMap());
}
else {
// Set correct own map
Debug.assert(!moduleNameToDirectoryMap || moduleNameToDirectoryMap.redirectsMap.size > 0);
const ref: ResolvedProjectReference = {
sourceFile: options.configFile,
commandLine: { options } as ParsedCommandLine
};
directoryToModuleNameMap.setOwnMap(directoryToModuleNameMap.getOrCreateMapOfCacheRedirects(ref));
moduleNameToDirectoryMap?.setOwnMap(moduleNameToDirectoryMap.getOrCreateMapOfCacheRedirects(ref));
}
directoryToModuleNameMap.setOwnOptions(options);
moduleNameToDirectoryMap?.setOwnOptions(options);
}
function createPerDirectoryResolutionCache<T>(currentDirectory: string, getCanonicalFileName: GetCanonicalFileName, directoryToModuleNameMap: CacheWithRedirects<ModeAwareCache<T>>): PerDirectoryResolutionCache<T> {
function createPerDirectoryResolutionCache<T>(currentDirectory: string, getCanonicalFileName: GetCanonicalFileName, directoryToModuleNameMap: CacheWithRedirects<Path, ModeAwareCache<T>>): PerDirectoryResolutionCache<T> {
return {
getOrCreateCacheForDirectory,
clear,
@@ -844,19 +856,24 @@ function createPerDirectoryResolutionCache<T>(currentDirectory: string, getCanon
}
function update(options: CompilerOptions) {
updateRedirectsMap(options, directoryToModuleNameMap);
directoryToModuleNameMap.update(options);
}
function getOrCreateCacheForDirectory(directoryName: string, redirectedReference?: ResolvedProjectReference) {
const path = toPath(directoryName, currentDirectory, getCanonicalFileName);
return getOrCreateCache<ModeAwareCache<T>>(directoryToModuleNameMap, redirectedReference, path, () => createModeAwareCache());
return getOrCreateCache(directoryToModuleNameMap, redirectedReference, path, () => createModeAwareCache());
}
}
/** @internal */
export type ModeAwareCacheKey = string & { __modeAwareCacheKey: any; };
/** @internal */
export function createModeAwareCacheKey(specifier: string, mode: ResolutionMode) {
return (mode === undefined ? specifier : `${mode}|${specifier}`) as ModeAwareCacheKey;
}
/** @internal */
export function createModeAwareCache<T>(): ModeAwareCache<T> {
const underlying = new Map<ModeAwareCacheKey, T>();
type ModeAwareCacheKey = string & { __modeAwareCacheKey: any; };
const memoizedReverseKeys = new Map<ModeAwareCacheKey, [specifier: string, mode: ResolutionMode]>();
const cache: ModeAwareCache<T> = {
@@ -887,7 +904,7 @@ export function createModeAwareCache<T>(): ModeAwareCache<T> {
return cache;
function getUnderlyingCacheKey(specifier: string, mode: ResolutionMode) {
const result = (mode === undefined ? specifier : `${mode}|${specifier}`) as ModeAwareCacheKey;
const result = createModeAwareCacheKey(specifier, mode);
memoizedReverseKeys.set(result, [specifier, mode]);
return result;
}
@@ -919,24 +936,10 @@ export function createModuleResolutionCache(
currentDirectory: string,
getCanonicalFileName: (s: string) => string,
options?: CompilerOptions
): ModuleResolutionCache;
/** @internal */
export function createModuleResolutionCache(
currentDirectory: string,
getCanonicalFileName: GetCanonicalFileName,
options: undefined,
directoryToModuleNameMap: CacheWithRedirects<ModeAwareCache<ResolvedModuleWithFailedLookupLocations>>,
moduleNameToDirectoryMap: CacheWithRedirects<PerModuleNameCache>,
): ModuleResolutionCache;
export function createModuleResolutionCache(
currentDirectory: string,
getCanonicalFileName: GetCanonicalFileName,
options?: CompilerOptions,
directoryToModuleNameMap?: CacheWithRedirects<ModeAwareCache<ResolvedModuleWithFailedLookupLocations>>,
moduleNameToDirectoryMap?: CacheWithRedirects<PerModuleNameCache>,
): ModuleResolutionCache {
const perDirectoryResolutionCache = createPerDirectoryResolutionCache(currentDirectory, getCanonicalFileName, directoryToModuleNameMap ||= createCacheWithRedirects(options));
moduleNameToDirectoryMap ||= createCacheWithRedirects(options);
const directoryToModuleNameMap = createCacheWithRedirects<Path, ModeAwareCache<ResolvedModuleWithFailedLookupLocations>>(options);
const perDirectoryResolutionCache = createPerDirectoryResolutionCache(currentDirectory, getCanonicalFileName, directoryToModuleNameMap);
const moduleNameToDirectoryMap = createCacheWithRedirects<ModeAwareCacheKey, PerModuleNameCache>(options);
const packageJsonInfoCache = createPackageJsonInfoCache(currentDirectory, getCanonicalFileName);
return {
@@ -956,20 +959,21 @@ export function createModuleResolutionCache(
function clearAllExceptPackageJsonInfoCache() {
perDirectoryResolutionCache.clear();
moduleNameToDirectoryMap!.clear();
moduleNameToDirectoryMap.clear();
}
function update(options: CompilerOptions) {
updateRedirectsMap(options, directoryToModuleNameMap!, moduleNameToDirectoryMap);
directoryToModuleNameMap.update(options);
moduleNameToDirectoryMap.update(options);
}
function getOrCreateCacheForModuleName(nonRelativeModuleName: string, mode: ResolutionMode, redirectedReference?: ResolvedProjectReference): PerModuleNameCache {
Debug.assert(!isExternalModuleNameRelative(nonRelativeModuleName));
return getOrCreateCache(moduleNameToDirectoryMap!, redirectedReference, mode === undefined ? nonRelativeModuleName : `${mode}|${nonRelativeModuleName}`, createPerModuleNameCache);
return getOrCreateCache(moduleNameToDirectoryMap, redirectedReference, createModeAwareCacheKey(nonRelativeModuleName, mode), createPerModuleNameCache);
}
function createPerModuleNameCache(): PerModuleNameCache {
const directoryPathMap = new Map<string, ResolvedModuleWithFailedLookupLocations>();
const directoryPathMap = new Map<Path, ResolvedModuleWithFailedLookupLocations>();
return { get, set };
@@ -1046,23 +1050,9 @@ export function createTypeReferenceDirectiveResolutionCache(
getCanonicalFileName: (s: string) => string,
options?: CompilerOptions,
packageJsonInfoCache?: PackageJsonInfoCache,
): TypeReferenceDirectiveResolutionCache;
/** @internal */
export function createTypeReferenceDirectiveResolutionCache(
currentDirectory: string,
getCanonicalFileName: GetCanonicalFileName,
options: undefined,
packageJsonInfoCache: PackageJsonInfoCache | undefined,
directoryToModuleNameMap: CacheWithRedirects<ModeAwareCache<ResolvedTypeReferenceDirectiveWithFailedLookupLocations>>,
): TypeReferenceDirectiveResolutionCache;
export function createTypeReferenceDirectiveResolutionCache(
currentDirectory: string,
getCanonicalFileName: GetCanonicalFileName,
options?: CompilerOptions,
packageJsonInfoCache?: PackageJsonInfoCache | undefined,
directoryToModuleNameMap?: CacheWithRedirects<ModeAwareCache<ResolvedTypeReferenceDirectiveWithFailedLookupLocations>>,
): TypeReferenceDirectiveResolutionCache {
const perDirectoryResolutionCache = createPerDirectoryResolutionCache(currentDirectory, getCanonicalFileName, directoryToModuleNameMap ||= createCacheWithRedirects(options));
const directoryToModuleNameMap = createCacheWithRedirects<Path, ModeAwareCache<ResolvedTypeReferenceDirectiveWithFailedLookupLocations>>(options);
const perDirectoryResolutionCache = createPerDirectoryResolutionCache(currentDirectory, getCanonicalFileName, directoryToModuleNameMap);
packageJsonInfoCache ||= createPackageJsonInfoCache(currentDirectory, getCanonicalFileName);
return {
+8 -10
View File
@@ -814,17 +814,16 @@ export function loadWithTypeDirectiveCache<T>(names: string[] | readonly FileRef
return [];
}
const resolutions: T[] = [];
const cache = new Map<string, T>();
const cache = createModeAwareCache<T>();
for (const name of names) {
let result: T;
const mode = getModeForFileReference(name, containingFileMode);
const strName = getResolutionName(name);
const cacheKey = mode !== undefined ? `${mode}|${strName}` : strName;
if (cache.has(cacheKey)) {
result = cache.get(cacheKey)!;
if (cache.has(strName, mode)) {
result = cache.get(strName, mode)!;
}
else {
cache.set(cacheKey, result = loader(strName, containingFile, redirectedReference, mode));
cache.set(strName, mode, result = loader(strName, containingFile, redirectedReference, mode));
}
resolutions.push(result);
}
@@ -944,7 +943,7 @@ export function loadWithModeAwareCache<T>(names: readonly StringLiteralLike[] |
return [];
}
const resolutions: T[] = [];
const cache = new Map<string, T>();
const cache = createModeAwareCache<T>();
let i = 0;
for (const entry of resolutionInfo ? resolutionInfo.names : names) {
let result: T;
@@ -953,12 +952,11 @@ export function loadWithModeAwareCache<T>(names: readonly StringLiteralLike[] |
getModeForResolutionAtIndex(containingFile, i);
i++;
const name = isString(entry) ? entry : entry.text;
const cacheKey = mode !== undefined ? `${mode}|${name}` : name;
if (cache.has(cacheKey)) {
result = cache.get(cacheKey)!;
if (cache.has(name, mode)) {
result = cache.get(name, mode)!;
}
else {
cache.set(cacheKey, result = loader(name, mode, containingFileName, redirectedReference));
cache.set(name, mode, result = loader(name, mode, containingFileName, redirectedReference));
}
resolutions.push(result);
}
+12 -59
View File
@@ -2,14 +2,12 @@ import * as ts from "./_namespaces/ts";
import {
arrayToMap,
CachedDirectoryStructureHost,
CacheWithRedirects,
CharacterCodes,
clearMap,
closeFileWatcher,
closeFileWatcherOf,
CompilerOptions,
contains,
createCacheWithRedirects,
createModeAwareCache,
createModuleResolutionCache,
createMultiMap,
@@ -65,7 +63,6 @@ import {
parseNodeModuleFromPath,
Path,
pathContainsNodeModules,
PerModuleNameCache,
Program,
removeSuffix,
removeTrailingDirectorySeparator,
@@ -292,24 +289,18 @@ export function createResolutionCache(resolutionHost: ResolutionCacheHost, rootD
// The key in the map is source file's path.
// The values are Map of resolutions with key being name lookedup.
const resolvedModuleNames = new Map<Path, ModeAwareCache<CachedResolvedModuleWithFailedLookupLocations>>();
const perDirectoryResolvedModuleNames: CacheWithRedirects<ModeAwareCache<CachedResolvedModuleWithFailedLookupLocations>> = createCacheWithRedirects();
const nonRelativeModuleNameCache: CacheWithRedirects<PerModuleNameCache> = createCacheWithRedirects();
const moduleResolutionCache = createModuleResolutionCache(
getCurrentDirectory(),
resolutionHost.getCanonicalFileName,
/*options*/ undefined,
perDirectoryResolvedModuleNames,
nonRelativeModuleNameCache,
resolutionHost.getCompilationSettings(),
);
const resolvedTypeReferenceDirectives = new Map<Path, ModeAwareCache<CachedResolvedTypeReferenceDirectiveWithFailedLookupLocations>>();
const perDirectoryResolvedTypeReferenceDirectives: CacheWithRedirects<ModeAwareCache<CachedResolvedTypeReferenceDirectiveWithFailedLookupLocations>> = createCacheWithRedirects();
const typeReferenceDirectiveResolutionCache = createTypeReferenceDirectiveResolutionCache(
getCurrentDirectory(),
resolutionHost.getCanonicalFileName,
/*options*/ undefined,
resolutionHost.getCompilationSettings(),
moduleResolutionCache.getPackageJsonInfoCache(),
perDirectoryResolvedTypeReferenceDirectives
);
/**
@@ -387,6 +378,8 @@ export function createResolutionCache(resolutionHost: ResolutionCacheHost, rootD
affectingPathChecksForFile = undefined;
moduleResolutionCache.clear();
typeReferenceDirectiveResolutionCache.clear();
moduleResolutionCache.update(resolutionHost.getCompilationSettings());
typeReferenceDirectiveResolutionCache.update(resolutionHost.getCompilationSettings());
impliedFormatPackageJsons.clear();
hasChangedAutomaticTypeDirectiveNames = false;
}
@@ -514,8 +507,7 @@ export function createResolutionCache(resolutionHost: ResolutionCacheHost, rootD
names: readonly string[] | readonly FileReference[];
containingFile: string;
redirectedReference: ResolvedProjectReference | undefined;
cache: Map<Path, ModeAwareCache<T>>;
perDirectoryCacheWithRedirects: CacheWithRedirects<ModeAwareCache<T>>;
perFileCache: Map<Path, ModeAwareCache<T>>;
loader: (name: string, containingFile: string, options: CompilerOptions, host: ModuleResolutionHost, redirectedReference?: ResolvedProjectReference, containingSourceFile?: SourceFile, resolutionMode?: ResolutionMode) => T;
getResolutionWithResolvedFileName: GetResolutionWithResolvedFileName<T, R>;
shouldRetryResolution: (t: T) => boolean;
@@ -527,19 +519,12 @@ export function createResolutionCache(resolutionHost: ResolutionCacheHost, rootD
}
function resolveNamesWithLocalCache<T extends ResolutionWithFailedLookupLocations, R extends ResolutionWithResolvedFileName>({
names, containingFile, redirectedReference,
cache, perDirectoryCacheWithRedirects,
perFileCache,
loader, getResolutionWithResolvedFileName,
shouldRetryResolution, reusedNames, resolutionInfo, logChanges, containingSourceFile, containingSourceFileMode
}: ResolveNamesWithLocalCacheInput<T, R>): (R | undefined)[] {
const path = resolutionHost.toPath(containingFile);
const resolutionsInFile = cache.get(path) || cache.set(path, createModeAwareCache()).get(path)!;
const dirPath = getDirectoryPath(path);
const perDirectoryCache = perDirectoryCacheWithRedirects.getOrCreateMapOfCacheRedirects(redirectedReference);
let perDirectoryResolution = perDirectoryCache.get(dirPath);
if (!perDirectoryResolution) {
perDirectoryResolution = createModeAwareCache();
perDirectoryCache.set(dirPath, perDirectoryResolution);
}
const resolutionsInFile = perFileCache.get(path) || perFileCache.set(path, createModeAwareCache()).get(path)!;
const resolvedModules: (R | undefined)[] = [];
const compilerOptions = resolutionHost.getCompilationSettings();
const hasInvalidatedNonRelativeUnresolvedImport = logChanges && isFileWithInvalidatedNonRelativeUnresolvedImports(path);
@@ -575,39 +560,9 @@ export function createResolutionCache(resolutionHost: ResolutionCacheHost, rootD
// If the name is unresolved import that was invalidated, recalculate
(hasInvalidatedNonRelativeUnresolvedImport && !isExternalModuleNameRelative(name) && shouldRetryResolution(resolution))) {
const existingResolution = resolution;
const resolutionInDirectory = perDirectoryResolution.get(name, mode);
if (resolutionInDirectory) {
resolution = resolutionInDirectory;
const host = resolutionHost.getCompilerHost?.() || resolutionHost;
if (isTraceEnabled(compilerOptions, host)) {
const resolved = getResolutionWithResolvedFileName(resolution);
trace(
host,
loader === resolveModuleName as unknown ?
resolved?.resolvedFileName ?
resolved.packageId ?
Diagnostics.Reusing_resolution_of_module_0_from_1_found_in_cache_from_location_2_it_was_successfully_resolved_to_3_with_Package_ID_4 :
Diagnostics.Reusing_resolution_of_module_0_from_1_found_in_cache_from_location_2_it_was_successfully_resolved_to_3 :
Diagnostics.Reusing_resolution_of_module_0_from_1_found_in_cache_from_location_2_it_was_not_resolved :
resolved?.resolvedFileName ?
resolved.packageId ?
Diagnostics.Reusing_resolution_of_type_reference_directive_0_from_1_found_in_cache_from_location_2_it_was_successfully_resolved_to_3_with_Package_ID_4 :
Diagnostics.Reusing_resolution_of_type_reference_directive_0_from_1_found_in_cache_from_location_2_it_was_successfully_resolved_to_3 :
Diagnostics.Reusing_resolution_of_type_reference_directive_0_from_1_found_in_cache_from_location_2_it_was_not_resolved,
name,
containingFile,
getDirectoryPath(containingFile),
resolved?.resolvedFileName,
resolved?.packageId && packageIdToString(resolved.packageId)
);
}
}
else {
resolution = loader(name, containingFile, compilerOptions, resolutionHost.getCompilerHost?.() || resolutionHost, redirectedReference, containingSourceFile, mode);
perDirectoryResolution.set(name, mode, resolution);
if (resolutionHost.onDiscoveredSymlink && resolutionIsSymlink(resolution)) {
resolutionHost.onDiscoveredSymlink();
}
resolution = loader(name, containingFile, compilerOptions, resolutionHost.getCompilerHost?.() || resolutionHost, redirectedReference, containingSourceFile, mode);
if (resolutionHost.onDiscoveredSymlink && resolutionIsSymlink(resolution)) {
resolutionHost.onDiscoveredSymlink();
}
resolutionsInFile.set(name, mode, resolution);
watchFailedLookupLocationsOfExternalModuleResolutions(name, resolution, path, getResolutionWithResolvedFileName);
@@ -703,8 +658,7 @@ export function createResolutionCache(resolutionHost: ResolutionCacheHost, rootD
names: typeDirectiveNames,
containingFile,
redirectedReference,
cache: resolvedTypeReferenceDirectives,
perDirectoryCacheWithRedirects: perDirectoryResolvedTypeReferenceDirectives,
perFileCache: resolvedTypeReferenceDirectives,
loader: resolveTypeReferenceDirective,
getResolutionWithResolvedFileName: getResolvedTypeReferenceDirective,
shouldRetryResolution: resolution => resolution.resolvedTypeReferenceDirective === undefined,
@@ -725,8 +679,7 @@ export function createResolutionCache(resolutionHost: ResolutionCacheHost, rootD
names: moduleNames,
containingFile,
redirectedReference,
cache: resolvedModuleNames,
perDirectoryCacheWithRedirects: perDirectoryResolvedModuleNames,
perFileCache: resolvedModuleNames,
loader: resolveModuleName,
getResolutionWithResolvedFileName: getResolvedModule,
shouldRetryResolution: resolution => !resolution.resolvedModule || !resolutionExtensionIsTSOrJson(resolution.resolvedModule.extension),
+2 -1
View File
@@ -4,6 +4,7 @@ import {
EmitHelperFactory,
MapLike,
ModeAwareCache,
ModeAwareCacheKey,
ModuleResolutionCache,
MultiMap,
NodeFactoryFlags,
@@ -5503,7 +5504,7 @@ export interface SymbolLinks {
enumKind?: EnumKind; // Enum declaration classification
originatingImport?: ImportDeclaration | ImportCall; // Import declaration which produced the symbol, present if the symbol is marked as uncallable but had call signatures in `resolveESModuleSymbol`
lateSymbol?: Symbol; // Late-bound symbol for a computed property
specifierCache?: Map<string, string>; // For symbols corresponding to external modules, a cache of incoming path -> module specifier name mappings
specifierCache?: Map<ModeAwareCacheKey, string>; // For symbols corresponding to external modules, a cache of incoming path -> module specifier name mappings
extendedContainers?: Symbol[]; // Containers (other than the parent) which this symbol is aliased in
extendedContainersByFile?: Map<NodeId, Symbol[]>; // Containers (other than the parent) which this symbol is aliased in
variances?: VarianceFlags[]; // Alias symbol type argument variance cache
+2 -21
View File
@@ -8,17 +8,14 @@ import {
ensureScriptKind,
firstDefinedIterator,
forEachEntry,
getCompilerOptionValue,
getEmitScriptTarget,
getImpliedNodeFormatForFile,
getKeyForCompilerOptions,
getOrUpdate,
getSetExternalModuleIndicator,
hasProperty,
identity,
isArray,
IScriptSnapshot,
isDeclarationFileName,
map,
MinimalResolutionCacheHost,
Path,
ResolutionMode,
@@ -407,24 +404,8 @@ export function createDocumentRegistryInternal(useCaseSensitiveFileNames?: boole
};
}
function compilerOptionValueToString(value: unknown): string {
if (value === null || typeof value !== "object") { // eslint-disable-line no-null/no-null
return "" + value;
}
if (isArray(value)) {
return `[${map(value, e => compilerOptionValueToString(e))?.join(",")}]`;
}
let str = "{";
for (const key in value) {
if (hasProperty(value, key)) {
str += `${key}: ${compilerOptionValueToString((value as any)[key])}`;
}
}
return str + "}";
}
function getKeyForCompilationSettings(settings: CompilerOptions): DocumentRegistryBucketKey {
return sourceFileAffectingCompilerOptions.map(option => compilerOptionValueToString(getCompilerOptionValue(settings, option))).join("|") + (settings.pathsBasePath ? `|${settings.pathsBasePath}` : undefined) as DocumentRegistryBucketKey;
return getKeyForCompilerOptions(settings, sourceFileAffectingCompilerOptions) as DocumentRegistryBucketKey;
}
function getDocumentRegistryBucketKeyWithMode(key: DocumentRegistryBucketKey, mode: ResolutionMode) {
@@ -30,7 +30,7 @@ describe("unittests:: tsc-watch:: projects with references: invoking when refere
],
{ currentDirectory: `/user/username/projects/sample1` }
),
commandLineArgs: ["-w", "-p", "tests"],
commandLineArgs: ["-w", "-p", "tests", "--traceResolution", "--explainFiles"],
changes: [
{
caption: "local edit in logic ts, and build logic",
@@ -91,7 +91,7 @@ describe("unittests:: tsc-watch:: projects with references: invoking when refere
],
{ currentDirectory: `/user/username/projects/transitiveReferences` }
),
commandLineArgs: ["-w", "-p", "tsconfig.c.json"],
commandLineArgs: ["-w", "-p", "tsconfig.c.json", "--traceResolution", "--explainFiles"],
changes: [
{
caption: "non local edit b ts, and build b",
@@ -179,7 +179,7 @@ describe("unittests:: tsc-watch:: projects with references: invoking when refere
],
{ currentDirectory: `/user/username/projects/transitiveReferences` }
),
commandLineArgs: ["-w", "-p", "tsconfig.c.json"],
commandLineArgs: ["-w", "-p", "tsconfig.c.json", "--traceResolution", "--explainFiles"],
changes: ts.emptyArray,
baselineDependencies: true,
});
@@ -234,7 +234,7 @@ X;`,
],
{ currentDirectory: `/user/username/projects/transitiveReferences` }
),
commandLineArgs: ["-w", "-p", "c"],
commandLineArgs: ["-w", "-p", "c", "--traceResolution", "--explainFiles"],
changes: [
{
caption: "non local edit b ts, and build b",
@@ -353,7 +353,7 @@ X;`,
],
{ currentDirectory: `/user/username/projects/transitiveReferences` }
),
commandLineArgs: ["-w", "-p", "c"],
commandLineArgs: ["-w", "-p", "c", "--traceResolution", "--explainFiles"],
changes: [
{
caption: "non local edit b ts, and build b",
@@ -439,7 +439,7 @@ X;`,
],
{ currentDirectory: `/user/username/projects/sample1` }
),
commandLineArgs: ["-w", "-p", "logic"],
commandLineArgs: ["-w", "-p", "logic", "--traceResolution", "--explainFiles"],
changes: [
{
caption: "change declration map in core",
@@ -1,10 +1,14 @@
import * as ts from "../../_namespaces/ts";
import * as Utils from "../../_namespaces/Utils";
import {
createServerHost,
File,
libFile,
TestServerHost,
} from "../virtualFileSystemWithWatch";
import {
compilerOptionsToConfigJson,
} from "../tsc/helpers";
import {
baselineTsserverLogs,
checkNumberOfProjects,
@@ -630,3 +634,73 @@ export const x = 10;`
});
});
});
describe("unittests:: tsserver:: resolutionCache:: tsserverProjectSystem with project references", () => {
it("sharing across references", () => {
const host = createServerHost({
"/src/projects/node_modules/moduleX/index.d.ts": "export const x = 10;",
"/src/projects/common/tsconfig.json": JSON.stringify({
compilerOptions: compilerOptionsToConfigJson({
composite: true,
traceResolution: true,
}),
}),
"/src/projects/common/moduleA.ts": "export const a = 10;",
"/src/projects/common/moduleB.ts": Utils.dedent`
import { x } from "moduleX";
export const b = x;
`,
"/src/projects/app/tsconfig.json": JSON.stringify({
compilerOptions: compilerOptionsToConfigJson({
composite: true,
traceResolution: true,
}),
references: [{ path: "../common" }],
}),
"/src/projects/app/appA.ts": Utils.dedent`
import { x } from "moduleX";
export const y = x;
`,
"/src/projects/app/appB.ts": Utils.dedent`
import { x } from "../common/moduleB";
export const y = x;
`,
});
const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) });
openFilesForSession(["/src/projects/app/appB.ts"], session);
baselineTsserverLogs("resolutionCache", "sharing across references", session);
});
it("not sharing across references", () => {
const host = createServerHost({
"/src/projects/node_modules/moduleX/index.d.ts": "export const x = 10;",
"/src/projects/common/tsconfig.json": JSON.stringify({
compilerOptions: { composite: true, traceResolution: true },
}),
"/src/projects/common/moduleA.ts": "export const a = 10;",
"/src/projects/common/moduleB.ts": Utils.dedent`
import { x } from "moduleX";
export const b = x;
`,
"/src/projects/app/tsconfig.json": JSON.stringify({
compilerOptions: {
composite: true,
traceResolution: true,
typeRoots: [], // Just some sample option that is different across the projects
},
references: [{ path: "../common" }],
}),
"/src/projects/app/appA.ts": Utils.dedent`
import { x } from "moduleX";
export const y = x;
`,
"/src/projects/app/appB.ts": Utils.dedent`
import { x } from "../common/moduleB";
export const y = x;
`,
});
const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) });
openFilesForSession(["/src/projects/app/appB.ts"], session);
baselineTsserverLogs("resolutionCache", "not sharing across references", session);
});
});
@@ -395,17 +395,50 @@ export declare const m: typeof mod;
}
/a/lib/tsc.js -w -p tests
/a/lib/tsc.js -w -p tests --traceResolution --explainFiles
Output::
>> Screen clear
[12:01:16 AM] Starting compilation in watch mode...
======== Resolving module '../core/index' from '/user/username/projects/sample1/tests/index.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
Loading module as file / folder, candidate module location '/user/username/projects/sample1/core/index', target file types: TypeScript, Declaration.
File '/user/username/projects/sample1/core/index.ts' exist - use it as a name resolution result.
======== Module name '../core/index' was successfully resolved to '/user/username/projects/sample1/core/index.ts'. ========
======== Resolving module '../logic/index' from '/user/username/projects/sample1/tests/index.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
Loading module as file / folder, candidate module location '/user/username/projects/sample1/logic/index', target file types: TypeScript, Declaration.
File '/user/username/projects/sample1/logic/index.ts' exist - use it as a name resolution result.
======== Module name '../logic/index' was successfully resolved to '/user/username/projects/sample1/logic/index.ts'. ========
======== Resolving module '../core/anotherModule' from '/user/username/projects/sample1/tests/index.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
Loading module as file / folder, candidate module location '/user/username/projects/sample1/core/anotherModule', target file types: TypeScript, Declaration.
File '/user/username/projects/sample1/core/anotherModule.ts' exist - use it as a name resolution result.
======== Module name '../core/anotherModule' was successfully resolved to '/user/username/projects/sample1/core/anotherModule.ts'. ========
======== Resolving module '../core/anotherModule' from '/user/username/projects/sample1/logic/index.ts'. ========
Using compiler options of project reference redirect '/user/username/projects/sample1/logic/tsconfig.json'.
Module resolution kind is not specified, using 'NodeJs'.
======== Module name '../core/anotherModule' was successfully resolved to '/user/username/projects/sample1/core/anotherModule.ts'. ========
../../../../a/lib/lib.d.ts
Default library for target 'es3'
core/index.d.ts
Imported via '../core/index' from file 'tests/index.ts'
File is output of project reference source 'core/index.ts'
core/anotherModule.d.ts
Imported via '../core/anotherModule' from file 'logic/index.d.ts'
Imported via '../core/anotherModule' from file 'tests/index.ts'
File is output of project reference source 'core/anotherModule.ts'
logic/index.d.ts
Imported via '../logic/index' from file 'tests/index.ts'
File is output of project reference source 'logic/index.ts'
tests/index.ts
Part of 'files' list in tsconfig.json
[12:01:17 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/sample1/tests/index.ts"]
Program options: {"composite":true,"declaration":true,"forceConsistentCasingInFileNames":true,"skipDefaultLibCheck":true,"watch":true,"project":"/user/username/projects/sample1/tests","configFilePath":"/user/username/projects/sample1/tests/tsconfig.json"}
Program options: {"composite":true,"declaration":true,"forceConsistentCasingInFileNames":true,"skipDefaultLibCheck":true,"watch":true,"project":"/user/username/projects/sample1/tests","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/sample1/tests/tsconfig.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -733,12 +766,27 @@ Output::
>> Screen clear
[12:01:51 AM] File change detected. Starting incremental compilation...
Reusing resolution of module '../core/anotherModule' from '/user/username/projects/sample1/logic/index.ts' of old program, it was successfully resolved to '/user/username/projects/sample1/core/anotherModule.ts'.
../../../../a/lib/lib.d.ts
Default library for target 'es3'
core/index.d.ts
Imported via '../core/index' from file 'tests/index.ts'
File is output of project reference source 'core/index.ts'
core/anotherModule.d.ts
Imported via '../core/anotherModule' from file 'logic/index.d.ts'
Imported via '../core/anotherModule' from file 'tests/index.ts'
File is output of project reference source 'core/anotherModule.ts'
logic/index.d.ts
Imported via '../logic/index' from file 'tests/index.ts'
File is output of project reference source 'logic/index.ts'
tests/index.ts
Part of 'files' list in tsconfig.json
[12:01:58 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/sample1/tests/index.ts"]
Program options: {"composite":true,"declaration":true,"forceConsistentCasingInFileNames":true,"skipDefaultLibCheck":true,"watch":true,"project":"/user/username/projects/sample1/tests","configFilePath":"/user/username/projects/sample1/tests/tsconfig.json"}
Program options: {"composite":true,"declaration":true,"forceConsistentCasingInFileNames":true,"skipDefaultLibCheck":true,"watch":true,"project":"/user/username/projects/sample1/tests","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/sample1/tests/tsconfig.json"}
Program structureReused: Completely
Program files::
/a/lib/lib.d.ts
@@ -1009,12 +1057,33 @@ Output::
>> Screen clear
[12:02:20 AM] File change detected. Starting incremental compilation...
Reusing resolution of module '../core/index' from '/user/username/projects/sample1/tests/index.ts' of old program, it was successfully resolved to '/user/username/projects/sample1/core/index.ts'.
Reusing resolution of module '../logic/index' from '/user/username/projects/sample1/tests/index.ts' of old program, it was successfully resolved to '/user/username/projects/sample1/logic/index.ts'.
Reusing resolution of module '../core/anotherModule' from '/user/username/projects/sample1/tests/index.ts' of old program, it was successfully resolved to '/user/username/projects/sample1/core/anotherModule.ts'.
======== Resolving module '../core/anotherModule' from '/user/username/projects/sample1/logic/index.ts'. ========
Using compiler options of project reference redirect '/user/username/projects/sample1/logic/tsconfig.json'.
Module resolution kind is not specified, using 'NodeJs'.
======== Module name '../core/anotherModule' was successfully resolved to '/user/username/projects/sample1/core/anotherModule.ts'. ========
../../../../a/lib/lib.d.ts
Default library for target 'es3'
core/index.d.ts
Imported via '../core/index' from file 'tests/index.ts'
File is output of project reference source 'core/index.ts'
core/anotherModule.d.ts
Imported via '../core/anotherModule' from file 'logic/decls/index.d.ts'
Imported via '../core/anotherModule' from file 'tests/index.ts'
File is output of project reference source 'core/anotherModule.ts'
logic/decls/index.d.ts
Imported via '../logic/index' from file 'tests/index.ts'
File is output of project reference source 'logic/index.ts'
tests/index.ts
Part of 'files' list in tsconfig.json
[12:02:27 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/sample1/tests/index.ts"]
Program options: {"composite":true,"declaration":true,"forceConsistentCasingInFileNames":true,"skipDefaultLibCheck":true,"watch":true,"project":"/user/username/projects/sample1/tests","configFilePath":"/user/username/projects/sample1/tests/tsconfig.json"}
Program options: {"composite":true,"declaration":true,"forceConsistentCasingInFileNames":true,"skipDefaultLibCheck":true,"watch":true,"project":"/user/username/projects/sample1/tests","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/sample1/tests/tsconfig.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -186,17 +186,53 @@ a_1.X;
/a/lib/tsc.js -w -p c
/a/lib/tsc.js -w -p c --traceResolution --explainFiles
Output::
>> Screen clear
[12:00:59 AM] Starting compilation in watch mode...
======== Resolving module '../b' from '/user/username/projects/transitiveReferences/c/index.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
Loading module as file / folder, candidate module location '/user/username/projects/transitiveReferences/b', target file types: TypeScript, Declaration.
File '/user/username/projects/transitiveReferences/b.ts' does not exist.
File '/user/username/projects/transitiveReferences/b.tsx' does not exist.
File '/user/username/projects/transitiveReferences/b.d.ts' does not exist.
File '/user/username/projects/transitiveReferences/b/package.json' does not exist.
File '/user/username/projects/transitiveReferences/b/index.ts' exist - use it as a name resolution result.
======== Module name '../b' was successfully resolved to '/user/username/projects/transitiveReferences/b/index.ts'. ========
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/c/index.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
'baseUrl' option is set to '/user/username/projects/transitiveReferences/c', using this value to resolve non-relative module name '@ref/a'.
'paths' option is specified, looking for a pattern to match module name '@ref/a'.
Module name '@ref/a', matched pattern '@ref/*'.
Trying substitution '../refs/*', candidate module location: '../refs/a'.
Loading module as file / folder, candidate module location '/user/username/projects/transitiveReferences/refs/a', target file types: TypeScript, Declaration.
File '/user/username/projects/transitiveReferences/refs/a.ts' does not exist.
File '/user/username/projects/transitiveReferences/refs/a.tsx' does not exist.
File '/user/username/projects/transitiveReferences/refs/a.d.ts' exist - use it as a name resolution result.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'. ========
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/b/index.ts'. ========
Using compiler options of project reference redirect '/user/username/projects/transitiveReferences/b/tsconfig.json'.
Module resolution kind is not specified, using 'NodeJs'.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/a/index.ts'. ========
../../../../a/lib/lib.d.ts
Default library for target 'es3'
a/index.d.ts
Imported via '@ref/a' from file 'b/index.d.ts'
File is output of project reference source 'a/index.ts'
b/index.d.ts
Imported via '../b' from file 'c/index.ts'
File is output of project reference source 'b/index.ts'
refs/a.d.ts
Imported via "@ref/a" from file 'c/index.ts'
c/index.ts
Matched by default include pattern '**/*'
[12:01:03 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c/index.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -370,12 +406,25 @@ Output::
>> Screen clear
[12:01:19 AM] File change detected. Starting incremental compilation...
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/b/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/a/index.ts'.
../../../../a/lib/lib.d.ts
Default library for target 'es3'
a/index.d.ts
Imported via '@ref/a' from file 'b/index.d.ts'
File is output of project reference source 'a/index.ts'
b/index.d.ts
Imported via '../b' from file 'c/index.ts'
File is output of project reference source 'b/index.ts'
refs/a.d.ts
Imported via "@ref/a" from file 'c/index.ts'
c/index.ts
Matched by default include pattern '**/*'
[12:01:23 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c/index.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program structureReused: Completely
Program files::
/a/lib/lib.d.ts
@@ -468,12 +517,48 @@ Output::
>> Screen clear
[12:01:31 AM] File change detected. Starting incremental compilation...
======== Resolving module '../b' from '/user/username/projects/transitiveReferences/c/index.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
Loading module as file / folder, candidate module location '/user/username/projects/transitiveReferences/b', target file types: TypeScript, Declaration.
File '/user/username/projects/transitiveReferences/b.ts' does not exist.
File '/user/username/projects/transitiveReferences/b.tsx' does not exist.
File '/user/username/projects/transitiveReferences/b.d.ts' does not exist.
File '/user/username/projects/transitiveReferences/b/package.json' does not exist.
File '/user/username/projects/transitiveReferences/b/index.ts' exist - use it as a name resolution result.
======== Module name '../b' was successfully resolved to '/user/username/projects/transitiveReferences/b/index.ts'. ========
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/c/index.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
'baseUrl' option is set to '/user/username/projects/transitiveReferences/c', using this value to resolve non-relative module name '@ref/a'.
'paths' option is specified, looking for a pattern to match module name '@ref/a'.
Module name '@ref/a', matched pattern '@ref/*'.
Trying substitution '../nrefs/*', candidate module location: '../nrefs/a'.
Loading module as file / folder, candidate module location '/user/username/projects/transitiveReferences/nrefs/a', target file types: TypeScript, Declaration.
File '/user/username/projects/transitiveReferences/nrefs/a.ts' does not exist.
File '/user/username/projects/transitiveReferences/nrefs/a.tsx' does not exist.
File '/user/username/projects/transitiveReferences/nrefs/a.d.ts' exist - use it as a name resolution result.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/nrefs/a.d.ts'. ========
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/b/index.ts'. ========
Using compiler options of project reference redirect '/user/username/projects/transitiveReferences/b/tsconfig.json'.
Module resolution kind is not specified, using 'NodeJs'.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/a/index.ts'. ========
../../../../a/lib/lib.d.ts
Default library for target 'es3'
a/index.d.ts
Imported via '@ref/a' from file 'b/index.d.ts'
File is output of project reference source 'a/index.ts'
b/index.d.ts
Imported via '../b' from file 'c/index.ts'
File is output of project reference source 'b/index.ts'
nrefs/a.d.ts
Imported via "@ref/a" from file 'c/index.ts'
c/index.ts
Matched by default include pattern '**/*'
[12:01:35 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c/index.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../nrefs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../nrefs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -561,12 +646,48 @@ Output::
>> Screen clear
[12:01:39 AM] File change detected. Starting incremental compilation...
======== Resolving module '../b' from '/user/username/projects/transitiveReferences/c/index.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
Loading module as file / folder, candidate module location '/user/username/projects/transitiveReferences/b', target file types: TypeScript, Declaration.
File '/user/username/projects/transitiveReferences/b.ts' does not exist.
File '/user/username/projects/transitiveReferences/b.tsx' does not exist.
File '/user/username/projects/transitiveReferences/b.d.ts' does not exist.
File '/user/username/projects/transitiveReferences/b/package.json' does not exist.
File '/user/username/projects/transitiveReferences/b/index.ts' exist - use it as a name resolution result.
======== Module name '../b' was successfully resolved to '/user/username/projects/transitiveReferences/b/index.ts'. ========
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/c/index.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
'baseUrl' option is set to '/user/username/projects/transitiveReferences/c', using this value to resolve non-relative module name '@ref/a'.
'paths' option is specified, looking for a pattern to match module name '@ref/a'.
Module name '@ref/a', matched pattern '@ref/*'.
Trying substitution '../refs/*', candidate module location: '../refs/a'.
Loading module as file / folder, candidate module location '/user/username/projects/transitiveReferences/refs/a', target file types: TypeScript, Declaration.
File '/user/username/projects/transitiveReferences/refs/a.ts' does not exist.
File '/user/username/projects/transitiveReferences/refs/a.tsx' does not exist.
File '/user/username/projects/transitiveReferences/refs/a.d.ts' exist - use it as a name resolution result.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'. ========
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/b/index.ts'. ========
Using compiler options of project reference redirect '/user/username/projects/transitiveReferences/b/tsconfig.json'.
Module resolution kind is not specified, using 'NodeJs'.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/a/index.ts'. ========
../../../../a/lib/lib.d.ts
Default library for target 'es3'
a/index.d.ts
Imported via '@ref/a' from file 'b/index.d.ts'
File is output of project reference source 'a/index.ts'
b/index.d.ts
Imported via '../b' from file 'c/index.ts'
File is output of project reference source 'b/index.ts'
refs/a.d.ts
Imported via "@ref/a" from file 'c/index.ts'
c/index.ts
Matched by default include pattern '**/*'
[12:01:43 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c/index.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -654,12 +775,29 @@ Output::
>> Screen clear
[12:01:47 AM] File change detected. Starting incremental compilation...
Reusing resolution of module '../b' from '/user/username/projects/transitiveReferences/c/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/b/index.ts'.
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/c/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'.
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/b/index.ts'. ========
Using compiler options of project reference redirect '/user/username/projects/transitiveReferences/b/tsconfig.json'.
Module resolution kind is not specified, using 'NodeJs'.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/nrefs/a.d.ts'. ========
../../../../a/lib/lib.d.ts
Default library for target 'es3'
nrefs/a.d.ts
Imported via '@ref/a' from file 'b/index.d.ts'
b/index.d.ts
Imported via '../b' from file 'c/index.ts'
File is output of project reference source 'b/index.ts'
refs/a.d.ts
Imported via "@ref/a" from file 'c/index.ts'
c/index.ts
Matched by default include pattern '**/*'
[12:01:48 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c/index.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -748,12 +886,28 @@ Output::
>> Screen clear
[12:01:53 AM] File change detected. Starting incremental compilation...
Reusing resolution of module '../b' from '/user/username/projects/transitiveReferences/c/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/b/index.ts'.
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/c/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'.
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/b/index.ts'. ========
Using compiler options of project reference redirect '/user/username/projects/transitiveReferences/b/tsconfig.json'.
Module resolution kind is not specified, using 'NodeJs'.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'. ========
../../../../a/lib/lib.d.ts
Default library for target 'es3'
refs/a.d.ts
Imported via '@ref/a' from file 'b/index.d.ts'
Imported via "@ref/a" from file 'c/index.ts'
b/index.d.ts
Imported via '../b' from file 'c/index.ts'
File is output of project reference source 'b/index.ts'
c/index.ts
Matched by default include pattern '**/*'
[12:01:54 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c/index.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -829,17 +983,39 @@ Output::
>> Screen clear
[12:01:56 AM] File change detected. Starting incremental compilation...
Reusing resolution of module '../b' from '/user/username/projects/transitiveReferences/c/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/b/index.ts'.
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/c/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'.
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/b/index.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
'baseUrl' option is set to '/user/username/projects/transitiveReferences/c', using this value to resolve non-relative module name '@ref/a'.
'paths' option is specified, looking for a pattern to match module name '@ref/a'.
Module name '@ref/a', matched pattern '@ref/*'.
Trying substitution '../refs/*', candidate module location: '../refs/a'.
Loading module as file / folder, candidate module location '/user/username/projects/transitiveReferences/refs/a', target file types: TypeScript, Declaration.
File '/user/username/projects/transitiveReferences/refs/a.ts' does not exist.
File '/user/username/projects/transitiveReferences/refs/a.tsx' does not exist.
File '/user/username/projects/transitiveReferences/refs/a.d.ts' exist - use it as a name resolution result.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'. ========
c/tsconfig.json:1:84 - error TS6053: File '/user/username/projects/transitiveReferences/b' not found.
1 {"compilerOptions":{"baseUrl":"./","paths":{"@ref/*":["../refs/*"]}},"references":[{"path":"../b"}]}
   ~~~~~~~~~~~~~~~
../../../../a/lib/lib.d.ts
Default library for target 'es3'
refs/a.d.ts
Imported via '@ref/a' from file 'b/index.ts'
Imported via "@ref/a" from file 'c/index.ts'
b/index.ts
Imported via '../b' from file 'c/index.ts'
c/index.ts
Matched by default include pattern '**/*'
[12:02:03 AM] Found 1 error. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c/index.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -917,12 +1093,30 @@ Output::
>> Screen clear
[12:02:06 AM] File change detected. Starting incremental compilation...
Reusing resolution of module '../b' from '/user/username/projects/transitiveReferences/c/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/b/index.ts'.
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/c/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'.
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/b/index.ts'. ========
Using compiler options of project reference redirect '/user/username/projects/transitiveReferences/b/tsconfig.json'.
Module resolution kind is not specified, using 'NodeJs'.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/a/index.ts'. ========
../../../../a/lib/lib.d.ts
Default library for target 'es3'
a/index.d.ts
Imported via '@ref/a' from file 'b/index.d.ts'
File is output of project reference source 'a/index.ts'
b/index.d.ts
Imported via '../b' from file 'c/index.ts'
File is output of project reference source 'b/index.ts'
refs/a.d.ts
Imported via "@ref/a" from file 'c/index.ts'
c/index.ts
Matched by default include pattern '**/*'
[12:02:10 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c/index.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -1010,17 +1204,31 @@ Output::
>> Screen clear
[12:02:12 AM] File change detected. Starting incremental compilation...
Reusing resolution of module '../b' from '/user/username/projects/transitiveReferences/c/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/b/index.ts'.
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/c/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'.
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/b/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/a/index.ts'.
b/tsconfig.json:1:96 - error TS6053: File '/user/username/projects/transitiveReferences/a' not found.
1 {"compilerOptions":{"composite":true,"baseUrl":"./","paths":{"@ref/*":["../*"]}},"references":[{"path":"../a"}]}
   ~~~~~~~~~~~~~~~
../../../../a/lib/lib.d.ts
Default library for target 'es3'
a/index.ts
Imported via '@ref/a' from file 'b/index.d.ts'
b/index.d.ts
Imported via '../b' from file 'c/index.ts'
File is output of project reference source 'b/index.ts'
refs/a.d.ts
Imported via "@ref/a" from file 'c/index.ts'
c/index.ts
Matched by default include pattern '**/*'
[12:02:16 AM] Found 1 error. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c/index.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -1108,12 +1316,27 @@ Output::
>> Screen clear
[12:02:20 AM] File change detected. Starting incremental compilation...
Reusing resolution of module '../b' from '/user/username/projects/transitiveReferences/c/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/b/index.ts'.
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/c/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'.
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/b/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/a/index.ts'.
../../../../a/lib/lib.d.ts
Default library for target 'es3'
a/index.d.ts
Imported via '@ref/a' from file 'b/index.d.ts'
File is output of project reference source 'a/index.ts'
b/index.d.ts
Imported via '../b' from file 'c/index.ts'
File is output of project reference source 'b/index.ts'
refs/a.d.ts
Imported via "@ref/a" from file 'c/index.ts'
c/index.ts
Matched by default include pattern '**/*'
[12:02:21 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c/index.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -186,17 +186,53 @@ a_1.X;
/a/lib/tsc.js -w -p c
/a/lib/tsc.js -w -p c --traceResolution --explainFiles
Output::
>> Screen clear
[12:00:59 AM] Starting compilation in watch mode...
======== Resolving module '../b' from '/user/username/projects/transitiveReferences/c/index.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
Loading module as file / folder, candidate module location '/user/username/projects/transitiveReferences/b', target file types: TypeScript, Declaration.
File '/user/username/projects/transitiveReferences/b.ts' does not exist.
File '/user/username/projects/transitiveReferences/b.tsx' does not exist.
File '/user/username/projects/transitiveReferences/b.d.ts' does not exist.
File '/user/username/projects/transitiveReferences/b/package.json' does not exist.
File '/user/username/projects/transitiveReferences/b/index.ts' exist - use it as a name resolution result.
======== Module name '../b' was successfully resolved to '/user/username/projects/transitiveReferences/b/index.ts'. ========
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/c/index.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
'baseUrl' option is set to '/user/username/projects/transitiveReferences/c', using this value to resolve non-relative module name '@ref/a'.
'paths' option is specified, looking for a pattern to match module name '@ref/a'.
Module name '@ref/a', matched pattern '@ref/*'.
Trying substitution '../refs/*', candidate module location: '../refs/a'.
Loading module as file / folder, candidate module location '/user/username/projects/transitiveReferences/refs/a', target file types: TypeScript, Declaration.
File '/user/username/projects/transitiveReferences/refs/a.ts' does not exist.
File '/user/username/projects/transitiveReferences/refs/a.tsx' does not exist.
File '/user/username/projects/transitiveReferences/refs/a.d.ts' exist - use it as a name resolution result.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'. ========
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/b/index.ts'. ========
Using compiler options of project reference redirect '/user/username/projects/transitiveReferences/b/tsconfig.json'.
Module resolution kind is not specified, using 'NodeJs'.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/a/index.ts'. ========
../../../../a/lib/lib.d.ts
Default library for target 'es3'
a/index.d.ts
Imported via '@ref/a' from file 'b/index.d.ts'
File is output of project reference source 'a/index.ts'
b/index.d.ts
Imported via '../b' from file 'c/index.ts'
File is output of project reference source 'b/index.ts'
refs/a.d.ts
Imported via "@ref/a" from file 'c/index.ts'
c/index.ts
Part of 'files' list in tsconfig.json
[12:01:03 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c/index.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -368,12 +404,25 @@ Output::
>> Screen clear
[12:01:19 AM] File change detected. Starting incremental compilation...
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/b/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/a/index.ts'.
../../../../a/lib/lib.d.ts
Default library for target 'es3'
a/index.d.ts
Imported via '@ref/a' from file 'b/index.d.ts'
File is output of project reference source 'a/index.ts'
b/index.d.ts
Imported via '../b' from file 'c/index.ts'
File is output of project reference source 'b/index.ts'
refs/a.d.ts
Imported via "@ref/a" from file 'c/index.ts'
c/index.ts
Part of 'files' list in tsconfig.json
[12:01:23 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c/index.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program structureReused: Completely
Program files::
/a/lib/lib.d.ts
@@ -464,12 +513,48 @@ Output::
>> Screen clear
[12:01:31 AM] File change detected. Starting incremental compilation...
======== Resolving module '../b' from '/user/username/projects/transitiveReferences/c/index.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
Loading module as file / folder, candidate module location '/user/username/projects/transitiveReferences/b', target file types: TypeScript, Declaration.
File '/user/username/projects/transitiveReferences/b.ts' does not exist.
File '/user/username/projects/transitiveReferences/b.tsx' does not exist.
File '/user/username/projects/transitiveReferences/b.d.ts' does not exist.
File '/user/username/projects/transitiveReferences/b/package.json' does not exist.
File '/user/username/projects/transitiveReferences/b/index.ts' exist - use it as a name resolution result.
======== Module name '../b' was successfully resolved to '/user/username/projects/transitiveReferences/b/index.ts'. ========
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/c/index.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
'baseUrl' option is set to '/user/username/projects/transitiveReferences/c', using this value to resolve non-relative module name '@ref/a'.
'paths' option is specified, looking for a pattern to match module name '@ref/a'.
Module name '@ref/a', matched pattern '@ref/*'.
Trying substitution '../nrefs/*', candidate module location: '../nrefs/a'.
Loading module as file / folder, candidate module location '/user/username/projects/transitiveReferences/nrefs/a', target file types: TypeScript, Declaration.
File '/user/username/projects/transitiveReferences/nrefs/a.ts' does not exist.
File '/user/username/projects/transitiveReferences/nrefs/a.tsx' does not exist.
File '/user/username/projects/transitiveReferences/nrefs/a.d.ts' exist - use it as a name resolution result.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/nrefs/a.d.ts'. ========
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/b/index.ts'. ========
Using compiler options of project reference redirect '/user/username/projects/transitiveReferences/b/tsconfig.json'.
Module resolution kind is not specified, using 'NodeJs'.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/a/index.ts'. ========
../../../../a/lib/lib.d.ts
Default library for target 'es3'
a/index.d.ts
Imported via '@ref/a' from file 'b/index.d.ts'
File is output of project reference source 'a/index.ts'
b/index.d.ts
Imported via '../b' from file 'c/index.ts'
File is output of project reference source 'b/index.ts'
nrefs/a.d.ts
Imported via "@ref/a" from file 'c/index.ts'
c/index.ts
Part of 'files' list in tsconfig.json
[12:01:35 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c/index.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../nrefs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../nrefs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -555,12 +640,48 @@ Output::
>> Screen clear
[12:01:39 AM] File change detected. Starting incremental compilation...
======== Resolving module '../b' from '/user/username/projects/transitiveReferences/c/index.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
Loading module as file / folder, candidate module location '/user/username/projects/transitiveReferences/b', target file types: TypeScript, Declaration.
File '/user/username/projects/transitiveReferences/b.ts' does not exist.
File '/user/username/projects/transitiveReferences/b.tsx' does not exist.
File '/user/username/projects/transitiveReferences/b.d.ts' does not exist.
File '/user/username/projects/transitiveReferences/b/package.json' does not exist.
File '/user/username/projects/transitiveReferences/b/index.ts' exist - use it as a name resolution result.
======== Module name '../b' was successfully resolved to '/user/username/projects/transitiveReferences/b/index.ts'. ========
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/c/index.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
'baseUrl' option is set to '/user/username/projects/transitiveReferences/c', using this value to resolve non-relative module name '@ref/a'.
'paths' option is specified, looking for a pattern to match module name '@ref/a'.
Module name '@ref/a', matched pattern '@ref/*'.
Trying substitution '../refs/*', candidate module location: '../refs/a'.
Loading module as file / folder, candidate module location '/user/username/projects/transitiveReferences/refs/a', target file types: TypeScript, Declaration.
File '/user/username/projects/transitiveReferences/refs/a.ts' does not exist.
File '/user/username/projects/transitiveReferences/refs/a.tsx' does not exist.
File '/user/username/projects/transitiveReferences/refs/a.d.ts' exist - use it as a name resolution result.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'. ========
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/b/index.ts'. ========
Using compiler options of project reference redirect '/user/username/projects/transitiveReferences/b/tsconfig.json'.
Module resolution kind is not specified, using 'NodeJs'.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/a/index.ts'. ========
../../../../a/lib/lib.d.ts
Default library for target 'es3'
a/index.d.ts
Imported via '@ref/a' from file 'b/index.d.ts'
File is output of project reference source 'a/index.ts'
b/index.d.ts
Imported via '../b' from file 'c/index.ts'
File is output of project reference source 'b/index.ts'
refs/a.d.ts
Imported via "@ref/a" from file 'c/index.ts'
c/index.ts
Part of 'files' list in tsconfig.json
[12:01:43 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c/index.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -646,12 +767,29 @@ Output::
>> Screen clear
[12:01:47 AM] File change detected. Starting incremental compilation...
Reusing resolution of module '../b' from '/user/username/projects/transitiveReferences/c/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/b/index.ts'.
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/c/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'.
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/b/index.ts'. ========
Using compiler options of project reference redirect '/user/username/projects/transitiveReferences/b/tsconfig.json'.
Module resolution kind is not specified, using 'NodeJs'.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/nrefs/a.d.ts'. ========
../../../../a/lib/lib.d.ts
Default library for target 'es3'
nrefs/a.d.ts
Imported via '@ref/a' from file 'b/index.d.ts'
b/index.d.ts
Imported via '../b' from file 'c/index.ts'
File is output of project reference source 'b/index.ts'
refs/a.d.ts
Imported via "@ref/a" from file 'c/index.ts'
c/index.ts
Part of 'files' list in tsconfig.json
[12:01:48 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c/index.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -736,12 +874,28 @@ Output::
>> Screen clear
[12:01:53 AM] File change detected. Starting incremental compilation...
Reusing resolution of module '../b' from '/user/username/projects/transitiveReferences/c/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/b/index.ts'.
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/c/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'.
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/b/index.ts'. ========
Using compiler options of project reference redirect '/user/username/projects/transitiveReferences/b/tsconfig.json'.
Module resolution kind is not specified, using 'NodeJs'.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'. ========
../../../../a/lib/lib.d.ts
Default library for target 'es3'
refs/a.d.ts
Imported via '@ref/a' from file 'b/index.d.ts'
Imported via "@ref/a" from file 'c/index.ts'
b/index.d.ts
Imported via '../b' from file 'c/index.ts'
File is output of project reference source 'b/index.ts'
c/index.ts
Part of 'files' list in tsconfig.json
[12:01:54 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c/index.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -813,17 +967,39 @@ Output::
>> Screen clear
[12:01:56 AM] File change detected. Starting incremental compilation...
Reusing resolution of module '../b' from '/user/username/projects/transitiveReferences/c/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/b/index.ts'.
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/c/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'.
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/b/index.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
'baseUrl' option is set to '/user/username/projects/transitiveReferences/c', using this value to resolve non-relative module name '@ref/a'.
'paths' option is specified, looking for a pattern to match module name '@ref/a'.
Module name '@ref/a', matched pattern '@ref/*'.
Trying substitution '../refs/*', candidate module location: '../refs/a'.
Loading module as file / folder, candidate module location '/user/username/projects/transitiveReferences/refs/a', target file types: TypeScript, Declaration.
File '/user/username/projects/transitiveReferences/refs/a.ts' does not exist.
File '/user/username/projects/transitiveReferences/refs/a.tsx' does not exist.
File '/user/username/projects/transitiveReferences/refs/a.d.ts' exist - use it as a name resolution result.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'. ========
c/tsconfig.json:1:105 - error TS6053: File '/user/username/projects/transitiveReferences/b' not found.
1 {"compilerOptions":{"baseUrl":"./","paths":{"@ref/*":["../refs/*"]}},"files":["index.ts"],"references":[{"path":"../b"}]}
   ~~~~~~~~~~~~~~~
../../../../a/lib/lib.d.ts
Default library for target 'es3'
refs/a.d.ts
Imported via '@ref/a' from file 'b/index.ts'
Imported via "@ref/a" from file 'c/index.ts'
b/index.ts
Imported via '../b' from file 'c/index.ts'
c/index.ts
Part of 'files' list in tsconfig.json
[12:02:03 AM] Found 1 error. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c/index.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -899,12 +1075,30 @@ Output::
>> Screen clear
[12:02:06 AM] File change detected. Starting incremental compilation...
Reusing resolution of module '../b' from '/user/username/projects/transitiveReferences/c/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/b/index.ts'.
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/c/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'.
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/b/index.ts'. ========
Using compiler options of project reference redirect '/user/username/projects/transitiveReferences/b/tsconfig.json'.
Module resolution kind is not specified, using 'NodeJs'.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/a/index.ts'. ========
../../../../a/lib/lib.d.ts
Default library for target 'es3'
a/index.d.ts
Imported via '@ref/a' from file 'b/index.d.ts'
File is output of project reference source 'a/index.ts'
b/index.d.ts
Imported via '../b' from file 'c/index.ts'
File is output of project reference source 'b/index.ts'
refs/a.d.ts
Imported via "@ref/a" from file 'c/index.ts'
c/index.ts
Part of 'files' list in tsconfig.json
[12:02:10 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c/index.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -990,17 +1184,31 @@ Output::
>> Screen clear
[12:02:12 AM] File change detected. Starting incremental compilation...
Reusing resolution of module '../b' from '/user/username/projects/transitiveReferences/c/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/b/index.ts'.
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/c/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'.
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/b/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/a/index.ts'.
b/tsconfig.json:1:117 - error TS6053: File '/user/username/projects/transitiveReferences/a' not found.
1 {"compilerOptions":{"composite":true,"baseUrl":"./","paths":{"@ref/*":["../*"]}},"files":["index.ts"],"references":[{"path":"../a"}]}
   ~~~~~~~~~~~~~~~
../../../../a/lib/lib.d.ts
Default library for target 'es3'
a/index.ts
Imported via '@ref/a' from file 'b/index.d.ts'
b/index.d.ts
Imported via '../b' from file 'c/index.ts'
File is output of project reference source 'b/index.ts'
refs/a.d.ts
Imported via "@ref/a" from file 'c/index.ts'
c/index.ts
Part of 'files' list in tsconfig.json
[12:02:16 AM] Found 1 error. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c/index.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -1086,12 +1294,27 @@ Output::
>> Screen clear
[12:02:20 AM] File change detected. Starting incremental compilation...
Reusing resolution of module '../b' from '/user/username/projects/transitiveReferences/c/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/b/index.ts'.
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/c/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'.
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/b/index.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/a/index.ts'.
../../../../a/lib/lib.d.ts
Default library for target 'es3'
a/index.d.ts
Imported via '@ref/a' from file 'b/index.d.ts'
File is output of project reference source 'a/index.ts'
b/index.d.ts
Imported via '../b' from file 'c/index.ts'
File is output of project reference source 'b/index.ts'
refs/a.d.ts
Imported via "@ref/a" from file 'c/index.ts'
c/index.ts
Part of 'files' list in tsconfig.json
[12:02:21 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c/index.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences/c","paths":{"@ref/*":["../refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences/c","watch":true,"project":"/user/username/projects/transitiveReferences/c","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/c/tsconfig.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -210,17 +210,49 @@ a_1.X;
/a/lib/tsc.js -w -p tsconfig.c.json
/a/lib/tsc.js -w -p tsconfig.c.json --traceResolution --explainFiles
Output::
>> Screen clear
[12:00:53 AM] Starting compilation in watch mode...
======== Resolving module './b' from '/user/username/projects/transitiveReferences/c.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
Loading module as file / folder, candidate module location '/user/username/projects/transitiveReferences/b', target file types: TypeScript, Declaration.
File '/user/username/projects/transitiveReferences/b.ts' exist - use it as a name resolution result.
======== Module name './b' was successfully resolved to '/user/username/projects/transitiveReferences/b.ts'. ========
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/c.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
'baseUrl' option is set to '/user/username/projects/transitiveReferences', using this value to resolve non-relative module name '@ref/a'.
'paths' option is specified, looking for a pattern to match module name '@ref/a'.
Module name '@ref/a', matched pattern '@ref/*'.
Trying substitution './refs/*', candidate module location: './refs/a'.
Loading module as file / folder, candidate module location '/user/username/projects/transitiveReferences/refs/a', target file types: TypeScript, Declaration.
File '/user/username/projects/transitiveReferences/refs/a.ts' does not exist.
File '/user/username/projects/transitiveReferences/refs/a.tsx' does not exist.
File '/user/username/projects/transitiveReferences/refs/a.d.ts' exist - use it as a name resolution result.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'. ========
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/b.ts'. ========
Using compiler options of project reference redirect '/user/username/projects/transitiveReferences/tsconfig.b.json'.
Module resolution kind is not specified, using 'NodeJs'.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/a.ts'. ========
../../../../a/lib/lib.d.ts
Default library for target 'es3'
a.d.ts
Imported via '@ref/a' from file 'b.d.ts'
File is output of project reference source 'a.ts'
b.d.ts
Imported via './b' from file 'c.ts'
File is output of project reference source 'b.ts'
refs/a.d.ts
Imported via "@ref/a" from file 'c.ts'
c.ts
Part of 'files' list in tsconfig.json
[12:00:57 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences","paths":{"@ref/*":["./refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences","watch":true,"project":"/user/username/projects/transitiveReferences/tsconfig.c.json","configFilePath":"/user/username/projects/transitiveReferences/tsconfig.c.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences","paths":{"@ref/*":["./refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences","watch":true,"project":"/user/username/projects/transitiveReferences/tsconfig.c.json","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/tsconfig.c.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -385,12 +417,25 @@ Output::
>> Screen clear
[12:01:13 AM] File change detected. Starting incremental compilation...
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/b.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/a.ts'.
../../../../a/lib/lib.d.ts
Default library for target 'es3'
a.d.ts
Imported via '@ref/a' from file 'b.d.ts'
File is output of project reference source 'a.ts'
b.d.ts
Imported via './b' from file 'c.ts'
File is output of project reference source 'b.ts'
refs/a.d.ts
Imported via "@ref/a" from file 'c.ts'
c.ts
Part of 'files' list in tsconfig.json
[12:01:17 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences","paths":{"@ref/*":["./refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences","watch":true,"project":"/user/username/projects/transitiveReferences/tsconfig.c.json","configFilePath":"/user/username/projects/transitiveReferences/tsconfig.c.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences","paths":{"@ref/*":["./refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences","watch":true,"project":"/user/username/projects/transitiveReferences/tsconfig.c.json","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/tsconfig.c.json"}
Program structureReused: Completely
Program files::
/a/lib/lib.d.ts
@@ -473,12 +518,44 @@ Output::
>> Screen clear
[12:01:25 AM] File change detected. Starting incremental compilation...
======== Resolving module './b' from '/user/username/projects/transitiveReferences/c.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
Loading module as file / folder, candidate module location '/user/username/projects/transitiveReferences/b', target file types: TypeScript, Declaration.
File '/user/username/projects/transitiveReferences/b.ts' exist - use it as a name resolution result.
======== Module name './b' was successfully resolved to '/user/username/projects/transitiveReferences/b.ts'. ========
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/c.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
'baseUrl' option is set to '/user/username/projects/transitiveReferences', using this value to resolve non-relative module name '@ref/a'.
'paths' option is specified, looking for a pattern to match module name '@ref/a'.
Module name '@ref/a', matched pattern '@ref/*'.
Trying substitution './nrefs/*', candidate module location: './nrefs/a'.
Loading module as file / folder, candidate module location '/user/username/projects/transitiveReferences/nrefs/a', target file types: TypeScript, Declaration.
File '/user/username/projects/transitiveReferences/nrefs/a.ts' does not exist.
File '/user/username/projects/transitiveReferences/nrefs/a.tsx' does not exist.
File '/user/username/projects/transitiveReferences/nrefs/a.d.ts' exist - use it as a name resolution result.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/nrefs/a.d.ts'. ========
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/b.ts'. ========
Using compiler options of project reference redirect '/user/username/projects/transitiveReferences/tsconfig.b.json'.
Module resolution kind is not specified, using 'NodeJs'.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/a.ts'. ========
../../../../a/lib/lib.d.ts
Default library for target 'es3'
a.d.ts
Imported via '@ref/a' from file 'b.d.ts'
File is output of project reference source 'a.ts'
b.d.ts
Imported via './b' from file 'c.ts'
File is output of project reference source 'b.ts'
nrefs/a.d.ts
Imported via "@ref/a" from file 'c.ts'
c.ts
Part of 'files' list in tsconfig.json
[12:01:29 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences","paths":{"@ref/*":["./nrefs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences","watch":true,"project":"/user/username/projects/transitiveReferences/tsconfig.c.json","configFilePath":"/user/username/projects/transitiveReferences/tsconfig.c.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences","paths":{"@ref/*":["./nrefs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences","watch":true,"project":"/user/username/projects/transitiveReferences/tsconfig.c.json","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/tsconfig.c.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -556,12 +633,44 @@ Output::
>> Screen clear
[12:01:33 AM] File change detected. Starting incremental compilation...
======== Resolving module './b' from '/user/username/projects/transitiveReferences/c.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
Loading module as file / folder, candidate module location '/user/username/projects/transitiveReferences/b', target file types: TypeScript, Declaration.
File '/user/username/projects/transitiveReferences/b.ts' exist - use it as a name resolution result.
======== Module name './b' was successfully resolved to '/user/username/projects/transitiveReferences/b.ts'. ========
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/c.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
'baseUrl' option is set to '/user/username/projects/transitiveReferences', using this value to resolve non-relative module name '@ref/a'.
'paths' option is specified, looking for a pattern to match module name '@ref/a'.
Module name '@ref/a', matched pattern '@ref/*'.
Trying substitution './refs/*', candidate module location: './refs/a'.
Loading module as file / folder, candidate module location '/user/username/projects/transitiveReferences/refs/a', target file types: TypeScript, Declaration.
File '/user/username/projects/transitiveReferences/refs/a.ts' does not exist.
File '/user/username/projects/transitiveReferences/refs/a.tsx' does not exist.
File '/user/username/projects/transitiveReferences/refs/a.d.ts' exist - use it as a name resolution result.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'. ========
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/b.ts'. ========
Using compiler options of project reference redirect '/user/username/projects/transitiveReferences/tsconfig.b.json'.
Module resolution kind is not specified, using 'NodeJs'.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/a.ts'. ========
../../../../a/lib/lib.d.ts
Default library for target 'es3'
a.d.ts
Imported via '@ref/a' from file 'b.d.ts'
File is output of project reference source 'a.ts'
b.d.ts
Imported via './b' from file 'c.ts'
File is output of project reference source 'b.ts'
refs/a.d.ts
Imported via "@ref/a" from file 'c.ts'
c.ts
Part of 'files' list in tsconfig.json
[12:01:37 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences","paths":{"@ref/*":["./refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences","watch":true,"project":"/user/username/projects/transitiveReferences/tsconfig.c.json","configFilePath":"/user/username/projects/transitiveReferences/tsconfig.c.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences","paths":{"@ref/*":["./refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences","watch":true,"project":"/user/username/projects/transitiveReferences/tsconfig.c.json","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/tsconfig.c.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -639,12 +748,29 @@ Output::
>> Screen clear
[12:01:41 AM] File change detected. Starting incremental compilation...
Reusing resolution of module './b' from '/user/username/projects/transitiveReferences/c.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/b.ts'.
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/c.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'.
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/b.ts'. ========
Using compiler options of project reference redirect '/user/username/projects/transitiveReferences/tsconfig.b.json'.
Module resolution kind is not specified, using 'NodeJs'.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/nrefs/a.d.ts'. ========
../../../../a/lib/lib.d.ts
Default library for target 'es3'
nrefs/a.d.ts
Imported via '@ref/a' from file 'b.d.ts'
b.d.ts
Imported via './b' from file 'c.ts'
File is output of project reference source 'b.ts'
refs/a.d.ts
Imported via "@ref/a" from file 'c.ts'
c.ts
Part of 'files' list in tsconfig.json
[12:01:42 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences","paths":{"@ref/*":["./refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences","watch":true,"project":"/user/username/projects/transitiveReferences/tsconfig.c.json","configFilePath":"/user/username/projects/transitiveReferences/tsconfig.c.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences","paths":{"@ref/*":["./refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences","watch":true,"project":"/user/username/projects/transitiveReferences/tsconfig.c.json","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/tsconfig.c.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -723,12 +849,28 @@ Output::
>> Screen clear
[12:01:47 AM] File change detected. Starting incremental compilation...
Reusing resolution of module './b' from '/user/username/projects/transitiveReferences/c.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/b.ts'.
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/c.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'.
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/b.ts'. ========
Using compiler options of project reference redirect '/user/username/projects/transitiveReferences/tsconfig.b.json'.
Module resolution kind is not specified, using 'NodeJs'.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'. ========
../../../../a/lib/lib.d.ts
Default library for target 'es3'
refs/a.d.ts
Imported via '@ref/a' from file 'b.d.ts'
Imported via "@ref/a" from file 'c.ts'
b.d.ts
Imported via './b' from file 'c.ts'
File is output of project reference source 'b.ts'
c.ts
Part of 'files' list in tsconfig.json
[12:01:48 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences","paths":{"@ref/*":["./refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences","watch":true,"project":"/user/username/projects/transitiveReferences/tsconfig.c.json","configFilePath":"/user/username/projects/transitiveReferences/tsconfig.c.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences","paths":{"@ref/*":["./refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences","watch":true,"project":"/user/username/projects/transitiveReferences/tsconfig.c.json","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/tsconfig.c.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -794,17 +936,39 @@ Output::
>> Screen clear
[12:01:50 AM] File change detected. Starting incremental compilation...
Reusing resolution of module './b' from '/user/username/projects/transitiveReferences/c.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/b.ts'.
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/c.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'.
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/b.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
'baseUrl' option is set to '/user/username/projects/transitiveReferences', using this value to resolve non-relative module name '@ref/a'.
'paths' option is specified, looking for a pattern to match module name '@ref/a'.
Module name '@ref/a', matched pattern '@ref/*'.
Trying substitution './refs/*', candidate module location: './refs/a'.
Loading module as file / folder, candidate module location '/user/username/projects/transitiveReferences/refs/a', target file types: TypeScript, Declaration.
File '/user/username/projects/transitiveReferences/refs/a.ts' does not exist.
File '/user/username/projects/transitiveReferences/refs/a.tsx' does not exist.
File '/user/username/projects/transitiveReferences/refs/a.d.ts' exist - use it as a name resolution result.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'. ========
tsconfig.c.json:1:100 - error TS6053: File '/user/username/projects/transitiveReferences/tsconfig.b.json' not found.
1 {"files":["c.ts"],"compilerOptions":{"baseUrl":"./","paths":{"@ref/*":["./refs/*"]}},"references":[{"path":"tsconfig.b.json"}]}
   ~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../a/lib/lib.d.ts
Default library for target 'es3'
refs/a.d.ts
Imported via '@ref/a' from file 'b.ts'
Imported via "@ref/a" from file 'c.ts'
b.ts
Imported via './b' from file 'c.ts'
c.ts
Part of 'files' list in tsconfig.json
[12:01:57 AM] Found 1 error. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences","paths":{"@ref/*":["./refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences","watch":true,"project":"/user/username/projects/transitiveReferences/tsconfig.c.json","configFilePath":"/user/username/projects/transitiveReferences/tsconfig.c.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences","paths":{"@ref/*":["./refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences","watch":true,"project":"/user/username/projects/transitiveReferences/tsconfig.c.json","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/tsconfig.c.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -885,12 +1049,30 @@ Output::
>> Screen clear
[12:02:00 AM] File change detected. Starting incremental compilation...
Reusing resolution of module './b' from '/user/username/projects/transitiveReferences/c.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/b.ts'.
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/c.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'.
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/b.ts'. ========
Using compiler options of project reference redirect '/user/username/projects/transitiveReferences/tsconfig.b.json'.
Module resolution kind is not specified, using 'NodeJs'.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/a.ts'. ========
../../../../a/lib/lib.d.ts
Default library for target 'es3'
a.d.ts
Imported via '@ref/a' from file 'b.d.ts'
File is output of project reference source 'a.ts'
b.d.ts
Imported via './b' from file 'c.ts'
File is output of project reference source 'b.ts'
refs/a.d.ts
Imported via "@ref/a" from file 'c.ts'
c.ts
Part of 'files' list in tsconfig.json
[12:02:04 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences","paths":{"@ref/*":["./refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences","watch":true,"project":"/user/username/projects/transitiveReferences/tsconfig.c.json","configFilePath":"/user/username/projects/transitiveReferences/tsconfig.c.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences","paths":{"@ref/*":["./refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences","watch":true,"project":"/user/username/projects/transitiveReferences/tsconfig.c.json","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/tsconfig.c.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -968,17 +1150,31 @@ Output::
>> Screen clear
[12:02:06 AM] File change detected. Starting incremental compilation...
Reusing resolution of module './b' from '/user/username/projects/transitiveReferences/c.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/b.ts'.
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/c.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'.
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/b.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/a.ts'.
tsconfig.b.json:10:21 - error TS6053: File '/user/username/projects/transitiveReferences/tsconfig.a.json' not found.
10 "references": [ { "path": "tsconfig.a.json" } ]
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../a/lib/lib.d.ts
Default library for target 'es3'
a.ts
Imported via '@ref/a' from file 'b.d.ts'
b.d.ts
Imported via './b' from file 'c.ts'
File is output of project reference source 'b.ts'
refs/a.d.ts
Imported via "@ref/a" from file 'c.ts'
c.ts
Part of 'files' list in tsconfig.json
[12:02:10 AM] Found 1 error. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences","paths":{"@ref/*":["./refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences","watch":true,"project":"/user/username/projects/transitiveReferences/tsconfig.c.json","configFilePath":"/user/username/projects/transitiveReferences/tsconfig.c.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences","paths":{"@ref/*":["./refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences","watch":true,"project":"/user/username/projects/transitiveReferences/tsconfig.c.json","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/tsconfig.c.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -1057,12 +1253,27 @@ Output::
>> Screen clear
[12:02:14 AM] File change detected. Starting incremental compilation...
Reusing resolution of module './b' from '/user/username/projects/transitiveReferences/c.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/b.ts'.
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/c.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'.
Reusing resolution of module '@ref/a' from '/user/username/projects/transitiveReferences/b.ts' of old program, it was successfully resolved to '/user/username/projects/transitiveReferences/a.ts'.
../../../../a/lib/lib.d.ts
Default library for target 'es3'
a.d.ts
Imported via '@ref/a' from file 'b.d.ts'
File is output of project reference source 'a.ts'
b.d.ts
Imported via './b' from file 'c.ts'
File is output of project reference source 'b.ts'
refs/a.d.ts
Imported via "@ref/a" from file 'c.ts'
c.ts
Part of 'files' list in tsconfig.json
[12:02:15 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences","paths":{"@ref/*":["./refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences","watch":true,"project":"/user/username/projects/transitiveReferences/tsconfig.c.json","configFilePath":"/user/username/projects/transitiveReferences/tsconfig.c.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences","paths":{"@ref/*":["./refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences","watch":true,"project":"/user/username/projects/transitiveReferences/tsconfig.c.json","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/tsconfig.c.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -163,17 +163,37 @@ export declare function multiply(a: number, b: number): number;
}
/a/lib/tsc.js -w -p logic
/a/lib/tsc.js -w -p logic --traceResolution --explainFiles
Output::
>> Screen clear
[12:00:50 AM] Starting compilation in watch mode...
======== Resolving module '../core/index' from '/user/username/projects/sample1/logic/index.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
Loading module as file / folder, candidate module location '/user/username/projects/sample1/core/index', target file types: TypeScript, Declaration.
File '/user/username/projects/sample1/core/index.ts' exist - use it as a name resolution result.
======== Module name '../core/index' was successfully resolved to '/user/username/projects/sample1/core/index.ts'. ========
======== Resolving module '../core/anotherModule' from '/user/username/projects/sample1/logic/index.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
Loading module as file / folder, candidate module location '/user/username/projects/sample1/core/anotherModule', target file types: TypeScript, Declaration.
File '/user/username/projects/sample1/core/anotherModule.ts' exist - use it as a name resolution result.
======== Module name '../core/anotherModule' was successfully resolved to '/user/username/projects/sample1/core/anotherModule.ts'. ========
../../../../a/lib/lib.d.ts
Default library for target 'es3'
core/index.d.ts
Imported via '../core/index' from file 'logic/index.ts'
File is output of project reference source 'core/index.ts'
core/anotherModule.d.ts
Imported via '../core/anotherModule' from file 'logic/index.ts'
File is output of project reference source 'core/anotherModule.ts'
logic/index.ts
Matched by default include pattern '**/*'
[12:00:59 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/sample1/logic/index.ts"]
Program options: {"composite":true,"declaration":true,"sourceMap":true,"forceConsistentCasingInFileNames":true,"skipDefaultLibCheck":true,"watch":true,"project":"/user/username/projects/sample1/logic","configFilePath":"/user/username/projects/sample1/logic/tsconfig.json"}
Program options: {"composite":true,"declaration":true,"sourceMap":true,"forceConsistentCasingInFileNames":true,"skipDefaultLibCheck":true,"watch":true,"project":"/user/username/projects/sample1/logic","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/sample1/logic/tsconfig.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -432,12 +452,24 @@ Output::
>> Screen clear
[12:01:18 AM] File change detected. Starting incremental compilation...
Reusing resolution of module '../core/index' from '/user/username/projects/sample1/logic/index.ts' of old program, it was successfully resolved to '/user/username/projects/sample1/core/index.ts'.
Reusing resolution of module '../core/anotherModule' from '/user/username/projects/sample1/logic/index.ts' of old program, it was successfully resolved to '/user/username/projects/sample1/core/anotherModule.ts'.
../../../../a/lib/lib.d.ts
Default library for target 'es3'
core/index.d.ts
Imported via '../core/index' from file 'logic/index.ts'
File is output of project reference source 'core/index.ts'
core/anotherModule.d.ts
Imported via '../core/anotherModule' from file 'logic/index.ts'
File is output of project reference source 'core/anotherModule.ts'
logic/index.ts
Matched by default include pattern '**/*'
[12:01:19 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/sample1/logic/index.ts"]
Program options: {"composite":true,"declaration":true,"sourceMap":true,"forceConsistentCasingInFileNames":true,"skipDefaultLibCheck":true,"watch":true,"project":"/user/username/projects/sample1/logic","configFilePath":"/user/username/projects/sample1/logic/tsconfig.json"}
Program options: {"composite":true,"declaration":true,"sourceMap":true,"forceConsistentCasingInFileNames":true,"skipDefaultLibCheck":true,"watch":true,"project":"/user/username/projects/sample1/logic","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/sample1/logic/tsconfig.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -197,17 +197,49 @@ a_1.X;
/a/lib/tsc.js -w -p tsconfig.c.json
/a/lib/tsc.js -w -p tsconfig.c.json --traceResolution --explainFiles
Output::
>> Screen clear
[12:00:53 AM] Starting compilation in watch mode...
======== Resolving module './b' from '/user/username/projects/transitiveReferences/c.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
Loading module as file / folder, candidate module location '/user/username/projects/transitiveReferences/b', target file types: TypeScript, Declaration.
File '/user/username/projects/transitiveReferences/b.ts' exist - use it as a name resolution result.
======== Module name './b' was successfully resolved to '/user/username/projects/transitiveReferences/b.ts'. ========
======== Resolving module '@ref/a' from '/user/username/projects/transitiveReferences/c.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
'baseUrl' option is set to '/user/username/projects/transitiveReferences', using this value to resolve non-relative module name '@ref/a'.
'paths' option is specified, looking for a pattern to match module name '@ref/a'.
Module name '@ref/a', matched pattern '@ref/*'.
Trying substitution './refs/*', candidate module location: './refs/a'.
Loading module as file / folder, candidate module location '/user/username/projects/transitiveReferences/refs/a', target file types: TypeScript, Declaration.
File '/user/username/projects/transitiveReferences/refs/a.ts' does not exist.
File '/user/username/projects/transitiveReferences/refs/a.tsx' does not exist.
File '/user/username/projects/transitiveReferences/refs/a.d.ts' exist - use it as a name resolution result.
======== Module name '@ref/a' was successfully resolved to '/user/username/projects/transitiveReferences/refs/a.d.ts'. ========
======== Resolving module 'a' from '/user/username/projects/transitiveReferences/b.ts'. ========
Using compiler options of project reference redirect '/user/username/projects/transitiveReferences/tsconfig.b.json'.
Explicitly specified module resolution kind: 'Classic'.
======== Module name 'a' was successfully resolved to '/user/username/projects/transitiveReferences/a.ts'. ========
../../../../a/lib/lib.d.ts
Default library for target 'es3'
a.d.ts
Imported via "a" from file 'b.d.ts'
File is output of project reference source 'a.ts'
b.d.ts
Imported via './b' from file 'c.ts'
File is output of project reference source 'b.ts'
refs/a.d.ts
Imported via "@ref/a" from file 'c.ts'
c.ts
Part of 'files' list in tsconfig.json
[12:00:57 AM] Found 0 errors. Watching for file changes.
Program root files: ["/user/username/projects/transitiveReferences/c.ts"]
Program options: {"baseUrl":"/user/username/projects/transitiveReferences","paths":{"@ref/*":["./refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences","watch":true,"project":"/user/username/projects/transitiveReferences/tsconfig.c.json","configFilePath":"/user/username/projects/transitiveReferences/tsconfig.c.json"}
Program options: {"baseUrl":"/user/username/projects/transitiveReferences","paths":{"@ref/*":["./refs/*"]},"pathsBasePath":"/user/username/projects/transitiveReferences","watch":true,"project":"/user/username/projects/transitiveReferences/tsconfig.c.json","traceResolution":true,"explainFiles":true,"configFilePath":"/user/username/projects/transitiveReferences/tsconfig.c.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
@@ -81,18 +81,22 @@ Info 34 [00:01:11.000] DirectoryWatcher:: Added:: WatchInfo: /user/username/pr
Info 35 [00:01:12.000] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /user/username/projects/myproject/src/node_modules 1 undefined WatchType: node_modules for closed script infos and package.jsons affecting module specifier cache
Info 36 [00:01:13.000] DirectoryWatcher:: Added:: WatchInfo: /user/username/projects/myproject/node_modules 1 undefined WatchType: node_modules for closed script infos and package.jsons affecting module specifier cache
Info 37 [00:01:14.000] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /user/username/projects/myproject/node_modules 1 undefined WatchType: node_modules for closed script infos and package.jsons affecting module specifier cache
Info 38 [00:01:15.000] Reusing resolution of module 'module1' from '/user/username/projects/myproject/src/file2.ts' found in cache from location '/user/username/projects/myproject/src', it was successfully resolved to '/user/username/projects/myproject/src/node_modules/module1/index.ts'.
Info 39 [00:01:16.000] Reusing resolution of module 'module2' from '/user/username/projects/myproject/src/file2.ts' found in cache from location '/user/username/projects/myproject/src', it was successfully resolved to '/user/username/projects/myproject/node_modules/module2/index.ts'.
Info 40 [00:01:17.000] FileWatcher:: Added:: WatchInfo: /a/lib/lib.d.ts 500 undefined WatchType: Closed Script info
Info 41 [00:01:18.000] DirectoryWatcher:: Added:: WatchInfo: /user/username/projects/myproject/src 1 undefined Project: /user/username/projects/myproject/tsconfig.json WatchType: Failed Lookup Locations
Info 42 [00:01:19.000] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /user/username/projects/myproject/src 1 undefined Project: /user/username/projects/myproject/tsconfig.json WatchType: Failed Lookup Locations
Info 43 [00:01:20.000] DirectoryWatcher:: Added:: WatchInfo: /user/username/projects/myproject/node_modules 1 undefined Project: /user/username/projects/myproject/tsconfig.json WatchType: Failed Lookup Locations
Info 44 [00:01:21.000] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /user/username/projects/myproject/node_modules 1 undefined Project: /user/username/projects/myproject/tsconfig.json WatchType: Failed Lookup Locations
Info 45 [00:01:22.000] DirectoryWatcher:: Added:: WatchInfo: /user/username/projects/myproject/node_modules/@types 1 undefined Project: /user/username/projects/myproject/tsconfig.json WatchType: Type roots
Info 46 [00:01:23.000] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /user/username/projects/myproject/node_modules/@types 1 undefined Project: /user/username/projects/myproject/tsconfig.json WatchType: Type roots
Info 47 [00:01:24.000] Finishing updateGraphWorker: Project: /user/username/projects/myproject/tsconfig.json Version: 1 structureChanged: true structureIsReused:: Not Elapsed:: *ms
Info 48 [00:01:25.000] Project '/user/username/projects/myproject/tsconfig.json' (Configured)
Info 49 [00:01:26.000] Files (5)
Info 38 [00:01:15.000] ======== Resolving module 'module1' from '/user/username/projects/myproject/src/file2.ts'. ========
Info 39 [00:01:16.000] Resolution for module 'module1' was found in cache from location '/user/username/projects/myproject/src'.
Info 40 [00:01:17.000] ======== Module name 'module1' was successfully resolved to '/user/username/projects/myproject/src/node_modules/module1/index.ts'. ========
Info 41 [00:01:18.000] ======== Resolving module 'module2' from '/user/username/projects/myproject/src/file2.ts'. ========
Info 42 [00:01:19.000] Resolution for module 'module2' was found in cache from location '/user/username/projects/myproject/src'.
Info 43 [00:01:20.000] ======== Module name 'module2' was successfully resolved to '/user/username/projects/myproject/node_modules/module2/index.ts'. ========
Info 44 [00:01:21.000] FileWatcher:: Added:: WatchInfo: /a/lib/lib.d.ts 500 undefined WatchType: Closed Script info
Info 45 [00:01:22.000] DirectoryWatcher:: Added:: WatchInfo: /user/username/projects/myproject/src 1 undefined Project: /user/username/projects/myproject/tsconfig.json WatchType: Failed Lookup Locations
Info 46 [00:01:23.000] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /user/username/projects/myproject/src 1 undefined Project: /user/username/projects/myproject/tsconfig.json WatchType: Failed Lookup Locations
Info 47 [00:01:24.000] DirectoryWatcher:: Added:: WatchInfo: /user/username/projects/myproject/node_modules 1 undefined Project: /user/username/projects/myproject/tsconfig.json WatchType: Failed Lookup Locations
Info 48 [00:01:25.000] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /user/username/projects/myproject/node_modules 1 undefined Project: /user/username/projects/myproject/tsconfig.json WatchType: Failed Lookup Locations
Info 49 [00:01:26.000] DirectoryWatcher:: Added:: WatchInfo: /user/username/projects/myproject/node_modules/@types 1 undefined Project: /user/username/projects/myproject/tsconfig.json WatchType: Type roots
Info 50 [00:01:27.000] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /user/username/projects/myproject/node_modules/@types 1 undefined Project: /user/username/projects/myproject/tsconfig.json WatchType: Type roots
Info 51 [00:01:28.000] Finishing updateGraphWorker: Project: /user/username/projects/myproject/tsconfig.json Version: 1 structureChanged: true structureIsReused:: Not Elapsed:: *ms
Info 52 [00:01:29.000] Project '/user/username/projects/myproject/tsconfig.json' (Configured)
Info 53 [00:01:30.000] Files (5)
/a/lib/lib.d.ts
/user/username/projects/myproject/src/node_modules/module1/index.ts
/user/username/projects/myproject/node_modules/module2/index.ts
@@ -113,18 +117,18 @@ Info 49 [00:01:26.000] Files (5)
src/file2.ts
Matched by default include pattern '**/*'
Info 50 [00:01:27.000] -----------------------------------------------
Info 51 [00:01:28.000] Project '/user/username/projects/myproject/tsconfig.json' (Configured)
Info 51 [00:01:29.000] Files (5)
Info 54 [00:01:31.000] -----------------------------------------------
Info 55 [00:01:32.000] Project '/user/username/projects/myproject/tsconfig.json' (Configured)
Info 55 [00:01:33.000] Files (5)
Info 51 [00:01:30.000] -----------------------------------------------
Info 51 [00:01:31.000] Open files:
Info 51 [00:01:32.000] FileName: /user/username/projects/myproject/src/file1.ts ProjectRootPath: undefined
Info 51 [00:01:33.000] Projects: /user/username/projects/myproject/tsconfig.json
Info 51 [00:01:40.000] FileWatcher:: Triggered with /user/username/projects/myproject/src/file2.ts 1:: WatchInfo: /user/username/projects/myproject/src/file2.ts 500 undefined WatchType: Closed Script info
Info 52 [00:01:41.000] Scheduled: /user/username/projects/myproject/tsconfig.json
Info 53 [00:01:42.000] Scheduled: *ensureProjectForOpenFiles*
Info 54 [00:01:43.000] Elapsed:: *ms FileWatcher:: Triggered with /user/username/projects/myproject/src/file2.ts 1:: WatchInfo: /user/username/projects/myproject/src/file2.ts 500 undefined WatchType: Closed Script info
Info 55 [00:01:34.000] -----------------------------------------------
Info 55 [00:01:35.000] Open files:
Info 55 [00:01:36.000] FileName: /user/username/projects/myproject/src/file1.ts ProjectRootPath: undefined
Info 55 [00:01:37.000] Projects: /user/username/projects/myproject/tsconfig.json
Info 55 [00:01:44.000] FileWatcher:: Triggered with /user/username/projects/myproject/src/file2.ts 1:: WatchInfo: /user/username/projects/myproject/src/file2.ts 500 undefined WatchType: Closed Script info
Info 56 [00:01:45.000] Scheduled: /user/username/projects/myproject/tsconfig.json
Info 57 [00:01:46.000] Scheduled: *ensureProjectForOpenFiles*
Info 58 [00:01:47.000] Elapsed:: *ms FileWatcher:: Triggered with /user/username/projects/myproject/src/file2.ts 1:: WatchInfo: /user/username/projects/myproject/src/file2.ts 500 undefined WatchType: Closed Script info
Before running timeout callbacks
//// [/user/username/projects/myproject/src/file1.ts]
import { module1 } from "module1";import { module2 } from "module2";import { module1 } from "module1";import { module2 } from "module2";
@@ -155,31 +159,31 @@ FsWatchesRecursive::
/user/username/projects/myproject/src:
{}
Info 55 [00:01:44.000] Running: /user/username/projects/myproject/tsconfig.json
Info 56 [00:01:45.000] Starting updateGraphWorker: Project: /user/username/projects/myproject/tsconfig.json
Info 57 [00:01:46.000] Reusing resolution of module 'module1' from '/user/username/projects/myproject/src/file1.ts' of old program, it was successfully resolved to '/user/username/projects/myproject/src/node_modules/module1/index.ts'.
Info 58 [00:01:47.000] Reusing resolution of module 'module2' from '/user/username/projects/myproject/src/file1.ts' of old program, it was successfully resolved to '/user/username/projects/myproject/node_modules/module2/index.ts'.
Info 59 [00:01:48.000] Reusing resolution of module 'module1' from '/user/username/projects/myproject/src/file2.ts' of old program, it was successfully resolved to '/user/username/projects/myproject/src/node_modules/module1/index.ts'.
Info 60 [00:01:49.000] Reusing resolution of module 'module2' from '/user/username/projects/myproject/src/file2.ts' of old program, it was successfully resolved to '/user/username/projects/myproject/node_modules/module2/index.ts'.
Info 61 [00:01:50.000] Finishing updateGraphWorker: Project: /user/username/projects/myproject/tsconfig.json Version: 2 structureChanged: true structureIsReused:: SafeModules Elapsed:: *ms
Info 62 [00:01:51.000] Different program with same set of files
Info 63 [00:01:52.000] Running: *ensureProjectForOpenFiles*
Info 64 [00:01:53.000] Before ensureProjectForOpenFiles:
Info 65 [00:01:54.000] Project '/user/username/projects/myproject/tsconfig.json' (Configured)
Info 65 [00:01:55.000] Files (5)
Info 59 [00:01:48.000] Running: /user/username/projects/myproject/tsconfig.json
Info 60 [00:01:49.000] Starting updateGraphWorker: Project: /user/username/projects/myproject/tsconfig.json
Info 61 [00:01:50.000] Reusing resolution of module 'module1' from '/user/username/projects/myproject/src/file1.ts' of old program, it was successfully resolved to '/user/username/projects/myproject/src/node_modules/module1/index.ts'.
Info 62 [00:01:51.000] Reusing resolution of module 'module2' from '/user/username/projects/myproject/src/file1.ts' of old program, it was successfully resolved to '/user/username/projects/myproject/node_modules/module2/index.ts'.
Info 63 [00:01:52.000] Reusing resolution of module 'module1' from '/user/username/projects/myproject/src/file2.ts' of old program, it was successfully resolved to '/user/username/projects/myproject/src/node_modules/module1/index.ts'.
Info 64 [00:01:53.000] Reusing resolution of module 'module2' from '/user/username/projects/myproject/src/file2.ts' of old program, it was successfully resolved to '/user/username/projects/myproject/node_modules/module2/index.ts'.
Info 65 [00:01:54.000] Finishing updateGraphWorker: Project: /user/username/projects/myproject/tsconfig.json Version: 2 structureChanged: true structureIsReused:: SafeModules Elapsed:: *ms
Info 66 [00:01:55.000] Different program with same set of files
Info 67 [00:01:56.000] Running: *ensureProjectForOpenFiles*
Info 68 [00:01:57.000] Before ensureProjectForOpenFiles:
Info 69 [00:01:58.000] Project '/user/username/projects/myproject/tsconfig.json' (Configured)
Info 69 [00:01:59.000] Files (5)
Info 65 [00:01:56.000] -----------------------------------------------
Info 65 [00:01:57.000] Open files:
Info 65 [00:01:58.000] FileName: /user/username/projects/myproject/src/file1.ts ProjectRootPath: undefined
Info 65 [00:01:59.000] Projects: /user/username/projects/myproject/tsconfig.json
Info 65 [00:02:00.000] After ensureProjectForOpenFiles:
Info 66 [00:02:01.000] Project '/user/username/projects/myproject/tsconfig.json' (Configured)
Info 66 [00:02:02.000] Files (5)
Info 69 [00:02:00.000] -----------------------------------------------
Info 69 [00:02:01.000] Open files:
Info 69 [00:02:02.000] FileName: /user/username/projects/myproject/src/file1.ts ProjectRootPath: undefined
Info 69 [00:02:03.000] Projects: /user/username/projects/myproject/tsconfig.json
Info 69 [00:02:04.000] After ensureProjectForOpenFiles:
Info 70 [00:02:05.000] Project '/user/username/projects/myproject/tsconfig.json' (Configured)
Info 70 [00:02:06.000] Files (5)
Info 66 [00:02:03.000] -----------------------------------------------
Info 66 [00:02:04.000] Open files:
Info 66 [00:02:05.000] FileName: /user/username/projects/myproject/src/file1.ts ProjectRootPath: undefined
Info 66 [00:02:06.000] Projects: /user/username/projects/myproject/tsconfig.json
Info 70 [00:02:07.000] -----------------------------------------------
Info 70 [00:02:08.000] Open files:
Info 70 [00:02:09.000] FileName: /user/username/projects/myproject/src/file1.ts ProjectRootPath: undefined
Info 70 [00:02:10.000] Projects: /user/username/projects/myproject/tsconfig.json
After running timeout callbacks
PolledWatches::
@@ -0,0 +1,182 @@
Info 0 [00:00:29.000] Provided types map file "/a/lib/typesMap.json" doesn't exist
Info 1 [00:00:30.000] request:
{
"command": "open",
"arguments": {
"file": "/src/projects/app/appB.ts"
},
"seq": 1,
"type": "request"
}
Before request
//// [/src/projects/node_modules/moduleX/index.d.ts]
export const x = 10;
//// [/src/projects/common/tsconfig.json]
{"compilerOptions":{"composite":true,"traceResolution":true}}
//// [/src/projects/common/moduleA.ts]
export const a = 10;
//// [/src/projects/common/moduleB.ts]
import { x } from "moduleX";
export const b = x;
//// [/src/projects/app/tsconfig.json]
{"compilerOptions":{"composite":true,"traceResolution":true,"typeRoots":[]},"references":[{"path":"../common"}]}
//// [/src/projects/app/appA.ts]
import { x } from "moduleX";
export const y = x;
//// [/src/projects/app/appB.ts]
import { x } from "../common/moduleB";
export const y = x;
PolledWatches::
FsWatches::
FsWatchesRecursive::
Info 2 [00:00:31.000] Search path: /src/projects/app
Info 3 [00:00:32.000] For info: /src/projects/app/appB.ts :: Config file name: /src/projects/app/tsconfig.json
Info 4 [00:00:33.000] Creating configuration project /src/projects/app/tsconfig.json
Info 5 [00:00:34.000] FileWatcher:: Added:: WatchInfo: /src/projects/app/tsconfig.json 2000 undefined Project: /src/projects/app/tsconfig.json WatchType: Config file
Info 6 [00:00:35.000] Config: /src/projects/app/tsconfig.json : {
"rootNames": [
"/src/projects/app/appA.ts",
"/src/projects/app/appB.ts"
],
"options": {
"composite": true,
"traceResolution": true,
"typeRoots": [],
"configFilePath": "/src/projects/app/tsconfig.json"
},
"projectReferences": [
{
"path": "/src/projects/common",
"originalPath": "../common"
}
]
}
Info 7 [00:00:36.000] DirectoryWatcher:: Added:: WatchInfo: /src/projects/app 1 undefined Config: /src/projects/app/tsconfig.json WatchType: Wild card directory
Info 8 [00:00:37.000] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /src/projects/app 1 undefined Config: /src/projects/app/tsconfig.json WatchType: Wild card directory
Info 9 [00:00:38.000] FileWatcher:: Added:: WatchInfo: /src/projects/app/appA.ts 500 undefined WatchType: Closed Script info
Info 10 [00:00:39.000] Starting updateGraphWorker: Project: /src/projects/app/tsconfig.json
Info 11 [00:00:40.000] Config: /src/projects/common/tsconfig.json : {
"rootNames": [
"/src/projects/common/moduleA.ts",
"/src/projects/common/moduleB.ts"
],
"options": {
"composite": true,
"traceResolution": true,
"configFilePath": "/src/projects/common/tsconfig.json"
}
}
Info 12 [00:00:41.000] FileWatcher:: Added:: WatchInfo: /src/projects/common/tsconfig.json 2000 undefined Project: /src/projects/app/tsconfig.json WatchType: Config file
Info 13 [00:00:42.000] DirectoryWatcher:: Added:: WatchInfo: /src/projects/common 1 undefined Config: /src/projects/common/tsconfig.json WatchType: Wild card directory
Info 14 [00:00:43.000] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /src/projects/common 1 undefined Config: /src/projects/common/tsconfig.json WatchType: Wild card directory
Info 15 [00:00:44.000] ======== Resolving module 'moduleX' from '/src/projects/app/appA.ts'. ========
Info 16 [00:00:45.000] Module resolution kind is not specified, using 'NodeJs'.
Info 17 [00:00:46.000] Loading module 'moduleX' from 'node_modules' folder, target file types: TypeScript, Declaration.
Info 18 [00:00:47.000] Directory '/src/projects/app/node_modules' does not exist, skipping all lookups in it.
Info 19 [00:00:48.000] File '/src/projects/node_modules/moduleX/package.json' does not exist.
Info 20 [00:00:49.000] File '/src/projects/node_modules/moduleX.ts' does not exist.
Info 21 [00:00:50.000] File '/src/projects/node_modules/moduleX.tsx' does not exist.
Info 22 [00:00:51.000] File '/src/projects/node_modules/moduleX.d.ts' does not exist.
Info 23 [00:00:52.000] File '/src/projects/node_modules/moduleX/index.ts' does not exist.
Info 24 [00:00:53.000] File '/src/projects/node_modules/moduleX/index.tsx' does not exist.
Info 25 [00:00:54.000] File '/src/projects/node_modules/moduleX/index.d.ts' exist - use it as a name resolution result.
Info 26 [00:00:55.000] Resolving real path for '/src/projects/node_modules/moduleX/index.d.ts', result '/src/projects/node_modules/moduleX/index.d.ts'.
Info 27 [00:00:56.000] ======== Module name 'moduleX' was successfully resolved to '/src/projects/node_modules/moduleX/index.d.ts'. ========
Info 28 [00:00:57.000] DirectoryWatcher:: Added:: WatchInfo: /src/projects/node_modules 1 undefined WatchType: node_modules for closed script infos and package.jsons affecting module specifier cache
Info 29 [00:00:58.000] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /src/projects/node_modules 1 undefined WatchType: node_modules for closed script infos and package.jsons affecting module specifier cache
Info 30 [00:00:59.000] ======== Resolving module '../common/moduleB' from '/src/projects/app/appB.ts'. ========
Info 31 [00:01:00.000] Module resolution kind is not specified, using 'NodeJs'.
Info 32 [00:01:01.000] Loading module as file / folder, candidate module location '/src/projects/common/moduleB', target file types: TypeScript, Declaration.
Info 33 [00:01:02.000] File '/src/projects/common/moduleB.ts' exist - use it as a name resolution result.
Info 34 [00:01:03.000] ======== Module name '../common/moduleB' was successfully resolved to '/src/projects/common/moduleB.ts'. ========
Info 35 [00:01:04.000] FileWatcher:: Added:: WatchInfo: /src/projects/common/moduleB.ts 500 undefined WatchType: Closed Script info
Info 36 [00:01:05.000] ======== Resolving module 'moduleX' from '/src/projects/common/moduleB.ts'. ========
Info 37 [00:01:06.000] Using compiler options of project reference redirect '/src/projects/common/tsconfig.json'.
Info 38 [00:01:07.000] Module resolution kind is not specified, using 'NodeJs'.
Info 39 [00:01:08.000] Loading module 'moduleX' from 'node_modules' folder, target file types: TypeScript, Declaration.
Info 40 [00:01:09.000] Directory '/src/projects/common/node_modules' does not exist, skipping all lookups in it.
Info 41 [00:01:10.000] File '/src/projects/node_modules/moduleX/package.json' does not exist according to earlier cached lookups.
Info 42 [00:01:11.000] File '/src/projects/node_modules/moduleX.ts' does not exist.
Info 43 [00:01:12.000] File '/src/projects/node_modules/moduleX.tsx' does not exist.
Info 44 [00:01:13.000] File '/src/projects/node_modules/moduleX.d.ts' does not exist.
Info 45 [00:01:14.000] File '/src/projects/node_modules/moduleX/index.ts' does not exist.
Info 46 [00:01:15.000] File '/src/projects/node_modules/moduleX/index.tsx' does not exist.
Info 47 [00:01:16.000] File '/src/projects/node_modules/moduleX/index.d.ts' exist - use it as a name resolution result.
Info 48 [00:01:17.000] Resolving real path for '/src/projects/node_modules/moduleX/index.d.ts', result '/src/projects/node_modules/moduleX/index.d.ts'.
Info 49 [00:01:18.000] ======== Module name 'moduleX' was successfully resolved to '/src/projects/node_modules/moduleX/index.d.ts'. ========
Info 50 [00:01:19.000] DirectoryWatcher:: Added:: WatchInfo: /src/projects/app/node_modules 1 undefined Project: /src/projects/app/tsconfig.json WatchType: Failed Lookup Locations
Info 51 [00:01:20.000] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /src/projects/app/node_modules 1 undefined Project: /src/projects/app/tsconfig.json WatchType: Failed Lookup Locations
Info 52 [00:01:21.000] FileWatcher:: Added:: WatchInfo: /a/lib/lib.d.ts 500 undefined Project: /src/projects/app/tsconfig.json WatchType: Missing file
Info 53 [00:01:22.000] Finishing updateGraphWorker: Project: /src/projects/app/tsconfig.json Version: 1 structureChanged: true structureIsReused:: Not Elapsed:: *ms
Info 54 [00:01:23.000] Project '/src/projects/app/tsconfig.json' (Configured)
Info 55 [00:01:24.000] Files (4)
/src/projects/node_modules/moduleX/index.d.ts
/src/projects/app/appA.ts
/src/projects/common/moduleB.ts
/src/projects/app/appB.ts
../node_modules/moduleX/index.d.ts
Imported via "moduleX" from file 'appA.ts'
Imported via "moduleX" from file '../common/moduleB.ts'
appA.ts
Matched by default include pattern '**/*'
../common/moduleB.ts
Imported via "../common/moduleB" from file 'appB.ts'
appB.ts
Matched by default include pattern '**/*'
Info 56 [00:01:25.000] -----------------------------------------------
Info 57 [00:01:26.000] Search path: /src/projects/app
Info 58 [00:01:27.000] For info: /src/projects/app/tsconfig.json :: No config files found.
Info 59 [00:01:28.000] Project '/src/projects/app/tsconfig.json' (Configured)
Info 59 [00:01:29.000] Files (4)
Info 59 [00:01:30.000] -----------------------------------------------
Info 59 [00:01:31.000] Open files:
Info 59 [00:01:32.000] FileName: /src/projects/app/appB.ts ProjectRootPath: undefined
Info 59 [00:01:33.000] Projects: /src/projects/app/tsconfig.json
After request
PolledWatches::
/src/projects/app/node_modules:
{"pollingInterval":500}
/a/lib/lib.d.ts:
{"pollingInterval":500}
FsWatches::
/src/projects/app/tsconfig.json:
{}
/src/projects/app/appa.ts:
{}
/src/projects/common/tsconfig.json:
{}
/src/projects/common/moduleb.ts:
{}
FsWatchesRecursive::
/src/projects/app:
{}
/src/projects/common:
{}
/src/projects/node_modules:
{}
Info 59 [00:01:34.000] response:
{
"responseRequired": false
}
@@ -67,14 +67,18 @@ Info 18 [00:00:47.000] Module resolution kind is not specified, using 'NodeJs'
Info 19 [00:00:48.000] Loading module as file / folder, candidate module location '/user/username/projects/myproject/module2', target file types: TypeScript, Declaration.
Info 20 [00:00:49.000] File '/user/username/projects/myproject/module2.ts' exist - use it as a name resolution result.
Info 21 [00:00:50.000] ======== Module name '../module2' was successfully resolved to '/user/username/projects/myproject/module2.ts'. ========
Info 22 [00:00:51.000] Reusing resolution of module './module1' from '/user/username/projects/myproject/src/file2.ts' found in cache from location '/user/username/projects/myproject/src', it was successfully resolved to '/user/username/projects/myproject/src/module1.ts'.
Info 23 [00:00:52.000] Reusing resolution of module '../module2' from '/user/username/projects/myproject/src/file2.ts' found in cache from location '/user/username/projects/myproject/src', it was successfully resolved to '/user/username/projects/myproject/module2.ts'.
Info 24 [00:00:53.000] FileWatcher:: Added:: WatchInfo: /a/lib/lib.d.ts 500 undefined WatchType: Closed Script info
Info 25 [00:00:54.000] DirectoryWatcher:: Added:: WatchInfo: /user/username/projects/myproject/node_modules/@types 1 undefined Project: /user/username/projects/myproject/tsconfig.json WatchType: Type roots
Info 26 [00:00:55.000] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /user/username/projects/myproject/node_modules/@types 1 undefined Project: /user/username/projects/myproject/tsconfig.json WatchType: Type roots
Info 27 [00:00:56.000] Finishing updateGraphWorker: Project: /user/username/projects/myproject/tsconfig.json Version: 1 structureChanged: true structureIsReused:: Not Elapsed:: *ms
Info 28 [00:00:57.000] Project '/user/username/projects/myproject/tsconfig.json' (Configured)
Info 29 [00:00:58.000] Files (5)
Info 22 [00:00:51.000] ======== Resolving module './module1' from '/user/username/projects/myproject/src/file2.ts'. ========
Info 23 [00:00:52.000] Resolution for module './module1' was found in cache from location '/user/username/projects/myproject/src'.
Info 24 [00:00:53.000] ======== Module name './module1' was successfully resolved to '/user/username/projects/myproject/src/module1.ts'. ========
Info 25 [00:00:54.000] ======== Resolving module '../module2' from '/user/username/projects/myproject/src/file2.ts'. ========
Info 26 [00:00:55.000] Resolution for module '../module2' was found in cache from location '/user/username/projects/myproject/src'.
Info 27 [00:00:56.000] ======== Module name '../module2' was successfully resolved to '/user/username/projects/myproject/module2.ts'. ========
Info 28 [00:00:57.000] FileWatcher:: Added:: WatchInfo: /a/lib/lib.d.ts 500 undefined WatchType: Closed Script info
Info 29 [00:00:58.000] DirectoryWatcher:: Added:: WatchInfo: /user/username/projects/myproject/node_modules/@types 1 undefined Project: /user/username/projects/myproject/tsconfig.json WatchType: Type roots
Info 30 [00:00:59.000] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /user/username/projects/myproject/node_modules/@types 1 undefined Project: /user/username/projects/myproject/tsconfig.json WatchType: Type roots
Info 31 [00:01:00.000] Finishing updateGraphWorker: Project: /user/username/projects/myproject/tsconfig.json Version: 1 structureChanged: true structureIsReused:: Not Elapsed:: *ms
Info 32 [00:01:01.000] Project '/user/username/projects/myproject/tsconfig.json' (Configured)
Info 33 [00:01:02.000] Files (5)
/a/lib/lib.d.ts
/user/username/projects/myproject/module2.ts
/user/username/projects/myproject/src/module1.ts
@@ -97,18 +101,18 @@ Info 29 [00:00:58.000] Files (5)
src/file2.ts
Matched by default include pattern '**/*'
Info 30 [00:00:59.000] -----------------------------------------------
Info 31 [00:01:00.000] Project '/user/username/projects/myproject/tsconfig.json' (Configured)
Info 31 [00:01:01.000] Files (5)
Info 34 [00:01:03.000] -----------------------------------------------
Info 35 [00:01:04.000] Project '/user/username/projects/myproject/tsconfig.json' (Configured)
Info 35 [00:01:05.000] Files (5)
Info 31 [00:01:02.000] -----------------------------------------------
Info 31 [00:01:03.000] Open files:
Info 31 [00:01:04.000] FileName: /user/username/projects/myproject/src/file1.ts ProjectRootPath: undefined
Info 31 [00:01:05.000] Projects: /user/username/projects/myproject/tsconfig.json
Info 31 [00:01:12.000] FileWatcher:: Triggered with /user/username/projects/myproject/src/file2.ts 1:: WatchInfo: /user/username/projects/myproject/src/file2.ts 500 undefined WatchType: Closed Script info
Info 32 [00:01:13.000] Scheduled: /user/username/projects/myproject/tsconfig.json
Info 33 [00:01:14.000] Scheduled: *ensureProjectForOpenFiles*
Info 34 [00:01:15.000] Elapsed:: *ms FileWatcher:: Triggered with /user/username/projects/myproject/src/file2.ts 1:: WatchInfo: /user/username/projects/myproject/src/file2.ts 500 undefined WatchType: Closed Script info
Info 35 [00:01:06.000] -----------------------------------------------
Info 35 [00:01:07.000] Open files:
Info 35 [00:01:08.000] FileName: /user/username/projects/myproject/src/file1.ts ProjectRootPath: undefined
Info 35 [00:01:09.000] Projects: /user/username/projects/myproject/tsconfig.json
Info 35 [00:01:16.000] FileWatcher:: Triggered with /user/username/projects/myproject/src/file2.ts 1:: WatchInfo: /user/username/projects/myproject/src/file2.ts 500 undefined WatchType: Closed Script info
Info 36 [00:01:17.000] Scheduled: /user/username/projects/myproject/tsconfig.json
Info 37 [00:01:18.000] Scheduled: *ensureProjectForOpenFiles*
Info 38 [00:01:19.000] Elapsed:: *ms FileWatcher:: Triggered with /user/username/projects/myproject/src/file2.ts 1:: WatchInfo: /user/username/projects/myproject/src/file2.ts 500 undefined WatchType: Closed Script info
Before running timeout callbacks
//// [/user/username/projects/myproject/src/file1.ts]
import { module1 } from "./module1";import { module2 } from "../module2";import { module1 } from "./module1";import { module2 } from "../module2";
@@ -137,31 +141,31 @@ FsWatchesRecursive::
/user/username/projects/myproject:
{}
Info 35 [00:01:16.000] Running: /user/username/projects/myproject/tsconfig.json
Info 36 [00:01:17.000] Starting updateGraphWorker: Project: /user/username/projects/myproject/tsconfig.json
Info 37 [00:01:18.000] Reusing resolution of module './module1' from '/user/username/projects/myproject/src/file1.ts' of old program, it was successfully resolved to '/user/username/projects/myproject/src/module1.ts'.
Info 38 [00:01:19.000] Reusing resolution of module '../module2' from '/user/username/projects/myproject/src/file1.ts' of old program, it was successfully resolved to '/user/username/projects/myproject/module2.ts'.
Info 39 [00:01:20.000] Reusing resolution of module './module1' from '/user/username/projects/myproject/src/file2.ts' of old program, it was successfully resolved to '/user/username/projects/myproject/src/module1.ts'.
Info 40 [00:01:21.000] Reusing resolution of module '../module2' from '/user/username/projects/myproject/src/file2.ts' of old program, it was successfully resolved to '/user/username/projects/myproject/module2.ts'.
Info 41 [00:01:22.000] Finishing updateGraphWorker: Project: /user/username/projects/myproject/tsconfig.json Version: 2 structureChanged: true structureIsReused:: SafeModules Elapsed:: *ms
Info 42 [00:01:23.000] Different program with same set of files
Info 43 [00:01:24.000] Running: *ensureProjectForOpenFiles*
Info 44 [00:01:25.000] Before ensureProjectForOpenFiles:
Info 45 [00:01:26.000] Project '/user/username/projects/myproject/tsconfig.json' (Configured)
Info 45 [00:01:27.000] Files (5)
Info 39 [00:01:20.000] Running: /user/username/projects/myproject/tsconfig.json
Info 40 [00:01:21.000] Starting updateGraphWorker: Project: /user/username/projects/myproject/tsconfig.json
Info 41 [00:01:22.000] Reusing resolution of module './module1' from '/user/username/projects/myproject/src/file1.ts' of old program, it was successfully resolved to '/user/username/projects/myproject/src/module1.ts'.
Info 42 [00:01:23.000] Reusing resolution of module '../module2' from '/user/username/projects/myproject/src/file1.ts' of old program, it was successfully resolved to '/user/username/projects/myproject/module2.ts'.
Info 43 [00:01:24.000] Reusing resolution of module './module1' from '/user/username/projects/myproject/src/file2.ts' of old program, it was successfully resolved to '/user/username/projects/myproject/src/module1.ts'.
Info 44 [00:01:25.000] Reusing resolution of module '../module2' from '/user/username/projects/myproject/src/file2.ts' of old program, it was successfully resolved to '/user/username/projects/myproject/module2.ts'.
Info 45 [00:01:26.000] Finishing updateGraphWorker: Project: /user/username/projects/myproject/tsconfig.json Version: 2 structureChanged: true structureIsReused:: SafeModules Elapsed:: *ms
Info 46 [00:01:27.000] Different program with same set of files
Info 47 [00:01:28.000] Running: *ensureProjectForOpenFiles*
Info 48 [00:01:29.000] Before ensureProjectForOpenFiles:
Info 49 [00:01:30.000] Project '/user/username/projects/myproject/tsconfig.json' (Configured)
Info 49 [00:01:31.000] Files (5)
Info 45 [00:01:28.000] -----------------------------------------------
Info 45 [00:01:29.000] Open files:
Info 45 [00:01:30.000] FileName: /user/username/projects/myproject/src/file1.ts ProjectRootPath: undefined
Info 45 [00:01:31.000] Projects: /user/username/projects/myproject/tsconfig.json
Info 45 [00:01:32.000] After ensureProjectForOpenFiles:
Info 46 [00:01:33.000] Project '/user/username/projects/myproject/tsconfig.json' (Configured)
Info 46 [00:01:34.000] Files (5)
Info 49 [00:01:32.000] -----------------------------------------------
Info 49 [00:01:33.000] Open files:
Info 49 [00:01:34.000] FileName: /user/username/projects/myproject/src/file1.ts ProjectRootPath: undefined
Info 49 [00:01:35.000] Projects: /user/username/projects/myproject/tsconfig.json
Info 49 [00:01:36.000] After ensureProjectForOpenFiles:
Info 50 [00:01:37.000] Project '/user/username/projects/myproject/tsconfig.json' (Configured)
Info 50 [00:01:38.000] Files (5)
Info 46 [00:01:35.000] -----------------------------------------------
Info 46 [00:01:36.000] Open files:
Info 46 [00:01:37.000] FileName: /user/username/projects/myproject/src/file1.ts ProjectRootPath: undefined
Info 46 [00:01:38.000] Projects: /user/username/projects/myproject/tsconfig.json
Info 50 [00:01:39.000] -----------------------------------------------
Info 50 [00:01:40.000] Open files:
Info 50 [00:01:41.000] FileName: /user/username/projects/myproject/src/file1.ts ProjectRootPath: undefined
Info 50 [00:01:42.000] Projects: /user/username/projects/myproject/tsconfig.json
After running timeout callbacks
PolledWatches::
@@ -0,0 +1,178 @@
Info 0 [00:00:29.000] Provided types map file "/a/lib/typesMap.json" doesn't exist
Info 1 [00:00:30.000] request:
{
"command": "open",
"arguments": {
"file": "/src/projects/app/appB.ts"
},
"seq": 1,
"type": "request"
}
Before request
//// [/src/projects/node_modules/moduleX/index.d.ts]
export const x = 10;
//// [/src/projects/common/tsconfig.json]
{"compilerOptions":{"composite":true,"traceResolution":true}}
//// [/src/projects/common/moduleA.ts]
export const a = 10;
//// [/src/projects/common/moduleB.ts]
import { x } from "moduleX";
export const b = x;
//// [/src/projects/app/tsconfig.json]
{"compilerOptions":{"composite":true,"traceResolution":true},"references":[{"path":"../common"}]}
//// [/src/projects/app/appA.ts]
import { x } from "moduleX";
export const y = x;
//// [/src/projects/app/appB.ts]
import { x } from "../common/moduleB";
export const y = x;
PolledWatches::
FsWatches::
FsWatchesRecursive::
Info 2 [00:00:31.000] Search path: /src/projects/app
Info 3 [00:00:32.000] For info: /src/projects/app/appB.ts :: Config file name: /src/projects/app/tsconfig.json
Info 4 [00:00:33.000] Creating configuration project /src/projects/app/tsconfig.json
Info 5 [00:00:34.000] FileWatcher:: Added:: WatchInfo: /src/projects/app/tsconfig.json 2000 undefined Project: /src/projects/app/tsconfig.json WatchType: Config file
Info 6 [00:00:35.000] Config: /src/projects/app/tsconfig.json : {
"rootNames": [
"/src/projects/app/appA.ts",
"/src/projects/app/appB.ts"
],
"options": {
"composite": true,
"traceResolution": true,
"configFilePath": "/src/projects/app/tsconfig.json"
},
"projectReferences": [
{
"path": "/src/projects/common",
"originalPath": "../common"
}
]
}
Info 7 [00:00:36.000] DirectoryWatcher:: Added:: WatchInfo: /src/projects/app 1 undefined Config: /src/projects/app/tsconfig.json WatchType: Wild card directory
Info 8 [00:00:37.000] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /src/projects/app 1 undefined Config: /src/projects/app/tsconfig.json WatchType: Wild card directory
Info 9 [00:00:38.000] FileWatcher:: Added:: WatchInfo: /src/projects/app/appA.ts 500 undefined WatchType: Closed Script info
Info 10 [00:00:39.000] Starting updateGraphWorker: Project: /src/projects/app/tsconfig.json
Info 11 [00:00:40.000] Config: /src/projects/common/tsconfig.json : {
"rootNames": [
"/src/projects/common/moduleA.ts",
"/src/projects/common/moduleB.ts"
],
"options": {
"composite": true,
"traceResolution": true,
"configFilePath": "/src/projects/common/tsconfig.json"
}
}
Info 12 [00:00:41.000] FileWatcher:: Added:: WatchInfo: /src/projects/common/tsconfig.json 2000 undefined Project: /src/projects/app/tsconfig.json WatchType: Config file
Info 13 [00:00:42.000] DirectoryWatcher:: Added:: WatchInfo: /src/projects/common 1 undefined Config: /src/projects/common/tsconfig.json WatchType: Wild card directory
Info 14 [00:00:43.000] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /src/projects/common 1 undefined Config: /src/projects/common/tsconfig.json WatchType: Wild card directory
Info 15 [00:00:44.000] ======== Resolving module 'moduleX' from '/src/projects/app/appA.ts'. ========
Info 16 [00:00:45.000] Module resolution kind is not specified, using 'NodeJs'.
Info 17 [00:00:46.000] Loading module 'moduleX' from 'node_modules' folder, target file types: TypeScript, Declaration.
Info 18 [00:00:47.000] Directory '/src/projects/app/node_modules' does not exist, skipping all lookups in it.
Info 19 [00:00:48.000] File '/src/projects/node_modules/moduleX/package.json' does not exist.
Info 20 [00:00:49.000] File '/src/projects/node_modules/moduleX.ts' does not exist.
Info 21 [00:00:50.000] File '/src/projects/node_modules/moduleX.tsx' does not exist.
Info 22 [00:00:51.000] File '/src/projects/node_modules/moduleX.d.ts' does not exist.
Info 23 [00:00:52.000] File '/src/projects/node_modules/moduleX/index.ts' does not exist.
Info 24 [00:00:53.000] File '/src/projects/node_modules/moduleX/index.tsx' does not exist.
Info 25 [00:00:54.000] File '/src/projects/node_modules/moduleX/index.d.ts' exist - use it as a name resolution result.
Info 26 [00:00:55.000] Resolving real path for '/src/projects/node_modules/moduleX/index.d.ts', result '/src/projects/node_modules/moduleX/index.d.ts'.
Info 27 [00:00:56.000] ======== Module name 'moduleX' was successfully resolved to '/src/projects/node_modules/moduleX/index.d.ts'. ========
Info 28 [00:00:57.000] DirectoryWatcher:: Added:: WatchInfo: /src/projects/node_modules 1 undefined WatchType: node_modules for closed script infos and package.jsons affecting module specifier cache
Info 29 [00:00:58.000] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /src/projects/node_modules 1 undefined WatchType: node_modules for closed script infos and package.jsons affecting module specifier cache
Info 30 [00:00:59.000] ======== Resolving module '../common/moduleB' from '/src/projects/app/appB.ts'. ========
Info 31 [00:01:00.000] Module resolution kind is not specified, using 'NodeJs'.
Info 32 [00:01:01.000] Loading module as file / folder, candidate module location '/src/projects/common/moduleB', target file types: TypeScript, Declaration.
Info 33 [00:01:02.000] File '/src/projects/common/moduleB.ts' exist - use it as a name resolution result.
Info 34 [00:01:03.000] ======== Module name '../common/moduleB' was successfully resolved to '/src/projects/common/moduleB.ts'. ========
Info 35 [00:01:04.000] FileWatcher:: Added:: WatchInfo: /src/projects/common/moduleB.ts 500 undefined WatchType: Closed Script info
Info 36 [00:01:05.000] ======== Resolving module 'moduleX' from '/src/projects/common/moduleB.ts'. ========
Info 37 [00:01:06.000] Using compiler options of project reference redirect '/src/projects/common/tsconfig.json'.
Info 38 [00:01:07.000] Module resolution kind is not specified, using 'NodeJs'.
Info 39 [00:01:08.000] Loading module 'moduleX' from 'node_modules' folder, target file types: TypeScript, Declaration.
Info 40 [00:01:09.000] Directory '/src/projects/common/node_modules' does not exist, skipping all lookups in it.
Info 41 [00:01:10.000] Resolution for module 'moduleX' was found in cache from location '/src/projects'.
Info 42 [00:01:11.000] ======== Module name 'moduleX' was successfully resolved to '/src/projects/node_modules/moduleX/index.d.ts'. ========
Info 43 [00:01:12.000] DirectoryWatcher:: Added:: WatchInfo: /src/projects/app/node_modules 1 undefined Project: /src/projects/app/tsconfig.json WatchType: Failed Lookup Locations
Info 44 [00:01:13.000] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /src/projects/app/node_modules 1 undefined Project: /src/projects/app/tsconfig.json WatchType: Failed Lookup Locations
Info 45 [00:01:14.000] FileWatcher:: Added:: WatchInfo: /a/lib/lib.d.ts 500 undefined Project: /src/projects/app/tsconfig.json WatchType: Missing file
Info 46 [00:01:15.000] DirectoryWatcher:: Added:: WatchInfo: /src/projects/app/node_modules/@types 1 undefined Project: /src/projects/app/tsconfig.json WatchType: Type roots
Info 47 [00:01:16.000] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /src/projects/app/node_modules/@types 1 undefined Project: /src/projects/app/tsconfig.json WatchType: Type roots
Info 48 [00:01:17.000] Finishing updateGraphWorker: Project: /src/projects/app/tsconfig.json Version: 1 structureChanged: true structureIsReused:: Not Elapsed:: *ms
Info 49 [00:01:18.000] Project '/src/projects/app/tsconfig.json' (Configured)
Info 50 [00:01:19.000] Files (4)
/src/projects/node_modules/moduleX/index.d.ts
/src/projects/app/appA.ts
/src/projects/common/moduleB.ts
/src/projects/app/appB.ts
../node_modules/moduleX/index.d.ts
Imported via "moduleX" from file 'appA.ts'
Imported via "moduleX" from file '../common/moduleB.ts'
appA.ts
Matched by default include pattern '**/*'
../common/moduleB.ts
Imported via "../common/moduleB" from file 'appB.ts'
appB.ts
Matched by default include pattern '**/*'
Info 51 [00:01:20.000] -----------------------------------------------
Info 52 [00:01:21.000] Search path: /src/projects/app
Info 53 [00:01:22.000] For info: /src/projects/app/tsconfig.json :: No config files found.
Info 54 [00:01:23.000] Project '/src/projects/app/tsconfig.json' (Configured)
Info 54 [00:01:24.000] Files (4)
Info 54 [00:01:25.000] -----------------------------------------------
Info 54 [00:01:26.000] Open files:
Info 54 [00:01:27.000] FileName: /src/projects/app/appB.ts ProjectRootPath: undefined
Info 54 [00:01:28.000] Projects: /src/projects/app/tsconfig.json
After request
PolledWatches::
/src/projects/app/node_modules:
{"pollingInterval":500}
/a/lib/lib.d.ts:
{"pollingInterval":500}
/src/projects/app/node_modules/@types:
{"pollingInterval":500}
FsWatches::
/src/projects/app/tsconfig.json:
{}
/src/projects/app/appa.ts:
{}
/src/projects/common/tsconfig.json:
{}
/src/projects/common/moduleb.ts:
{}
FsWatchesRecursive::
/src/projects/app:
{}
/src/projects/common:
{}
/src/projects/node_modules:
{}
Info 54 [00:01:29.000] response:
{
"responseRequired": false
}