traceperf 0.1.5 → 0.2.0

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.
Files changed (57) hide show
  1. package/README.md +227 -223
  2. package/dist/browser.d.ts +52 -7
  3. package/dist/browser.js +198 -35
  4. package/dist/browser.js.map +1 -1
  5. package/dist/core/index.d.ts +1 -0
  6. package/dist/core/index.js +1 -0
  7. package/dist/core/index.js.map +1 -1
  8. package/dist/core/optimized-performance-monitor.d.ts +227 -0
  9. package/dist/core/optimized-performance-monitor.js +543 -0
  10. package/dist/core/optimized-performance-monitor.js.map +1 -0
  11. package/dist/esm/browser.d.ts +52 -7
  12. package/dist/esm/browser.js +196 -34
  13. package/dist/esm/browser.js.map +1 -1
  14. package/dist/esm/core/index.d.ts +1 -0
  15. package/dist/esm/core/index.js +1 -0
  16. package/dist/esm/core/index.js.map +1 -1
  17. package/dist/esm/core/optimized-performance-monitor.d.ts +227 -0
  18. package/dist/esm/core/optimized-performance-monitor.js +535 -0
  19. package/dist/esm/core/optimized-performance-monitor.js.map +1 -0
  20. package/dist/esm/index.d.ts +7 -8
  21. package/dist/esm/index.js +18 -19
  22. package/dist/esm/index.js.map +1 -1
  23. package/dist/esm/trackers/execution.d.ts +34 -26
  24. package/dist/esm/trackers/execution.js +99 -60
  25. package/dist/esm/trackers/execution.js.map +1 -1
  26. package/dist/esm/trackers/performance.d.ts +7 -21
  27. package/dist/esm/trackers/performance.js +25 -19
  28. package/dist/esm/trackers/performance.js.map +1 -1
  29. package/dist/esm/types/config.d.ts +16 -2
  30. package/dist/esm/types/index.d.ts +32 -34
  31. package/dist/esm/types/logger.d.ts +11 -2
  32. package/dist/esm/utils/colors.js +12 -0
  33. package/dist/esm/utils/colors.js.map +1 -1
  34. package/dist/esm/utils/string.d.ts +29 -0
  35. package/dist/esm/utils/string.js +45 -0
  36. package/dist/esm/utils/string.js.map +1 -0
  37. package/dist/index.d.ts +7 -8
  38. package/dist/index.js +42 -20
  39. package/dist/index.js.map +1 -1
  40. package/dist/trackers/execution.d.ts +34 -26
  41. package/dist/trackers/execution.js +98 -59
  42. package/dist/trackers/execution.js.map +1 -1
  43. package/dist/trackers/performance.d.ts +7 -21
  44. package/dist/trackers/performance.js +25 -19
  45. package/dist/trackers/performance.js.map +1 -1
  46. package/dist/types/config.d.ts +16 -2
  47. package/dist/types/index.d.ts +32 -34
  48. package/dist/types/logger.d.ts +11 -2
  49. package/dist/types.d.ts +65 -0
  50. package/dist/types.js +6 -0
  51. package/dist/types.js.map +1 -0
  52. package/dist/utils/colors.js +12 -0
  53. package/dist/utils/colors.js.map +1 -1
  54. package/dist/utils/string.d.ts +29 -0
  55. package/dist/utils/string.js +50 -0
  56. package/dist/utils/string.js.map +1 -0
  57. package/package.json +11 -8
@@ -1,36 +1,36 @@
1
1
  import { IExecutionTracker, ITrackOptions } from '../types';
2
2
  /**
3
- * Execution record for a function call
3
+ * A record of a function execution
4
4
  */
