Skip to content

Commit 10be994

Browse files
committed
cherry pick with fixes
1 parent b04c8a0 commit 10be994

File tree

9 files changed

+238
-23
lines changed

9 files changed

+238
-23
lines changed

package-lock.json

Lines changed: 34 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
"@octokit/rest": "^21.0.1",
4747
"@types/chai": "^4.3.16",
4848
"@types/diff": "^5.2.1",
49+
"@types/microsoft__typescript-etw": "^0.1.3",
4950
"@types/minimist": "^1.2.5",
5051
"@types/mocha": "^10.0.7",
5152
"@types/ms": "^0.7.34",
@@ -113,5 +114,8 @@
113114
"volta": {
114115
"node": "20.1.0",
115116
"npm": "8.19.4"
117+
},
118+
"dependencies": {
119+
"@microsoft/typescript-etw": "^0.1.0"
116120
}
117121
}

src/compiler/_namespaces/ts.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ export * from "../core.js";
55
export * from "../debug.js";
66
export * from "../semver.js";
77
export * from "../performanceCore.js";
8+
export * from "../perfLogger.js";
89
export * from "../tracing.js";
910
export * from "../types.js";
1011
export * from "../sys.js";
@@ -75,4 +76,4 @@ export * from "../expressionToTypeNode.js";
7576
import * as moduleSpecifiers from "./ts.moduleSpecifiers.js";
7677
export { moduleSpecifiers };
7778
import * as performance from "./ts.performance.js";
78-
export { performance };
79+
export { performance };

src/compiler/perfLogger.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/** @internal */
2+
export interface PerfLogger {
3+
logEvent(msg: string): void;
4+
logErrEvent(msg: string): void;
5+
logPerfEvent(msg: string): void;
6+
logInfoEvent(msg: string): void;
7+
logStartCommand(command: string, msg: string): void;
8+
logStopCommand(command: string, msg: string): void;
9+
logStartUpdateProgram(msg: string): void;
10+
logStopUpdateProgram(msg: string): void;
11+
logStartUpdateGraph(): void;
12+
logStopUpdateGraph(): void;
13+
logStartResolveModule(name: string): void;
14+
logStopResolveModule(success: string): void;
15+
logStartParseSourceFile(filename: string): void;
16+
logStopParseSourceFile(): void;
17+
logStartReadFile(filename: string): void;
18+
logStopReadFile(): void;
19+
logStartBindFile(filename: string): void;
20+
logStopBindFile(): void;
21+
logStartScheduledOperation(operationId: string): void;
22+
logStopScheduledOperation(): void;
23+
}
24+
25+
// Load optional module to enable Event Tracing for Windows
26+
// See https://github.com/microsoft/typescript-etw for more information
27+
let etwModule: typeof import("@microsoft/typescript-etw") | undefined;
28+
try {
29+
const etwModulePath = process.env.TS_ETW_MODULE_PATH ?? "./node_modules/@microsoft/typescript-etw";
30+
31+
// require() will throw an exception if the module is not found
32+
// It may also return undefined if not installed properly
33+
etwModule = require(etwModulePath);
34+
}
35+
catch (e) {
36+
etwModule = undefined;
37+
}
38+
39+
/**
40+
* Performance logger that will generate ETW events if possible - check for `logEvent` member, as `etwModule` will be `{}` when browserified
41+
*
42+
* @internal
43+
*/
44+
export const perfLogger: PerfLogger | undefined = etwModule?.logEvent ? etwModule : undefined;

src/server/session.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3804,6 +3804,7 @@ export class Session<TMessage = string> implements EventSender {
38043804
let relevantFile: protocol.FileRequestArgs | undefined;
38053805
try {
38063806
request = this.parseMessage(message);
3807+
console.log(`${request.seq}:: ${request.command}`);
38073808
relevantFile = request.arguments && (request as protocol.FileRequest).arguments.file ? (request as protocol.FileRequest).arguments : undefined;
38083809

38093810
tracing?.instant(tracing.Phase.Session, "request", { seq: request.seq, command: request.command });
@@ -3854,7 +3855,7 @@ export class Session<TMessage = string> implements EventSender {
38543855
this.doOutput({ canceled: true }, request!.command, request!.seq, /*success*/ true, this.performanceData);
38553856
return;
38563857
}
3857-
3858+
console.log(`${request?.seq}:: ${request?.command}:: Exception`, err);
38583859
this.logErrorWorker(err, this.toStringMessage(message), relevantFile);
38593860
tracing?.instant(tracing.Phase.Session, "commandError", { seq: request?.seq, command: request?.command, message: (err as Error).message });
38603861

0 commit comments

Comments
 (0)