@openrewrite/rewrite 8.62.1 → 8.62.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/javascript/type-mapping.d.ts.map +1 -1
- package/dist/javascript/type-mapping.js +73 -8
- package/dist/javascript/type-mapping.js.map +1 -1
- package/dist/rpc/chrome-profiler.d.ts +25 -0
- package/dist/rpc/chrome-profiler.d.ts.map +1 -0
- package/dist/rpc/chrome-profiler.js +405 -0
- package/dist/rpc/chrome-profiler.js.map +1 -0
- package/dist/rpc/server.d.ts.map +1 -1
- package/dist/rpc/server.js +25 -0
- package/dist/rpc/server.js.map +1 -1
- package/dist/version.txt +1 -1
- package/package.json +1 -1
- package/src/javascript/type-mapping.ts +71 -8
- package/src/rpc/chrome-profiler.ts +373 -0
- package/src/rpc/server.ts +29 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-mapping.d.ts","sourceRoot":"","sources":["../../src/javascript/type-mapping.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAC,IAAI,EAAC,MAAM,SAAS,CAAC;AAe7B,qBAAa,qBAAqB;IAK1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;IALhC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyC;IACnE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwB;gBAGhC,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,WAAW,GAAE,MAAsB;IAUxD,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,GAAG,SAAS;IAUrC,OAAO,CAAC,OAAO;IA6Cf,OAAO,CAAC,YAAY;IA2BpB,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS;IAQ5C,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,GAAG,SAAS;IAYlE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"type-mapping.d.ts","sourceRoot":"","sources":["../../src/javascript/type-mapping.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAC,IAAI,EAAC,MAAM,SAAS,CAAC;AAe7B,qBAAa,qBAAqB;IAK1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;IALhC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyC;IACnE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwB;gBAGhC,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,WAAW,GAAE,MAAsB;IAUxD,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,GAAG,SAAS;IAUrC,OAAO,CAAC,OAAO;IA6Cf,OAAO,CAAC,YAAY;IA2BpB,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS;IAQ5C,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,GAAG,SAAS;IAYlE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS;IAuJlD;;OAEG;IACH,OAAO,CAAC,eAAe;IAevB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAoE7B;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAK1B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAgB7B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAmE5B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAyHzB;;;OAGG;IACH,OAAO,CAAC,4BAA4B;CAkEvC"}
|
|
@@ -160,14 +160,39 @@ class JavaScriptTypeMapping {
|
|
|
160
160
|
}
|
|
161
161
|
else if (typescript_1.default.isIdentifier(node.expression)) {
|
|
162
162
|
methodName = node.expression.getText();
|
|
163
|
-
// For standalone functions,
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
163
|
+
// For standalone functions, we need to determine the appropriate declaring type
|
|
164
|
+
const exprType = this.checker.getTypeAtLocation(node.expression);
|
|
165
|
+
const funcType = this.getType(exprType);
|
|
166
|
+
if (funcType && funcType.kind === java_1.Type.Kind.Class) {
|
|
167
|
+
const fqn = funcType.fullyQualifiedName;
|
|
168
|
+
const lastDot = fqn.lastIndexOf('.');
|
|
169
|
+
if (lastDot > 0) {
|
|
170
|
+
// For functions from modules, use the module part as declaring type
|
|
171
|
+
// Examples:
|
|
172
|
+
// - "node.assert" -> declaring type: "node"
|
|
173
|
+
// - "@types/lodash.map" -> declaring type: "@types/lodash"
|
|
174
|
+
// - "@types/express.express" -> declaring type: "@types/express"
|
|
175
|
+
declaringType = {
|
|
176
|
+
kind: java_1.Type.Kind.Class,
|
|
177
|
+
fullyQualifiedName: fqn.substring(0, lastDot)
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
// No dots in the name - the type IS the module itself
|
|
182
|
+
// This handles single-name modules like "axios", "lodash" etc.
|
|
183
|
+
declaringType = funcType;
|
|
184
|
+
}
|
|
168
185
|
}
|
|
169
186
|
else {
|
|
170
|
-
|
|
187
|
+
// Try to use the symbol's parent or module
|
|
188
|
+
const parent = symbol.parent;
|
|
189
|
+
if (parent) {
|
|
190
|
+
const parentType = this.checker.getDeclaredTypeOfSymbol(parent);
|
|
191
|
+
declaringType = this.getType(parentType);
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
declaringType = java_1.Type.unknownType;
|
|
195
|
+
}
|
|
171
196
|
}
|
|
172
197
|
}
|
|
173
198
|
else {
|
|
@@ -306,6 +331,30 @@ class JavaScriptTypeMapping {
|
|
|
306
331
|
if (sourceFile.isDeclarationFile || fileName.includes("node_modules")) {
|
|
307
332
|
const packageName = this.extractPackageName(fileName);
|
|
308
333
|
if (packageName) {
|
|
334
|
+
// Special handling for @types/node - these are Node.js built-in modules
|
|
335
|
+
// and should be mapped to "node.*" instead of "@types/node.*"
|
|
336
|
+
if (packageName === "@types/node") {
|
|
337
|
+
// Extract the module name from the file path
|
|
338
|
+
// e.g., /node_modules/@types/node/assert.d.ts -> assert
|
|
339
|
+
// e.g., /node_modules/@types/node/fs/promises.d.ts -> fs/promises
|
|
340
|
+
const nodeMatch = fileName.match(/node_modules\/@types\/node\/([^.]+)\.d\.ts/);
|
|
341
|
+
if (nodeMatch) {
|
|
342
|
+
const modulePath = nodeMatch[1];
|
|
343
|
+
// For default exports from Node modules, we want the module to be the "class"
|
|
344
|
+
// But we still need to include the type name for proper identification
|
|
345
|
+
if (typeName === "default" || typeName === modulePath) {
|
|
346
|
+
// This is likely the default export, just use the module name
|
|
347
|
+
return `node.${modulePath}`;
|
|
348
|
+
}
|
|
349
|
+
// For named exports, include both module and type name
|
|
350
|
+
if (modulePath.includes('/')) {
|
|
351
|
+
return `node.${modulePath.replace(/\//g, '.')}.${typeName}`;
|
|
352
|
+
}
|
|
353
|
+
return `node.${modulePath}.${typeName}`;
|
|
354
|
+
}
|
|
355
|
+
// Fallback for @types/node types that don't match the pattern
|
|
356
|
+
return `node.${typeName}`;
|
|
357
|
+
}
|
|
309
358
|
return `${packageName}.${typeName}`;
|
|
310
359
|
}
|
|
311
360
|
}
|
|
@@ -360,8 +409,24 @@ class JavaScriptTypeMapping {
|
|
|
360
409
|
const typesMatch = fileName.match(/node_modules\/@types\/([^/]+)/);
|
|
361
410
|
if (typesMatch) {
|
|
362
411
|
const packageName = typesMatch[1];
|
|
363
|
-
//
|
|
364
|
-
|
|
412
|
+
// Special handling for @types/node - use "node" prefix instead
|
|
413
|
+
if (packageName === "node") {
|
|
414
|
+
// Extract the module name from the file path if possible
|
|
415
|
+
const nodeMatch = fileName.match(/node_modules\/@types\/node\/([^.]+)\.d\.ts/);
|
|
416
|
+
if (nodeMatch) {
|
|
417
|
+
const modulePath = nodeMatch[1];
|
|
418
|
+
// Replace the module specifier with node.module
|
|
419
|
+
fullyQualifiedName = fullyQualifiedName.replace(/^[^.]+\./, `node.${modulePath}.`);
|
|
420
|
+
}
|
|
421
|
+
else {
|
|
422
|
+
// Fallback: just use "node" prefix
|
|
423
|
+
fullyQualifiedName = fullyQualifiedName.replace(/^[^.]+\./, `node.`);
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
else {
|
|
427
|
+
// Replace the module specifier part with @types/package
|
|
428
|
+
fullyQualifiedName = fullyQualifiedName.replace(/^[^.]+\./, `@types/${packageName}.`);
|
|
429
|
+
}
|
|
365
430
|
}
|
|
366
431
|
}
|
|
367
432
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-mapping.js","sourceRoot":"","sources":["../../src/javascript/type-mapping.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"type-mapping.js","sourceRoot":"","sources":["../../src/javascript/type-mapping.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export declare class ChromeProfiler {
|
|
2
|
+
private traceEvents;
|
|
3
|
+
private memoryInterval?;
|
|
4
|
+
private saveInterval?;
|
|
5
|
+
private session?;
|
|
6
|
+
private readonly pid;
|
|
7
|
+
private readonly tid;
|
|
8
|
+
private readonly tracePath;
|
|
9
|
+
private exitHandlersRegistered;
|
|
10
|
+
private startTime;
|
|
11
|
+
private ttsCounter;
|
|
12
|
+
private lastProfileTime;
|
|
13
|
+
private profileNodes;
|
|
14
|
+
constructor(outputPath?: string);
|
|
15
|
+
start(): Promise<void>;
|
|
16
|
+
private enableCpuProfiling;
|
|
17
|
+
private addMetadataEvents;
|
|
18
|
+
private startMemoryTracking;
|
|
19
|
+
private saveTrace;
|
|
20
|
+
private collectCpuProfile;
|
|
21
|
+
stop(): Promise<void>;
|
|
22
|
+
private addCpuProfileSamples;
|
|
23
|
+
private registerExitHandlers;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=chrome-profiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chrome-profiler.d.ts","sourceRoot":"","sources":["../../src/rpc/chrome-profiler.ts"],"names":[],"mappings":"AAoBA,qBAAa,cAAc;IACvB,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,YAAY,CAAC,CAAiB;IACtC,OAAO,CAAC,OAAO,CAAC,CAAoB;IACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,YAAY,CAAa;gBAErB,UAAU,CAAC,EAAE,MAAM;IAIzB,KAAK;YA8BG,kBAAkB;IAoChC,OAAO,CAAC,iBAAiB;IAgDzB,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,SAAS;YA8BH,iBAAiB;IA2CzB,IAAI;IAwBV,OAAO,CAAC,oBAAoB;IAsF5B,OAAO,CAAC,oBAAoB;CAS/B"}
|
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
38
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
39
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
40
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
41
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.ChromeProfiler = void 0;
|
|
46
|
+
/*
|
|
47
|
+
* Copyright 2025 the original author or authors.
|
|
48
|
+
* <p>
|
|
49
|
+
* Licensed under the Moderne Source Available License (the "License");
|
|
50
|
+
* you may not use this file except in compliance with the License.
|
|
51
|
+
* You may obtain a copy of the License at
|
|
52
|
+
* <p>
|
|
53
|
+
* https://docs.moderne.io/licensing/moderne-source-available-license
|
|
54
|
+
* <p>
|
|
55
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
56
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
57
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
58
|
+
* See the License for the specific language governing permissions and
|
|
59
|
+
* limitations under the License.
|
|
60
|
+
*/
|
|
61
|
+
const fs = __importStar(require("fs"));
|
|
62
|
+
const path = __importStar(require("path"));
|
|
63
|
+
const v8 = __importStar(require("v8"));
|
|
64
|
+
const inspector = __importStar(require("inspector"));
|
|
65
|
+
class ChromeProfiler {
|
|
66
|
+
constructor(outputPath) {
|
|
67
|
+
this.traceEvents = [];
|
|
68
|
+
this.pid = process.pid;
|
|
69
|
+
this.tid = 1; // Main thread
|
|
70
|
+
this.exitHandlersRegistered = false;
|
|
71
|
+
this.startTime = 0;
|
|
72
|
+
this.ttsCounter = 0;
|
|
73
|
+
this.lastProfileTime = 0;
|
|
74
|
+
this.profileNodes = new Map();
|
|
75
|
+
this.tracePath = outputPath || path.join(process.cwd(), 'chrome-trace.json');
|
|
76
|
+
}
|
|
77
|
+
start() {
|
|
78
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
79
|
+
this.startTime = Date.now() * 1000; // Convert to microseconds
|
|
80
|
+
this.lastProfileTime = this.startTime;
|
|
81
|
+
// Add initial metadata events
|
|
82
|
+
this.addMetadataEvents();
|
|
83
|
+
// Start V8 Inspector session for CPU profiling
|
|
84
|
+
this.session = new inspector.Session();
|
|
85
|
+
this.session.connect();
|
|
86
|
+
// Enable and start CPU profiling
|
|
87
|
+
yield this.enableCpuProfiling();
|
|
88
|
+
// Start collecting memory data
|
|
89
|
+
this.startMemoryTracking();
|
|
90
|
+
// Save trace periodically and collect CPU profile samples
|
|
91
|
+
this.saveInterval = setInterval(() => __awaiter(this, void 0, void 0, function* () {
|
|
92
|
+
yield this.collectCpuProfile();
|
|
93
|
+
this.saveTrace();
|
|
94
|
+
}), 10000); // Save every 10 seconds
|
|
95
|
+
// Register exit handlers
|
|
96
|
+
if (!this.exitHandlersRegistered) {
|
|
97
|
+
this.registerExitHandlers();
|
|
98
|
+
this.exitHandlersRegistered = true;
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
enableCpuProfiling() {
|
|
103
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
104
|
+
if (!this.session)
|
|
105
|
+
return;
|
|
106
|
+
// Enable profiler
|
|
107
|
+
yield new Promise((resolve, reject) => {
|
|
108
|
+
this.session.post('Profiler.enable', (err) => {
|
|
109
|
+
if (err)
|
|
110
|
+
reject(err);
|
|
111
|
+
else
|
|
112
|
+
resolve();
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
// Start sampling
|
|
116
|
+
yield new Promise((resolve, reject) => {
|
|
117
|
+
this.session.post('Profiler.start', {
|
|
118
|
+
// Sample at high frequency for detailed profiling
|
|
119
|
+
samplingInterval: 100
|
|
120
|
+
}, (err) => {
|
|
121
|
+
if (err)
|
|
122
|
+
reject(err);
|
|
123
|
+
else
|
|
124
|
+
resolve();
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
// Subscribe to console profile events
|
|
128
|
+
this.session.on('Profiler.consoleProfileStarted', (params) => {
|
|
129
|
+
this.traceEvents.push({
|
|
130
|
+
cat: 'disabled-by-default-devtools.timeline',
|
|
131
|
+
name: 'Profile',
|
|
132
|
+
ph: 'P',
|
|
133
|
+
id: params.id || '1',
|
|
134
|
+
pid: this.pid,
|
|
135
|
+
tid: this.tid,
|
|
136
|
+
ts: Date.now() * 1000
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
addMetadataEvents() {
|
|
142
|
+
// Thread name metadata
|
|
143
|
+
this.traceEvents.push({
|
|
144
|
+
args: { name: 'CrRendererMain' },
|
|
145
|
+
cat: '__metadata',
|
|
146
|
+
name: 'thread_name',
|
|
147
|
+
ph: 'M',
|
|
148
|
+
pid: this.pid,
|
|
149
|
+
tid: this.tid,
|
|
150
|
+
ts: 0
|
|
151
|
+
});
|
|
152
|
+
// Process name metadata
|
|
153
|
+
this.traceEvents.push({
|
|
154
|
+
args: { name: 'Node.js' },
|
|
155
|
+
cat: '__metadata',
|
|
156
|
+
name: 'process_name',
|
|
157
|
+
ph: 'M',
|
|
158
|
+
pid: this.pid,
|
|
159
|
+
tid: 0,
|
|
160
|
+
ts: 0
|
|
161
|
+
});
|
|
162
|
+
// TracingStartedInBrowser event - required for Chrome DevTools
|
|
163
|
+
this.traceEvents.push({
|
|
164
|
+
args: {
|
|
165
|
+
data: {
|
|
166
|
+
frameTreeNodeId: 1,
|
|
167
|
+
frames: [{
|
|
168
|
+
frame: '0x1',
|
|
169
|
+
name: '',
|
|
170
|
+
processId: this.pid,
|
|
171
|
+
url: 'node://process'
|
|
172
|
+
}],
|
|
173
|
+
persistentIds: true
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
cat: 'disabled-by-default-devtools.timeline',
|
|
177
|
+
name: 'TracingStartedInBrowser',
|
|
178
|
+
ph: 'I',
|
|
179
|
+
pid: this.pid,
|
|
180
|
+
s: 't',
|
|
181
|
+
tid: this.tid,
|
|
182
|
+
ts: this.startTime,
|
|
183
|
+
tts: this.ttsCounter++
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
startMemoryTracking() {
|
|
187
|
+
// Collect memory data every 50ms (matching Chrome's frequency)
|
|
188
|
+
this.memoryInterval = setInterval(() => {
|
|
189
|
+
const memStats = v8.getHeapStatistics();
|
|
190
|
+
const timestamp = Date.now() * 1000;
|
|
191
|
+
// UpdateCounters event with correct format
|
|
192
|
+
this.traceEvents.push({
|
|
193
|
+
args: {
|
|
194
|
+
data: {
|
|
195
|
+
jsHeapSizeUsed: memStats.used_heap_size,
|
|
196
|
+
jsEventListeners: 0,
|
|
197
|
+
documents: 1,
|
|
198
|
+
nodes: 0
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
cat: 'disabled-by-default-devtools.timeline',
|
|
202
|
+
name: 'UpdateCounters',
|
|
203
|
+
ph: 'I', // Instant event, not Counter
|
|
204
|
+
pid: this.pid,
|
|
205
|
+
s: 't', // Required for instant events
|
|
206
|
+
tid: this.tid,
|
|
207
|
+
ts: timestamp,
|
|
208
|
+
tts: this.ttsCounter++
|
|
209
|
+
});
|
|
210
|
+
}, 50); // Every 50ms
|
|
211
|
+
}
|
|
212
|
+
saveTrace() {
|
|
213
|
+
const trace = {
|
|
214
|
+
metadata: {
|
|
215
|
+
'command-line': process.argv.join(' '),
|
|
216
|
+
'cpu-brand': 'Node.js V8',
|
|
217
|
+
'dataOrigin': 'TraceEvents',
|
|
218
|
+
'highres-ticks': true,
|
|
219
|
+
'hostname': 'localhost',
|
|
220
|
+
'num-cpus': require('os').cpus().length,
|
|
221
|
+
'physical-memory': require('os').totalmem(),
|
|
222
|
+
'platform': process.platform,
|
|
223
|
+
'process-uptime': process.uptime(),
|
|
224
|
+
'product-version': `Node.js ${process.version}`,
|
|
225
|
+
'protocol-version': '1.0',
|
|
226
|
+
'source': 'NodeProfiler',
|
|
227
|
+
'startTime': new Date(this.startTime / 1000).toISOString(),
|
|
228
|
+
'trace-config': '',
|
|
229
|
+
'user-agent': `Node.js/${process.version}`,
|
|
230
|
+
'v8-version': process.versions.v8
|
|
231
|
+
},
|
|
232
|
+
traceEvents: this.traceEvents
|
|
233
|
+
};
|
|
234
|
+
try {
|
|
235
|
+
fs.writeFileSync(this.tracePath, JSON.stringify(trace, null, 2));
|
|
236
|
+
}
|
|
237
|
+
catch (e) {
|
|
238
|
+
// Ignore write errors
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
collectCpuProfile() {
|
|
242
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
243
|
+
if (!this.session)
|
|
244
|
+
return;
|
|
245
|
+
try {
|
|
246
|
+
// Stop current profiling to get samples
|
|
247
|
+
const profile = yield new Promise((resolve, reject) => {
|
|
248
|
+
this.session.post('Profiler.stop', (err, params) => {
|
|
249
|
+
if (err)
|
|
250
|
+
reject(err);
|
|
251
|
+
else
|
|
252
|
+
resolve(params.profile);
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
// Convert CPU profile samples to trace events
|
|
256
|
+
if (profile && profile.samples) {
|
|
257
|
+
this.addCpuProfileSamples(profile);
|
|
258
|
+
}
|
|
259
|
+
// Restart profiling for the next interval
|
|
260
|
+
yield new Promise((resolve, reject) => {
|
|
261
|
+
this.session.post('Profiler.start', {
|
|
262
|
+
samplingInterval: 100
|
|
263
|
+
}, (err) => {
|
|
264
|
+
if (err)
|
|
265
|
+
reject(err);
|
|
266
|
+
else
|
|
267
|
+
resolve();
|
|
268
|
+
});
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
catch (e) {
|
|
272
|
+
// Ignore errors and try to restart
|
|
273
|
+
try {
|
|
274
|
+
yield new Promise((resolve, reject) => {
|
|
275
|
+
this.session.post('Profiler.start', {
|
|
276
|
+
samplingInterval: 100
|
|
277
|
+
}, (err) => {
|
|
278
|
+
if (err)
|
|
279
|
+
reject(err);
|
|
280
|
+
else
|
|
281
|
+
resolve();
|
|
282
|
+
});
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
catch (e2) {
|
|
286
|
+
// Ignore restart errors
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
stop() {
|
|
292
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
293
|
+
// Clear intervals
|
|
294
|
+
if (this.memoryInterval) {
|
|
295
|
+
clearInterval(this.memoryInterval);
|
|
296
|
+
this.memoryInterval = undefined;
|
|
297
|
+
}
|
|
298
|
+
if (this.saveInterval) {
|
|
299
|
+
clearInterval(this.saveInterval);
|
|
300
|
+
this.saveInterval = undefined;
|
|
301
|
+
}
|
|
302
|
+
// Collect final CPU profile
|
|
303
|
+
yield this.collectCpuProfile();
|
|
304
|
+
// Disconnect session
|
|
305
|
+
if (this.session) {
|
|
306
|
+
this.session.disconnect();
|
|
307
|
+
this.session = undefined;
|
|
308
|
+
}
|
|
309
|
+
// Save final trace
|
|
310
|
+
this.saveTrace();
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
addCpuProfileSamples(profile) {
|
|
314
|
+
if (!profile.samples || !profile.timeDeltas || !profile.nodes)
|
|
315
|
+
return;
|
|
316
|
+
// Use the last profile time as starting point to maintain continuity
|
|
317
|
+
let currentTime = this.lastProfileTime;
|
|
318
|
+
// Update nodes map with new nodes
|
|
319
|
+
profile.nodes.forEach((node) => {
|
|
320
|
+
this.profileNodes.set(node.id, node);
|
|
321
|
+
});
|
|
322
|
+
// Convert samples to trace events with actual function names
|
|
323
|
+
profile.samples.forEach((nodeId, index) => {
|
|
324
|
+
const node = this.profileNodes.get(nodeId);
|
|
325
|
+
if (!node)
|
|
326
|
+
return;
|
|
327
|
+
currentTime += (profile.timeDeltas[index] || 0);
|
|
328
|
+
const callFrame = node.callFrame;
|
|
329
|
+
if (callFrame) {
|
|
330
|
+
// Clean up function name for display
|
|
331
|
+
let functionName = callFrame.functionName || '(anonymous)';
|
|
332
|
+
if (functionName === '' || functionName === '(root)') {
|
|
333
|
+
functionName = '(program)';
|
|
334
|
+
}
|
|
335
|
+
// Extract filename from URL or use a meaningful default
|
|
336
|
+
let url = callFrame.url || '';
|
|
337
|
+
let fileName;
|
|
338
|
+
if (url) {
|
|
339
|
+
// Clean up the URL for display
|
|
340
|
+
if (url.startsWith('file://')) {
|
|
341
|
+
url = url.substring(7);
|
|
342
|
+
}
|
|
343
|
+
const parts = url.split('/');
|
|
344
|
+
fileName = parts[parts.length - 1] || url;
|
|
345
|
+
// Special handling for node internals
|
|
346
|
+
if (url.startsWith('node:')) {
|
|
347
|
+
fileName = url;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
// No URL - try to provide context from function name
|
|
352
|
+
if (functionName === '(garbage collector)') {
|
|
353
|
+
fileName = 'v8::gc';
|
|
354
|
+
}
|
|
355
|
+
else if (functionName === '(idle)') {
|
|
356
|
+
fileName = 'v8::idle';
|
|
357
|
+
}
|
|
358
|
+
else if (functionName === '(program)') {
|
|
359
|
+
fileName = 'main';
|
|
360
|
+
}
|
|
361
|
+
else if (functionName.includes('::')) {
|
|
362
|
+
// C++ internal function
|
|
363
|
+
fileName = 'native';
|
|
364
|
+
}
|
|
365
|
+
else {
|
|
366
|
+
// JavaScript code without source mapping
|
|
367
|
+
fileName = 'javascript';
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
this.traceEvents.push({
|
|
371
|
+
args: {
|
|
372
|
+
data: {
|
|
373
|
+
columnNumber: callFrame.columnNumber || 0,
|
|
374
|
+
frame: `0x${nodeId.toString(16)}`,
|
|
375
|
+
functionName: functionName,
|
|
376
|
+
lineNumber: callFrame.lineNumber || 0,
|
|
377
|
+
scriptId: String(callFrame.scriptId || 0),
|
|
378
|
+
url: url || fileName // Use fileName as URL if no real URL
|
|
379
|
+
}
|
|
380
|
+
},
|
|
381
|
+
cat: 'devtools.timeline',
|
|
382
|
+
dur: Math.max(profile.timeDeltas[index] || 1, 1),
|
|
383
|
+
name: 'FunctionCall',
|
|
384
|
+
ph: 'X',
|
|
385
|
+
pid: this.pid,
|
|
386
|
+
tid: this.tid,
|
|
387
|
+
ts: Math.floor(currentTime),
|
|
388
|
+
tts: this.ttsCounter++
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
});
|
|
392
|
+
// Update lastProfileTime to maintain continuity for the next batch
|
|
393
|
+
this.lastProfileTime = currentTime;
|
|
394
|
+
}
|
|
395
|
+
registerExitHandlers() {
|
|
396
|
+
const cleanup = () => __awaiter(this, void 0, void 0, function* () {
|
|
397
|
+
yield this.stop();
|
|
398
|
+
});
|
|
399
|
+
process.once('beforeExit', cleanup);
|
|
400
|
+
process.once('SIGINT', cleanup);
|
|
401
|
+
process.once('SIGTERM', cleanup);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
exports.ChromeProfiler = ChromeProfiler;
|
|
405
|
+
//# sourceMappingURL=chrome-profiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chrome-profiler.js","sourceRoot":"","sources":["../../src/rpc/chrome-profiler.ts"],"names":[],"mappings":"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"}
|
package/dist/rpc/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/rpc/server.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/rpc/server.ts"],"names":[],"mappings":";AAyBA,OAAO,SAAS,CAAC;AACjB,OAAO,SAAS,CAAC;AACjB,OAAO,SAAS,CAAC;AACjB,OAAO,eAAe,CAAC"}
|
package/dist/rpc/server.js
CHANGED
|
@@ -64,6 +64,7 @@ const rewrite_rpc_1 = require("./rewrite-rpc");
|
|
|
64
64
|
const fs = __importStar(require("fs"));
|
|
65
65
|
const commander_1 = require("commander");
|
|
66
66
|
const tmp_promise_1 = require("tmp-promise");
|
|
67
|
+
const chrome_profiler_1 = require("./chrome-profiler");
|
|
67
68
|
// Include all languages you want this server to support.
|
|
68
69
|
require("../text");
|
|
69
70
|
require("../json");
|
|
@@ -82,8 +83,15 @@ function main() {
|
|
|
82
83
|
.option('--trace-get-object-output', 'enable `GetObject` output tracing')
|
|
83
84
|
.option('--trace-get-object-input', 'enable `GetObject` input tracing')
|
|
84
85
|
.option('--recipe-install-dir <install_dir>', 'Recipe installation directory (default is a temporary directory)')
|
|
86
|
+
.option('--profile', 'enable profiling')
|
|
85
87
|
.parse();
|
|
86
88
|
const options = program.opts();
|
|
89
|
+
// Chrome profiling
|
|
90
|
+
let profiler;
|
|
91
|
+
if (options.profile) {
|
|
92
|
+
profiler = new chrome_profiler_1.ChromeProfiler();
|
|
93
|
+
profiler.start().catch(console.error);
|
|
94
|
+
}
|
|
87
95
|
let recipeInstallDir;
|
|
88
96
|
if (!options.recipeInstallDir) {
|
|
89
97
|
let recipeCleanup;
|
|
@@ -96,12 +104,18 @@ function main() {
|
|
|
96
104
|
}
|
|
97
105
|
// Register cleanup on exit
|
|
98
106
|
process.on('SIGINT', () => __awaiter(this, void 0, void 0, function* () {
|
|
107
|
+
if (profiler) {
|
|
108
|
+
yield profiler.stop();
|
|
109
|
+
}
|
|
99
110
|
if (recipeCleanup) {
|
|
100
111
|
yield recipeCleanup();
|
|
101
112
|
}
|
|
102
113
|
process.exit(0);
|
|
103
114
|
}));
|
|
104
115
|
process.on('SIGTERM', () => __awaiter(this, void 0, void 0, function* () {
|
|
116
|
+
if (profiler) {
|
|
117
|
+
yield profiler.stop();
|
|
118
|
+
}
|
|
105
119
|
if (recipeCleanup) {
|
|
106
120
|
yield recipeCleanup();
|
|
107
121
|
}
|
|
@@ -111,6 +125,17 @@ function main() {
|
|
|
111
125
|
}
|
|
112
126
|
else {
|
|
113
127
|
recipeInstallDir = options.recipeInstallDir;
|
|
128
|
+
// Register cleanup for profiler when no recipe cleanup is needed
|
|
129
|
+
if (profiler) {
|
|
130
|
+
process.on('SIGINT', () => __awaiter(this, void 0, void 0, function* () {
|
|
131
|
+
yield profiler.stop();
|
|
132
|
+
process.exit(0);
|
|
133
|
+
}));
|
|
134
|
+
process.on('SIGTERM', () => __awaiter(this, void 0, void 0, function* () {
|
|
135
|
+
yield profiler.stop();
|
|
136
|
+
process.exit(0);
|
|
137
|
+
}));
|
|
138
|
+
}
|
|
114
139
|
}
|
|
115
140
|
const log = options.logFile ? fs.createWriteStream(options.logFile, { flags: 'a' }) : undefined;
|
|
116
141
|
const logger = {
|
package/dist/rpc/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/rpc/server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;;;;;;;;;;;;;GAcG;AACH,yDAA2C;AAC3C,8CAAkD;AAClD,+CAAyC;AACzC,uCAAyB;AACzB,yCAAkC;AAClC,6CAAgC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/rpc/server.ts"],"names":[],"mappings":"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"}
|
package/dist/version.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
8.62.
|
|
1
|
+
8.62.2
|
package/package.json
CHANGED
|
@@ -173,13 +173,38 @@ export class JavaScriptTypeMapping {
|
|
|
173
173
|
declaringType = this.getType(exprType) as Type.FullyQualified;
|
|
174
174
|
} else if (ts.isIdentifier(node.expression)) {
|
|
175
175
|
methodName = node.expression.getText();
|
|
176
|
-
// For standalone functions,
|
|
177
|
-
const
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
176
|
+
// For standalone functions, we need to determine the appropriate declaring type
|
|
177
|
+
const exprType = this.checker.getTypeAtLocation(node.expression);
|
|
178
|
+
const funcType = this.getType(exprType);
|
|
179
|
+
|
|
180
|
+
if (funcType && funcType.kind === Type.Kind.Class) {
|
|
181
|
+
const fqn = (funcType as Type.Class).fullyQualifiedName;
|
|
182
|
+
const lastDot = fqn.lastIndexOf('.');
|
|
183
|
+
|
|
184
|
+
if (lastDot > 0) {
|
|
185
|
+
// For functions from modules, use the module part as declaring type
|
|
186
|
+
// Examples:
|
|
187
|
+
// - "node.assert" -> declaring type: "node"
|
|
188
|
+
// - "@types/lodash.map" -> declaring type: "@types/lodash"
|
|
189
|
+
// - "@types/express.express" -> declaring type: "@types/express"
|
|
190
|
+
declaringType = {
|
|
191
|
+
kind: Type.Kind.Class,
|
|
192
|
+
fullyQualifiedName: fqn.substring(0, lastDot)
|
|
193
|
+
} as Type.FullyQualified;
|
|
194
|
+
} else {
|
|
195
|
+
// No dots in the name - the type IS the module itself
|
|
196
|
+
// This handles single-name modules like "axios", "lodash" etc.
|
|
197
|
+
declaringType = funcType as Type.FullyQualified;
|
|
198
|
+
}
|
|
181
199
|
} else {
|
|
182
|
-
|
|
200
|
+
// Try to use the symbol's parent or module
|
|
201
|
+
const parent = (symbol as any).parent;
|
|
202
|
+
if (parent) {
|
|
203
|
+
const parentType = this.checker.getDeclaredTypeOfSymbol(parent);
|
|
204
|
+
declaringType = this.getType(parentType) as Type.FullyQualified;
|
|
205
|
+
} else {
|
|
206
|
+
declaringType = Type.unknownType as Type.FullyQualified;
|
|
207
|
+
}
|
|
183
208
|
}
|
|
184
209
|
} else {
|
|
185
210
|
methodName = symbol.getName();
|
|
@@ -330,6 +355,30 @@ export class JavaScriptTypeMapping {
|
|
|
330
355
|
if (sourceFile.isDeclarationFile || fileName.includes("node_modules")) {
|
|
331
356
|
const packageName = this.extractPackageName(fileName);
|
|
332
357
|
if (packageName) {
|
|
358
|
+
// Special handling for @types/node - these are Node.js built-in modules
|
|
359
|
+
// and should be mapped to "node.*" instead of "@types/node.*"
|
|
360
|
+
if (packageName === "@types/node") {
|
|
361
|
+
// Extract the module name from the file path
|
|
362
|
+
// e.g., /node_modules/@types/node/assert.d.ts -> assert
|
|
363
|
+
// e.g., /node_modules/@types/node/fs/promises.d.ts -> fs/promises
|
|
364
|
+
const nodeMatch = fileName.match(/node_modules\/@types\/node\/([^.]+)\.d\.ts/);
|
|
365
|
+
if (nodeMatch) {
|
|
366
|
+
const modulePath = nodeMatch[1];
|
|
367
|
+
// For default exports from Node modules, we want the module to be the "class"
|
|
368
|
+
// But we still need to include the type name for proper identification
|
|
369
|
+
if (typeName === "default" || typeName === modulePath) {
|
|
370
|
+
// This is likely the default export, just use the module name
|
|
371
|
+
return `node.${modulePath}`;
|
|
372
|
+
}
|
|
373
|
+
// For named exports, include both module and type name
|
|
374
|
+
if (modulePath.includes('/')) {
|
|
375
|
+
return `node.${modulePath.replace(/\//g, '.')}.${typeName}`;
|
|
376
|
+
}
|
|
377
|
+
return `node.${modulePath}.${typeName}`;
|
|
378
|
+
}
|
|
379
|
+
// Fallback for @types/node types that don't match the pattern
|
|
380
|
+
return `node.${typeName}`;
|
|
381
|
+
}
|
|
333
382
|
return `${packageName}.${typeName}`;
|
|
334
383
|
}
|
|
335
384
|
}
|
|
@@ -392,8 +441,22 @@ export class JavaScriptTypeMapping {
|
|
|
392
441
|
const typesMatch = fileName.match(/node_modules\/@types\/([^/]+)/);
|
|
393
442
|
if (typesMatch) {
|
|
394
443
|
const packageName = typesMatch[1];
|
|
395
|
-
//
|
|
396
|
-
|
|
444
|
+
// Special handling for @types/node - use "node" prefix instead
|
|
445
|
+
if (packageName === "node") {
|
|
446
|
+
// Extract the module name from the file path if possible
|
|
447
|
+
const nodeMatch = fileName.match(/node_modules\/@types\/node\/([^.]+)\.d\.ts/);
|
|
448
|
+
if (nodeMatch) {
|
|
449
|
+
const modulePath = nodeMatch[1];
|
|
450
|
+
// Replace the module specifier with node.module
|
|
451
|
+
fullyQualifiedName = fullyQualifiedName.replace(/^[^.]+\./, `node.${modulePath}.`);
|
|
452
|
+
} else {
|
|
453
|
+
// Fallback: just use "node" prefix
|
|
454
|
+
fullyQualifiedName = fullyQualifiedName.replace(/^[^.]+\./, `node.`);
|
|
455
|
+
}
|
|
456
|
+
} else {
|
|
457
|
+
// Replace the module specifier part with @types/package
|
|
458
|
+
fullyQualifiedName = fullyQualifiedName.replace(/^[^.]+\./, `@types/${packageName}.`);
|
|
459
|
+
}
|
|
397
460
|
}
|
|
398
461
|
}
|
|
399
462
|
}
|
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 the original author or authors.
|
|
3
|
+
* <p>
|
|
4
|
+
* Licensed under the Moderne Source Available License (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
* <p>
|
|
8
|
+
* https://docs.moderne.io/licensing/moderne-source-available-license
|
|
9
|
+
* <p>
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import * as fs from 'fs';
|
|
17
|
+
import * as path from 'path';
|
|
18
|
+
import * as v8 from 'v8';
|
|
19
|
+
import * as inspector from 'inspector';
|
|
20
|
+
|
|
21
|
+
export class ChromeProfiler {
|
|
22
|
+
private traceEvents: any[] = [];
|
|
23
|
+
private memoryInterval?: NodeJS.Timeout;
|
|
24
|
+
private saveInterval?: NodeJS.Timeout;
|
|
25
|
+
private session?: inspector.Session;
|
|
26
|
+
private readonly pid = process.pid;
|
|
27
|
+
private readonly tid = 1; // Main thread
|
|
28
|
+
private readonly tracePath: string;
|
|
29
|
+
private exitHandlersRegistered = false;
|
|
30
|
+
private startTime: number = 0;
|
|
31
|
+
private ttsCounter: number = 0;
|
|
32
|
+
private lastProfileTime: number = 0;
|
|
33
|
+
private profileNodes = new Map();
|
|
34
|
+
|
|
35
|
+
constructor(outputPath?: string) {
|
|
36
|
+
this.tracePath = outputPath || path.join(process.cwd(), 'chrome-trace.json');
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
async start() {
|
|
40
|
+
this.startTime = Date.now() * 1000; // Convert to microseconds
|
|
41
|
+
this.lastProfileTime = this.startTime;
|
|
42
|
+
|
|
43
|
+
// Add initial metadata events
|
|
44
|
+
this.addMetadataEvents();
|
|
45
|
+
|
|
46
|
+
// Start V8 Inspector session for CPU profiling
|
|
47
|
+
this.session = new inspector.Session();
|
|
48
|
+
this.session.connect();
|
|
49
|
+
|
|
50
|
+
// Enable and start CPU profiling
|
|
51
|
+
await this.enableCpuProfiling();
|
|
52
|
+
|
|
53
|
+
// Start collecting memory data
|
|
54
|
+
this.startMemoryTracking();
|
|
55
|
+
|
|
56
|
+
// Save trace periodically and collect CPU profile samples
|
|
57
|
+
this.saveInterval = setInterval(async () => {
|
|
58
|
+
await this.collectCpuProfile();
|
|
59
|
+
this.saveTrace();
|
|
60
|
+
}, 10000); // Save every 10 seconds
|
|
61
|
+
|
|
62
|
+
// Register exit handlers
|
|
63
|
+
if (!this.exitHandlersRegistered) {
|
|
64
|
+
this.registerExitHandlers();
|
|
65
|
+
this.exitHandlersRegistered = true;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
private async enableCpuProfiling() {
|
|
70
|
+
if (!this.session) return;
|
|
71
|
+
|
|
72
|
+
// Enable profiler
|
|
73
|
+
await new Promise<void>((resolve, reject) => {
|
|
74
|
+
this.session!.post('Profiler.enable', (err) => {
|
|
75
|
+
if (err) reject(err);
|
|
76
|
+
else resolve();
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
// Start sampling
|
|
81
|
+
await new Promise<void>((resolve, reject) => {
|
|
82
|
+
this.session!.post('Profiler.start', {
|
|
83
|
+
// Sample at high frequency for detailed profiling
|
|
84
|
+
samplingInterval: 100
|
|
85
|
+
}, (err) => {
|
|
86
|
+
if (err) reject(err);
|
|
87
|
+
else resolve();
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
// Subscribe to console profile events
|
|
92
|
+
this.session.on('Profiler.consoleProfileStarted', (params: any) => {
|
|
93
|
+
this.traceEvents.push({
|
|
94
|
+
cat: 'disabled-by-default-devtools.timeline',
|
|
95
|
+
name: 'Profile',
|
|
96
|
+
ph: 'P',
|
|
97
|
+
id: params.id || '1',
|
|
98
|
+
pid: this.pid,
|
|
99
|
+
tid: this.tid,
|
|
100
|
+
ts: Date.now() * 1000
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
private addMetadataEvents() {
|
|
106
|
+
// Thread name metadata
|
|
107
|
+
this.traceEvents.push({
|
|
108
|
+
args: { name: 'CrRendererMain' },
|
|
109
|
+
cat: '__metadata',
|
|
110
|
+
name: 'thread_name',
|
|
111
|
+
ph: 'M',
|
|
112
|
+
pid: this.pid,
|
|
113
|
+
tid: this.tid,
|
|
114
|
+
ts: 0
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
// Process name metadata
|
|
118
|
+
this.traceEvents.push({
|
|
119
|
+
args: { name: 'Node.js' },
|
|
120
|
+
cat: '__metadata',
|
|
121
|
+
name: 'process_name',
|
|
122
|
+
ph: 'M',
|
|
123
|
+
pid: this.pid,
|
|
124
|
+
tid: 0,
|
|
125
|
+
ts: 0
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
// TracingStartedInBrowser event - required for Chrome DevTools
|
|
129
|
+
this.traceEvents.push({
|
|
130
|
+
args: {
|
|
131
|
+
data: {
|
|
132
|
+
frameTreeNodeId: 1,
|
|
133
|
+
frames: [{
|
|
134
|
+
frame: '0x1',
|
|
135
|
+
name: '',
|
|
136
|
+
processId: this.pid,
|
|
137
|
+
url: 'node://process'
|
|
138
|
+
}],
|
|
139
|
+
persistentIds: true
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
cat: 'disabled-by-default-devtools.timeline',
|
|
143
|
+
name: 'TracingStartedInBrowser',
|
|
144
|
+
ph: 'I',
|
|
145
|
+
pid: this.pid,
|
|
146
|
+
s: 't',
|
|
147
|
+
tid: this.tid,
|
|
148
|
+
ts: this.startTime,
|
|
149
|
+
tts: this.ttsCounter++
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
private startMemoryTracking() {
|
|
154
|
+
// Collect memory data every 50ms (matching Chrome's frequency)
|
|
155
|
+
this.memoryInterval = setInterval(() => {
|
|
156
|
+
const memStats = v8.getHeapStatistics();
|
|
157
|
+
const timestamp = Date.now() * 1000;
|
|
158
|
+
|
|
159
|
+
// UpdateCounters event with correct format
|
|
160
|
+
this.traceEvents.push({
|
|
161
|
+
args: {
|
|
162
|
+
data: {
|
|
163
|
+
jsHeapSizeUsed: memStats.used_heap_size,
|
|
164
|
+
jsEventListeners: 0,
|
|
165
|
+
documents: 1,
|
|
166
|
+
nodes: 0
|
|
167
|
+
}
|
|
168
|
+
},
|
|
169
|
+
cat: 'disabled-by-default-devtools.timeline',
|
|
170
|
+
name: 'UpdateCounters',
|
|
171
|
+
ph: 'I', // Instant event, not Counter
|
|
172
|
+
pid: this.pid,
|
|
173
|
+
s: 't', // Required for instant events
|
|
174
|
+
tid: this.tid,
|
|
175
|
+
ts: timestamp,
|
|
176
|
+
tts: this.ttsCounter++
|
|
177
|
+
});
|
|
178
|
+
}, 50); // Every 50ms
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
private saveTrace() {
|
|
182
|
+
const trace = {
|
|
183
|
+
metadata: {
|
|
184
|
+
'command-line': process.argv.join(' '),
|
|
185
|
+
'cpu-brand': 'Node.js V8',
|
|
186
|
+
'dataOrigin': 'TraceEvents',
|
|
187
|
+
'highres-ticks': true,
|
|
188
|
+
'hostname': 'localhost',
|
|
189
|
+
'num-cpus': require('os').cpus().length,
|
|
190
|
+
'physical-memory': require('os').totalmem(),
|
|
191
|
+
'platform': process.platform,
|
|
192
|
+
'process-uptime': process.uptime(),
|
|
193
|
+
'product-version': `Node.js ${process.version}`,
|
|
194
|
+
'protocol-version': '1.0',
|
|
195
|
+
'source': 'NodeProfiler',
|
|
196
|
+
'startTime': new Date(this.startTime / 1000).toISOString(),
|
|
197
|
+
'trace-config': '',
|
|
198
|
+
'user-agent': `Node.js/${process.version}`,
|
|
199
|
+
'v8-version': process.versions.v8
|
|
200
|
+
},
|
|
201
|
+
traceEvents: this.traceEvents
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
try {
|
|
205
|
+
fs.writeFileSync(this.tracePath, JSON.stringify(trace, null, 2));
|
|
206
|
+
} catch (e) {
|
|
207
|
+
// Ignore write errors
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
private async collectCpuProfile() {
|
|
212
|
+
if (!this.session) return;
|
|
213
|
+
|
|
214
|
+
try {
|
|
215
|
+
// Stop current profiling to get samples
|
|
216
|
+
const profile = await new Promise<any>((resolve, reject) => {
|
|
217
|
+
this.session!.post('Profiler.stop', (err, params) => {
|
|
218
|
+
if (err) reject(err);
|
|
219
|
+
else resolve(params.profile);
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
// Convert CPU profile samples to trace events
|
|
224
|
+
if (profile && profile.samples) {
|
|
225
|
+
this.addCpuProfileSamples(profile);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
// Restart profiling for the next interval
|
|
229
|
+
await new Promise<void>((resolve, reject) => {
|
|
230
|
+
this.session!.post('Profiler.start', {
|
|
231
|
+
samplingInterval: 100
|
|
232
|
+
}, (err) => {
|
|
233
|
+
if (err) reject(err);
|
|
234
|
+
else resolve();
|
|
235
|
+
});
|
|
236
|
+
});
|
|
237
|
+
} catch (e) {
|
|
238
|
+
// Ignore errors and try to restart
|
|
239
|
+
try {
|
|
240
|
+
await new Promise<void>((resolve, reject) => {
|
|
241
|
+
this.session!.post('Profiler.start', {
|
|
242
|
+
samplingInterval: 100
|
|
243
|
+
}, (err) => {
|
|
244
|
+
if (err) reject(err);
|
|
245
|
+
else resolve();
|
|
246
|
+
});
|
|
247
|
+
});
|
|
248
|
+
} catch (e2) {
|
|
249
|
+
// Ignore restart errors
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
async stop() {
|
|
255
|
+
// Clear intervals
|
|
256
|
+
if (this.memoryInterval) {
|
|
257
|
+
clearInterval(this.memoryInterval);
|
|
258
|
+
this.memoryInterval = undefined;
|
|
259
|
+
}
|
|
260
|
+
if (this.saveInterval) {
|
|
261
|
+
clearInterval(this.saveInterval);
|
|
262
|
+
this.saveInterval = undefined;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// Collect final CPU profile
|
|
266
|
+
await this.collectCpuProfile();
|
|
267
|
+
|
|
268
|
+
// Disconnect session
|
|
269
|
+
if (this.session) {
|
|
270
|
+
this.session.disconnect();
|
|
271
|
+
this.session = undefined;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
// Save final trace
|
|
275
|
+
this.saveTrace();
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
private addCpuProfileSamples(profile: any) {
|
|
279
|
+
if (!profile.samples || !profile.timeDeltas || !profile.nodes) return;
|
|
280
|
+
|
|
281
|
+
// Use the last profile time as starting point to maintain continuity
|
|
282
|
+
let currentTime = this.lastProfileTime;
|
|
283
|
+
|
|
284
|
+
// Update nodes map with new nodes
|
|
285
|
+
profile.nodes.forEach((node: any) => {
|
|
286
|
+
this.profileNodes.set(node.id, node);
|
|
287
|
+
});
|
|
288
|
+
|
|
289
|
+
// Convert samples to trace events with actual function names
|
|
290
|
+
profile.samples.forEach((nodeId: number, index: number) => {
|
|
291
|
+
const node = this.profileNodes.get(nodeId);
|
|
292
|
+
if (!node) return;
|
|
293
|
+
|
|
294
|
+
currentTime += (profile.timeDeltas[index] || 0);
|
|
295
|
+
|
|
296
|
+
const callFrame = node.callFrame;
|
|
297
|
+
if (callFrame) {
|
|
298
|
+
// Clean up function name for display
|
|
299
|
+
let functionName = callFrame.functionName || '(anonymous)';
|
|
300
|
+
if (functionName === '' || functionName === '(root)') {
|
|
301
|
+
functionName = '(program)';
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
// Extract filename from URL or use a meaningful default
|
|
305
|
+
let url = callFrame.url || '';
|
|
306
|
+
let fileName: string;
|
|
307
|
+
|
|
308
|
+
if (url) {
|
|
309
|
+
// Clean up the URL for display
|
|
310
|
+
if (url.startsWith('file://')) {
|
|
311
|
+
url = url.substring(7);
|
|
312
|
+
}
|
|
313
|
+
const parts = url.split('/');
|
|
314
|
+
fileName = parts[parts.length - 1] || url;
|
|
315
|
+
|
|
316
|
+
// Special handling for node internals
|
|
317
|
+
if (url.startsWith('node:')) {
|
|
318
|
+
fileName = url;
|
|
319
|
+
}
|
|
320
|
+
} else {
|
|
321
|
+
// No URL - try to provide context from function name
|
|
322
|
+
if (functionName === '(garbage collector)') {
|
|
323
|
+
fileName = 'v8::gc';
|
|
324
|
+
} else if (functionName === '(idle)') {
|
|
325
|
+
fileName = 'v8::idle';
|
|
326
|
+
} else if (functionName === '(program)') {
|
|
327
|
+
fileName = 'main';
|
|
328
|
+
} else if (functionName.includes('::')) {
|
|
329
|
+
// C++ internal function
|
|
330
|
+
fileName = 'native';
|
|
331
|
+
} else {
|
|
332
|
+
// JavaScript code without source mapping
|
|
333
|
+
fileName = 'javascript';
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
this.traceEvents.push({
|
|
338
|
+
args: {
|
|
339
|
+
data: {
|
|
340
|
+
columnNumber: callFrame.columnNumber || 0,
|
|
341
|
+
frame: `0x${nodeId.toString(16)}`,
|
|
342
|
+
functionName: functionName,
|
|
343
|
+
lineNumber: callFrame.lineNumber || 0,
|
|
344
|
+
scriptId: String(callFrame.scriptId || 0),
|
|
345
|
+
url: url || fileName // Use fileName as URL if no real URL
|
|
346
|
+
}
|
|
347
|
+
},
|
|
348
|
+
cat: 'devtools.timeline',
|
|
349
|
+
dur: Math.max(profile.timeDeltas[index] || 1, 1),
|
|
350
|
+
name: 'FunctionCall',
|
|
351
|
+
ph: 'X',
|
|
352
|
+
pid: this.pid,
|
|
353
|
+
tid: this.tid,
|
|
354
|
+
ts: Math.floor(currentTime),
|
|
355
|
+
tts: this.ttsCounter++
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
});
|
|
359
|
+
|
|
360
|
+
// Update lastProfileTime to maintain continuity for the next batch
|
|
361
|
+
this.lastProfileTime = currentTime;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
private registerExitHandlers() {
|
|
365
|
+
const cleanup = async () => {
|
|
366
|
+
await this.stop();
|
|
367
|
+
};
|
|
368
|
+
|
|
369
|
+
process.once('beforeExit', cleanup);
|
|
370
|
+
process.once('SIGINT', cleanup);
|
|
371
|
+
process.once('SIGTERM', cleanup);
|
|
372
|
+
}
|
|
373
|
+
}
|
package/src/rpc/server.ts
CHANGED
|
@@ -20,6 +20,7 @@ import {RewriteRpc} from "./rewrite-rpc";
|
|
|
20
20
|
import * as fs from "fs";
|
|
21
21
|
import {Command} from 'commander';
|
|
22
22
|
import {dir} from 'tmp-promise';
|
|
23
|
+
import {ChromeProfiler} from './chrome-profiler';
|
|
23
24
|
|
|
24
25
|
// Include all languages you want this server to support.
|
|
25
26
|
import "../text";
|
|
@@ -37,6 +38,7 @@ interface ProgramOptions {
|
|
|
37
38
|
traceGetObjectOutput?: boolean;
|
|
38
39
|
traceGetObjectInput?: boolean;
|
|
39
40
|
recipeInstallDir?: string;
|
|
41
|
+
profile?: boolean;
|
|
40
42
|
}
|
|
41
43
|
|
|
42
44
|
async function main() {
|
|
@@ -49,10 +51,18 @@ async function main() {
|
|
|
49
51
|
.option('--trace-get-object-output', 'enable `GetObject` output tracing')
|
|
50
52
|
.option('--trace-get-object-input', 'enable `GetObject` input tracing')
|
|
51
53
|
.option('--recipe-install-dir <install_dir>', 'Recipe installation directory (default is a temporary directory)')
|
|
54
|
+
.option('--profile', 'enable profiling')
|
|
52
55
|
.parse();
|
|
53
56
|
|
|
54
57
|
const options = program.opts() as ProgramOptions;
|
|
55
58
|
|
|
59
|
+
// Chrome profiling
|
|
60
|
+
let profiler: ChromeProfiler | undefined;
|
|
61
|
+
if (options.profile) {
|
|
62
|
+
profiler = new ChromeProfiler();
|
|
63
|
+
profiler.start().catch(console.error);
|
|
64
|
+
}
|
|
65
|
+
|
|
56
66
|
let recipeInstallDir: string;
|
|
57
67
|
if (!options.recipeInstallDir) {
|
|
58
68
|
let recipeCleanup: () => Promise<void>;
|
|
@@ -65,6 +75,9 @@ async function main() {
|
|
|
65
75
|
|
|
66
76
|
// Register cleanup on exit
|
|
67
77
|
process.on('SIGINT', async () => {
|
|
78
|
+
if (profiler) {
|
|
79
|
+
await profiler.stop();
|
|
80
|
+
}
|
|
68
81
|
if (recipeCleanup) {
|
|
69
82
|
await recipeCleanup();
|
|
70
83
|
}
|
|
@@ -72,6 +85,9 @@ async function main() {
|
|
|
72
85
|
});
|
|
73
86
|
|
|
74
87
|
process.on('SIGTERM', async () => {
|
|
88
|
+
if (profiler) {
|
|
89
|
+
await profiler.stop();
|
|
90
|
+
}
|
|
75
91
|
if (recipeCleanup) {
|
|
76
92
|
await recipeCleanup();
|
|
77
93
|
}
|
|
@@ -81,6 +97,19 @@ async function main() {
|
|
|
81
97
|
recipeInstallDir = await setupRecipeDir();
|
|
82
98
|
} else {
|
|
83
99
|
recipeInstallDir = options.recipeInstallDir;
|
|
100
|
+
|
|
101
|
+
// Register cleanup for profiler when no recipe cleanup is needed
|
|
102
|
+
if (profiler) {
|
|
103
|
+
process.on('SIGINT', async () => {
|
|
104
|
+
await profiler.stop();
|
|
105
|
+
process.exit(0);
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
process.on('SIGTERM', async () => {
|
|
109
|
+
await profiler.stop();
|
|
110
|
+
process.exit(0);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
84
113
|
}
|
|
85
114
|
|
|
86
115
|
const log = options.logFile ? fs.createWriteStream(options.logFile, {flags: 'a'}) : undefined;
|