Adds tests and fixes issues by verifying incremental project updates are handling language service ref counting correctly (#54504)

This commit is contained in:
Sheetal Nandi 2023-06-06 11:11:14 -07:00 committed by GitHub
parent 93ac5c6529
commit 3c4c060dff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
32 changed files with 492 additions and 79 deletions

View File

@ -72,6 +72,7 @@ import {
ObjectFlags,
ObjectType,
RelationComparisonResult,
ScriptKind,
Signature,
SignatureCheckMode,
SignatureFlags,
@ -439,6 +440,10 @@ export namespace Debug {
return formatEnum(kind, (ts as any).SnippetKind, /*isFlags*/ false);
}
export function formatScriptKind(kind: ScriptKind | undefined): string {
return formatEnum(kind, (ts as any).ScriptKind, /*isFlags*/ false);
}
export function formatNodeFlags(flags: NodeFlags | undefined): string {
return formatEnum(flags, (ts as any).NodeFlags, /*isFlags*/ true);
}

View File

@ -880,7 +880,7 @@ function compilerOptionValueToString(value: unknown): string {
/** @internal */
export function getKeyForCompilerOptions(options: CompilerOptions, affectingOptionDeclarations: readonly CommandLineOption[]) {
return affectingOptionDeclarations.map(option => compilerOptionValueToString(getCompilerOptionValue(options, option))).join("|") + (options.pathsBasePath ? `|${options.pathsBasePath}` : undefined);
return affectingOptionDeclarations.map(option => compilerOptionValueToString(getCompilerOptionValue(options, option))).join("|") + `|${options.pathsBasePath}`;
}
/** @internal */

View File

@ -2369,8 +2369,8 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
for (const oldSourceFile of oldSourceFiles) {
const sourceFileOptions = getCreateSourceFileOptions(oldSourceFile.fileName, moduleResolutionCache, host, options);
let newSourceFile = host.getSourceFileByPath
? host.getSourceFileByPath(oldSourceFile.fileName, oldSourceFile.resolvedPath, sourceFileOptions, /*onError*/ undefined, shouldCreateNewSourceFile || sourceFileOptions.impliedNodeFormat !== oldSourceFile.impliedNodeFormat)
: host.getSourceFile(oldSourceFile.fileName, sourceFileOptions, /*onError*/ undefined, shouldCreateNewSourceFile || sourceFileOptions.impliedNodeFormat !== oldSourceFile.impliedNodeFormat); // TODO: GH#18217
? host.getSourceFileByPath(oldSourceFile.fileName, oldSourceFile.resolvedPath, sourceFileOptions, /*onError*/ undefined, shouldCreateNewSourceFile)
: host.getSourceFile(oldSourceFile.fileName, sourceFileOptions, /*onError*/ undefined, shouldCreateNewSourceFile); // TODO: GH#18217
if (!newSourceFile) {
return StructureIsReused.Not;
@ -3615,7 +3615,7 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
fileName,
sourceFileOptions,
hostErrorMessage => addFilePreprocessingFileExplainingDiagnostic(/*file*/ undefined, reason, Diagnostics.Cannot_read_file_0_Colon_1, [fileName, hostErrorMessage]),
shouldCreateNewSourceFile || (oldProgram?.getSourceFileByPath(toPath(fileName))?.impliedNodeFormat !== sourceFileOptions.impliedNodeFormat)
shouldCreateNewSourceFile,
);
if (packageId) {

View File

@ -724,7 +724,8 @@ export function createWatchProgram<T extends BuilderProgram>(host: WatchCompiler
}
// Create new source file if requested or the versions dont match
if (hostSourceFile === undefined || shouldCreateNewSourceFile || isFilePresenceUnknownOnHost(hostSourceFile)) {
const impliedNodeFormat = typeof languageVersionOrOptions === "object" ? languageVersionOrOptions.impliedNodeFormat : undefined;
if (hostSourceFile === undefined || shouldCreateNewSourceFile || isFilePresenceUnknownOnHost(hostSourceFile) || hostSourceFile.sourceFile.impliedNodeFormat !== impliedNodeFormat) {
const sourceFile = getNewSourceFile(fileName, languageVersionOrOptions, onError);
if (hostSourceFile) {
if (sourceFile) {

View File

@ -9,6 +9,7 @@ import * as ts from "./_namespaces/ts";
import { getNewLineCharacter } from "./_namespaces/ts";
import * as vfs from "./_namespaces/vfs";
import * as vpath from "./_namespaces/vpath";
import { incrementalVerifier } from "./incrementalUtils";
export function makeDefaultProxy(info: ts.server.PluginCreateInfo): ts.LanguageService {
const proxy = Object.create(/*o*/ null); // eslint-disable-line no-null/no-null
@ -1016,7 +1017,8 @@ export class ServerLanguageServiceAdapter implements LanguageServiceAdapter {
byteLength: Buffer.byteLength,
hrtime: process.hrtime,
logger: serverHost,
canUseEvents: true
canUseEvents: true,
incrementalVerifier,
};
this.server = new FourslashSession(opts);

View File

@ -0,0 +1,100 @@
import * as ts from "./_namespaces/ts";
export function reportDocumentRegistryStats(documentRegistry: ts.DocumentRegistry) {
const str: string[] = [];
documentRegistry.getBuckets().forEach((bucketEntries, key) => {
str.push(` Key:: ${key}`);
bucketEntries.forEach((entry, path) => {
if (ts.isDocumentRegistryEntry(entry)) {
str.push(` ${path}: ${ts.Debug.formatScriptKind(entry.sourceFile.scriptKind)} ${entry.languageServiceRefCount}`);
}
else {
entry.forEach((real, kind) => str.push(` ${path}: ${ts.Debug.formatScriptKind(kind)} ${real.languageServiceRefCount}`));
}
});
});
return str;
}
type DocumentRegistryExpectedStats = Map<ts.DocumentRegistryBucketKeyWithMode, Map<ts.Path, Map<ts.ScriptKind, number>>>;
function verifyDocumentRegistryStats(
documentRegistry: ts.DocumentRegistry,
stats: DocumentRegistryExpectedStats,
) {
documentRegistry.getBuckets().forEach((bucketEntries, key) => {
const statsByPath = stats.get(key);
bucketEntries.forEach((entry, path) => {
const expected = statsByPath?.get(path);
if (ts.isDocumentRegistryEntry(entry)) {
ts.Debug.assert(
expected?.size === 1 && expected.has(entry.sourceFile.scriptKind) && expected.get(entry.sourceFile.scriptKind) === entry.languageServiceRefCount,
`Document registry has unexpected language service ref count for ${key} ${path} ${ts.Debug.formatScriptKind(entry.sourceFile.scriptKind)} ${entry.languageServiceRefCount}`,
reportStats,
);
}
else {
entry.forEach((real, kind) => ts.Debug.assert(
real.languageServiceRefCount === expected?.get(kind),
`Document registry has unexpected language service ref count for ${key} ${path} ${ts.Debug.formatScriptKind(kind)} ${real.languageServiceRefCount}`,
reportStats,
));
expected?.forEach((value, kind) => ts.Debug.assert(
entry.has(kind),
`Document registry expected language service ref count for ${key} ${path} ${ts.Debug.formatScriptKind(kind)} ${value}`,
reportStats,
));
}
});
statsByPath?.forEach((_value, path) => ts.Debug.assert(
bucketEntries.has(path),
`Document registry does not contain entry for ${key}, ${path}`,
reportStats,
));
});
stats.forEach((_value, key) => ts.Debug.assert(
documentRegistry.getBuckets().has(key),
`Document registry does not contain entry for key: ${key}`,
reportStats,
));
function reportStats() {
const str: string[] = ["", "Actual::", ...reportDocumentRegistryStats(documentRegistry)];
str.push("Expected::");
stats?.forEach((statsByPath, key) => {
str.push(` Key:: ${key}`);
statsByPath.forEach((entry, path) => entry.forEach((refCount, kind) => str.push(` ${path}: ${ts.Debug.formatScriptKind(kind)} ${refCount}`)));
});
return str.join("\n");
}
}
function verifyDocumentRegistry(service: ts.server.ProjectService) {
const stats: DocumentRegistryExpectedStats = new Map();
const collectStats = (project: ts.server.Project) => {
if (project.autoImportProviderHost) collectStats(project.autoImportProviderHost);
if (project.noDtsResolutionProject) collectStats(project.noDtsResolutionProject);
const program = project.getCurrentProgram();
if (!program) return;
const key = service.documentRegistry.getKeyForCompilationSettings(program.getCompilerOptions());
program.getSourceFiles().forEach(f => {
const keyWithMode = service.documentRegistry.getDocumentRegistryBucketKeyWithMode(key, f.impliedNodeFormat);
let mapForKeyWithMode = stats.get(keyWithMode);
let result: Map<ts.ScriptKind, number> | undefined;
if (mapForKeyWithMode === undefined) {
stats.set(keyWithMode, mapForKeyWithMode = new Map());
mapForKeyWithMode.set(f.resolvedPath, result = new Map());
}
else {
result = mapForKeyWithMode.get(f.resolvedPath);
if (!result) mapForKeyWithMode.set(f.resolvedPath, result = new Map());
}
result.set(f.scriptKind, (result.get(f.scriptKind) || 0) + 1);
});
};
service.forEachProject(collectStats);
verifyDocumentRegistryStats(service.documentRegistry, stats);
}
export function incrementalVerifier(service: ts.server.ProjectService) {
service.verifyDocumentRegistry = () => verifyDocumentRegistry(service);
}

View File

@ -590,6 +590,7 @@ export interface ProjectServiceOptions {
typesMapLocation?: string;
serverMode?: LanguageServiceMode;
session: Session<unknown> | undefined;
/** @internal */ incrementalVerifier?: (service: ProjectService) => void;
}
interface OriginalFileInfo { fileName: NormalizedPath; path: Path; }
@ -989,12 +990,13 @@ export class ProjectService {
/** @internal */
readonly session: Session<unknown> | undefined;
private performanceEventHandler?: PerformanceEventHandler;
private pendingPluginEnablements?: Map<Project, Promise<BeginEnablePluginResult>[]>;
private currentPluginEnablementPromise?: Promise<void>;
/** @internal */ verifyDocumentRegistry = noop;
constructor(opts: ProjectServiceOptions) {
this.host = opts.host;
this.logger = opts.logger;
@ -1057,6 +1059,7 @@ export class ProjectService {
watchDirectory: returnNoopFileWatcher,
} :
getWatchFactory(this.host, watchLogLevel, log, getDetailWatchInfo);
opts.incrementalVerifier?.(this);
}
toPath(fileName: string) {
@ -1334,7 +1337,7 @@ export class ProjectService {
}
/** @internal */
private forEachProject(cb: (project: Project) => void) {
forEachProject(cb: (project: Project) => void) {
this.externalProjects.forEach(cb);
this.configuredProjects.forEach(cb);
this.inferredProjects.forEach(cb);
@ -2640,6 +2643,7 @@ export class ProjectService {
private clearSemanticCache(project: Project) {
project.resolutionCache.clear();
project.getLanguageService(/*ensureSynchronized*/ false).cleanupSemanticCache();
project.cleanupProgram();
project.markAsDirty();
}

View File

@ -393,7 +393,7 @@ export abstract class Project implements LanguageServiceHost, ModuleResolutionHo
private packageJsonsForAutoImport: Set<string> | undefined;
/** @internal */
private noDtsResolutionProject?: AuxiliaryProject | undefined;
noDtsResolutionProject?: AuxiliaryProject | undefined;
/** @internal */
getResolvedProjectReferenceToRedirect(_fileName: string): ResolvedProjectReference | undefined {
@ -969,6 +969,19 @@ export abstract class Project implements LanguageServiceHost, ModuleResolutionHo
this.projectService.onUpdateLanguageServiceStateForProject(this, /*languageServiceEnabled*/ true);
}
/** @internal */
cleanupProgram() {
if (this.program) {
// Root files are always attached to the project irrespective of program
for (const f of this.program.getSourceFiles()) {
this.detachScriptInfoIfNotRoot(f.fileName);
}
this.program.forEachResolvedProjectReference(ref =>
this.detachScriptInfoFromProject(ref.sourceFile.fileName));
this.program = undefined;
}
}
disableLanguageService(lastFileExceededProgramSize?: string) {
if (!this.languageServiceEnabled) {
return;
@ -976,6 +989,7 @@ export abstract class Project implements LanguageServiceHost, ModuleResolutionHo
Debug.assert(this.projectService.serverMode !== LanguageServiceMode.Syntactic);
this.languageService.cleanupSemanticCache();
this.languageServiceEnabled = false;
this.cleanupProgram();
this.lastFileExceededProgramSize = lastFileExceededProgramSize;
this.builderState = undefined;
if (this.autoImportProviderHost) {
@ -984,6 +998,7 @@ export abstract class Project implements LanguageServiceHost, ModuleResolutionHo
this.autoImportProviderHost = undefined;
this.resolutionCache.closeTypeRootsWatch();
this.clearGeneratedFileWatch();
this.projectService.verifyDocumentRegistry();
this.projectService.onUpdateLanguageServiceStateForProject(this, /*languageServiceEnabled*/ false);
}
@ -1030,17 +1045,10 @@ export abstract class Project implements LanguageServiceHost, ModuleResolutionHo
close() {
this.projectService.typingsCache.onProjectClosed(this);
this.closeWatchingTypingLocations();
if (this.program) {
// if we have a program - release all files that are enlisted in program but arent root
// The releasing of the roots happens later
// The project could have pending update remaining and hence the info could be in the files but not in program graph
for (const f of this.program.getSourceFiles()) {
this.detachScriptInfoIfNotRoot(f.fileName);
}
this.program.forEachResolvedProjectReference(ref =>
this.detachScriptInfoFromProject(ref.sourceFile.fileName));
}
// if we have a program - release all files that are enlisted in program but arent root
// The releasing of the roots happens later
// The project could have pending update remaining and hence the info could be in the files but not in program graph
this.cleanupProgram();
// Release external files
forEach(this.externalFiles, externalFile => this.detachScriptInfoIfNotRoot(externalFile));
// Always remove root files from the project
@ -1492,6 +1500,7 @@ export abstract class Project implements LanguageServiceHost, ModuleResolutionHo
private updateGraphWorker() {
const oldProgram = this.languageService.getCurrentProgram();
Debug.assert(oldProgram === this.program);
Debug.assert(!this.isClosed(), "Called update graph worker of closed project");
this.writeLog(`Starting updateGraphWorker: Project: ${this.getProjectName()}`);
const start = timestamp();
@ -1633,6 +1642,8 @@ export abstract class Project implements LanguageServiceHost, ModuleResolutionHo
else if (this.program !== oldProgram) {
this.writeLog(`Different program with same set of files`);
}
// Verify the document registry count
this.projectService.verifyDocumentRegistry();
return hasNewProgram;
}
@ -2342,7 +2353,8 @@ export class InferredProject extends Project {
}
}
class AuxiliaryProject extends Project {
/** @internal */
export class AuxiliaryProject extends Project {
constructor(projectService: ProjectService, documentRegistry: DocumentRegistry, compilerOptions: CompilerOptions, currentDirectory: string) {
super(projectService.newAuxiliaryProjectName(),
ProjectKind.Auxiliary,
@ -2361,7 +2373,6 @@ class AuxiliaryProject extends Project {
return true;
}
/** @internal */
override scheduleInvalidateResolutionsOfFailedLookupLocations(): void {
// Invalidation will happen on-demand as part of updateGraph
return;

View File

@ -946,6 +946,7 @@ export interface SessionOptions {
pluginProbeLocations?: readonly string[];
allowLocalPluginLoads?: boolean;
typesMapLocation?: string;
/** @internal */ incrementalVerifier?: (service: ProjectService) => void;
}
export class Session<TMessage = string> implements EventSender {
@ -1010,7 +1011,8 @@ export class Session<TMessage = string> implements EventSender {
allowLocalPluginLoads: opts.allowLocalPluginLoads,
typesMapLocation: opts.typesMapLocation,
serverMode: opts.serverMode,
session: this
session: this,
incrementalVerifier: opts.incrementalVerifier,
};
this.projectService = new ProjectService(settings);
this.projectService.setPerformanceEventHandler(this.performanceEventHandler.bind(this));
@ -1339,6 +1341,7 @@ export class Session<TMessage = string> implements EventSender {
this.logger.info(`cleaning ${caption}`);
for (const p of projects) {
p.getLanguageService(/*ensureSynchronized*/ false).cleanupSemanticCache();
p.cleanupProgram();
}
}

View File

@ -117,6 +117,8 @@ export interface DocumentRegistry {
): SourceFile;
getKeyForCompilationSettings(settings: CompilerOptions): DocumentRegistryBucketKey;
/** @internal */
getDocumentRegistryBucketKeyWithMode(key: DocumentRegistryBucketKey, mode: ResolutionMode): DocumentRegistryBucketKeyWithMode;
/**
* Informs the DocumentRegistry that a file is not needed any longer.
*
@ -147,10 +149,8 @@ export interface DocumentRegistry {
releaseDocumentWithKey(path: Path, key: DocumentRegistryBucketKey, scriptKind?: ScriptKind): void;
releaseDocumentWithKey(path: Path, key: DocumentRegistryBucketKey, scriptKind: ScriptKind, impliedNodeFormat: ResolutionMode): void; // eslint-disable-line @typescript-eslint/unified-signatures
/** @internal */
getLanguageServiceRefCounts(path: Path, scriptKind: ScriptKind): [string, number | undefined][];
reportStats(): string;
/** @internal */ getBuckets(): Map<DocumentRegistryBucketKeyWithMode, Map<Path, BucketEntry>>;
}
/** @internal */
@ -161,7 +161,8 @@ export interface ExternalDocumentCache {
export type DocumentRegistryBucketKey = string & { __bucketKey: any };
interface DocumentRegistryEntry {
/** @internal */
export interface DocumentRegistryEntry {
sourceFile: SourceFile;
// The number of language services that this source file is referenced in. When no more
@ -170,8 +171,10 @@ interface DocumentRegistryEntry {
languageServiceRefCount: number;
}
type BucketEntry = DocumentRegistryEntry | Map<ScriptKind, DocumentRegistryEntry>;
function isDocumentRegistryEntry(entry: BucketEntry): entry is DocumentRegistryEntry {
/** @internal */
export type BucketEntry = DocumentRegistryEntry | Map<ScriptKind, DocumentRegistryEntry>;
/** @internal */
export function isDocumentRegistryEntry(entry: BucketEntry): entry is DocumentRegistryEntry {
return !!(entry as DocumentRegistryEntry).sourceFile;
}
@ -383,14 +386,6 @@ export function createDocumentRegistryInternal(useCaseSensitiveFileNames?: boole
}
}
function getLanguageServiceRefCounts(path: Path, scriptKind: ScriptKind) {
return arrayFrom(buckets.entries(), ([key, bucket]): [string, number | undefined] => {
const bucketEntry = bucket.get(path);
const entry = bucketEntry && getDocumentRegistryEntry(bucketEntry, scriptKind);
return [key, entry && entry.languageServiceRefCount];
});
}
return {
acquireDocument,
acquireDocumentWithKey,
@ -398,9 +393,10 @@ export function createDocumentRegistryInternal(useCaseSensitiveFileNames?: boole
updateDocumentWithKey,
releaseDocument,
releaseDocumentWithKey,
getLanguageServiceRefCounts,
getKeyForCompilationSettings,
getDocumentRegistryBucketKeyWithMode,
reportStats,
getKeyForCompilationSettings
getBuckets: () => buckets,
};
}

View File

@ -1937,10 +1937,6 @@ export function createLanguageService(
}
function cleanupSemanticCache(): void {
program = undefined!; // TODO: GH#18217
}
function dispose(): void {
if (program) {
// Use paths to ensure we are using correct key and paths as document registry could be created with different current directory than host
const key = documentRegistry.getKeyForCompilationSettings(program.getCompilerOptions());
@ -1948,6 +1944,10 @@ export function createLanguageService(
documentRegistry.releaseDocumentWithKey(f.resolvedPath, key, f.scriptKind, f.impliedNodeFormat));
program = undefined!; // TODO: GH#18217
}
}
function dispose(): void {
cleanupSemanticCache();
host = undefined!;
}

View File

@ -1,3 +1,4 @@
import { incrementalVerifier } from "../../../harness/incrementalUtils";
import * as Harness from "../../_namespaces/Harness";
import * as ts from "../../_namespaces/ts";
import { ActionWatchTypingLocations } from "../../_namespaces/ts.server";
@ -553,7 +554,8 @@ export function createSession(host: TestServerHost, opts: Partial<TestSessionOpt
byteLength: Buffer.byteLength,
hrtime: process.hrtime,
logger,
canUseEvents: false
canUseEvents: false,
incrementalVerifier,
};
return new TestSession({ ...sessionOptions, ...opts });
@ -606,6 +608,7 @@ export class TestProjectService extends ts.server.ProjectService {
useInferredProjectPerProjectRoot: false,
typingsInstaller,
typesMapLocation: customTypesMap.path,
incrementalVerifier,
...opts
});
ts.Debug.assert(opts.allowNonBaseliningLogger || this.logger.hasLevel(ts.server.LogLevel.verbose), "Use Baselining logger and baseline tsserver log or create using allowNonBaseliningLogger");

View File

@ -1,3 +1,4 @@
import { reportDocumentRegistryStats } from "../../../harness/incrementalUtils";
import * as ts from "../../_namespaces/ts";
import {
baselineTsserverLogs,
@ -40,8 +41,8 @@ describe("unittests:: tsserver:: documentRegistry:: document registry in project
const moduleInfo = service.getScriptInfo(moduleFile.path)!;
assert.isDefined(moduleInfo);
assert.equal(moduleInfo.isOrphan(), moduleIsOrphan);
const key = service.documentRegistry.getKeyForCompilationSettings(project.getCompilationSettings());
assert.deepEqual(service.documentRegistry.getLanguageServiceRefCounts(moduleInfo.path, moduleInfo.scriptKind), [[key, moduleIsOrphan ? undefined : 1]]);
service.logger.log("DocumentRegistry::");
service.logger.log(reportDocumentRegistryStats(service.documentRegistry).join("\n"));
}
function createServiceAndHost() {

View File

@ -1,5 +1,6 @@
import { expect } from "chai";
import { incrementalVerifier } from "../../../harness/incrementalUtils";
import * as Harness from "../../_namespaces/Harness";
import * as ts from "../../_namespaces/ts";
import {
@ -55,7 +56,8 @@ describe("unittests:: tsserver:: Session:: General functionality", () => {
byteLength: Buffer.byteLength,
hrtime: process.hrtime,
logger: nullLogger(),
canUseEvents: true
canUseEvents: true,
incrementalVerifier,
};
return new TestSession(opts);
}
@ -387,7 +389,8 @@ describe("unittests:: tsserver:: Session:: exceptions", () => {
byteLength: Buffer.byteLength,
hrtime: process.hrtime,
logger: nullLogger(),
canUseEvents: true
canUseEvents: true,
incrementalVerifier,
});
this.addProtocolHandler(command, this.exceptionRaisingHandler);
}
@ -434,7 +437,8 @@ describe("unittests:: tsserver:: Session:: how Session is extendable via subclas
byteLength: Buffer.byteLength,
hrtime: process.hrtime,
logger: createHasErrorMessageLogger(),
canUseEvents: true
canUseEvents: true,
incrementalVerifier,
});
this.addProtocolHandler(this.customHandler, () => {
return { response: undefined, responseRequired: true };
@ -502,7 +506,8 @@ describe("unittests:: tsserver:: Session:: an example of using the Session API t
byteLength: Buffer.byteLength,
hrtime: process.hrtime,
logger: createHasErrorMessageLogger(),
canUseEvents: true
canUseEvents: true,
incrementalVerifier,
});
this.addProtocolHandler("echo", (req: ts.server.protocol.Request) => ({
response: req.arguments,

View File

@ -68,6 +68,11 @@ Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Open files:
Info seq [hh:mm:ss:mss] FileName: /user/username/projects/myproject/index.ts ProjectRootPath: undefined
Info seq [hh:mm:ss:mss] Projects: /user/username/projects/myproject/tsconfig.json
DocumentRegistry::
Key:: undefined|undefined|undefined|undefined|false|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined
/user/username/projects/myproject/index.ts: TS 1
/user/username/projects/myproject/module1.d.ts: TS 1
/a/lib/lib.d.ts: TS 1
Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /user/username/projects/myproject/tsconfig.json
Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /user/username/projects/myproject/tsconfig.json Version: 2 structureChanged: true structureIsReused:: SafeModules Elapsed:: *ms
Info seq [hh:mm:ss:mss] Project '/user/username/projects/myproject/tsconfig.json' (Configured)
@ -82,6 +87,10 @@ Info seq [hh:mm:ss:mss] Files (2)
Part of 'files' list in tsconfig.json
Info seq [hh:mm:ss:mss] -----------------------------------------------
DocumentRegistry::
Key:: undefined|undefined|undefined|undefined|false|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined
/user/username/projects/myproject/index.ts: TS 1
/a/lib/lib.d.ts: TS 1
Info seq [hh:mm:ss:mss] FileWatcher:: Triggered with /user/username/projects/myproject/module1.d.ts 1:: WatchInfo: /user/username/projects/myproject/module1.d.ts 500 undefined WatchType: Closed Script info
Info seq [hh:mm:ss:mss] Elapsed:: *ms FileWatcher:: Triggered with /user/username/projects/myproject/module1.d.ts 1:: WatchInfo: /user/username/projects/myproject/module1.d.ts 500 undefined WatchType: Closed Script info
Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /user/username/projects/myproject/tsconfig.json
@ -100,4 +109,9 @@ Info seq [hh:mm:ss:mss] Files (3)
index.ts
Part of 'files' list in tsconfig.json
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] -----------------------------------------------
DocumentRegistry::
Key:: undefined|undefined|undefined|undefined|false|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined
/user/username/projects/myproject/index.ts: TS 1
/a/lib/lib.d.ts: TS 1
/user/username/projects/myproject/module1.d.ts: TS 1

View File

@ -68,6 +68,11 @@ Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Open files:
Info seq [hh:mm:ss:mss] FileName: /user/username/projects/myproject/index.ts ProjectRootPath: undefined
Info seq [hh:mm:ss:mss] Projects: /user/username/projects/myproject/tsconfig.json
DocumentRegistry::
Key:: undefined|undefined|undefined|undefined|false|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined
/user/username/projects/myproject/index.ts: TS 1
/user/username/projects/myproject/module1.d.ts: TS 1
/a/lib/lib.d.ts: TS 1
Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /user/username/projects/myproject/tsconfig.json
Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /user/username/projects/myproject/tsconfig.json Version: 2 structureChanged: true structureIsReused:: SafeModules Elapsed:: *ms
Info seq [hh:mm:ss:mss] Project '/user/username/projects/myproject/tsconfig.json' (Configured)
@ -82,6 +87,10 @@ Info seq [hh:mm:ss:mss] Files (2)
Part of 'files' list in tsconfig.json
Info seq [hh:mm:ss:mss] -----------------------------------------------
DocumentRegistry::
Key:: undefined|undefined|undefined|undefined|false|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined
/user/username/projects/myproject/index.ts: TS 1
/a/lib/lib.d.ts: TS 1
Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /user/username/projects/myproject/tsconfig.json
Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /user/username/projects/myproject/tsconfig.json Version: 3 structureChanged: true structureIsReused:: SafeModules Elapsed:: *ms
Info seq [hh:mm:ss:mss] Project '/user/username/projects/myproject/tsconfig.json' (Configured)
@ -98,4 +107,9 @@ Info seq [hh:mm:ss:mss] Files (3)
index.ts
Part of 'files' list in tsconfig.json
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] -----------------------------------------------
DocumentRegistry::
Key:: undefined|undefined|undefined|undefined|false|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined|undefined
/user/username/projects/myproject/index.ts: TS 1
/a/lib/lib.d.ts: TS 1
/user/username/projects/myproject/module1.d.ts: TS 1

View File

@ -581,6 +581,13 @@ Info seq [hh:mm:ss:mss] File '/user/username/projects/package.json' does not ex
Info seq [hh:mm:ss:mss] File '/user/username/package.json' does not exist according to earlier cached lookups.
Info seq [hh:mm:ss:mss] File '/user/package.json' does not exist according to earlier cached lookups.
Info seq [hh:mm:ss:mss] File '/package.json' does not exist according to earlier cached lookups.
Info seq [hh:mm:ss:mss] ======== Resolving module './fileB.mjs' from '/user/username/projects/myproject/src/fileA.ts'. ========
Info seq [hh:mm:ss:mss] Module resolution kind is not specified, using 'Node16'.
Info seq [hh:mm:ss:mss] Resolving in CJS mode with conditions 'require', 'types', 'node'.
Info seq [hh:mm:ss:mss] Loading module as file / folder, candidate module location '/user/username/projects/myproject/src/fileB.mjs', target file types: TypeScript, JavaScript, Declaration.
Info seq [hh:mm:ss:mss] File name '/user/username/projects/myproject/src/fileB.mjs' has a '.mjs' extension - stripping it.
Info seq [hh:mm:ss:mss] File '/user/username/projects/myproject/src/fileB.mts' exists - use it as a name resolution result.
Info seq [hh:mm:ss:mss] ======== Module name './fileB.mjs' was successfully resolved to '/user/username/projects/myproject/src/fileB.mts'. ========
Info seq [hh:mm:ss:mss] File '/a/lib/package.json' does not exist according to earlier cached lookups.
Info seq [hh:mm:ss:mss] File '/a/package.json' does not exist according to earlier cached lookups.
Info seq [hh:mm:ss:mss] File '/package.json' does not exist according to earlier cached lookups.
@ -770,13 +777,7 @@ Info seq [hh:mm:ss:mss] File '/user/username/projects/myproject/src/package.jso
Info seq [hh:mm:ss:mss] Found 'package.json' at '/user/username/projects/myproject/package.json'.
Info seq [hh:mm:ss:mss] File '/user/username/projects/myproject/src/package.json' does not exist according to earlier cached lookups.
Info seq [hh:mm:ss:mss] File '/user/username/projects/myproject/package.json' exists according to earlier cached lookups.
Info seq [hh:mm:ss:mss] ======== Resolving module './fileB.mjs' from '/user/username/projects/myproject/src/fileA.ts'. ========
Info seq [hh:mm:ss:mss] Module resolution kind is not specified, using 'Node16'.
Info seq [hh:mm:ss:mss] Resolving in CJS mode with conditions 'require', 'types', 'node'.
Info seq [hh:mm:ss:mss] Loading module as file / folder, candidate module location '/user/username/projects/myproject/src/fileB.mjs', target file types: TypeScript, JavaScript, Declaration.
Info seq [hh:mm:ss:mss] File name '/user/username/projects/myproject/src/fileB.mjs' has a '.mjs' extension - stripping it.
Info seq [hh:mm:ss:mss] File '/user/username/projects/myproject/src/fileB.mts' exists - use it as a name resolution result.
Info seq [hh:mm:ss:mss] ======== Module name './fileB.mjs' was successfully resolved to '/user/username/projects/myproject/src/fileB.mts'. ========
Info seq [hh:mm:ss:mss] Reusing resolution of module './fileB.mjs' from '/user/username/projects/myproject/src/fileA.ts' of old program, it was successfully resolved to '/user/username/projects/myproject/src/fileB.mts'.
Info seq [hh:mm:ss:mss] File '/a/lib/package.json' does not exist according to earlier cached lookups.
Info seq [hh:mm:ss:mss] File '/a/package.json' does not exist according to earlier cached lookups.
Info seq [hh:mm:ss:mss] File '/package.json' does not exist according to earlier cached lookups.

View File

@ -771,6 +771,13 @@ Info seq [hh:mm:ss:mss] File '/user/username/projects/myproject/src/package.jso
Info seq [hh:mm:ss:mss] Found 'package.json' at '/user/username/projects/myproject/package.json'.
Info seq [hh:mm:ss:mss] File '/user/username/projects/myproject/src/package.json' does not exist according to earlier cached lookups.
Info seq [hh:mm:ss:mss] File '/user/username/projects/myproject/package.json' exists according to earlier cached lookups.
Info seq [hh:mm:ss:mss] ======== Resolving module './fileB.mjs' from '/user/username/projects/myproject/src/fileA.ts'. ========
Info seq [hh:mm:ss:mss] Module resolution kind is not specified, using 'Node16'.
Info seq [hh:mm:ss:mss] Resolving in ESM mode with conditions 'import', 'types', 'node'.
Info seq [hh:mm:ss:mss] Loading module as file / folder, candidate module location '/user/username/projects/myproject/src/fileB.mjs', target file types: TypeScript, JavaScript, Declaration.
Info seq [hh:mm:ss:mss] File name '/user/username/projects/myproject/src/fileB.mjs' has a '.mjs' extension - stripping it.
Info seq [hh:mm:ss:mss] File '/user/username/projects/myproject/src/fileB.mts' exists - use it as a name resolution result.
Info seq [hh:mm:ss:mss] ======== Module name './fileB.mjs' was successfully resolved to '/user/username/projects/myproject/src/fileB.mts'. ========
Info seq [hh:mm:ss:mss] File '/a/lib/package.json' does not exist according to earlier cached lookups.
Info seq [hh:mm:ss:mss] File '/a/package.json' does not exist according to earlier cached lookups.
Info seq [hh:mm:ss:mss] File '/package.json' does not exist according to earlier cached lookups.
@ -954,6 +961,13 @@ Info seq [hh:mm:ss:mss] File '/user/username/projects/package.json' does not ex
Info seq [hh:mm:ss:mss] File '/user/username/package.json' does not exist according to earlier cached lookups.
Info seq [hh:mm:ss:mss] File '/user/package.json' does not exist according to earlier cached lookups.
Info seq [hh:mm:ss:mss] File '/package.json' does not exist according to earlier cached lookups.
Info seq [hh:mm:ss:mss] ======== Resolving module './fileB.mjs' from '/user/username/projects/myproject/src/fileA.ts'. ========
Info seq [hh:mm:ss:mss] Module resolution kind is not specified, using 'Node16'.
Info seq [hh:mm:ss:mss] Resolving in CJS mode with conditions 'require', 'types', 'node'.
Info seq [hh:mm:ss:mss] Loading module as file / folder, candidate module location '/user/username/projects/myproject/src/fileB.mjs', target file types: TypeScript, JavaScript, Declaration.
Info seq [hh:mm:ss:mss] File name '/user/username/projects/myproject/src/fileB.mjs' has a '.mjs' extension - stripping it.
Info seq [hh:mm:ss:mss] File '/user/username/projects/myproject/src/fileB.mts' exists - use it as a name resolution result.
Info seq [hh:mm:ss:mss] ======== Module name './fileB.mjs' was successfully resolved to '/user/username/projects/myproject/src/fileB.mts'. ========
Info seq [hh:mm:ss:mss] File '/a/lib/package.json' does not exist according to earlier cached lookups.
Info seq [hh:mm:ss:mss] File '/a/package.json' does not exist according to earlier cached lookups.
Info seq [hh:mm:ss:mss] File '/package.json' does not exist according to earlier cached lookups.

View File

@ -687,6 +687,15 @@ Info seq [hh:mm:ss:mss] Files (3)
/a/lib/lib.d.ts Text-1 "/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }"
/user/username/projects/myproject/src/helpers/functions.ts Text-2 "export const foo = 1;"
/user/username/projects/myproject/src/main.ts SVC-2-0 "import { foo } from 'helpers/functions';\nexport { foo };"
../../../../a/lib/lib.d.ts
Default library for target 'es5'
src/helpers/functions.ts
Imported via 'helpers/functions' from file 'src/main.ts'
Matched by include pattern './src/**/*' in 'tsconfig-src.json'
src/main.ts
Matched by include pattern './src/**/*' in 'tsconfig-src.json'
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] event:
@ -719,7 +728,7 @@ Info seq [hh:mm:ss:mss] Files (3)
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred)
Info seq [hh:mm:ss:mss] Files (2)
Info seq [hh:mm:ss:mss] Files (0) NoProgram
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Open files:
@ -733,6 +742,12 @@ Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred)
Info seq [hh:mm:ss:mss] Files (2)
/a/lib/lib.d.ts Text-1 "/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }"
/dummy/dummy.ts SVC-1-0 "let a = 10;"
../a/lib/lib.d.ts
Default library for target 'es5'
dummy.ts
Root file specified for compilation
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] After ensureProjectForOpenFiles:

View File

@ -634,6 +634,16 @@ Info seq [hh:mm:ss:mss] Files (4)
/user/username/projects/myproject/src/helpers/functions.ts Text-2 "export const foo = 1;"
/user/username/projects/myproject/src/main.ts SVC-2-0 "import { foo } from 'helpers/functions';\nexport { foo };"
/user/username/projects/myproject/indirect1/main.ts Text-2 "import { foo } from 'main';\nfoo;\nexport function bar() {}"
../../../../a/lib/lib.d.ts
Default library for target 'es5'
src/helpers/functions.ts
Imported via 'helpers/functions' from file 'src/main.ts'
src/main.ts
Imported via 'main' from file 'indirect1/main.ts'
indirect1/main.ts
Part of 'files' list in tsconfig.json
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] event:
@ -666,7 +676,7 @@ Info seq [hh:mm:ss:mss] Files (4)
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred)
Info seq [hh:mm:ss:mss] Files (2)
Info seq [hh:mm:ss:mss] Files (0) NoProgram
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Open files:
@ -680,6 +690,12 @@ Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred)
Info seq [hh:mm:ss:mss] Files (2)
/a/lib/lib.d.ts Text-1 "/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }"
/dummy/dummy.ts SVC-1-0 "let a = 10;"
../a/lib/lib.d.ts
Default library for target 'es5'
dummy.ts
Root file specified for compilation
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] After ensureProjectForOpenFiles:

View File

@ -480,11 +480,11 @@ Info seq [hh:mm:ss:mss] Files (0)
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject2*' (Inferred)
Info seq [hh:mm:ss:mss] Files (2)
Info seq [hh:mm:ss:mss] Files (0) NoProgram
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject3*' (Inferred)
Info seq [hh:mm:ss:mss] Files (2)
Info seq [hh:mm:ss:mss] Files (0) NoProgram
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Open files:
@ -498,6 +498,12 @@ Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject2*' (Inferred)
Info seq [hh:mm:ss:mss] Files (2)
/a/lib/lib.d.ts Text-1 "/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }"
/dummy/dummy.ts SVC-1-0 "let a = 10;"
../a/lib/lib.d.ts
Default library for target 'es5'
dummy.ts
Root file specified for compilation
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /dev/null/inferredProject3*
@ -518,6 +524,12 @@ Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject3*' (Inferred)
Info seq [hh:mm:ss:mss] Files (2)
/a/lib/lib.d.ts Text-1 "/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }"
/user/username/projects/myproject/src/main.ts SVC-2-0 "import { foo } from 'helpers/functions';\nexport { foo };"
../../../../../a/lib/lib.d.ts
Default library for target 'es5'
main.ts
Root file specified for compilation
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] After ensureProjectForOpenFiles:

View File

@ -748,6 +748,15 @@ Info seq [hh:mm:ss:mss] Files (3)
/a/lib/lib.d.ts Text-1 "/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }"
/user/username/projects/myproject/src/helpers/functions.ts Text-2 "export const foo = 1;"
/user/username/projects/myproject/src/main.ts SVC-2-0 "import { foo } from 'helpers/functions';\nexport { foo };"
../../../../a/lib/lib.d.ts
Default library for target 'es5'
src/helpers/functions.ts
Imported via 'helpers/functions' from file 'src/main.ts'
Matched by include pattern './src/**/*' in 'tsconfig-src.json'
src/main.ts
Matched by include pattern './src/**/*' in 'tsconfig-src.json'
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] event:
@ -782,7 +791,7 @@ Info seq [hh:mm:ss:mss] Files (3)
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred)
Info seq [hh:mm:ss:mss] Files (2)
Info seq [hh:mm:ss:mss] Files (0) NoProgram
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Open files:
@ -796,6 +805,12 @@ Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred)
Info seq [hh:mm:ss:mss] Files (2)
/a/lib/lib.d.ts Text-1 "/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }"
/dummy/dummy.ts SVC-1-0 "let a = 10;"
../a/lib/lib.d.ts
Default library for target 'es5'
dummy.ts
Root file specified for compilation
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] After ensureProjectForOpenFiles:

View File

@ -888,6 +888,15 @@ Info seq [hh:mm:ss:mss] Files (3)
/a/lib/lib.d.ts Text-1 "/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }"
/user/username/projects/myproject/src/helpers/functions.ts Text-2 "export const foo = 1;"
/user/username/projects/myproject/src/main.ts SVC-2-0 "import { foo } from 'helpers/functions';\nexport { foo };"
../../../../a/lib/lib.d.ts
Default library for target 'es5'
src/helpers/functions.ts
Imported via 'helpers/functions' from file 'src/main.ts'
Matched by include pattern './src/**/*' in 'tsconfig-src.json'
src/main.ts
Matched by include pattern './src/**/*' in 'tsconfig-src.json'
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] event:
@ -922,7 +931,7 @@ Info seq [hh:mm:ss:mss] Files (3)
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred)
Info seq [hh:mm:ss:mss] Files (2)
Info seq [hh:mm:ss:mss] Files (0) NoProgram
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Open files:
@ -936,6 +945,12 @@ Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred)
Info seq [hh:mm:ss:mss] Files (2)
/a/lib/lib.d.ts Text-1 "/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }"
/dummy/dummy.ts SVC-1-0 "let a = 10;"
../a/lib/lib.d.ts
Default library for target 'es5'
dummy.ts
Root file specified for compilation
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] After ensureProjectForOpenFiles:

View File

@ -720,6 +720,18 @@ Info seq [hh:mm:ss:mss] Files (5)
/user/username/projects/myproject/src/main.ts SVC-2-0 "import { foo } from 'helpers/functions';\nexport { foo };"
/user/username/projects/myproject/indirect1/main.ts Text-2 "import { foo } from 'main';\nfoo;\nexport function bar() {}"
/user/username/projects/myproject/own/main.ts Text-2 "import { bar } from 'main';\nbar;"
../../../../a/lib/lib.d.ts
Default library for target 'es5'
src/helpers/functions.ts
Imported via 'helpers/functions' from file 'src/main.ts'
src/main.ts
Imported via 'main' from file 'indirect1/main.ts'
indirect1/main.ts
Imported via 'main' from file 'own/main.ts'
own/main.ts
Part of 'files' list in tsconfig.json
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] event:
@ -768,6 +780,15 @@ Info seq [hh:mm:ss:mss] Files (3)
/a/lib/lib.d.ts Text-1 "/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }"
/user/username/projects/myproject/src/helpers/functions.ts Text-2 "export const foo = 1;"
/user/username/projects/myproject/src/main.ts SVC-2-0 "import { foo } from 'helpers/functions';\nexport { foo };"
../../../../a/lib/lib.d.ts
Default library for target 'es5'
src/helpers/functions.ts
Imported via 'helpers/functions' from file 'src/main.ts'
Matched by include pattern './src/**/*' in 'tsconfig-src.json'
src/main.ts
Matched by include pattern './src/**/*' in 'tsconfig-src.json'
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] event:
@ -800,20 +821,26 @@ Info seq [hh:mm:ss:mss] Files (3)
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred)
Info seq [hh:mm:ss:mss] Files (2)
Info seq [hh:mm:ss:mss] Files (0) NoProgram
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Open files:
Info seq [hh:mm:ss:mss] FileName: /dummy/dummy.ts ProjectRootPath: undefined
Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1*
Info seq [hh:mm:ss:mss] FileName: /user/username/projects/myproject/src/main.ts ProjectRootPath: undefined
Info seq [hh:mm:ss:mss] Projects: /user/username/projects/myproject/tsconfig.json,/user/username/projects/myproject/tsconfig-src.json
Info seq [hh:mm:ss:mss] Projects: /user/username/projects/myproject/tsconfig-src.json,/user/username/projects/myproject/tsconfig.json
Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /dev/null/inferredProject1*
Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* Version: 3 structureChanged: true structureIsReused:: Not Elapsed:: *ms
Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred)
Info seq [hh:mm:ss:mss] Files (2)
/a/lib/lib.d.ts Text-1 "/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }"
/dummy/dummy.ts SVC-1-0 "let a = 10;"
../a/lib/lib.d.ts
Default library for target 'es5'
dummy.ts
Root file specified for compilation
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] After ensureProjectForOpenFiles:
@ -833,4 +860,4 @@ Info seq [hh:mm:ss:mss] Open files:
Info seq [hh:mm:ss:mss] FileName: /dummy/dummy.ts ProjectRootPath: undefined
Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1*
Info seq [hh:mm:ss:mss] FileName: /user/username/projects/myproject/src/main.ts ProjectRootPath: undefined
Info seq [hh:mm:ss:mss] Projects: /user/username/projects/myproject/tsconfig.json,/user/username/projects/myproject/tsconfig-src.json
Info seq [hh:mm:ss:mss] Projects: /user/username/projects/myproject/tsconfig-src.json,/user/username/projects/myproject/tsconfig.json

View File

@ -662,6 +662,18 @@ Info seq [hh:mm:ss:mss] Files (5)
/user/username/projects/myproject/src/main.ts SVC-2-0 "import { foo } from 'helpers/functions';\nexport { foo };"
/user/username/projects/myproject/indirect1/main.ts Text-2 "import { foo } from 'main';\nfoo;\nexport function bar() {}"
/user/username/projects/myproject/own/main.ts Text-2 "import { bar } from 'main';\nbar;"
../../../../a/lib/lib.d.ts
Default library for target 'es5'
src/helpers/functions.ts
Imported via 'helpers/functions' from file 'src/main.ts'
src/main.ts
Imported via 'main' from file 'indirect1/main.ts'
indirect1/main.ts
Imported via 'main' from file 'own/main.ts'
own/main.ts
Part of 'files' list in tsconfig.json
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] event:
@ -711,6 +723,16 @@ Info seq [hh:mm:ss:mss] Files (4)
/user/username/projects/myproject/src/helpers/functions.ts Text-2 "export const foo = 1;"
/user/username/projects/myproject/src/main.ts SVC-2-0 "import { foo } from 'helpers/functions';\nexport { foo };"
/user/username/projects/myproject/indirect1/main.ts Text-2 "import { foo } from 'main';\nfoo;\nexport function bar() {}"
../../../../a/lib/lib.d.ts
Default library for target 'es5'
src/helpers/functions.ts
Imported via 'helpers/functions' from file 'src/main.ts'
src/main.ts
Imported via 'main' from file 'indirect1/main.ts'
indirect1/main.ts
Part of 'files' list in tsconfig.json
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] event:
@ -743,7 +765,7 @@ Info seq [hh:mm:ss:mss] Files (4)
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred)
Info seq [hh:mm:ss:mss] Files (2)
Info seq [hh:mm:ss:mss] Files (0) NoProgram
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Open files:
@ -757,6 +779,12 @@ Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred)
Info seq [hh:mm:ss:mss] Files (2)
/a/lib/lib.d.ts Text-1 "/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }"
/dummy/dummy.ts SVC-1-0 "let a = 10;"
../a/lib/lib.d.ts
Default library for target 'es5'
dummy.ts
Root file specified for compilation
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] After ensureProjectForOpenFiles:

