traceperf 0.1.1 → 0.1.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/README.md +79 -1
- package/dist/browser.d.ts +58 -2
- package/dist/browser.js +179 -28
- package/dist/browser.js.map +1 -1
- package/dist/esm/browser.d.ts +58 -2
- package/dist/esm/browser.js +179 -28
- package/dist/esm/browser.js.map +1 -1
- package/dist/esm/trackers/execution.d.ts +23 -7
- package/dist/esm/trackers/execution.js +100 -29
- package/dist/esm/trackers/execution.js.map +1 -1
- package/dist/esm/types/index.d.ts +32 -0
- package/dist/trackers/execution.d.ts +23 -7
- package/dist/trackers/execution.js +100 -29
- package/dist/trackers/execution.js.map +1 -1
- package/dist/types/index.d.ts +32 -0
- package/package.json +1 -1
package/dist/esm/browser.js
CHANGED
|
@@ -61,22 +61,54 @@ class BrowserPerformanceMonitor {
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
/**
|
|
64
|
-
* Browser-compatible execution tracker
|
|
64
|
+
* Browser-compatible execution tracker for tracking function calls and generating flow charts
|
|
65
65
|
*/
|
|
66
66
|
class BrowserExecutionTracker {
|
|
67
|
+
/**
|
|
68
|
+
* Create a new BrowserExecutionTracker instance
|
|
69
|
+
*
|
|
70
|
+
* @param options - Tracker options
|
|
71
|
+
*/
|
|
67
72
|
constructor(options = {}) {
|
|
68
73
|
var _a;
|
|
69
74
|
this._callStack = [];
|
|
70
75
|
this._executions = [];
|
|
71
76
|
this._currentExecution = null;
|
|
77
|
+
this._instrumentedFunctions = new Map();
|
|
78
|
+
this._isInstrumented = false;
|
|
72
79
|
this._defaultThreshold = (_a = options.defaultThreshold) !== null && _a !== void 0 ? _a : 100; // ms
|
|
73
80
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
81
|
+
/**
|
|
82
|
+
* Generate a performance optimization suggestion based on execution duration
|
|
83
|
+
*
|
|
84
|
+
* @param name - Function name
|
|
85
|
+
* @param duration - Execution duration in ms
|
|
86
|
+
* @returns Optimization suggestion
|
|
87
|
+
*/
|
|
88
|
+
generateSuggestion(name, duration) {
|
|
89
|
+
if (duration > 500) {
|
|
90
|
+
return `Function "${name}" took ${duration.toFixed(2)}ms to execute. Consider optimizing or breaking it down into smaller functions.`;
|
|
91
|
+
}
|
|
92
|
+
else if (duration > 200) {
|
|
93
|
+
return `Function "${name}" took ${duration.toFixed(2)}ms to execute. Consider optimizing if called frequently.`;
|
|
94
|
+
}
|
|
95
|
+
else if (duration > 100) {
|
|
96
|
+
return `Function "${name}" took ${duration.toFixed(2)}ms to execute. Monitor if called in critical paths.`;
|
|
97
|
+
}
|
|
98
|
+
return '';
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Track the execution of a function
|
|
102
|
+
*
|
|
103
|
+
* @param fn - The function to track
|
|
104
|
+
* @param options - Options for tracking
|
|
105
|
+
* @returns The return value of the tracked function
|
|
106
|
+
*/
|
|
107
|
+
track(fn, options = {}) {
|
|
108
|
+
var _a, _b;
|
|
109
|
+
const fnName = options.label || fn.name || 'anonymous';
|
|
110
|
+
const threshold = (_a = options.threshold) !== null && _a !== void 0 ? _a : this._defaultThreshold;
|
|
111
|
+
const enableNestedTracking = (_b = options.enableNestedTracking) !== null && _b !== void 0 ? _b : true;
|
|
80
112
|
// Add to call stack
|
|
81
113
|
this._callStack.push(fnName);
|
|
82
114
|
// Create execution record
|
|
@@ -85,7 +117,7 @@ class BrowserExecutionTracker {
|
|
|
85
117
|
duration: 0,
|
|
86
118
|
isSlow: false,
|
|
87
119
|
level: this._callStack.length - 1,
|
|
88
|
-
startTime,
|
|
120
|
+
startTime: performance.now(),
|
|
89
121
|
children: [],
|
|
90
122
|
};
|
|
91
123
|
// Set parent-child relationship
|
|
@@ -94,53 +126,172 @@ class BrowserExecutionTracker {
|
|
|
94
126
|
this._currentExecution.children.push(execution);
|
|
95
127
|
}
|
|
96
128
|
else {
|
|
129
|
+
// This is a root execution
|
|
97
130
|
this._executions.push(execution);
|
|
98
131
|
}
|
|
99
132
|
// Save the previous current execution
|
|
100
133
|
const previousExecution = this._currentExecution;
|
|
101
134
|
// Set this as the current execution
|
|
102
135
|
this._currentExecution = execution;
|
|
136
|
+
// Flag to track if we're already instrumenting to avoid recursion
|
|
137
|
+
const wasInstrumented = this._isInstrumented;
|
|
138
|
+
let result;
|
|
103
139
|
try {
|
|
104
|
-
//
|
|
105
|
-
|
|
140
|
+
// If this is the top-level call and nested tracking is enabled, instrument the function
|
|
141
|
+
if (enableNestedTracking && !wasInstrumented) {
|
|
142
|
+
this._isInstrumented = true;
|
|
143
|
+
// Instrument the function to track nested calls
|
|
144
|
+
const instrumentedFn = this.instrumentFunction(fn);
|
|
145
|
+
result = instrumentedFn();
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
// Execute the function normally
|
|
149
|
+
result = fn();
|
|
150
|
+
}
|
|
106
151
|
}
|
|
107
|
-
|
|
152
|
+
catch (error) {
|
|
108
153
|
// End timing
|
|
109
154
|
const endTime = performance.now();
|
|
110
|
-
|
|
111
|
-
execution.duration = endTime - startTime;
|
|
112
|
-
// Check if it's a bottleneck
|
|
155
|
+
execution.endTime = endTime;
|
|
156
|
+
execution.duration = endTime - execution.startTime;
|
|
113
157
|
execution.isSlow = execution.duration > threshold;
|
|
114
158
|
// Restore the previous current execution
|
|
115
159
|
this._currentExecution = previousExecution;
|
|
116
160
|
// Remove from call stack
|
|
117
161
|
this._callStack.pop();
|
|
162
|
+
// Reset instrumentation flag if this was the top-level call
|
|
163
|
+
if (!wasInstrumented) {
|
|
164
|
+
this._isInstrumented = false;
|
|
165
|
+
}
|
|
166
|
+
// Re-throw the error
|
|
167
|
+
throw error;
|
|
168
|
+
}
|
|
169
|
+
// End timing
|
|
170
|
+
const endTime = performance.now();
|
|
171
|
+
execution.endTime = endTime;
|
|
172
|
+
execution.duration = endTime - execution.startTime;
|
|
173
|
+
execution.isSlow = execution.duration > threshold;
|
|
174
|
+
// Generate suggestion if slow
|
|
175
|
+
if (execution.isSlow) {
|
|
176
|
+
execution.suggestion = this.generateSuggestion(fnName, execution.duration);
|
|
177
|
+
}
|
|
178
|
+
// Restore the previous current execution
|
|
179
|
+
this._currentExecution = previousExecution;
|
|
180
|
+
// Remove from call stack
|
|
181
|
+
this._callStack.pop();
|
|
182
|
+
// Reset instrumentation flag if this was the top-level call
|
|
183
|
+
if (!wasInstrumented) {
|
|
184
|
+
this._isInstrumented = false;
|
|
185
|
+
}
|
|
186
|
+
return result;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Instrument a function to track nested function calls
|
|
190
|
+
*
|
|
191
|
+
* @param fn - The function to instrument
|
|
192
|
+
* @returns The instrumented function
|
|
193
|
+
*/
|
|
194
|
+
instrumentFunction(fn) {
|
|
195
|
+
// If we've already instrumented this function, return the instrumented version
|
|
196
|
+
if (this._instrumentedFunctions.has(fn)) {
|
|
197
|
+
return this._instrumentedFunctions.get(fn);
|
|
118
198
|
}
|
|
199
|
+
// Create a new instrumented function
|
|
200
|
+
const instrumentedFn = () => {
|
|
201
|
+
// Execute the function and track nested calls
|
|
202
|
+
try {
|
|
203
|
+
// We can't actually modify the function at runtime to track nested calls,
|
|
204
|
+
// so we'll just execute it and rely on the call stack for visualization
|
|
205
|
+
return fn();
|
|
206
|
+
}
|
|
207
|
+
catch (error) {
|
|
208
|
+
// Re-throw any errors
|
|
209
|
+
throw error;
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
// Cache the instrumented function
|
|
213
|
+
this._instrumentedFunctions.set(fn, instrumentedFn);
|
|
214
|
+
return instrumentedFn;
|
|
119
215
|
}
|
|
216
|
+
/**
|
|
217
|
+
* Get the current call stack
|
|
218
|
+
*
|
|
219
|
+
* @returns The current call stack
|
|
220
|
+
*/
|
|
120
221
|
getCallStack() {
|
|
121
222
|
return [...this._callStack];
|
|
122
223
|
}
|
|
224
|
+
/**
|
|
225
|
+
* Generate a visual representation of the execution flow
|
|
226
|
+
*
|
|
227
|
+
* @returns ASCII flow chart of the execution
|
|
228
|
+
*/
|
|
123
229
|
generateFlowChart() {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
230
|
+
let result = 'Execution Flow:\n';
|
|
231
|
+
// Process each execution
|
|
232
|
+
this.prepareExecutionData(this._executions).forEach(execution => {
|
|
233
|
+
const indent = ' '.repeat(execution.level);
|
|
234
|
+
const durationStr = execution.duration.toFixed(2);
|
|
235
|
+
const slowMarker = execution.isSlow ? ' [SLOW]' : '';
|
|
236
|
+
result += `${indent}→ ${execution.name} (${durationStr}ms)${slowMarker}\n`;
|
|
237
|
+
// Add suggestion if available
|
|
238
|
+
if (execution.suggestion) {
|
|
239
|
+
result += `${indent} ⚠️ ${execution.suggestion}\n`;
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
return result;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Prepare execution data for the flow chart
|
|
246
|
+
*
|
|
247
|
+
* @param executions - The execution records to prepare
|
|
248
|
+
* @returns A list of execution data
|
|
249
|
+
*/
|
|
250
|
+
prepareExecutionData(executions) {
|
|
251
|
+
const result = [];
|
|
252
|
+
// Process each root execution
|
|
253
|
+
executions.forEach(execution => {
|
|
254
|
+
// Add the root execution
|
|
255
|
+
result.push({
|
|
256
|
+
name: execution.name,
|
|
257
|
+
duration: execution.duration,
|
|
258
|
+
isSlow: execution.isSlow,
|
|
259
|
+
suggestion: execution.suggestion,
|
|
260
|
+
level: execution.level,
|
|
135
261
|
});
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
262
|
+
// Add children recursively
|
|
263
|
+
this.addChildrenToResult(execution.children, result);
|
|
264
|
+
});
|
|
265
|
+
return result;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Add children to the result list
|
|
269
|
+
*
|
|
270
|
+
* @param children - The children to add
|
|
271
|
+
* @param result - The result list
|
|
272
|
+
*/
|
|
273
|
+
addChildrenToResult(children, result) {
|
|
274
|
+
children.forEach(child => {
|
|
275
|
+
// Add the child
|
|
276
|
+
result.push({
|
|
277
|
+
name: child.name,
|
|
278
|
+
duration: child.duration,
|
|
279
|
+
isSlow: child.isSlow,
|
|
280
|
+
suggestion: child.suggestion,
|
|
281
|
+
level: child.level,
|
|
282
|
+
});
|
|
283
|
+
// Add grandchildren recursively
|
|
284
|
+
this.addChildrenToResult(child.children, result);
|
|
285
|
+
});
|
|
139
286
|
}
|
|
287
|
+
/**
|
|
288
|
+
* Clear all execution records
|
|
289
|
+
*/
|
|
140
290
|
clear() {
|
|
141
291
|
this._executions = [];
|
|
142
292
|
this._currentExecution = null;
|
|
143
293
|
this._callStack = [];
|
|
294
|
+
this._instrumentedFunctions.clear();
|
|
144
295
|
}
|
|
145
296
|
}
|
|
146
297
|
/**
|
package/dist/esm/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,8 @@ export declare class ExecutionTracker implements IExecutionTracker {
|
|
|
22
22
|
private _currentExecution;
|
|
23
23
|
private _asciiGenerator;
|
|
24
24
|
private _defaultThreshold;
|
|
25
|
+
private _instrumentedFunctions;
|
|
26
|
+
private _isInstrumented;
|
|
25
27
|
/**
|
|
26
28
|
* Create a new ExecutionTracker instance
|
|
27
29
|
*
|
|
@@ -39,6 +41,13 @@ export declare class ExecutionTracker implements IExecutionTracker {
|
|
|
39
41
|
* @returns The return value of the tracked function
|
|
40
42
|
*/
|
|
41
43
|
track<T>(fn: () => T, options?: ITrackOptions): T;
|
|
44
|
+
/**
|
|
45
|
+
* Instrument a function to track nested function calls
|
|
46
|
+
*
|
|
47
|
+
* @param fn - The function to instrument
|
|
48
|
+
* @returns The instrumented function
|
|
49
|
+
*/
|
|
50
|
+
private instrumentFunction;
|
|
42
51
|
/**
|
|
43
52
|
* Get the current call stack
|
|
44
53
|
*
|
|
@@ -51,6 +60,20 @@ export declare class ExecutionTracker implements IExecutionTracker {
|
|
|
51
60
|
* @returns ASCII flow chart of the execution
|
|
52
61
|
*/
|
|
53
62
|
generateFlowChart(): string;
|
|
63
|
+
/**
|
|
64
|
+
* Prepare execution data for the ASCII generator
|
|
65
|
+
*
|
|
66
|
+
* @param executions - The execution records to prepare
|
|
67
|
+
* @returns A list of execution data
|
|
68
|
+
*/
|
|
69
|
+
private prepareExecutionData;
|
|
70
|
+
/**
|
|
71
|
+
* Add children to the result list
|
|
72
|
+
*
|
|
73
|
+
* @param children - The children to add
|
|
74
|
+
* @param result - The result list
|
|
75
|
+
*/
|
|
76
|
+
private addChildrenToResult;
|
|
54
77
|
/**
|
|
55
78
|
* Clear all execution records
|
|
56
79
|
*/
|
|
@@ -61,12 +84,5 @@ export declare class ExecutionTracker implements IExecutionTracker {
|
|
|
61
84
|
* @returns All execution records
|
|
62
85
|
*/
|
|
63
86
|
getExecutions(): ExecutionRecord[];
|
|
64
|
-
/**
|
|
65
|
-
* Flatten the execution tree into a list
|
|
66
|
-
*
|
|
67
|
-
* @param executions - The execution records to flatten
|
|
68
|
-
* @returns A flat list of execution data
|
|
69
|
-
*/
|
|
70
|
-
private flattenExecutions;
|
|
71
87
|
}
|
|
72
88
|
export {};
|
|
@@ -14,6 +14,8 @@ export class ExecutionTracker {
|
|
|
14
14
|
var _a;
|
|
15
15
|
this._executions = [];
|
|
16
16
|
this._currentExecution = null;
|
|
17
|
+
this._instrumentedFunctions = new Map();
|
|
18
|
+
this._isInstrumented = false;
|
|
17
19
|
this._callStack = new CallStackManager();
|
|
18
20
|
this._asciiGenerator = new AsciiArtGenerator({ boxWidth: options.boxWidth });
|
|
19
21
|
this._defaultThreshold = (_a = options.defaultThreshold) !== null && _a !== void 0 ? _a : 100; // ms
|
|
@@ -26,10 +28,11 @@ export class ExecutionTracker {
|
|
|
26
28
|
* @returns The return value of the tracked function
|
|
27
29
|
*/
|
|
28
30
|
track(fn, options) {
|
|
29
|
-
var _a, _b;
|
|
31
|
+
var _a, _b, _c;
|
|
30
32
|
const fnName = (options === null || options === void 0 ? void 0 : options.label) || getFunctionName(fn);
|
|
31
33
|
const threshold = (_a = options === null || options === void 0 ? void 0 : options.threshold) !== null && _a !== void 0 ? _a : this._defaultThreshold;
|
|
32
34
|
const includeMemory = (_b = options === null || options === void 0 ? void 0 : options.includeMemory) !== null && _b !== void 0 ? _b : true;
|
|
35
|
+
const enableNestedTracking = (_c = options === null || options === void 0 ? void 0 : options.enableNestedTracking) !== null && _c !== void 0 ? _c : true;
|
|
33
36
|
// Get memory usage before execution
|
|
34
37
|
const startMemory = includeMemory ? process.memoryUsage().heapUsed : undefined;
|
|
35
38
|
// Start timing
|
|
@@ -58,9 +61,20 @@ export class ExecutionTracker {
|
|
|
58
61
|
const previousExecution = this._currentExecution;
|
|
59
62
|
// Set this as the current execution
|
|
60
63
|
this._currentExecution = execution;
|
|
64
|
+
// Flag to track if we're already instrumenting to avoid recursion
|
|
65
|
+
const wasInstrumented = this._isInstrumented;
|
|
61
66
|
try {
|
|
62
|
-
//
|
|
63
|
-
|
|
67
|
+
// If this is the top-level call and nested tracking is enabled, instrument the function
|
|
68
|
+
if (enableNestedTracking && !wasInstrumented) {
|
|
69
|
+
this._isInstrumented = true;
|
|
70
|
+
// Instrument the function to track nested calls
|
|
71
|
+
const instrumentedFn = this.instrumentFunction(fn);
|
|
72
|
+
return instrumentedFn();
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
// Execute the function normally
|
|
76
|
+
return fn();
|
|
77
|
+
}
|
|
64
78
|
}
|
|
65
79
|
finally {
|
|
66
80
|
// End timing
|
|
@@ -78,8 +92,45 @@ export class ExecutionTracker {
|
|
|
78
92
|
this._currentExecution = previousExecution;
|
|
79
93
|
// Remove from call stack
|
|
80
94
|
this._callStack.pop();
|
|
95
|
+
// Reset instrumentation flag if this was the top-level call
|
|
96
|
+
if (!wasInstrumented) {
|
|
97
|
+
this._isInstrumented = false;
|
|
98
|
+
}
|
|
81
99
|
}
|
|
82
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Instrument a function to track nested function calls
|
|
103
|
+
*
|
|
104
|
+
* @param fn - The function to instrument
|
|
105
|
+
* @returns The instrumented function
|
|
106
|
+
*/
|
|
107
|
+
instrumentFunction(fn) {
|
|
108
|
+
// If we've already instrumented this function, return the instrumented version
|
|
109
|
+
if (this._instrumentedFunctions.has(fn)) {
|
|
110
|
+
return this._instrumentedFunctions.get(fn);
|
|
111
|
+
}
|
|
112
|
+
// Create a new instrumented function
|
|
113
|
+
const instrumentedFn = () => {
|
|
114
|
+
try {
|
|
115
|
+
// We can't actually modify the function at runtime to track nested calls
|
|
116
|
+
// in a generic way. The best we can do is execute the function and rely
|
|
117
|
+
// on the call stack for visualization.
|
|
118
|
+
//
|
|
119
|
+
// For proper nested function tracking, users should wrap each function
|
|
120
|
+
// they want to track with tracePerf.track() or use a more advanced
|
|
121
|
+
// instrumentation approach like aspect-oriented programming or
|
|
122
|
+
// code transformation.
|
|
123
|
+
return fn();
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
// Re-throw any errors
|
|
127
|
+
throw error;
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
// Cache the instrumented function
|
|
131
|
+
this._instrumentedFunctions.set(fn, instrumentedFn);
|
|
132
|
+
return instrumentedFn;
|
|
133
|
+
}
|
|
83
134
|
/**
|
|
84
135
|
* Get the current call stack
|
|
85
136
|
*
|
|
@@ -95,9 +146,52 @@ export class ExecutionTracker {
|
|
|
95
146
|
*/
|
|
96
147
|
generateFlowChart() {
|
|
97
148
|
// Convert execution records to execution data for the ASCII generator
|
|
98
|
-
const
|
|
149
|
+
const executionData = this.prepareExecutionData(this._executions);
|
|
99
150
|
// Generate the flow chart
|
|
100
|
-
return this._asciiGenerator.generateFlowChart(
|
|
151
|
+
return this._asciiGenerator.generateFlowChart(executionData);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Prepare execution data for the ASCII generator
|
|
155
|
+
*
|
|
156
|
+
* @param executions - The execution records to prepare
|
|
157
|
+
* @returns A list of execution data
|
|
158
|
+
*/
|
|
159
|
+
prepareExecutionData(executions) {
|
|
160
|
+
const result = [];
|
|
161
|
+
// Process each root execution
|
|
162
|
+
executions.forEach(execution => {
|
|
163
|
+
// Add the root execution
|
|
164
|
+
result.push({
|
|
165
|
+
name: execution.name,
|
|
166
|
+
duration: execution.duration,
|
|
167
|
+
isSlow: execution.isSlow,
|
|
168
|
+
memoryUsage: execution.memoryUsage,
|
|
169
|
+
level: execution.level,
|
|
170
|
+
});
|
|
171
|
+
// Add children recursively
|
|
172
|
+
this.addChildrenToResult(execution.children, result);
|
|
173
|
+
});
|
|
174
|
+
return result;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Add children to the result list
|
|
178
|
+
*
|
|
179
|
+
* @param children - The children to add
|
|
180
|
+
* @param result - The result list
|
|
181
|
+
*/
|
|
182
|
+
addChildrenToResult(children, result) {
|
|
183
|
+
children.forEach(child => {
|
|
184
|
+
// Add the child
|
|
185
|
+
result.push({
|
|
186
|
+
name: child.name,
|
|
187
|
+
duration: child.duration,
|
|
188
|
+
isSlow: child.isSlow,
|
|
189
|
+
memoryUsage: child.memoryUsage,
|
|
190
|
+
level: child.level,
|
|
191
|
+
});
|
|
192
|
+
// Add grandchildren recursively
|
|
193
|
+
this.addChildrenToResult(child.children, result);
|
|
194
|
+
});
|
|
101
195
|
}
|
|
102
196
|
/**
|
|
103
197
|
* Clear all execution records
|
|
@@ -106,6 +200,7 @@ export class ExecutionTracker {
|
|
|
106
200
|
this._executions = [];
|
|
107
201
|
this._currentExecution = null;
|
|
108
202
|
this._callStack.clear();
|
|
203
|
+
this._instrumentedFunctions.clear();
|
|
109
204
|
}
|
|
110
205
|
/**
|
|
111
206
|
* Get all execution records
|
|
@@ -115,29 +210,5 @@ export class ExecutionTracker {
|
|
|
115
210
|
getExecutions() {
|
|
116
211
|
return [...this._executions];
|
|
117
212
|
}
|
|
118
|
-
/**
|
|
119
|
-
* Flatten the execution tree into a list
|
|
120
|
-
*
|
|
121
|
-
* @param executions - The execution records to flatten
|
|
122
|
-
* @returns A flat list of execution data
|
|
123
|
-
*/
|
|
124
|
-
flattenExecutions(executions) {
|
|
125
|
-
const result = [];
|
|
126
|
-
// Helper function to recursively flatten the tree
|
|
127
|
-
const flatten = (record) => {
|
|
128
|
-
result.push({
|
|
129
|
-
name: record.name,
|
|
130
|
-
duration: record.duration,
|
|
131
|
-
isSlow: record.isSlow,
|
|
132
|
-
memoryUsage: record.memoryUsage,
|
|
133
|
-
level: record.level,
|
|
134
|
-
});
|
|
135
|
-
// Process children
|
|
136
|
-
record.children.forEach(child => flatten(child));
|
|
137
|
-
};
|
|
138
|
-
// Flatten each root execution
|
|
139
|
-
executions.forEach(execution => flatten(execution));
|
|
140
|
-
return result;
|
|
141
|
-
}
|
|
142
213
|
}
|
|
143
214
|
//# sourceMappingURL=execution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../../src/trackers/execution.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAiB,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAiBvE;;GAEG;AACH,MAAM,OAAO,gBAAgB;
|
|
1
|
+
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../../src/trackers/execution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,34 @@
|
|
|
1
1
|
export * from './config';
|
|
2
2
|
export * from './logger';
|
|
3
|
+
/**
|
|
4
|
+
* Options for tracking function execution
|
|
5
|
+
*/
|
|
6
|
+
export interface ITrackOptions {
|
|
7
|
+
/**
|
|
8
|
+
* Custom label for the function
|
|
9
|
+
*/
|
|
10
|
+
label?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Performance threshold in milliseconds
|
|
13
|
+
*/
|
|
14
|
+
threshold?: number;
|
|
15
|
+
/**
|
|
16
|
+
* Whether to include memory usage in the tracking
|
|
17
|
+
*/
|
|
18
|
+
includeMemory?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Whether to track nested function calls
|
|
21
|
+
*
|
|
22
|
+
* Note: This option doesn't automatically track all nested function calls.
|
|
23
|
+
* It only enables the infrastructure for tracking nested calls, but you still
|
|
24
|
+
* need to manually track each nested function using one of the approaches
|
|
25
|
+
* described in the documentation.
|
|
26
|
+
*
|
|
27
|
+
* @default true
|
|
28
|
+
*/
|
|
29
|
+
enableNestedTracking?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Whether to suppress logging
|
|
32
|
+
*/
|
|
33
|
+
silent?: boolean;
|
|
34
|
+
}
|
|
@@ -22,6 +22,8 @@ export declare class ExecutionTracker implements IExecutionTracker {
|
|
|
22
22
|
private _currentExecution;
|
|
23
23
|
private _asciiGenerator;
|
|
24
24
|
private _defaultThreshold;
|
|
25
|
+
private _instrumentedFunctions;
|
|
26
|
+
private _isInstrumented;
|
|
25
27
|
/**
|
|
26
28
|
* Create a new ExecutionTracker instance
|
|
27
29
|
*
|
|
@@ -39,6 +41,13 @@ export declare class ExecutionTracker implements IExecutionTracker {
|
|
|
39
41
|
* @returns The return value of the tracked function
|
|
40
42
|
*/
|
|
41
43
|
track<T>(fn: () => T, options?: ITrackOptions): T;
|
|
44
|
+
/**
|
|
45
|
+
* Instrument a function to track nested function calls
|
|
46
|
+
*
|
|
47
|
+
* @param fn - The function to instrument
|
|
48
|
+
* @returns The instrumented function
|
|
49
|
+
*/
|
|
50
|
+
private instrumentFunction;
|
|
42
51
|
/**
|
|
43
52
|
* Get the current call stack
|
|
44
53
|
*
|
|
@@ -51,6 +60,20 @@ export declare class ExecutionTracker implements IExecutionTracker {
|
|
|
51
60
|
* @returns ASCII flow chart of the execution
|
|
52
61
|
*/
|
|
53
62
|
generateFlowChart(): string;
|
|
63
|
+
/**
|
|
64
|
+
* Prepare execution data for the ASCII generator
|
|
65
|
+
*
|
|
66
|
+
* @param executions - The execution records to prepare
|
|
67
|
+
* @returns A list of execution data
|
|
68
|
+
*/
|
|
69
|
+
private prepareExecutionData;
|
|
70
|
+
/**
|
|
71
|
+
* Add children to the result list
|
|
72
|
+
*
|
|
73
|
+
* @param children - The children to add
|
|
74
|
+
* @param result - The result list
|
|
75
|
+
*/
|
|
76
|
+
private addChildrenToResult;
|
|
54
77
|
/**
|
|
55
78
|
* Clear all execution records
|
|
56
79
|
*/
|
|
@@ -61,12 +84,5 @@ export declare class ExecutionTracker implements IExecutionTracker {
|
|
|
61
84
|
* @returns All execution records
|
|
62
85
|
*/
|
|
63
86
|
getExecutions(): ExecutionRecord[];
|
|
64
|
-
/**
|
|
65
|
-
* Flatten the execution tree into a list
|
|
66
|
-
*
|
|
67
|
-
* @param executions - The execution records to flatten
|
|
68
|
-
* @returns A flat list of execution data
|
|
69
|
-
*/
|
|
70
|
-
private flattenExecutions;
|
|
71
87
|
}
|
|
72
88
|
export {};
|