5
- interface ExecutionRecord {
5
+ export interface ExecutionRecord {
6
6
  name: string;
7
7
  duration: number;
8
- isSlow: boolean;
9
- memoryUsage?: number;
10
- level: number;
11
8
  startTime: [number, number];
12
9
  endTime?: [number, number];
10
+ isSlow: boolean;
11
+ level: number;
12
+ memoryUsage?: number;
13
+ memoryReleased?: number;
13
14
  children: ExecutionRecord[];
14
15
  parent?: ExecutionRecord;
15
16
  }
16
17
  /**
17
- * Execution tracker for tracking function calls and generating flow charts
18
+ * Execution tracker for performance monitoring
18
19
  */
19
20
  export declare class ExecutionTracker implements IExecutionTracker {
20
- private _callStack;
21
21
  private _executions;
22
22
  private _currentExecution;
23
- private _asciiGenerator;
24
23
  private _defaultThreshold;
24
+ private _callStack;
25
25
  private _globalScope;
26
+ private _trackedFunctions;
26
27
  /**
27
- * Create a new ExecutionTracker instance
28
+ * Constructor
28
29
  *
29
- * @param options - Tracker options
30
+ * @param options - Options for execution tracking
30
31
  */
31
32
  constructor(options?: {
32
33
  defaultThreshold?: number;
33
- boxWidth?: number;
34
34
  });
35
35
  /**
36
36
  * Track the execution of a function
@@ -53,6 +53,19 @@ export declare class ExecutionTracker implements IExecutionTracker {
53
53
  createTrackable<T extends (...args: any[]) => any>(fn: T, options?: Omit<ITrackOptions, 'label'> & {
54
54
  label?: string;
55
55
  }): (...args: Parameters<T>) => ReturnType<T>;
56
+ /**
57
+ * Get all execution records
58
+ *
59
+ * @returns A list of execution records
60
+ */
61
+ getExecutions(): ExecutionRecord[];
62
+ /**
63
+ * Generate a human-friendly memory size string
64
+ *
65
+ * @param bytes - The size in bytes
66
+ * @returns A formatted string
67
+ */
68
+ formatMemorySize(bytes: number): string;
56
69
  /**
57
70
  * Get the current call stack
58
71
  *
@@ -66,28 +79,23 @@ export declare class ExecutionTracker implements IExecutionTracker {
66
79
  */
67
80
  generateFlowChart(): string;
68
81
  /**
69
- * Prepare execution data for the ASCII generator
82
+ * Recursively print an execution tree
70
83
  *
71
- * @param executions - The execution records to prepare
72
- * @returns A list of execution data
84
+ * @param execution - The root execution
85
+ * @param result - The output string
86
+ * @returns The updated result string
73
87
  */
74
- private prepareExecutionData;
88
+ private printExecutionTree;
75
89
  /**
76
- * Add children to the result list
90
+ * Print a single execution with appropriate formatting
77
91
  *
78
- * @param children - The children to add
79
- * @param result - The result list
92
+ * @param execution - The execution to print
93
+ * @param result - The result string to append to
94
+ * @returns The updated result string
80
95
  */
81
- private addChildrenToResult;
96
+ private printSingleExecution;
82
97
  /**
83
98
  * Clear all execution records
84
99
  */
85
100
  clear(): void;
86
- /**
87
- * Get all execution records
88
- *
89
- * @returns All execution records
90
- */
91
- getExecutions(): ExecutionRecord[];
92
101
  }
93
- export {};
@@ -1,21 +1,20 @@
1
- import { CallStackManager, getFunctionName } from '../utils/stack';
1
+ import { getFunctionName } from '../utils/stack';
2
2
  import { getHighResTime, getDuration } from '../utils/timing';
3
- import { AsciiArtGenerator } from '../formatters/ascii';
4
3
  /**
5
- * Execution tracker for tracking function calls and generating flow charts
4
+ * Execution tracker for performance monitoring
6
5
  */
7
6
  export class ExecutionTracker {
8
7
  /**
9
- * Create a new ExecutionTracker instance
8
+ * Constructor
10
9
  *
11
- * @param options - Tracker options
10
+ * @param options - Options for execution tracking
12
11
  */
13
12
  constructor(options = {}) {
14
13
  var _a;
15
14
  this._executions = [];
16
15
  this._currentExecution = null;
17
- this._callStack = new CallStackManager();
18
- this._asciiGenerator = new AsciiArtGenerator({ boxWidth: options.boxWidth });
16
+ this._callStack = [];
17
+ this._trackedFunctions = new Map();
19
18
  this._defaultThreshold = (_a = options.defaultThreshold) !== null && _a !== void 0 ? _a : 100; // ms
20
19
  // Get a reference to the global scope (works in both Node.js and browsers)
21
20
  this._globalScope = typeof window !== 'undefined' ? window :
@@ -33,10 +32,18 @@ export class ExecutionTracker {
33
32
  var _a, _b, _c;
34
33
  const fnName = (options === null || options === void 0 ? void 0 : options.label) || getFunctionName(fn);
35
34
  const threshold = (_a = options === null || options === void 0 ? void 0 : options.threshold) !== null && _a !== void 0 ? _a : this._defaultThreshold;
36
- const includeMemory = (_b = options === null || options === void 0 ? void 0 : options.includeMemory) !== null && _b !== void 0 ? _b : true;
35
+ const includeMemory = (_b = options === null || options === void 0 ? void 0 : options.trackMemory) !== null && _b !== void 0 ? _b : true;
37
36
  const enableNestedTracking = (_c = options === null || options === void 0 ? void 0 : options.enableNestedTracking) !== null && _c !== void 0 ? _c : true;
38
37
  // Get memory usage before execution
39
- const startMemory = includeMemory ? process.memoryUsage().heapUsed : undefined;
38
+ let startMemory;
39
+ if (includeMemory) {
40
+ try {
41
+ startMemory = process.memoryUsage();
42
+ }
43
+ catch (e) {
44
+ console.warn('Unable to track memory usage:', e);
45
+ }
46
+ }
40
47
  // Start timing
41
48
  const startTime = getHighResTime();
42
49
  // Add to call stack
@@ -77,7 +84,19 @@ export class ExecutionTracker {
77
84
  execution.isSlow = execution.duration > threshold;
78
85
  // Calculate memory usage
79
86
  if (includeMemory && startMemory !== undefined) {
80
- execution.memoryUsage = process.memoryUsage().heapUsed - startMemory;
87
+ try {
88
+ const endMemory = process.memoryUsage();
89
+ // Calculate the memory difference, ensuring it's never negative
90
+ const memoryDiff = endMemory.heapUsed - startMemory.heapUsed;
91
+ execution.memoryUsage = Math.max(0, memoryDiff); // Ensure non-negative value
92
+ // If memory decreased, store a separate field for better visualization
93
+ if (memoryDiff < 0) {
94
+ execution.memoryReleased = Math.abs(memoryDiff);
95
+ }
96
+ }
97
+ catch (e) {
98
+ console.warn('Error calculating memory usage:', e);
99
+ }
81
100
  }
82
101
  // Restore the previous current execution
83
102
  this._currentExecution = previousExecution;
@@ -96,14 +115,45 @@ export class ExecutionTracker {
96
115
  * @returns A tracked version of the function
97
116
  */
98
117
  createTrackable(fn, options) {
99
- const self = this;
100
118
  const fnName = (options === null || options === void 0 ? void 0 : options.label) || fn.name || 'anonymous';
101
- return function (...args) {
102
- return self.track(() => fn.apply(this, args), {
119
+ // Create a tracked version of the function using arrow function to preserve 'this'
120
+ const trackedFn = (...args) => {
121
+ return this.track(() => fn.apply(this, args), {
103
122
  ...options,
104
123
  label: fnName
105
124
  });
106
125
  };
126
+ // Store the original and tracked function
127
+ this._trackedFunctions.set(fn, trackedFn);
128
+ return trackedFn;
129
+ }
130
+ /**
131
+ * Get all execution records
132
+ *
133
+ * @returns A list of execution records
134
+ */
135
+ getExecutions() {
136
+ return [...this._executions];
137
+ }
138
+ /**
139
+ * Generate a human-friendly memory size string
140
+ *
141
+ * @param bytes - The size in bytes
142
+ * @returns A formatted string
143
+ */
144
+ formatMemorySize(bytes) {
145
+ if (bytes < 1024) {
146
+ return `${bytes.toFixed(2)}B`;
147
+ }
148
+ else if (bytes < 1024 * 1024) {
149
+ return `${(bytes / 1024).toFixed(2)}KB`;
150
+ }
151
+ else if (bytes < 1024 * 1024 * 1024) {
152
+ return `${(bytes / (1024 * 1024)).toFixed(2)}MB`;
153
+ }
154
+ else {
155
+ return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)}GB`;
156
+ }
107
157
  }
108
158
  /**
109
159
  * Get the current call stack
@@ -111,7 +161,7 @@ export class ExecutionTracker {
111
161
  * @returns The current call stack
112
162
  */
113
163
  getCallStack() {
114
- return this._callStack.getStack();
164
+ return [...this._callStack];
115
165
  }
116
166
  /**
117
167
  * Generate a visual representation of the execution flow
@@ -119,53 +169,50 @@ export class ExecutionTracker {
119
169
  * @returns ASCII flow chart of the execution
120
170
  */
121
171
  generateFlowChart() {
122
- // Convert execution records to execution data for the ASCII generator
123
- const executionData = this.prepareExecutionData(this._executions);
124
- // Generate the flow chart
125
- return this._asciiGenerator.generateFlowChart(executionData);
172
+ let result = '';
173
+ // Process each execution
174
+ this._executions.forEach(execution => {
175
+ result = this.printExecutionTree(execution, result);
176
+ });
177
+ return result;
126
178
  }
127
179
  /**
128
- * Prepare execution data for the ASCII generator
180
+ * Recursively print an execution tree
129
181
  *
130
- * @param executions - The execution records to prepare
131
- * @returns A list of execution data
182
+ * @param execution - The root execution
183
+ * @param result - The output string
184
+ * @returns The updated result string
132
185
  */
133
- prepareExecutionData(executions) {
134
- const result = [];
135
- // Process each root execution
136
- executions.forEach(execution => {
137
- // Add the root execution
138
- result.push({
139
- name: execution.name,
140
- duration: execution.duration,
141
- isSlow: execution.isSlow,
142
- memoryUsage: execution.memoryUsage,
143
- level: execution.level,
144
- });
145
- // Add children recursively
146
- this.addChildrenToResult(execution.children, result);
186
+ printExecutionTree(execution, result) {
187
+ // Print this execution
188
+ result = this.printSingleExecution(execution, result);
189
+ // Print children recursively
190
+ execution.children.forEach(child => {
191
+ result = this.printExecutionTree(child, result);
147
192
  });
148
193
  return result;
149
194
  }
150
195
  /**
151
- * Add children to the result list
196
+ * Print a single execution with appropriate formatting
152
197
  *
153
- * @param children - The children to add
154
- * @param result - The result list
198
+ * @param execution - The execution to print
199
+ * @param result - The result string to append to
200
+ * @returns The updated result string
155
201
  */
156
- addChildrenToResult(children, result) {
157
- children.forEach(child => {
158
- // Add the child
159
- result.push({
160
- name: child.name,
161
- duration: child.duration,
162
- isSlow: child.isSlow,
163
- memoryUsage: child.memoryUsage,
164
- level: child.level,
165
- });
166
- // Add grandchildren recursively
167
- this.addChildrenToResult(child.children, result);
168
- });
202
+ printSingleExecution(execution, result) {
203
+ const indent = ' '.repeat(execution.level);
204
+ const durationStr = execution.duration.toFixed(2);
205
+ const slowMarker = execution.isSlow ? ' [SLOW]' : '';
206
+ let memoryStr = '';
207
+ if (execution.memoryUsage !== undefined) {
208
+ memoryStr = ` [${this.formatMemorySize(execution.memoryUsage)}]`;
209
+ }
210
+ result += `${indent}→ ${execution.name} (${durationStr}ms)${slowMarker}${memoryStr}\n`;
211
+ // Add connector if this execution has children
212
+ if (execution.children.length > 0) {
213
+ result += `${indent} |\n`;
214
+ }
215
+ return result;
169
216
  }
170
217
  /**
171
218
  * Clear all execution records
@@ -173,15 +220,7 @@ export class ExecutionTracker {
173
220
  clear() {
174
221
  this._executions = [];
175
222
  this._currentExecution = null;
176
- this._callStack.clear();
177
- }
178
- /**
179
- * Get all execution records
180
- *
181
- * @returns All execution records
182
- */
183
- getExecutions() {
184
- return [...this._executions];
223
+ this._callStack = [];
185
224
  }
186
225
  }
187
226
  //# sourceMappingURL=execution.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"execution.js","sourceRoot":"","sources":["../../../src/trackers/execution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution.js","sourceRoot":"","sources":["../../../src/trackers/execution.ts"],"names":[],"mappings":"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"}
@@ -39,37 +39,23 @@ export declare class PerformanceMonitor implements IPerformanceMonitor {
39
39
  /**
40
40
  * Get memory usage information
41
41
  *
42
- * @returns Memory usage in bytes
42
+ * @returns Memory usage object
43
43
  */
44
44
  getMemoryUsage(): {
45
45
  heapUsed: number;
46
46
  heapTotal: number;
47
47
  external: number;
48
48
  rss: number;
49
- };
49
+ } | undefined;
50
50
  /**
51
- * Get memory difference between two points
51
+ * Calculate memory difference between current and start memory
52
52
  *
53
- * @param before - Memory usage before
54
- * @param after - Memory usage after
55
- * @returns Memory difference in bytes
53
+ * @param start - Starting memory usage snapshot
54
+ * @returns Memory difference or undefined
56
55
  */
57
- getMemoryDiff(before: {
56
+ getMemoryDiff(start: {
58
57
  heapUsed: number;
59
- heapTotal: number;
60
- external: number;
61
- rss: number;
62
- }, after: {
63
- heapUsed: number;
64
- heapTotal: number;
65
- external: number;
66
- rss: number;
67
- }): {
68
- heapUsed: number;
69
- heapTotal: number;
70
- external: number;
71
- rss: number;
72
- };
58
+ }): number;
73
59
  /**
74
60
  * Generate a suggestion for a bottleneck
75
61
  *
@@ -55,31 +55,37 @@ export class PerformanceMonitor {
55
55
  /**
56
56
  * Get memory usage information
57
57
  *
58
- * @returns Memory usage in bytes
58
+ * @returns Memory usage object
59
59
  */
60
60
  getMemoryUsage() {
61
- const memoryUsage = process.memoryUsage();
62
- return {
63
- heapUsed: memoryUsage.heapUsed,
64
- heapTotal: memoryUsage.heapTotal,
65
- external: memoryUsage.external,
66
- rss: memoryUsage.rss,
67
- };
61
+ try {
62
+ return process.memoryUsage();
63
+ }
64
+ catch (e) {
65
+ console.warn('Unable to track memory usage:', e);
66
+ return undefined;
67
+ }
68
68
  }
69
69
  /**
70
- * Get memory difference between two points
70
+ * Calculate memory difference between current and start memory
71
71
  *
72
- * @param before - Memory usage before
73
- * @param after - Memory usage after
74
- * @returns Memory difference in bytes
72
+ * @param start - Starting memory usage snapshot
73
+ * @returns Memory difference or undefined
75
74
  */
76
- getMemoryDiff(before, after) {
77
- return {
78
- heapUsed: after.heapUsed - before.heapUsed,
79
- heapTotal: after.heapTotal - before.heapTotal,
80
- external: after.external - before.external,
81
- rss: after.rss - before.rss,
82
- };
75
+ getMemoryDiff(start) {
76
+ try {
77
+ const current = this.getMemoryUsage();
78
+ if (!current)
79
+ return 0;
80
+ const diff = current.heapUsed - start.heapUsed;
81
+ // Return zero instead of negative values
82
+ // Negative values usually indicate garbage collection, not actual memory release
83
+ return Math.max(0, diff);
84
+ }
85
+ catch (e) {
86
+ console.warn('Error calculating memory usage:', e);
87
+ return 0;
88
+ }
83
89
  }
84
90
  /**
85
91
  * Generate a suggestion for a bottleneck
@@ -1 +1 @@
1
- {"version":3,"file":"performance.js","sourceRoot":"","sources":["../../../src/trackers/performance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAI7B;;;;OAIG;IACH,YAAY,UAAyC,EAAE;;QAR/C,YAAO,GAAkC,IAAI,GAAG,EAAE,CAAC;QASzD,IAAI,CAAC,iBAAiB,GAAG,MAAA,OAAO,CAAC,gBAAgB,mCAAI,GAAG,CAAC,CAAC,KAAK;IACjE,CAAC;IAED;;;;;OAKG;IACI,UAAU,CAAC,KAAa;QAC7B,MAAM,EAAE,GAAG,GAAG,KAAK,IAAI,MAAM,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;QACvC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;;;OAMG;IACI,QAAQ,CAAC,EAAU;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAExB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;;OAMG;IACI,YAAY,CAAC,QAAgB,EAAE,SAAkB;QACtD,MAAM,kBAAkB,GAAG,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,IAAI,CAAC,iBAAiB,CAAC;QAC/D,OAAO,QAAQ,GAAG,kBAAkB,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACI,cAAc;QACnB,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAC1C,OAAO;YACL,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,SAAS,EAAE,WAAW,CAAC,SAAS;YAChC,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,GAAG,EAAE,WAAW,CAAC,GAAG;SACrB,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACI,aAAa,CAClB,MAA8E,EAC9E,KAA6E;QAE7E,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;YAC1C,SAAS,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS;YAC7C,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;YAC1C,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG;SAC5B,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACI,kBAAkB,CACvB,YAAoB,EACpB,QAAgB,EAChB,WAAoB;QAEpB,qCAAqC;QACrC,IAAI,WAAW,IAAI,WAAW,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;YAClD,OAAO,2EAA2E,YAAY,EAAE,CAAC;QACnG,CAAC;QAED,IAAI,QAAQ,GAAG,IAAI,EAAE,CAAC;YACpB,OAAO,8DAA8D,YAAY,EAAE,CAAC;QACtF,CAAC;QAED,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;YACnB,OAAO,qDAAqD,YAAY,EAAE,CAAC;QAC7E,CAAC;QAED,OAAO,4BAA4B,YAAY,gCAAgC,CAAC;IAClF,CAAC;CACF"}
1
+ {"version":3,"file":"performance.js","sourceRoot":"","sources":["../../../src/trackers/performance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAI7B;;;;OAIG;IACH,YAAY,UAAyC,EAAE;;QAR/C,YAAO,GAAkC,IAAI,GAAG,EAAE,CAAC;QASzD,IAAI,CAAC,iBAAiB,GAAG,MAAA,OAAO,CAAC,gBAAgB,mCAAI,GAAG,CAAC,CAAC,KAAK;IACjE,CAAC;IAED;;;;;OAKG;IACI,UAAU,CAAC,KAAa;QAC7B,MAAM,EAAE,GAAG,GAAG,KAAK,IAAI,MAAM,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;QACvC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;;;OAMG;IACI,QAAQ,CAAC,EAAU;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAExB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;;OAMG;IACI,YAAY,CAAC,QAAgB,EAAE,SAAkB;QACtD,MAAM,kBAAkB,GAAG,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,IAAI,CAAC,iBAAiB,CAAC;QAC/D,OAAO,QAAQ,GAAG,kBAAkB,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACI,cAAc;QACnB,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC;QAC/B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,CAAC,CAAC,CAAC;YACjD,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,aAAa,CAAC,KAA2B;QAC9C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACtC,IAAI,CAAC,OAAO;gBAAE,OAAO,CAAC,CAAC;YAEvB,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YAE/C,yCAAyC;YACzC,iFAAiF;YACjF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAC;YACnD,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACI,kBAAkB,CACvB,YAAoB,EACpB,QAAgB,EAChB,WAAoB;QAEpB,qCAAqC;QACrC,IAAI,WAAW,IAAI,WAAW,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;YAClD,OAAO,2EAA2E,YAAY,EAAE,CAAC;QACnG,CAAC;QAED,IAAI,QAAQ,GAAG,IAAI,EAAE,CAAC;YACpB,OAAO,8DAA8D,YAAY,EAAE,CAAC;QACtF,CAAC;QAED,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;YACnB,OAAO,qDAAqD,YAAY,EAAE,CAAC;QAC7E,CAAC;QAED,OAAO,4BAA4B,YAAY,gCAAgC,CAAC;IAClF,CAAC;CACF"}
@@ -55,9 +55,9 @@ export interface ITrackOptions {
55
55
  */
56
56
  threshold?: number;
57
57
  /**
58
- * Whether to include memory usage tracking
58
+ * Whether to track memory usage
59
59
  */
60
- includeMemory?: boolean;
60
+ trackMemory?: boolean;
61
61
  /**
62
62
  * Whether to suppress logging for this tracking
63
63
  */
@@ -71,6 +71,15 @@ export interface ITrackOptions {
71
71
  * @default true
72
72
  */
73
73
  enableNestedTracking?: boolean;
74
+ /**
75
+ * Tracking mode to use for this function
76
+ * Controls the level of detail and performance impact
77
+ */
78
+ trackingMode?: string;
79
+ /**
80
+ * Any other custom options
81
+ */
82
+ [key: string]: any;
74
83
  }
75
84
  /**
76
85
  * Logger configuration
@@ -125,4 +134,9 @@ export interface ILoggerConfig {
125
134
  * @default [CliFormatter]
126
135
  */
127
136
  formatters?: IFormatter[];
137
+ /**
138
+ * Tracking mode to use for performance monitoring
139
+ * Controls the level of detail and performance impact
140
+ */
141
+ trackingMode?: string;
128
142
  }
@@ -1,44 +1,42 @@
1
1
  export * from './config';
2
2
  export * from './logger';
3
3
  /**
4
- * Options for tracking function execution
4
+ * Interface for TracePerf configuration
5
+ */
6
+ export interface ITracePerfConfig {
7
+ /** Tracking mode for balancing performance vs detail */
8
+ trackingMode?: string;
9
+ /** Whether to suppress console output */
10
+ silent?: boolean;
11
+ /** Whether to track memory usage */
12
+ trackMemory?: boolean;
13
+ /** Whether to enable nested function tracking */
14
+ enableNestedTracking?: boolean;
15
+ /** Minimum duration threshold in microseconds */
16
+ threshold?: number;
17
+ /** Sampling rate (0.0-1.0) for reducing overhead */
18
+ sampleRate?: number;
19
+ }
20
+ /**
21
+ * Interface for tracking options
5
22
  */
6
23
  export interface ITrackOptions {
7
- /**
8
- * Custom label for the function
9
- */
24
+ /** Custom label for the tracked function */
10
25
  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: With automatic tracking enabled, TracePerf will attempt to
23
- * automatically detect and track nested function calls without requiring
24
- * manual tracking of each function.
25
- *
26
- * @default true
27
- */
28
- enableNestedTracking?: boolean;
29
- /**
30
- * Whether to automatically track nested function calls
31
- *
32
- * When enabled, TracePerf will analyze the function source code to identify
33
- * potential function calls and automatically track them.
34
- *
35
- * @default true
36
- */
37
- autoTracking?: boolean;
38
- /**
39
- * Whether to suppress logging
40
- */
26
+ /** Override default tracking mode */
27
+ trackingMode?: string;
28
+ /** Override default silent setting */
41
29
  silent?: boolean;
30
+ /** Override default memory tracking */
31
+ trackMemory?: boolean;
32
+ /** Override default nested tracking */
33
+ enableNestedTracking?: boolean;
34
+ /** Minimum duration threshold in microseconds */
35
+ threshold?: number;
36
+ /** Sampling rate (0.0-1.0) for reducing overhead */
37
+ sampleRate?: number;
38
+ /** Any other options */
39
+ [key: string]: any;
42
40
  }
43
41
  /**
44
42
  * Interface for execution trackers
@@ -127,12 +127,21 @@ export interface IPerformanceMonitor {
127
127
  /**
128
128
  * Get memory usage information
129
129
  *
130
- * @returns Memory usage in bytes
130
+ * @returns Memory usage object or undefined if not available
131
131
  */
132
132
  getMemoryUsage(): {
133
133
  heapUsed: number;
134
134
  heapTotal: number;
135
135
  external: number;
136
136
  rss: number;
137
- };
137
+ } | undefined;
138
+ /**
139
+ * Calculate memory difference between current and start memory
140
+ *
141
+ * @param start - Starting memory usage snapshot
142
+ * @returns Memory difference in bytes
143
+ */
144
+ getMemoryDiff(start: {
145
+ heapUsed: number;
146
+ }): number;
138
147
  }