View File

@ -414,6 +414,16 @@ Info seq [hh:mm:ss:mss] Files (4)
/user/username/projects/myproject/src/helpers/functions.ts Text-2 "export const foo = 1;"
/user/username/projects/myproject/src/main.ts SVC-2-0 "import { foo } from 'helpers/functions';\nexport { foo };"
/user/username/projects/myproject/own/main.ts Text-2 "import { foo } from 'main';\nfoo;\nexport function bar() {}"
../../../../a/lib/lib.d.ts
Default library for target 'es5'
src/helpers/functions.ts
Imported via 'helpers/functions' from file 'src/main.ts'
src/main.ts
Imported via 'main' from file 'own/main.ts'
own/main.ts
Part of 'files' list in tsconfig.json
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] event:
@ -442,7 +452,7 @@ Info seq [hh:mm:ss:mss] Files (4)
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred)
Info seq [hh:mm:ss:mss] Files (2)
Info seq [hh:mm:ss:mss] Files (0) NoProgram
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Open files:
@ -456,6 +466,12 @@ Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred)
Info seq [hh:mm:ss:mss] Files (2)
/a/lib/lib.d.ts Text-1 "/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }"
/dummy/dummy.ts SVC-1-0 "let a = 10;"
../a/lib/lib.d.ts
Default library for target 'es5'
dummy.ts
Root file specified for compilation
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] After ensureProjectForOpenFiles:

