@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.
@@ -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;IA8HlD;;OAEG;IACH,OAAO,CAAC,eAAe;IAevB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IA4C7B;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAK1B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAgB7B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAqD5B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAyHzB;;;OAGG;IACH,OAAO,CAAC,4BAA4B;CAkEvC"}
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, use the symbol's parent or module
164
- const parent = symbol.parent;
165
- if (parent) {
166
- const parentType = this.checker.getDeclaredTypeOfSymbol(parent);
167
- declaringType = this.getType(parentType);
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
- declaringType = java_1.Type.unknownType;
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
- // Replace the module specifier part with @types/package
364
- fullyQualifiedName = fullyQualifiedName.replace(/^[^.]+\./, `@types/${packageName}.`);
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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/rpc/server.ts"],"names":[],"mappings":";AAwBA,OAAO,SAAS,CAAC;AACjB,OAAO,SAAS,CAAC;AACjB,OAAO,SAAS,CAAC;AACjB,OAAO,eAAe,CAAC"}
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"}
@@ -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 = {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/rpc/server.ts"],"names":[],"mappings":"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"}
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
1
+ 8.62.2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openrewrite/rewrite",
3
- "version": "8.62.1",
3
+ "version": "8.62.2",
4
4
  "license": "Moderne Source Available License",
5
5
  "description": "OpenRewrite JavaScript.",
6
6
  "homepage": "https://github.com/openrewrite/rewrite",
@@ -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, use the symbol's parent or module
177
- const parent = (symbol as any).parent;
178
- if (parent) {
179
- const parentType = this.checker.getDeclaredTypeOfSymbol(parent);
180
- declaringType = this.getType(parentType) as Type.FullyQualified;
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
- declaringType = Type.unknownType as Type.FullyQualified;
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
- // Replace the module specifier part with @types/package
396
- fullyQualifiedName = fullyQualifiedName.replace(/^[^.]+\./, `@types/${packageName}.`);
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;