From 1c25c7fb552eb098cfe326ce369d83daea4ae0fa Mon Sep 17 00:00:00 2001 From: TypeScript Bot Date: Thu, 28 Mar 2024 16:13:51 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=A4=96=20Pick=20PR=20#57968=20(Normalize?= =?UTF-8?q?=20slashes=20for=20paths=20in=20watc...)=20into=20release-5.4?= =?UTF-8?q?=20(#57970)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sheetal Nandi --- src/server/editorServices.ts | 2 +- .../unittests/tsserver/events/watchEvents.ts | 96 +- .../canUseWatchEvents-on-windows.js | 1390 +++++++++++++++++ 3 files changed, 1478 insertions(+), 10 deletions(-) create mode 100644 tests/baselines/reference/tsserver/events/watchEvents/canUseWatchEvents-on-windows.js diff --git a/src/server/editorServices.ts b/src/server/editorServices.ts index d8ee13561b397..af0427af971ad 100644 --- a/src/server/editorServices.ts +++ b/src/server/editorServices.ts @@ -997,7 +997,7 @@ function createWatchFactoryHostUsingWatchEvents(service: ProjectService, canUseW cb: (callback: T, eventPath: string) => void, ) { hostWatcherMap.idToCallbacks.get(id)?.forEach(callback => { - eventPaths.forEach(eventPath => cb(callback, eventPath)); + eventPaths.forEach(eventPath => cb(callback, normalizeSlashes(eventPath))); }); } } diff --git a/src/testRunner/unittests/tsserver/events/watchEvents.ts b/src/testRunner/unittests/tsserver/events/watchEvents.ts index 88c6450a7ae52..6666ce455a775 100644 --- a/src/testRunner/unittests/tsserver/events/watchEvents.ts +++ b/src/testRunner/unittests/tsserver/events/watchEvents.ts @@ -93,8 +93,8 @@ describe("unittests:: tsserver:: events:: watchEvents", () => { function updateFileOnHost(session: TestSession, file: string, log: string, content?: string) { // Change b.ts session.logger.log(`${log}: ${file}`); - if (content) session.host.appendFile(file, content); - else session.host.writeFile(file, session.host.readFile("/user/username/projects/myproject/a.ts")!); + if (content && session.host.fileExists(file)) session.host.appendFile(file, content); + else session.host.writeFile(file, content ?? session.host.readFile("/user/username/projects/myproject/a.ts")!); session.host.runQueuedTimeoutCallbacks(); } @@ -150,12 +150,13 @@ describe("unittests:: tsserver:: events:: watchEvents", () => { session: TestSession, file: string, eventType: "created" | "deleted" | "updated", + eventPath?: string, ) { return collectWatchChanges( session, (session.logger.host as TestServerHostWithCustomWatch).factoryData.watchUtils.pollingWatches, file, - file, + eventPath ?? file, eventType, ); } @@ -185,21 +186,21 @@ describe("unittests:: tsserver:: events:: watchEvents", () => { } } - function addFile(session: TestSession, path: string) { - updateFileOnHost(session, path, "Add file"); + function addFile(session: TestSession, path: string, content?: string, eventPath?: string) { + updateFileOnHost(session, path, "Add file", content); invokeWatchChange( session, - collectDirectoryWatcherChanges(session, "/user/username/projects/myproject", path, "created"), + collectDirectoryWatcherChanges(session, ts.getDirectoryPath(path), eventPath ?? path, "created"), ); session.host.runQueuedTimeoutCallbacks(); } - function changeFile(session: TestSession, path: string, content?: string) { + function changeFile(session: TestSession, path: string, content?: string, eventPath?: string) { updateFileOnHost(session, path, "Change File", content); invokeWatchChange( session, - collectFileWatcherChanges(session, path, "updated"), - collectDirectoryWatcherChanges(session, ts.getDirectoryPath(path), path, "updated"), + collectFileWatcherChanges(session, path, "updated", eventPath), + collectDirectoryWatcherChanges(session, ts.getDirectoryPath(path), eventPath ?? path, "updated"), ); session.host.runQueuedTimeoutCallbacks(); } @@ -321,4 +322,81 @@ describe("unittests:: tsserver:: events:: watchEvents", () => { baselineTsserverLogs("events/watchEvents", `canUseWatchEvents without canUseEvents`, session); }); + + it("canUseWatchEvents on windows", () => { + const inputHost = createServerHost({ + "c:\\projects\\myproject\\tsconfig.json": "{}", + "c:\\projects\\myproject\\a.ts": `export class a { prop = "hello"; foo() { return this.prop; } }`, + "c:\\projects\\myproject\\b.ts": `export class b { prop = "hello"; foo() { return this.prop; } }`, + "c:\\projects\\myproject\\m.ts": `import { x } from "something"`, + "c:\\projects\\myproject\\node_modules\\something\\index.d.ts": `export const x = 10;`, + [libFile.path]: libFile.content, + }, { windowsStyleRoot: "c:\\" }); + const logger = createLoggerWithInMemoryLogs(inputHost); + const host = createTestServerHostWithCustomWatch(logger); + + const session = createSessionWithCustomEventHandler({ host, canUseWatchEvents: true, logger }, handleWatchEvents); + openFilesForSession(["c:\\projects\\myproject\\a.ts"], session); + + // Directory watcher + addFile(session, "c:/projects/myproject/c.ts", `export xyx = 10;`, "c:\\projects\\myproject\\c.ts"); + + // File Watcher + changeFile(session, "c:/projects/myproject/b.ts", "export const ss = 20;", "c:\\projects\\myproject\\b.ts"); + + // Close watcher + openFilesForSession(["c:\\projects\\myproject\\b.ts"], session); + + // Re watch + closeFilesForSession(["c:\\projects\\myproject\\b.ts"], session); + + // Update c.ts + changeFile(session, "c:/projects/myproject/c.ts", "export const ss = 20;", "c:\\projects\\myproject\\b.ts"); + + // Update with npm install + session.logger.log("update with npm install"); + session.host.appendFile("c:\\projects\\myproject\\node_modules\\something\\index.d.ts", `export const y = 20;`); + session.host.runQueuedTimeoutCallbacks(); + invokeWatchChange( + session, + collectDirectoryWatcherChanges( + session, + "c:/projects/myproject/node_modules", + "c:\\projects\\myproject\\node_modules\\something\\index.d.ts", + "updated", + ), + ); + session.host.runQueuedTimeoutCallbacks(); + host.runQueuedTimeoutCallbacks(); + + // Add and change multiple files - combine and send multiple requests together + updateFileOnHost(session, "c:/projects/myproject/d.ts", "Add file", "export const yy = 10;"); + updateFileOnHost(session, "c:/projects/myproject/c.ts", "Change File", `export const z = 30;`); + updateFileOnHost(session, "c:/projects/myproject/e.ts", "Add File", "export const zz = 40;"); + invokeWatchChange( + session, + collectDirectoryWatcherChanges(session, "c:/projects/myproject", "c:\\projects\\myproject\\d.ts", "created"), + collectFileWatcherChanges(session, "c:/projects/myproject/c.ts", "updated", "c:\\projects\\myproject\\c.ts"), + collectDirectoryWatcherChanges(session, "c:/projects/myproject", "c:\\projects\\myproject\\c.ts", "updated"), + collectDirectoryWatcherChanges(session, "c:/projects/myproject", "c:\\projects\\myproject\\e.ts", "created"), + ); + session.host.runQueuedTimeoutCallbacks(); + + baselineTsserverLogs("events/watchEvents", `canUseWatchEvents on windows`, session); + function handleWatchEvents(event: ts.server.ProjectServiceEvent) { + switch (event.eventName) { + case ts.server.CreateFileWatcherEvent: + host.factoryData.watchFile(event.data); + break; + case ts.server.CreateDirectoryWatcherEvent: + host.factoryData.watchDirectory(event.data); + break; + case ts.server.CloseFileWatcherEvent: + host.factoryData.closeWatcher(event.data); + break; + default: + break; + } + } + }); }); diff --git a/tests/baselines/reference/tsserver/events/watchEvents/canUseWatchEvents-on-windows.js b/tests/baselines/reference/tsserver/events/watchEvents/canUseWatchEvents-on-windows.js new file mode 100644 index 0000000000000..90983324af87f --- /dev/null +++ b/tests/baselines/reference/tsserver/events/watchEvents/canUseWatchEvents-on-windows.js @@ -0,0 +1,1390 @@ +currentDirectory:: c:\ useCaseSensitiveFileNames: false +Info seq [hh:mm:ss:mss] Provided types map file "/typesMap.json" doesn't exist +Before request +//// [c:/projects/myproject/tsconfig.json] +{} + +//// [c:/projects/myproject/a.ts] +export class a { prop = "hello"; foo() { return this.prop; } } + +//// [c:/projects/myproject/b.ts] +export class b { prop = "hello"; foo() { return this.prop; } } + +//// [c:/projects/myproject/m.ts] +import { x } from "something" + +//// [c:/projects/myproject/node_modules/something/index.d.ts] +export const x = 10; + +//// [c:/a/lib/lib.d.ts] +/// +interface Boolean {} +interface Function {} +interface CallableFunction {} +interface NewableFunction {} +interface IArguments {} +interface Number { toExponential: any; } +interface Object {} +interface RegExp {} +interface String { charAt: any; } +interface Array { length: number; [n: number]: T; } + + +Info seq [hh:mm:ss:mss] request: + { + "command": "open", + "arguments": { + "file": "c:\\projects\\myproject\\a.ts" + }, + "seq": 1, + "type": "request" + } +Info seq [hh:mm:ss:mss] Search path: c:/projects/myproject +Info seq [hh:mm:ss:mss] For info: c:/projects/myproject/a.ts :: Config file name: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] Creating configuration project c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: c:/projects/myproject/tsconfig.json 2000 undefined Project: c:/projects/myproject/tsconfig.json WatchType: Config file +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "CustomHandler::createFileWatcher", + "body": { + "id": 1, + "path": "c:/projects/myproject/tsconfig.json" + } + } +Custom watchFile: 1: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "CustomHandler::projectLoadingStart", + "body": { + "project": "c:/projects/myproject/tsconfig.json", + "reason": "Creating possible configured project for c:/projects/myproject/a.ts to open" + } + } +Info seq [hh:mm:ss:mss] Config: c:/projects/myproject/tsconfig.json : { + "rootNames": [ + "c:/projects/myproject/a.ts", + "c:/projects/myproject/b.ts", + "c:/projects/myproject/m.ts" + ], + "options": { + "configFilePath": "c:/projects/myproject/tsconfig.json" + } +} +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: c:/projects/myproject 1 undefined Config: c:/projects/myproject/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "CustomHandler::createDirectoryWatcher", + "body": { + "id": 2, + "path": "c:/projects/myproject", + "recursive": true, + "ignoreUpdate": true + } + } +Custom watchDirectory: 2: c:/projects/myproject true true +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: c:/projects/myproject 1 undefined Config: c:/projects/myproject/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: c:/projects/myproject/b.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "CustomHandler::createFileWatcher", + "body": { + "id": 3, + "path": "c:/projects/myproject/b.ts" + } + } +Custom watchFile: 3: c:/projects/myproject/b.ts +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: c:/projects/myproject/m.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "CustomHandler::createFileWatcher", + "body": { + "id": 4, + "path": "c:/projects/myproject/m.ts" + } + } +Custom watchFile: 4: c:/projects/myproject/m.ts +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: c:/projects/myproject/node_modules 1 undefined WatchType: node_modules for closed script infos and package.jsons affecting module specifier cache +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "CustomHandler::createDirectoryWatcher", + "body": { + "id": 5, + "path": "c:/projects/myproject/node_modules", + "recursive": true + } + } +Custom watchDirectory: 5: c:/projects/myproject/node_modules true undefined +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: c:/projects/myproject/node_modules 1 undefined WatchType: node_modules for closed script infos and package.jsons affecting module specifier cache +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: c:/a/lib/lib.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "CustomHandler::createFileWatcher", + "body": { + "id": 6, + "path": "c:/a/lib/lib.d.ts" + } + } +Custom watchFile: 6: c:/a/lib/lib.d.ts +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: c:/projects/myproject/node_modules 1 undefined Project: c:/projects/myproject/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: c:/projects/myproject/node_modules 1 undefined Project: c:/projects/myproject/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: c:/projects/myproject/node_modules/@types 1 undefined Project: c:/projects/myproject/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "CustomHandler::createDirectoryWatcher", + "body": { + "id": 7, + "path": "c:/projects/myproject/node_modules/@types", + "recursive": true, + "ignoreUpdate": true + } + } +Custom watchDirectory: 7: c:/projects/myproject/node_modules/@types true true +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: c:/projects/myproject/node_modules/@types 1 undefined Project: c:/projects/myproject/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: c:/projects/node_modules/@types 1 undefined Project: c:/projects/myproject/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "CustomHandler::createDirectoryWatcher", + "body": { + "id": 8, + "path": "c:/projects/node_modules/@types", + "recursive": true, + "ignoreUpdate": true + } + } +Custom watchDirectory: 8: c:/projects/node_modules/@types true true +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: c:/projects/node_modules/@types 1 undefined Project: c:/projects/myproject/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: c:/projects/myproject/tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project 'c:/projects/myproject/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (5) + c:/a/lib/lib.d.ts Text-1 "/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }" + c:/projects/myproject/a.ts SVC-1-0 "export class a { prop = \"hello\"; foo() { return this.prop; } }" + c:/projects/myproject/b.ts Text-1 "export class b { prop = \"hello\"; foo() { return this.prop; } }" + c:/projects/myproject/node_modules/something/index.d.ts Text-1 "export const x = 10;" + c:/projects/myproject/m.ts Text-1 "import { x } from \"something\"" + + + ../../a/lib/lib.d.ts + Default library for target 'es5' + a.ts + Matched by default include pattern '**/*' + b.ts + Matched by default include pattern '**/*' + node_modules/something/index.d.ts + Imported via "something" from file 'm.ts' + m.ts + Matched by default include pattern '**/*' + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "CustomHandler::projectLoadingFinish", + "body": { + "project": "c:/projects/myproject/tsconfig.json" + } + } +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "CustomHandler::projectInfo", + "body": { + "projectId": "97f177d0a126eace4239f1be3ea802bded2784e559d112a10ed01c6617b1a28f", + "fileStats": { + "js": 0, + "jsSize": 0, + "jsx": 0, + "jsxSize": 0, + "ts": 3, + "tsSize": 153, + "tsx": 0, + "tsxSize": 0, + "dts": 2, + "dtsSize": 354, + "deferred": 0, + "deferredSize": 0 + }, + "compilerOptions": {}, + "typeAcquisition": { + "enable": false, + "include": false, + "exclude": false + }, + "extends": false, + "files": false, + "include": false, + "exclude": false, + "compileOnSave": false, + "configFileName": "tsconfig.json", + "projectType": "configured", + "languageServiceEnabled": true, + "version": "FakeVersion" + } + } +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "CustomHandler::configFileDiag", + "body": { + "configFileName": "c:/projects/myproject/tsconfig.json", + "diagnostics": [], + "triggerFile": "c:/projects/myproject/a.ts" + } + } +Info seq [hh:mm:ss:mss] Project 'c:/projects/myproject/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (5) + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Open files: +Info seq [hh:mm:ss:mss] FileName: c:/projects/myproject/a.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] response: + { + "responseRequired": false + } +After request + +Custom WatchedFiles:: +c:/a/lib/lib.d.ts: *new* + {"id":6,"path":"c:/a/lib/lib.d.ts"} +c:/projects/myproject/b.ts: *new* + {"id":3,"path":"c:/projects/myproject/b.ts"} +c:/projects/myproject/m.ts: *new* + {"id":4,"path":"c:/projects/myproject/m.ts"} +c:/projects/myproject/tsconfig.json: *new* + {"id":1,"path":"c:/projects/myproject/tsconfig.json"} + +Custom WatchedDirectoriesRecursive:: +c:/projects/myproject: *new* + {"id":2,"path":"c:/projects/myproject","recursive":true,"ignoreUpdate":true} +c:/projects/myproject/node_modules: *new* + {"id":5,"path":"c:/projects/myproject/node_modules","recursive":true} +c:/projects/myproject/node_modules/@types: *new* + {"id":7,"path":"c:/projects/myproject/node_modules/@types","recursive":true,"ignoreUpdate":true} +c:/projects/node_modules/@types: *new* + {"id":8,"path":"c:/projects/node_modules/@types","recursive":true,"ignoreUpdate":true} + +Projects:: +c:/projects/myproject/tsconfig.json (Configured) *new* + projectStateVersion: 1 + projectProgramVersion: 1 + +ScriptInfos:: +c:/a/lib/lib.d.ts *new* + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/a.ts (Open) *new* + version: SVC-1-0 + containingProjects: 1 + c:/projects/myproject/tsconfig.json *default* +c:/projects/myproject/b.ts *new* + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/m.ts *new* + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/node_modules/something/index.d.ts *new* + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json + +Add file: c:/projects/myproject/c.ts +Before running Timeout callback:: count: 0 +//// [c:/projects/myproject/c.ts] +export xyx = 10; + + +After running Timeout callback:: count: 0 + +Custom watch:: c:/projects/myproject c:\projects\myproject\c.ts created +Before request + +Info seq [hh:mm:ss:mss] request: + { + "command": "watchChange", + "arguments": { + "id": 2, + "created": [ + "c:\\projects\\myproject\\c.ts" + ] + }, + "seq": 2, + "type": "request" + } +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Triggered with c:/projects/myproject/c.ts :: WatchInfo: c:/projects/myproject 1 undefined Config: c:/projects/myproject/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] Scheduled: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] Scheduled: *ensureProjectForOpenFiles* +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Triggered with c:/projects/myproject/c.ts :: WatchInfo: c:/projects/myproject 1 undefined Config: c:/projects/myproject/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] response: + { + "responseRequired": false + } +After request + +Timeout callback:: count: 2 +1: c:/projects/myproject/tsconfig.json *new* +2: *ensureProjectForOpenFiles* *new* + +Projects:: +c:/projects/myproject/tsconfig.json (Configured) *changed* + projectStateVersion: 2 *changed* + projectProgramVersion: 1 + dirty: true *changed* + +Before running Timeout callback:: count: 2 +1: c:/projects/myproject/tsconfig.json +2: *ensureProjectForOpenFiles* + +Info seq [hh:mm:ss:mss] Running: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: c:/projects/myproject/c.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "CustomHandler::createFileWatcher", + "body": { + "id": 9, + "path": "c:/projects/myproject/c.ts" + } + } +Custom watchFile: 9: c:/projects/myproject/c.ts +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: c:/projects/myproject/tsconfig.json projectStateVersion: 2 projectProgramVersion: 1 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project 'c:/projects/myproject/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (6) + c:/a/lib/lib.d.ts Text-1 "/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }" + c:/projects/myproject/a.ts SVC-1-0 "export class a { prop = \"hello\"; foo() { return this.prop; } }" + c:/projects/myproject/b.ts Text-1 "export class b { prop = \"hello\"; foo() { return this.prop; } }" + c:/projects/myproject/node_modules/something/index.d.ts Text-1 "export const x = 10;" + c:/projects/myproject/m.ts Text-1 "import { x } from \"something\"" + c:/projects/myproject/c.ts Text-1 "export xyx = 10;" + + + ../../a/lib/lib.d.ts + Default library for target 'es5' + a.ts + Matched by default include pattern '**/*' + b.ts + Matched by default include pattern '**/*' + node_modules/something/index.d.ts + Imported via "something" from file 'm.ts' + m.ts + Matched by default include pattern '**/*' + c.ts + Matched by default include pattern '**/*' + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Running: *ensureProjectForOpenFiles* +Info seq [hh:mm:ss:mss] Before ensureProjectForOpenFiles: +Info seq [hh:mm:ss:mss] Project 'c:/projects/myproject/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (6) + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Open files: +Info seq [hh:mm:ss:mss] FileName: c:/projects/myproject/a.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] After ensureProjectForOpenFiles: +Info seq [hh:mm:ss:mss] Project 'c:/projects/myproject/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (6) + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Open files: +Info seq [hh:mm:ss:mss] FileName: c:/projects/myproject/a.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "CustomHandler::projectsUpdatedInBackground", + "body": { + "openFiles": [ + "c:/projects/myproject/a.ts" + ] + } + } +After running Timeout callback:: count: 0 + +Custom WatchedFiles:: +c:/a/lib/lib.d.ts: + {"id":6,"path":"c:/a/lib/lib.d.ts"} +c:/projects/myproject/b.ts: + {"id":3,"path":"c:/projects/myproject/b.ts"} +c:/projects/myproject/c.ts: *new* + {"id":9,"path":"c:/projects/myproject/c.ts"} +c:/projects/myproject/m.ts: + {"id":4,"path":"c:/projects/myproject/m.ts"} +c:/projects/myproject/tsconfig.json: + {"id":1,"path":"c:/projects/myproject/tsconfig.json"} + +Custom WatchedDirectoriesRecursive:: +c:/projects/myproject: + {"id":2,"path":"c:/projects/myproject","recursive":true,"ignoreUpdate":true} +c:/projects/myproject/node_modules: + {"id":5,"path":"c:/projects/myproject/node_modules","recursive":true} +c:/projects/myproject/node_modules/@types: + {"id":7,"path":"c:/projects/myproject/node_modules/@types","recursive":true,"ignoreUpdate":true} +c:/projects/node_modules/@types: + {"id":8,"path":"c:/projects/node_modules/@types","recursive":true,"ignoreUpdate":true} + +Projects:: +c:/projects/myproject/tsconfig.json (Configured) *changed* + projectStateVersion: 2 + projectProgramVersion: 2 *changed* + dirty: false *changed* + +ScriptInfos:: +c:/a/lib/lib.d.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/a.ts (Open) + version: SVC-1-0 + containingProjects: 1 + c:/projects/myproject/tsconfig.json *default* +c:/projects/myproject/b.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/c.ts *new* + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/m.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/node_modules/something/index.d.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json + +Change File: c:/projects/myproject/b.ts +Before running Timeout callback:: count: 0 +//// [c:/projects/myproject/b.ts] +export class b { prop = "hello"; foo() { return this.prop; } }export const ss = 20; + + +After running Timeout callback:: count: 0 + +Custom watch:: c:/projects/myproject/b.ts c:\projects\myproject\b.ts updated +Custom watch:: c:/projects/myproject c:\projects\myproject\b.ts updated +Before request + +Info seq [hh:mm:ss:mss] request: + { + "command": "watchChange", + "arguments": { + "id": 3, + "updated": [ + "c:\\projects\\myproject\\b.ts" + ] + }, + "seq": 3, + "type": "request" + } +Info seq [hh:mm:ss:mss] FileWatcher:: Triggered with c:/projects/myproject/b.ts 1:: WatchInfo: c:/projects/myproject/b.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Scheduled: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] Scheduled: *ensureProjectForOpenFiles* +Info seq [hh:mm:ss:mss] Elapsed:: *ms FileWatcher:: Triggered with c:/projects/myproject/b.ts 1:: WatchInfo: c:/projects/myproject/b.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] response: + { + "responseRequired": false + } +After request + +Timeout callback:: count: 2 +3: c:/projects/myproject/tsconfig.json *new* +4: *ensureProjectForOpenFiles* *new* + +Projects:: +c:/projects/myproject/tsconfig.json (Configured) *changed* + projectStateVersion: 3 *changed* + projectProgramVersion: 2 + dirty: true *changed* + +ScriptInfos:: +c:/a/lib/lib.d.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/a.ts (Open) + version: SVC-1-0 + containingProjects: 1 + c:/projects/myproject/tsconfig.json *default* +c:/projects/myproject/b.ts *changed* + version: Text-1 + pendingReloadFromDisk: true *changed* + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/c.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/m.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/node_modules/something/index.d.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json + +Before running Timeout callback:: count: 2 +3: c:/projects/myproject/tsconfig.json +4: *ensureProjectForOpenFiles* + +Info seq [hh:mm:ss:mss] Running: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: c:/projects/myproject/tsconfig.json projectStateVersion: 3 projectProgramVersion: 2 structureChanged: false structureIsReused:: Completely Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project 'c:/projects/myproject/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (6) + c:/a/lib/lib.d.ts Text-1 "/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }" + c:/projects/myproject/a.ts SVC-1-0 "export class a { prop = \"hello\"; foo() { return this.prop; } }" + c:/projects/myproject/b.ts Text-2 "export class b { prop = \"hello\"; foo() { return this.prop; } }export const ss = 20;" + c:/projects/myproject/node_modules/something/index.d.ts Text-1 "export const x = 10;" + c:/projects/myproject/m.ts Text-1 "import { x } from \"something\"" + c:/projects/myproject/c.ts Text-1 "export xyx = 10;" + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Running: *ensureProjectForOpenFiles* +Info seq [hh:mm:ss:mss] Before ensureProjectForOpenFiles: +Info seq [hh:mm:ss:mss] Project 'c:/projects/myproject/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (6) + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Open files: +Info seq [hh:mm:ss:mss] FileName: c:/projects/myproject/a.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] After ensureProjectForOpenFiles: +Info seq [hh:mm:ss:mss] Project 'c:/projects/myproject/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (6) + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Open files: +Info seq [hh:mm:ss:mss] FileName: c:/projects/myproject/a.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "CustomHandler::projectsUpdatedInBackground", + "body": { + "openFiles": [ + "c:/projects/myproject/a.ts" + ] + } + } +After running Timeout callback:: count: 0 + +Projects:: +c:/projects/myproject/tsconfig.json (Configured) *changed* + projectStateVersion: 3 + projectProgramVersion: 2 + dirty: false *changed* + +ScriptInfos:: +c:/a/lib/lib.d.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/a.ts (Open) + version: SVC-1-0 + containingProjects: 1 + c:/projects/myproject/tsconfig.json *default* +c:/projects/myproject/b.ts *changed* + version: Text-2 *changed* + pendingReloadFromDisk: false *changed* + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/c.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/m.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/node_modules/something/index.d.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json + +Before request + +Info seq [hh:mm:ss:mss] request: + { + "command": "open", + "arguments": { + "file": "c:\\projects\\myproject\\b.ts" + }, + "seq": 4, + "type": "request" + } +Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: c:/projects/myproject/b.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "CustomHandler::closeFileWatcher", + "body": { + "id": 3 + } + } +Custom watchFile:: Close:: 3: c:/projects/myproject/b.ts +Info seq [hh:mm:ss:mss] Search path: c:/projects/myproject +Info seq [hh:mm:ss:mss] For info: c:/projects/myproject/b.ts :: Config file name: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] Project 'c:/projects/myproject/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (6) + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Open files: +Info seq [hh:mm:ss:mss] FileName: c:/projects/myproject/a.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] FileName: c:/projects/myproject/b.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] response: + { + "responseRequired": false + } +After request + +Custom WatchedFiles:: +c:/a/lib/lib.d.ts: + {"id":6,"path":"c:/a/lib/lib.d.ts"} +c:/projects/myproject/c.ts: + {"id":9,"path":"c:/projects/myproject/c.ts"} +c:/projects/myproject/m.ts: + {"id":4,"path":"c:/projects/myproject/m.ts"} +c:/projects/myproject/tsconfig.json: + {"id":1,"path":"c:/projects/myproject/tsconfig.json"} + +Custom WatchedFiles *deleted*:: +c:/projects/myproject/b.ts: + {"id":3,"path":"c:/projects/myproject/b.ts"} + +Custom WatchedDirectoriesRecursive:: +c:/projects/myproject: + {"id":2,"path":"c:/projects/myproject","recursive":true,"ignoreUpdate":true} +c:/projects/myproject/node_modules: + {"id":5,"path":"c:/projects/myproject/node_modules","recursive":true} +c:/projects/myproject/node_modules/@types: + {"id":7,"path":"c:/projects/myproject/node_modules/@types","recursive":true,"ignoreUpdate":true} +c:/projects/node_modules/@types: + {"id":8,"path":"c:/projects/node_modules/@types","recursive":true,"ignoreUpdate":true} + +ScriptInfos:: +c:/a/lib/lib.d.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/a.ts (Open) + version: SVC-1-0 + containingProjects: 1 + c:/projects/myproject/tsconfig.json *default* +c:/projects/myproject/b.ts (Open) *changed* + open: true *changed* + version: Text-2 + containingProjects: 1 + c:/projects/myproject/tsconfig.json *default* +c:/projects/myproject/c.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/m.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/node_modules/something/index.d.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json + +Before request + +Info seq [hh:mm:ss:mss] request: + { + "command": "close", + "arguments": { + "file": "c:\\projects\\myproject\\b.ts" + }, + "seq": 5, + "type": "request" + } +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: c:/projects/myproject/b.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "CustomHandler::createFileWatcher", + "body": { + "id": 10, + "path": "c:/projects/myproject/b.ts" + } + } +Custom watchFile: 10: c:/projects/myproject/b.ts +Info seq [hh:mm:ss:mss] Project 'c:/projects/myproject/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (6) + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Open files: +Info seq [hh:mm:ss:mss] FileName: c:/projects/myproject/a.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] response: + { + "responseRequired": false + } +After request + +Custom WatchedFiles:: +c:/a/lib/lib.d.ts: + {"id":6,"path":"c:/a/lib/lib.d.ts"} +c:/projects/myproject/b.ts: *new* + {"id":10,"path":"c:/projects/myproject/b.ts"} +c:/projects/myproject/c.ts: + {"id":9,"path":"c:/projects/myproject/c.ts"} +c:/projects/myproject/m.ts: + {"id":4,"path":"c:/projects/myproject/m.ts"} +c:/projects/myproject/tsconfig.json: + {"id":1,"path":"c:/projects/myproject/tsconfig.json"} + +Custom WatchedDirectoriesRecursive:: +c:/projects/myproject: + {"id":2,"path":"c:/projects/myproject","recursive":true,"ignoreUpdate":true} +c:/projects/myproject/node_modules: + {"id":5,"path":"c:/projects/myproject/node_modules","recursive":true} +c:/projects/myproject/node_modules/@types: + {"id":7,"path":"c:/projects/myproject/node_modules/@types","recursive":true,"ignoreUpdate":true} +c:/projects/node_modules/@types: + {"id":8,"path":"c:/projects/node_modules/@types","recursive":true,"ignoreUpdate":true} + +ScriptInfos:: +c:/a/lib/lib.d.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/a.ts (Open) + version: SVC-1-0 + containingProjects: 1 + c:/projects/myproject/tsconfig.json *default* +c:/projects/myproject/b.ts *changed* + open: false *changed* + version: Text-2 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/c.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/m.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/node_modules/something/index.d.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json + +Change File: c:/projects/myproject/c.ts +Before running Timeout callback:: count: 0 +//// [c:/projects/myproject/c.ts] +export xyx = 10;export const ss = 20; + + +After running Timeout callback:: count: 0 + +Custom watch:: c:/projects/myproject/c.ts c:\projects\myproject\b.ts updated +Custom watch:: c:/projects/myproject c:\projects\myproject\b.ts updated +Before request + +Info seq [hh:mm:ss:mss] request: + { + "command": "watchChange", + "arguments": { + "id": 9, + "updated": [ + "c:\\projects\\myproject\\b.ts" + ] + }, + "seq": 6, + "type": "request" + } +Info seq [hh:mm:ss:mss] FileWatcher:: Triggered with c:/projects/myproject/b.ts 1:: WatchInfo: c:/projects/myproject/c.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Scheduled: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] Scheduled: *ensureProjectForOpenFiles* +Info seq [hh:mm:ss:mss] Elapsed:: *ms FileWatcher:: Triggered with c:/projects/myproject/b.ts 1:: WatchInfo: c:/projects/myproject/c.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] response: + { + "responseRequired": false + } +After request + +Timeout callback:: count: 2 +5: c:/projects/myproject/tsconfig.json *new* +6: *ensureProjectForOpenFiles* *new* + +Projects:: +c:/projects/myproject/tsconfig.json (Configured) *changed* + projectStateVersion: 4 *changed* + projectProgramVersion: 2 + dirty: true *changed* + +ScriptInfos:: +c:/a/lib/lib.d.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/a.ts (Open) + version: SVC-1-0 + containingProjects: 1 + c:/projects/myproject/tsconfig.json *default* +c:/projects/myproject/b.ts + version: Text-2 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/c.ts *changed* + version: Text-1 + pendingReloadFromDisk: true *changed* + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/m.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/node_modules/something/index.d.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json + +Before running Timeout callback:: count: 2 +5: c:/projects/myproject/tsconfig.json +6: *ensureProjectForOpenFiles* + +Info seq [hh:mm:ss:mss] Running: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: c:/projects/myproject/tsconfig.json projectStateVersion: 4 projectProgramVersion: 2 structureChanged: false structureIsReused:: Completely Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project 'c:/projects/myproject/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (6) + c:/a/lib/lib.d.ts Text-1 "/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }" + c:/projects/myproject/a.ts SVC-1-0 "export class a { prop = \"hello\"; foo() { return this.prop; } }" + c:/projects/myproject/b.ts Text-2 "export class b { prop = \"hello\"; foo() { return this.prop; } }export const ss = 20;" + c:/projects/myproject/node_modules/something/index.d.ts Text-1 "export const x = 10;" + c:/projects/myproject/m.ts Text-1 "import { x } from \"something\"" + c:/projects/myproject/c.ts Text-2 "export xyx = 10;export const ss = 20;" + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Running: *ensureProjectForOpenFiles* +Info seq [hh:mm:ss:mss] Before ensureProjectForOpenFiles: +Info seq [hh:mm:ss:mss] Project 'c:/projects/myproject/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (6) + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Open files: +Info seq [hh:mm:ss:mss] FileName: c:/projects/myproject/a.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] After ensureProjectForOpenFiles: +Info seq [hh:mm:ss:mss] Project 'c:/projects/myproject/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (6) + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Open files: +Info seq [hh:mm:ss:mss] FileName: c:/projects/myproject/a.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "CustomHandler::projectsUpdatedInBackground", + "body": { + "openFiles": [ + "c:/projects/myproject/a.ts" + ] + } + } +After running Timeout callback:: count: 0 + +Projects:: +c:/projects/myproject/tsconfig.json (Configured) *changed* + projectStateVersion: 4 + projectProgramVersion: 2 + dirty: false *changed* + +ScriptInfos:: +c:/a/lib/lib.d.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/a.ts (Open) + version: SVC-1-0 + containingProjects: 1 + c:/projects/myproject/tsconfig.json *default* +c:/projects/myproject/b.ts + version: Text-2 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/c.ts *changed* + version: Text-2 *changed* + pendingReloadFromDisk: false *changed* + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/m.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/node_modules/something/index.d.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json + +update with npm install +Before running Timeout callback:: count: 0 +//// [c:/projects/myproject/node_modules/something/index.d.ts] +export const x = 10;export const y = 20; + + +After running Timeout callback:: count: 0 + +Custom watch:: c:/projects/myproject/node_modules c:\projects\myproject\node_modules\something\index.d.ts updated +Before request + +Info seq [hh:mm:ss:mss] request: + { + "command": "watchChange", + "arguments": { + "id": 5, + "updated": [ + "c:\\projects\\myproject\\node_modules\\something\\index.d.ts" + ] + }, + "seq": 7, + "type": "request" + } +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Triggered with c:/projects/myproject/node_modules/something/index.d.ts :: WatchInfo: c:/projects/myproject/node_modules 1 undefined WatchType: node_modules for closed script infos and package.jsons affecting module specifier cache +Info seq [hh:mm:ss:mss] Scheduled: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] Scheduled: *ensureProjectForOpenFiles* +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Triggered with c:/projects/myproject/node_modules/something/index.d.ts :: WatchInfo: c:/projects/myproject/node_modules 1 undefined WatchType: node_modules for closed script infos and package.jsons affecting module specifier cache +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Triggered with c:/projects/myproject/node_modules/something/index.d.ts :: WatchInfo: c:/projects/myproject/node_modules 1 undefined Project: c:/projects/myproject/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Scheduled: c:/projects/myproject/tsconfig.jsonFailedLookupInvalidation +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Triggered with c:/projects/myproject/node_modules/something/index.d.ts :: WatchInfo: c:/projects/myproject/node_modules 1 undefined Project: c:/projects/myproject/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] response: + { + "responseRequired": false + } +After request + +Timeout callback:: count: 3 +7: c:/projects/myproject/tsconfig.json *new* +8: *ensureProjectForOpenFiles* *new* +9: c:/projects/myproject/tsconfig.jsonFailedLookupInvalidation *new* + +Projects:: +c:/projects/myproject/tsconfig.json (Configured) *changed* + projectStateVersion: 5 *changed* + projectProgramVersion: 2 + dirty: true *changed* + +ScriptInfos:: +c:/a/lib/lib.d.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/a.ts (Open) + version: SVC-1-0 + containingProjects: 1 + c:/projects/myproject/tsconfig.json *default* +c:/projects/myproject/b.ts + version: Text-2 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/c.ts + version: Text-2 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/m.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/node_modules/something/index.d.ts *changed* + version: Text-1 + pendingReloadFromDisk: true *changed* + containingProjects: 1 + c:/projects/myproject/tsconfig.json + +Before running Timeout callback:: count: 3 +7: c:/projects/myproject/tsconfig.json +8: *ensureProjectForOpenFiles* +9: c:/projects/myproject/tsconfig.jsonFailedLookupInvalidation + +Info seq [hh:mm:ss:mss] Running: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] Scheduled: *ensureProjectForOpenFiles*, Cancelled earlier one +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: c:/projects/myproject/tsconfig.json projectStateVersion: 5 projectProgramVersion: 2 structureChanged: true structureIsReused:: SafeModules Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project 'c:/projects/myproject/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (6) + c:/a/lib/lib.d.ts Text-1 "/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }" + c:/projects/myproject/a.ts SVC-1-0 "export class a { prop = \"hello\"; foo() { return this.prop; } }" + c:/projects/myproject/b.ts Text-2 "export class b { prop = \"hello\"; foo() { return this.prop; } }export const ss = 20;" + c:/projects/myproject/node_modules/something/index.d.ts Text-2 "export const x = 10;export const y = 20;" + c:/projects/myproject/m.ts Text-1 "import { x } from \"something\"" + c:/projects/myproject/c.ts Text-2 "export xyx = 10;export const ss = 20;" + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +After running Timeout callback:: count: 1 + +Timeout callback:: count: 1 +8: *ensureProjectForOpenFiles* *deleted* +9: c:/projects/myproject/tsconfig.jsonFailedLookupInvalidation *deleted* +10: *ensureProjectForOpenFiles* *new* + +Projects:: +c:/projects/myproject/tsconfig.json (Configured) *changed* + projectStateVersion: 5 + projectProgramVersion: 3 *changed* + dirty: false *changed* + +ScriptInfos:: +c:/a/lib/lib.d.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/a.ts (Open) + version: SVC-1-0 + containingProjects: 1 + c:/projects/myproject/tsconfig.json *default* +c:/projects/myproject/b.ts + version: Text-2 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/c.ts + version: Text-2 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/m.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/node_modules/something/index.d.ts *changed* + version: Text-2 *changed* + pendingReloadFromDisk: false *changed* + containingProjects: 1 + c:/projects/myproject/tsconfig.json + +Before running Timeout callback:: count: 1 +10: *ensureProjectForOpenFiles* + +Info seq [hh:mm:ss:mss] Running: *ensureProjectForOpenFiles* +Info seq [hh:mm:ss:mss] Before ensureProjectForOpenFiles: +Info seq [hh:mm:ss:mss] Project 'c:/projects/myproject/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (6) + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Open files: +Info seq [hh:mm:ss:mss] FileName: c:/projects/myproject/a.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] After ensureProjectForOpenFiles: +Info seq [hh:mm:ss:mss] Project 'c:/projects/myproject/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (6) + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Open files: +Info seq [hh:mm:ss:mss] FileName: c:/projects/myproject/a.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "CustomHandler::projectsUpdatedInBackground", + "body": { + "openFiles": [ + "c:/projects/myproject/a.ts" + ] + } + } +After running Timeout callback:: count: 0 + +Add file: c:/projects/myproject/d.ts +Before running Timeout callback:: count: 0 +//// [c:/projects/myproject/d.ts] +export const yy = 10; + + +After running Timeout callback:: count: 0 + +Change File: c:/projects/myproject/c.ts +Before running Timeout callback:: count: 0 +//// [c:/projects/myproject/c.ts] +export xyx = 10;export const ss = 20;export const z = 30; + + +After running Timeout callback:: count: 0 + +Add File: c:/projects/myproject/e.ts +Before running Timeout callback:: count: 0 +//// [c:/projects/myproject/e.ts] +export const zz = 40; + + +After running Timeout callback:: count: 0 + +Custom watch:: c:/projects/myproject c:\projects\myproject\d.ts created +Custom watch:: c:/projects/myproject/c.ts c:\projects\myproject\c.ts updated +Custom watch:: c:/projects/myproject c:\projects\myproject\c.ts updated +Custom watch:: c:/projects/myproject c:\projects\myproject\e.ts created +Before request + +Info seq [hh:mm:ss:mss] request: + { + "command": "watchChange", + "arguments": [ + { + "id": 2, + "created": [ + "c:\\projects\\myproject\\d.ts", + "c:\\projects\\myproject\\e.ts" + ] + }, + { + "id": 9, + "updated": [ + "c:\\projects\\myproject\\c.ts" + ] + } + ], + "seq": 8, + "type": "request" + } +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Triggered with c:/projects/myproject/d.ts :: WatchInfo: c:/projects/myproject 1 undefined Config: c:/projects/myproject/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] Scheduled: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] Scheduled: *ensureProjectForOpenFiles* +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Triggered with c:/projects/myproject/d.ts :: WatchInfo: c:/projects/myproject 1 undefined Config: c:/projects/myproject/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Triggered with c:/projects/myproject/e.ts :: WatchInfo: c:/projects/myproject 1 undefined Config: c:/projects/myproject/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] Scheduled: c:/projects/myproject/tsconfig.json, Cancelled earlier one +Info seq [hh:mm:ss:mss] Scheduled: *ensureProjectForOpenFiles*, Cancelled earlier one +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Triggered with c:/projects/myproject/e.ts :: WatchInfo: c:/projects/myproject 1 undefined Config: c:/projects/myproject/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] FileWatcher:: Triggered with c:/projects/myproject/c.ts 1:: WatchInfo: c:/projects/myproject/c.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Scheduled: c:/projects/myproject/tsconfig.json, Cancelled earlier one +Info seq [hh:mm:ss:mss] Scheduled: *ensureProjectForOpenFiles*, Cancelled earlier one +Info seq [hh:mm:ss:mss] Elapsed:: *ms FileWatcher:: Triggered with c:/projects/myproject/c.ts 1:: WatchInfo: c:/projects/myproject/c.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] response: + { + "responseRequired": false + } +After request + +Timeout callback:: count: 2 +15: c:/projects/myproject/tsconfig.json *new* +16: *ensureProjectForOpenFiles* *new* + +Projects:: +c:/projects/myproject/tsconfig.json (Configured) *changed* + projectStateVersion: 6 *changed* + projectProgramVersion: 3 + dirty: true *changed* + +ScriptInfos:: +c:/a/lib/lib.d.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/a.ts (Open) + version: SVC-1-0 + containingProjects: 1 + c:/projects/myproject/tsconfig.json *default* +c:/projects/myproject/b.ts + version: Text-2 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/c.ts *changed* + version: Text-2 + pendingReloadFromDisk: true *changed* + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/m.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/node_modules/something/index.d.ts + version: Text-2 + containingProjects: 1 + c:/projects/myproject/tsconfig.json + +Before running Timeout callback:: count: 2 +15: c:/projects/myproject/tsconfig.json +16: *ensureProjectForOpenFiles* + +Info seq [hh:mm:ss:mss] Running: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: c:/projects/myproject/d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "CustomHandler::createFileWatcher", + "body": { + "id": 11, + "path": "c:/projects/myproject/d.ts" + } + } +Custom watchFile: 11: c:/projects/myproject/d.ts +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: c:/projects/myproject/e.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "CustomHandler::createFileWatcher", + "body": { + "id": 12, + "path": "c:/projects/myproject/e.ts" + } + } +Custom watchFile: 12: c:/projects/myproject/e.ts +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: c:/projects/myproject/tsconfig.json projectStateVersion: 6 projectProgramVersion: 3 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project 'c:/projects/myproject/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (8) + c:/a/lib/lib.d.ts Text-1 "/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }" + c:/projects/myproject/a.ts SVC-1-0 "export class a { prop = \"hello\"; foo() { return this.prop; } }" + c:/projects/myproject/b.ts Text-2 "export class b { prop = \"hello\"; foo() { return this.prop; } }export const ss = 20;" + c:/projects/myproject/node_modules/something/index.d.ts Text-2 "export const x = 10;export const y = 20;" + c:/projects/myproject/m.ts Text-1 "import { x } from \"something\"" + c:/projects/myproject/c.ts Text-3 "export xyx = 10;export const ss = 20;export const z = 30;" + c:/projects/myproject/d.ts Text-1 "export const yy = 10;" + c:/projects/myproject/e.ts Text-1 "export const zz = 40;" + + + ../../a/lib/lib.d.ts + Default library for target 'es5' + a.ts + Matched by default include pattern '**/*' + b.ts + Matched by default include pattern '**/*' + node_modules/something/index.d.ts + Imported via "something" from file 'm.ts' + m.ts + Matched by default include pattern '**/*' + c.ts + Matched by default include pattern '**/*' + d.ts + Matched by default include pattern '**/*' + e.ts + Matched by default include pattern '**/*' + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Running: *ensureProjectForOpenFiles* +Info seq [hh:mm:ss:mss] Before ensureProjectForOpenFiles: +Info seq [hh:mm:ss:mss] Project 'c:/projects/myproject/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (8) + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Open files: +Info seq [hh:mm:ss:mss] FileName: c:/projects/myproject/a.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] After ensureProjectForOpenFiles: +Info seq [hh:mm:ss:mss] Project 'c:/projects/myproject/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (8) + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Open files: +Info seq [hh:mm:ss:mss] FileName: c:/projects/myproject/a.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: c:/projects/myproject/tsconfig.json +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "CustomHandler::projectsUpdatedInBackground", + "body": { + "openFiles": [ + "c:/projects/myproject/a.ts" + ] + } + } +After running Timeout callback:: count: 0 + +Custom WatchedFiles:: +c:/a/lib/lib.d.ts: + {"id":6,"path":"c:/a/lib/lib.d.ts"} +c:/projects/myproject/b.ts: + {"id":10,"path":"c:/projects/myproject/b.ts"} +c:/projects/myproject/c.ts: + {"id":9,"path":"c:/projects/myproject/c.ts"} +c:/projects/myproject/d.ts: *new* + {"id":11,"path":"c:/projects/myproject/d.ts"} +c:/projects/myproject/e.ts: *new* + {"id":12,"path":"c:/projects/myproject/e.ts"} +c:/projects/myproject/m.ts: + {"id":4,"path":"c:/projects/myproject/m.ts"} +c:/projects/myproject/tsconfig.json: + {"id":1,"path":"c:/projects/myproject/tsconfig.json"} + +Custom WatchedDirectoriesRecursive:: +c:/projects/myproject: + {"id":2,"path":"c:/projects/myproject","recursive":true,"ignoreUpdate":true} +c:/projects/myproject/node_modules: + {"id":5,"path":"c:/projects/myproject/node_modules","recursive":true} +c:/projects/myproject/node_modules/@types: + {"id":7,"path":"c:/projects/myproject/node_modules/@types","recursive":true,"ignoreUpdate":true} +c:/projects/node_modules/@types: + {"id":8,"path":"c:/projects/node_modules/@types","recursive":true,"ignoreUpdate":true} + +Projects:: +c:/projects/myproject/tsconfig.json (Configured) *changed* + projectStateVersion: 6 + projectProgramVersion: 4 *changed* + dirty: false *changed* + +ScriptInfos:: +c:/a/lib/lib.d.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/a.ts (Open) + version: SVC-1-0 + containingProjects: 1 + c:/projects/myproject/tsconfig.json *default* +c:/projects/myproject/b.ts + version: Text-2 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/c.ts *changed* + version: Text-3 *changed* + pendingReloadFromDisk: false *changed* + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/d.ts *new* + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/e.ts *new* + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/m.ts + version: Text-1 + containingProjects: 1 + c:/projects/myproject/tsconfig.json +c:/projects/myproject/node_modules/something/index.d.ts + version: Text-2 + containingProjects: 1 + c:/projects/myproject/tsconfig.json