View File

@ -773,6 +773,16 @@ Info seq [hh:mm:ss:mss] Files (4)
/user/username/projects/myproject/src/helpers/functions.ts Text-2 "export const foo = 1;"
/user/username/projects/myproject/src/main.ts SVC-2-0 "import { foo } from 'helpers/functions';\nexport { foo };"
/user/username/projects/myproject/own/main.ts Text-2 "import { foo } from 'main';\nfoo;\nexport function bar() {}"
../../../../a/lib/lib.d.ts
Default library for target 'es5'
src/helpers/functions.ts
Imported via 'helpers/functions' from file 'src/main.ts'
src/main.ts
Imported via 'main' from file 'own/main.ts'
own/main.ts
Part of 'files' list in tsconfig.json
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] event:
@ -821,6 +831,15 @@ Info seq [hh:mm:ss:mss] Files (3)
/a/lib/lib.d.ts Text-1 "/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }"
/user/username/projects/myproject/src/helpers/functions.ts Text-2 "export const foo = 1;"
/user/username/projects/myproject/src/main.ts SVC-2-0 "import { foo } from 'helpers/functions';\nexport { foo };"
../../../../a/lib/lib.d.ts
Default library for target 'es5'
src/helpers/functions.ts
Imported via 'helpers/functions' from file 'src/main.ts'
Matched by include pattern './src/**/*' in 'tsconfig-src.json'
src/main.ts
Matched by include pattern './src/**/*' in 'tsconfig-src.json'
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] event:
@ -855,12 +874,12 @@ Info seq [hh:mm:ss:mss] Files (3)
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred)
Info seq [hh:mm:ss:mss] Files (2)
Info seq [hh:mm:ss:mss] Files (0) NoProgram
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Open files:
Info seq [hh:mm:ss:mss] FileName: /user/username/projects/myproject/src/main.ts ProjectRootPath: undefined
Info seq [hh:mm:ss:mss] Projects: /user/username/projects/myproject/tsconfig.json,/user/username/projects/myproject/tsconfig-src.json
Info seq [hh:mm:ss:mss] Projects: /user/username/projects/myproject/tsconfig-src.json,/user/username/projects/myproject/tsconfig.json
Info seq [hh:mm:ss:mss] FileName: /dummy/dummy.ts ProjectRootPath: undefined
Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1*
Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /dev/null/inferredProject1*
@ -869,6 +888,12 @@ Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred)
Info seq [hh:mm:ss:mss] Files (2)
/a/lib/lib.d.ts Text-1 "/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }"
/dummy/dummy.ts SVC-1-0 "let a = 10;"
../a/lib/lib.d.ts
Default library for target 'es5'
dummy.ts
Root file specified for compilation
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] After ensureProjectForOpenFiles:
@ -886,7 +911,7 @@ Info seq [hh:mm:ss:mss] Files (2)
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Open files:
Info seq [hh:mm:ss:mss] FileName: /user/username/projects/myproject/src/main.ts ProjectRootPath: undefined
Info seq [hh:mm:ss:mss] Projects: /user/username/projects/myproject/tsconfig.json,/user/username/projects/myproject/tsconfig-src.json
Info seq [hh:mm:ss:mss] Projects: /user/username/projects/myproject/tsconfig-src.json,/user/username/projects/myproject/tsconfig.json
Info seq [hh:mm:ss:mss] FileName: /dummy/dummy.ts ProjectRootPath: undefined
Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1*
Before request

View File

@ -929,6 +929,18 @@ Info seq [hh:mm:ss:mss] Files (5)
/user/username/projects/myproject/src/main.ts SVC-2-0 "import { foo } from 'helpers/functions';\nexport { foo };"
/user/username/projects/myproject/indirect1/main.ts Text-2 "import { foo } from 'main';\nfoo;\nexport function bar() {}"
/user/username/projects/myproject/own/main.ts Text-2 "import { bar } from 'main';\nbar;"
../../../../a/lib/lib.d.ts
Default library for target 'es5'
src/helpers/functions.ts
Imported via 'helpers/functions' from file 'src/main.ts'
src/main.ts
Imported via 'main' from file 'indirect1/main.ts'
indirect1/main.ts
Imported via 'main' from file 'own/main.ts'
own/main.ts
Part of 'files' list in tsconfig.json
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] event:
@ -977,6 +989,15 @@ Info seq [hh:mm:ss:mss] Files (3)
/a/lib/lib.d.ts Text-1 "/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }"
/user/username/projects/myproject/src/helpers/functions.ts Text-2 "export const foo = 1;"
/user/username/projects/myproject/src/main.ts SVC-2-0 "import { foo } from 'helpers/functions';\nexport { foo };"
../../../../a/lib/lib.d.ts
Default library for target 'es5'
src/helpers/functions.ts
Imported via 'helpers/functions' from file 'src/main.ts'
Matched by include pattern './src/**/*' in 'tsconfig-src.json'
src/main.ts
Matched by include pattern './src/**/*' in 'tsconfig-src.json'
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] event:
@ -1011,12 +1032,12 @@ Info seq [hh:mm:ss:mss] Files (3)
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred)
Info seq [hh:mm:ss:mss] Files (2)
Info seq [hh:mm:ss:mss] Files (0) NoProgram
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Open files:
Info seq [hh:mm:ss:mss] FileName: /user/username/projects/myproject/src/main.ts ProjectRootPath: undefined
Info seq [hh:mm:ss:mss] Projects: /user/username/projects/myproject/tsconfig.json,/user/username/projects/myproject/tsconfig-src.json
Info seq [hh:mm:ss:mss] Projects: /user/username/projects/myproject/tsconfig-src.json,/user/username/projects/myproject/tsconfig.json
Info seq [hh:mm:ss:mss] FileName: /dummy/dummy.ts ProjectRootPath: undefined
Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1*
Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /dev/null/inferredProject1*
@ -1025,6 +1046,12 @@ Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred)
Info seq [hh:mm:ss:mss] Files (2)
/a/lib/lib.d.ts Text-1 "/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }"
/dummy/dummy.ts SVC-1-0 "let a = 10;"
../a/lib/lib.d.ts
Default library for target 'es5'
dummy.ts
Root file specified for compilation
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] After ensureProjectForOpenFiles:
@ -1042,7 +1069,7 @@ Info seq [hh:mm:ss:mss] Files (2)
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Open files:
Info seq [hh:mm:ss:mss] FileName: /user/username/projects/myproject/src/main.ts ProjectRootPath: undefined
Info seq [hh:mm:ss:mss] Projects: /user/username/projects/myproject/tsconfig.json,/user/username/projects/myproject/tsconfig-src.json
Info seq [hh:mm:ss:mss] Projects: /user/username/projects/myproject/tsconfig-src.json,/user/username/projects/myproject/tsconfig.json
Info seq [hh:mm:ss:mss] FileName: /dummy/dummy.ts ProjectRootPath: undefined
Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1*
Before request

View File

@ -311,6 +311,17 @@ Info seq [hh:mm:ss:mss] Files (4)
/user/username/projects/myproject/node_modules/module1/index.d.ts Text-1 "export function foo(): string;"
/user/username/projects/myproject/file2.ts Text-2 "export function bar(){}\n bar();"
/user/username/projects/myproject/file1.ts SVC-1-0 "import { foo } from \"module1\";\n foo();\n import { bar } from \"./file2\";\n bar();"
../../../../a/lib/lib.d.ts
Default library for target 'es5'
node_modules/module1/index.d.ts
Imported via "module1" from file 'file1.ts'
file2.ts
Imported via "./file2" from file 'file1.ts'
Matched by default include pattern '**/*'
file1.ts
Matched by default include pattern '**/*'
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Before ensureProjectForOpenFiles:

View File

@ -369,6 +369,17 @@ Info seq [hh:mm:ss:mss] Files (4)
/user/username/projects/myproject/node_modules/module1/index.d.ts Text-1 "export function foo(): string;"
/user/username/projects/myproject/file2.ts Text-2 "export function bar(){}\n bar();"
/user/username/projects/myproject/file1.ts Text-1 "import { foo } from \"module1\";\n foo();\n import { bar } from \"./file2\";\n bar();"
../../../../a/lib/lib.d.ts
Default library for target 'es5'
node_modules/module1/index.d.ts
Imported via "module1" from file 'file1.ts'
file2.ts
Imported via "./file2" from file 'file1.ts'
Matched by default include pattern '**/*'
file1.ts
Matched by default include pattern '**/*'
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Before ensureProjectForOpenFiles:

View File

@ -295,6 +295,17 @@ Info seq [hh:mm:ss:mss] Files (4)
/user/username/projects/myproject/node_modules/module1/index.d.ts Text-1 "export function foo(): string;"
/user/username/projects/myproject/file2.ts Text-2 "export function bar(){}\n bar();"
/user/username/projects/myproject/file1.ts Text-1 "import { foo } from \"module1\";\n foo();\n import { bar } from \"./file2\";\n bar();"
../../../../a/lib/lib.d.ts
Default library for target 'es5'
node_modules/module1/index.d.ts
Imported via "module1" from file 'file1.ts'
file2.ts
Imported via "./file2" from file 'file1.ts'
Root file specified for compilation
file1.ts
Root file specified for compilation
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Before ensureProjectForOpenFiles:

View File

@ -172,7 +172,7 @@ Info seq [hh:mm:ss:mss] DirectoryWatcher:: Close:: WatchInfo: /user/username/pr
Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Close:: WatchInfo: /user/username/projects/node_modules/@types 1 {"excludeFiles":["/user/username/projects/myproject/file2.ts"],"excludeDirectories":["/user/username/projects/myproject/node_modules"]} Project: /dev/null/inferredProject1* WatchType: Type roots
Info seq [hh:mm:ss:mss] Before ensureProjectForOpenFiles:
Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred)
Info seq [hh:mm:ss:mss] Files (3)
Info seq [hh:mm:ss:mss] Files (0) NoProgram
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Open files:
@ -270,7 +270,7 @@ Info seq [hh:mm:ss:mss] DirectoryWatcher:: Close:: WatchInfo: /user/username/pr
Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Close:: WatchInfo: /user/username/projects/node_modules/@types 1 {"excludeFiles":["/user/username/projects/myproject/file2.ts"],"excludeDirectories":["/user/username/projects/myproject/node_modules"]} Project: /dev/null/inferredProject1* WatchType: Type roots
Info seq [hh:mm:ss:mss] Before ensureProjectForOpenFiles:
Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred)
Info seq [hh:mm:ss:mss] Files (4)
Info seq [hh:mm:ss:mss] Files (0) NoProgram
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Open files:
@ -288,6 +288,16 @@ Info seq [hh:mm:ss:mss] Files (4)
/user/username/projects/myproject/node_modules/module1/index.d.ts Text-1 "export function foo(): string;"
/user/username/projects/myproject/file2.ts Text-2 "export function bar(){}\n bar();"
/user/username/projects/myproject/file1.ts SVC-1-0 "import { foo } from \"module1\";\n foo();\n import { bar } from \"./file2\";\n bar();"
../../../../a/lib/lib.d.ts
Default library for target 'es5'
node_modules/module1/index.d.ts
Imported via "module1" from file 'file1.ts'
file2.ts
Imported via "./file2" from file 'file1.ts'
file1.ts
Root file specified for compilation
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] After ensureProjectForOpenFiles:
@ -352,7 +362,7 @@ Info seq [hh:mm:ss:mss] DirectoryWatcher:: Close:: WatchInfo: /user/username/pr
Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Close:: WatchInfo: /user/username/projects/node_modules/@types 1 {"excludeFiles":["/user/username/projects/myproject/file2.ts"],"excludeDirectories":["/user/username/projects/myproject/node_modules"]} Project: /dev/null/inferredProject1* WatchType: Type roots
Info seq [hh:mm:ss:mss] Before ensureProjectForOpenFiles:
Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred)
Info seq [hh:mm:ss:mss] Files (4)
Info seq [hh:mm:ss:mss] Files (0) NoProgram
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Open files: