traceperf 0.2.0 → 1.3.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 (268) hide show
  1. package/README.md +612 -209
  2. package/dist/__tests__/helpers/console.d.ts +9 -0
  3. package/dist/__tests__/helpers/console.js +25 -0
  4. package/dist/__tests__/helpers/console.js.map +1 -0
  5. package/dist/auto.d.ts +30 -0
  6. package/dist/auto.js +91 -0
  7. package/dist/auto.js.map +1 -0
  8. package/dist/browser.d.ts +52 -144
  9. package/dist/browser.js +112 -439
  10. package/dist/browser.js.map +1 -1
  11. package/dist/cli.d.ts +68 -0
  12. package/dist/cli.js +528 -0
  13. package/dist/cli.js.map +1 -0
  14. package/dist/core/allocations.d.ts +38 -0
  15. package/dist/core/allocations.js +85 -0
  16. package/dist/core/allocations.js.map +1 -0
  17. package/dist/core/cpu-profile.d.ts +84 -0
  18. package/dist/core/cpu-profile.js +181 -0
  19. package/dist/core/cpu-profile.js.map +1 -0
  20. package/dist/core/env.d.ts +10 -0
  21. package/dist/core/env.js +40 -0
  22. package/dist/core/env.js.map +1 -0
  23. package/dist/core/event-loop.d.ts +30 -0
  24. package/dist/core/event-loop.js +43 -0
  25. package/dist/core/event-loop.js.map +1 -0
  26. package/dist/core/explain.d.ts +48 -0
  27. package/dist/core/explain.js +236 -0
  28. package/dist/core/explain.js.map +1 -0
  29. package/dist/core/exporters.d.ts +111 -0
  30. package/dist/core/exporters.js +236 -0
  31. package/dist/core/exporters.js.map +1 -0
  32. package/dist/core/index.d.ts +9 -3
  33. package/dist/core/index.js +9 -3
  34. package/dist/core/index.js.map +1 -1
  35. package/dist/core/optimized-performance-monitor.d.ts +180 -26
  36. package/dist/core/optimized-performance-monitor.js +687 -175
  37. package/dist/core/optimized-performance-monitor.js.map +1 -1
  38. package/dist/core/prometheus.d.ts +36 -0
  39. package/dist/core/prometheus.js +93 -0
  40. package/dist/core/prometheus.js.map +1 -0
  41. package/dist/core/records.d.ts +97 -0
  42. package/dist/core/records.js +87 -0
  43. package/dist/core/records.js.map +1 -0
  44. package/dist/core/stats.d.ts +45 -0
  45. package/dist/core/stats.js +136 -0
  46. package/dist/core/stats.js.map +1 -0
  47. package/dist/core/timeline.d.ts +28 -0
  48. package/dist/core/timeline.js +65 -0
  49. package/dist/core/timeline.js.map +1 -0
  50. package/dist/drivers.d.ts +51 -0
  51. package/dist/drivers.js +205 -0
  52. package/dist/drivers.js.map +1 -0
  53. package/dist/esm/auto.d.ts +30 -0
  54. package/dist/esm/auto.js +87 -0
  55. package/dist/esm/auto.js.map +1 -0
  56. package/dist/esm/browser.d.ts +52 -144
  57. package/dist/esm/browser.js +101 -445
  58. package/dist/esm/browser.js.map +1 -1
  59. package/dist/esm/cli.d.ts +68 -0
  60. package/dist/esm/cli.js +520 -0
  61. package/dist/esm/cli.js.map +1 -0
  62. package/dist/esm/core/allocations.d.ts +38 -0
  63. package/dist/esm/core/allocations.js +82 -0
  64. package/dist/esm/core/allocations.js.map +1 -0
  65. package/dist/esm/core/cpu-profile.d.ts +84 -0
  66. package/dist/esm/core/cpu-profile.js +176 -0
  67. package/dist/esm/core/cpu-profile.js.map +1 -0
  68. package/dist/esm/core/env.d.ts +10 -0
  69. package/dist/esm/core/env.js +35 -0
  70. package/dist/esm/core/env.js.map +1 -0
  71. package/dist/esm/core/event-loop.d.ts +30 -0
  72. package/dist/esm/core/event-loop.js +40 -0
  73. package/dist/esm/core/event-loop.js.map +1 -0
  74. package/dist/esm/core/explain.d.ts +48 -0
  75. package/dist/esm/core/explain.js +232 -0
  76. package/dist/esm/core/explain.js.map +1 -0
  77. package/dist/esm/core/exporters.d.ts +111 -0
  78. package/dist/esm/core/exporters.js +229 -0
  79. package/dist/esm/core/exporters.js.map +1 -0
  80. package/dist/esm/core/index.d.ts +10 -4
  81. package/dist/esm/core/index.js +10 -4
  82. package/dist/esm/core/index.js.map +1 -1
  83. package/dist/esm/core/optimized-performance-monitor.d.ts +180 -26
  84. package/dist/esm/core/optimized-performance-monitor.js +685 -173
  85. package/dist/esm/core/optimized-performance-monitor.js.map +1 -1
  86. package/dist/esm/core/prometheus.d.ts +36 -0
  87. package/dist/esm/core/prometheus.js +89 -0
  88. package/dist/esm/core/prometheus.js.map +1 -0
  89. package/dist/esm/core/records.d.ts +97 -0
  90. package/dist/esm/core/records.js +82 -0
  91. package/dist/esm/core/records.js.map +1 -0
  92. package/dist/esm/core/stats.d.ts +45 -0
  93. package/dist/esm/core/stats.js +131 -0
  94. package/dist/esm/core/stats.js.map +1 -0
  95. package/dist/esm/core/timeline.d.ts +28 -0
  96. package/dist/esm/core/timeline.js +62 -0
  97. package/dist/esm/core/timeline.js.map +1 -0
  98. package/dist/esm/drivers.d.ts +51 -0
  99. package/dist/esm/drivers.js +197 -0
  100. package/dist/esm/drivers.js.map +1 -0
  101. package/dist/esm/index.d.ts +13 -5
  102. package/dist/esm/index.js +21 -17
  103. package/dist/esm/index.js.map +1 -1
  104. package/dist/esm/instrument.d.ts +88 -0
  105. package/dist/esm/instrument.js +274 -0
  106. package/dist/esm/instrument.js.map +1 -0
  107. package/dist/esm/integrations.d.ts +70 -0
  108. package/dist/esm/integrations.js +197 -0
  109. package/dist/esm/integrations.js.map +1 -0
  110. package/dist/esm/node-builtins.d.ts +1 -0
  111. package/dist/esm/node-builtins.js +32 -0
  112. package/dist/esm/node-builtins.js.map +1 -0
  113. package/dist/esm/package.json +3 -0
  114. package/dist/esm/register.d.ts +20 -0
  115. package/dist/esm/register.js +98 -0
  116. package/dist/esm/register.js.map +1 -0
  117. package/dist/esm/report-html.d.ts +11 -0
  118. package/dist/esm/report-html.js +106 -0
  119. package/dist/esm/report-html.js.map +1 -0
  120. package/dist/esm/types/index.d.ts +4 -80
  121. package/dist/esm/types/index.js +1 -2
  122. package/dist/esm/types/index.js.map +1 -1
  123. package/dist/esm/types/options.d.ts +72 -0
  124. package/dist/esm/types/options.js +2 -0
  125. package/dist/esm/types/options.js.map +1 -0
  126. package/dist/esm/watch.d.ts +17 -0
  127. package/dist/esm/watch.js +87 -0
  128. package/dist/esm/watch.js.map +1 -0
  129. package/dist/index.d.ts +10 -2
  130. package/dist/index.js +26 -29
  131. package/dist/index.js.map +1 -1
  132. package/dist/instrument.d.ts +88 -0
  133. package/dist/instrument.js +282 -0
  134. package/dist/instrument.js.map +1 -0
  135. package/dist/integrations.d.ts +70 -0
  136. package/dist/integrations.js +205 -0
  137. package/dist/integrations.js.map +1 -0
  138. package/dist/node-builtins.d.ts +1 -0
  139. package/dist/node-builtins.js +67 -0
  140. package/dist/node-builtins.js.map +1 -0
  141. package/dist/register.d.ts +20 -0
  142. package/dist/register.js +103 -0
  143. package/dist/register.js.map +1 -0
  144. package/dist/report-html.d.ts +11 -0
  145. package/dist/report-html.js +109 -0
  146. package/dist/report-html.js.map +1 -0
  147. package/dist/traceperf.browser.js +1910 -0
  148. package/dist/traceperf.browser.min.js +6 -0
  149. package/dist/types/index.d.ts +4 -80
  150. package/dist/types/index.js +1 -2
  151. package/dist/types/index.js.map +1 -1
  152. package/dist/types/options.d.ts +72 -0
  153. package/dist/types/{config.js → options.js} +1 -1
  154. package/dist/types/options.js.map +1 -0
  155. package/dist/watch.d.ts +17 -0
  156. package/dist/watch.js +90 -0
  157. package/dist/watch.js.map +1 -0
  158. package/package.json +99 -19
  159. package/dist/core/config.d.ts +0 -77
  160. package/dist/core/config.js +0 -116
  161. package/dist/core/config.js.map +0 -1
  162. package/dist/core/constants.d.ts +0 -78
  163. package/dist/core/constants.js +0 -109
  164. package/dist/core/constants.js.map +0 -1
  165. package/dist/core/logger.d.ts +0 -97
  166. package/dist/core/logger.js +0 -186
  167. package/dist/core/logger.js.map +0 -1
  168. package/dist/esm/core/config.d.ts +0 -77
  169. package/dist/esm/core/config.js +0 -112
  170. package/dist/esm/core/config.js.map +0 -1
  171. package/dist/esm/core/constants.d.ts +0 -78
  172. package/dist/esm/core/constants.js +0 -106
  173. package/dist/esm/core/constants.js.map +0 -1
  174. package/dist/esm/core/logger.d.ts +0 -97
  175. package/dist/esm/core/logger.js +0 -182
  176. package/dist/esm/core/logger.js.map +0 -1
  177. package/dist/esm/formatters/ascii.d.ts +0 -52
  178. package/dist/esm/formatters/ascii.js +0 -100
  179. package/dist/esm/formatters/ascii.js.map +0 -1
  180. package/dist/esm/formatters/cli.d.ts +0 -50
  181. package/dist/esm/formatters/cli.js +0 -96
  182. package/dist/esm/formatters/cli.js.map +0 -1
  183. package/dist/esm/formatters/index.d.ts +0 -3
  184. package/dist/esm/formatters/index.js +0 -4
  185. package/dist/esm/formatters/index.js.map +0 -1
  186. package/dist/esm/formatters/json.d.ts +0 -45
  187. package/dist/esm/formatters/json.js +0 -85
  188. package/dist/esm/formatters/json.js.map +0 -1
  189. package/dist/esm/trackers/execution.d.ts +0 -101
  190. package/dist/esm/trackers/execution.js +0 -226
  191. package/dist/esm/trackers/execution.js.map +0 -1
  192. package/dist/esm/trackers/index.d.ts +0 -2
  193. package/dist/esm/trackers/index.js +0 -3
  194. package/dist/esm/trackers/index.js.map +0 -1
  195. package/dist/esm/trackers/performance.d.ts +0 -68
  196. package/dist/esm/trackers/performance.js +0 -112
  197. package/dist/esm/trackers/performance.js.map +0 -1
  198. package/dist/esm/types/config.d.ts +0 -142
  199. package/dist/esm/types/config.js +0 -2
  200. package/dist/esm/types/config.js.map +0 -1
  201. package/dist/esm/types/logger.d.ts +0 -147
  202. package/dist/esm/types/logger.js +0 -2
  203. package/dist/esm/types/logger.js.map +0 -1
  204. package/dist/esm/utils/colors.d.ts +0 -87
  205. package/dist/esm/utils/colors.js +0 -146
  206. package/dist/esm/utils/colors.js.map +0 -1
  207. package/dist/esm/utils/index.d.ts +0 -3
  208. package/dist/esm/utils/index.js +0 -4
  209. package/dist/esm/utils/index.js.map +0 -1
  210. package/dist/esm/utils/proxy-tracker.d.ts +0 -68
  211. package/dist/esm/utils/proxy-tracker.js +0 -127
  212. package/dist/esm/utils/proxy-tracker.js.map +0 -1
  213. package/dist/esm/utils/stack.d.ts +0 -63
  214. package/dist/esm/utils/stack.js +0 -110
  215. package/dist/esm/utils/stack.js.map +0 -1
  216. package/dist/esm/utils/string.d.ts +0 -29
  217. package/dist/esm/utils/string.js +0 -45
  218. package/dist/esm/utils/string.js.map +0 -1
  219. package/dist/esm/utils/timing.d.ts +0 -65
  220. package/dist/esm/utils/timing.js +0 -99
  221. package/dist/esm/utils/timing.js.map +0 -1
  222. package/dist/formatters/ascii.d.ts +0 -52
  223. package/dist/formatters/ascii.js +0 -104
  224. package/dist/formatters/ascii.js.map +0 -1
  225. package/dist/formatters/cli.d.ts +0 -50
  226. package/dist/formatters/cli.js +0 -100
  227. package/dist/formatters/cli.js.map +0 -1
  228. package/dist/formatters/index.d.ts +0 -3
  229. package/dist/formatters/index.js +0 -20
  230. package/dist/formatters/index.js.map +0 -1
  231. package/dist/formatters/json.d.ts +0 -45
  232. package/dist/formatters/json.js +0 -89
  233. package/dist/formatters/json.js.map +0 -1
  234. package/dist/trackers/execution.d.ts +0 -101
  235. package/dist/trackers/execution.js +0 -230
  236. package/dist/trackers/execution.js.map +0 -1
  237. package/dist/trackers/index.d.ts +0 -2
  238. package/dist/trackers/index.js +0 -19
  239. package/dist/trackers/index.js.map +0 -1
  240. package/dist/trackers/performance.d.ts +0 -68
  241. package/dist/trackers/performance.js +0 -116
  242. package/dist/trackers/performance.js.map +0 -1
  243. package/dist/types/config.d.ts +0 -142
  244. package/dist/types/config.js.map +0 -1
  245. package/dist/types/logger.d.ts +0 -147
  246. package/dist/types/logger.js +0 -3
  247. package/dist/types/logger.js.map +0 -1
  248. package/dist/types.d.ts +0 -65
  249. package/dist/types.js +0 -6
  250. package/dist/types.js.map +0 -1
  251. package/dist/utils/colors.d.ts +0 -87
  252. package/dist/utils/colors.js +0 -160
  253. package/dist/utils/colors.js.map +0 -1
  254. package/dist/utils/index.d.ts +0 -3
  255. package/dist/utils/index.js +0 -20
  256. package/dist/utils/index.js.map +0 -1
  257. package/dist/utils/proxy-tracker.d.ts +0 -68
  258. package/dist/utils/proxy-tracker.js +0 -131
  259. package/dist/utils/proxy-tracker.js.map +0 -1
  260. package/dist/utils/stack.d.ts +0 -63
  261. package/dist/utils/stack.js +0 -116
  262. package/dist/utils/stack.js.map +0 -1
  263. package/dist/utils/string.d.ts +0 -29
  264. package/dist/utils/string.js +0 -50
  265. package/dist/utils/string.js.map +0 -1
  266. package/dist/utils/timing.d.ts +0 -65
  267. package/dist/utils/timing.js +0 -106
  268. package/dist/utils/timing.js.map +0 -1
package/dist/browser.js CHANGED
@@ -6,402 +6,74 @@
6
6
  * in React, Next.js, or other frontend applications.
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.BrowserExecutionTracker = exports.BrowserPerformanceMonitor = exports.BrowserLogger = exports.TrackingMode = void 0;
9
+ exports.instrumentFetch = exports.formatTree = exports.recordToJSON = exports.openTelemetryExporter = exports.jsonLinesExporter = exports.toChromeTrace = exports.performanceTimeline = exports.BrowserLogger = exports.TrackingMode = void 0;
10
10
  exports.createBrowserLogger = createBrowserLogger;
11
11
  exports.createTracePerf = createTracePerf;
12
+ const optimized_performance_monitor_1 = require("./core/optimized-performance-monitor");
12
13
  // Define tracking mode constants to avoid circular dependencies
13
- exports.TrackingMode = {
14
- PERFORMANCE: 'performance',
15
- BALANCED: 'balanced',
16
- DETAILED: 'detailed',
17
- DEBUG: 'debug'
14
+ exports.TrackingMode = optimized_performance_monitor_1.TrackingModes;
15
+ const preserveSignature = (wrapper, fn) => {
16
+ Object.defineProperty(wrapper, 'name', { value: fn.name, configurable: true });
17
+ Object.defineProperty(wrapper, 'length', { value: fn.length, configurable: true });
18
18
  };
19
19
  /**
20
- * Browser-compatible performance monitoring
21
- */
22
- class BrowserPerformanceMonitor {
23
- constructor(options = {}) {
24
- var _a;
25
- this._timers = new Map();
26
- this._defaultThreshold = (_a = options.defaultThreshold) !== null && _a !== void 0 ? _a : 100; // ms
27
- }
28
- startTimer(label) {
29
- const id = `${label}-${Math.random().toString(36).substring(2, 9)}`;
30
- this._timers.set(id, performance.now());
31
- return id;
32
- }
33
- endTimer(id) {
34
- const startTime = this._timers.get(id);
35
- if (!startTime) {
36
- throw new Error(`Timer with id ${id} not found`);
37
- }
38
- const duration = performance.now() - startTime;
39
- this._timers.delete(id);
40
- return duration;
41
- }
42
- isBottleneck(duration, threshold) {
43
- const effectiveThreshold = threshold !== null && threshold !== void 0 ? threshold : this._defaultThreshold;
44
- return duration > effectiveThreshold;
45
- }
46
- /**
47
- * Get memory usage from browser performance API
48
- * @returns Memory usage object with heap metrics or undefined if not available
49
- */
50
- getMemoryUsage() {
51
- try {
52
- // Chrome-specific memory API
53
- if (performance && 'memory' in performance) {
54
- const memory = performance.memory;
55
- return {
56
- heapUsed: (memory === null || memory === void 0 ? void 0 : memory.usedJSHeapSize) || 0,
57
- heapTotal: (memory === null || memory === void 0 ? void 0 : memory.totalJSHeapSize) || 0,
58
- external: 0, // Not available in browser
59
- rss: 0, // Not available in browser
60
- };
61
- }
62
- // Firefox has a different memory API
63
- if (window && window.performance && window.performance.memory) {
64
- const memory = window.performance.memory;
65
- return {
66
- heapUsed: memory.usedJSHeapSize || 0,
67
- heapTotal: memory.totalJSHeapSize || 0,
68
- external: 0,
69
- rss: 0,
70
- };
71
- }
72
- return undefined;
73
- }
74
- catch (e) {
75
- console.warn('Memory API not available or permission denied:', e);
76
- return undefined;
77
- }
78
- }
79
- /**
80
- * Calculate memory difference
81
- * @param start - Starting memory usage
82
- * @returns Memory difference in bytes
83
- */
84
- getMemoryDiff(start) {
85
- try {
86
- const current = this.getMemoryUsage();
87
- if (!current)
88
- return 0;
89
- const diff = current.heapUsed - start.heapUsed;
90
- // Return zero instead of negative values
91
- return Math.max(0, diff);
92
- }
93
- catch (e) {
94
- console.warn('Error calculating memory difference:', e);
95
- return 0;
96
- }
97
- }
98
- now() {
99
- return performance.now();
100
- }
101
- generateSuggestion(functionName, duration, memoryUsage) {
102
- if (duration > 1000) {
103
- return `🛠 Potential Fix: Consider optimizing or adding caching to ${functionName}`;
104
- }
105
- if (duration > 500) {
106
- return `🛠 Potential Fix: Look for blocking operations in ${functionName}`;
107
- }
108
- return `🛠 Potential Fix: Review ${functionName} for performance optimizations`;
109
- }
110
- }
111
- exports.BrowserPerformanceMonitor = BrowserPerformanceMonitor;
112
- /**
113
- * Browser-compatible execution tracker for tracking function calls and generating flow charts
20
+ * Browser-compatible TracePerf instance.
21
+ *
22
+ * Shares the core tracker with the Node.js entry (same nesting, statistics,
23
+ * hooks, exporters and options) and adds console-style logging methods.
24
+ * Output uses the browser format:
25
+ *
26
+ * Execution Flow:
27
+ * → parent (12.34ms)
28
+ * → child (10.01ms)
114
29
  */
115
- class BrowserExecutionTracker {
116
- /**
117
- * Create a new BrowserExecutionTracker instance
118
- *
119
- * @param options - Tracker options
120
- */
121
- constructor(options = {}) {
122
- var _a;
123
- this._callStack = [];
124
- this._executions = [];
125
- this._currentExecution = null;
126
- this._trackedFunctions = new Map();
127
- this._defaultThreshold = (_a = options.defaultThreshold) !== null && _a !== void 0 ? _a : 100; // ms
128
- this._performanceMonitor = new BrowserPerformanceMonitor(options);
129
- // Get a reference to the global scope (window in browsers)
130
- this._globalScope = typeof window !== 'undefined' ? window :
131
- typeof global !== 'undefined' ? global :
132
- {};
133
- }
134
- /**
135
- * Generate a performance optimization suggestion based on execution duration
136
- *
137
- * @param name - Function name
138
- * @param duration - Execution duration in ms
139
- * @returns Optimization suggestion
140
- */
141
- generateSuggestion(name, duration) {
142
- if (duration > 500) {
143
- return `Function "${name}" took ${duration.toFixed(2)}ms to execute. Consider optimizing or breaking it down into smaller functions.`;
144
- }
145
- else if (duration > 200) {
146
- return `Function "${name}" took ${duration.toFixed(2)}ms to execute. Consider optimizing if called frequently.`;
147
- }
148
- else if (duration > 100) {
149
- return `Function "${name}" took ${duration.toFixed(2)}ms to execute. Monitor if called in critical paths.`;
30
+ class BrowserLogger extends optimized_performance_monitor_1.OptimizedPerformanceMonitor {
31
+ constructor(config = {}) {
32
+ super({
33
+ trackingMode: config.trackingMode,
34
+ silent: config.silent,
35
+ trackMemory: config.trackMemory,
36
+ enableNestedTracking: config.enableNestedTracking,
37
+ threshold: config.threshold,
38
+ sampleRate: config.sampleRate,
39
+ enabled: config.enabled,
40
+ blockingThreshold: config.blockingThreshold,
41
+ stats: config.stats,
42
+ plugins: config.plugins,
43
+ onComplete: config.onComplete,
44
+ reporter: config.reporter,
45
+ asyncLocalStorage: config.asyncLocalStorage
46
+ });
47
+ this._mode = 'dev';
48
+ this._indentLevel = 0;
49
+ this._mode = config.mode || 'dev';
50
+ this._slowThreshold = config.performanceThreshold || 100;
51
+ if (!config.reporter) {
52
+ this.setConfig({ reporter: root => console.log(this.formatFlow(root)) });
150
53
  }
151
- return '';
152
54
  }
153
55
  /**
154
- * Track the execution of a function
155
- *
156
- * @param fn - The function to track
157
- * @param options - Options for tracking
158
- * @returns The return value of the tracked function
56
+ * Render an execution tree in the browser output format
159
57
  */
160
- track(fn, options = {}) {
161
- var _a, _b, _c;
162
- const fnName = options.label || fn.name || 'anonymous';
163
- const threshold = (_a = options.threshold) !== null && _a !== void 0 ? _a : this._defaultThreshold;
164
- const enableNestedTracking = (_b = options.enableNestedTracking) !== null && _b !== void 0 ? _b : true;
165
- const trackMemory = (_c = options.trackMemory) !== null && _c !== void 0 ? _c : true;
166
- // Get memory usage before execution
167
- let startMemory;
168
- if (trackMemory) {
169
- try {
170
- startMemory = this._performanceMonitor.getMemoryUsage();
171
- }
172
- catch (e) {
173
- console.warn('Unable to track memory usage:', e);
58
+ formatFlow(root) {
59
+ const lines = ['Execution Flow:'];
60
+ const visit = (record, level) => {
61
+ const indent = ' '.repeat(level);
62
+ const slowThreshold = record.threshold > 0 ? record.threshold : this._slowThreshold;
63
+ const isSlow = record.duration > slowThreshold;
64
+ const memory = record.memoryDelta !== undefined && record.memoryDelta > 0
65
+ ? ` [${formatMemorySize(record.memoryDelta)}]` : '';
66
+ lines.push(`${indent}→ ${record.label} (${record.duration.toFixed(2)}ms)${isSlow ? ' [SLOW]' : ''}${memory}`);
67
+ const suggestion = isSlow ? slowSuggestion(record.label, record.duration) : '';
68
+ if (suggestion) {
69
+ lines.push(`${indent} ⚠️ ${suggestion}`);
174
70
  }
175
- }
176
- // Add to call stack
177
- this._callStack.push(fnName);
178
- // Create execution record
179
- const execution = {
180
- name: fnName,
181
- duration: 0,
182
- isSlow: false,
183
- level: this._callStack.length - 1,
184
- startTime: performance.now(),
185
- children: [],
186
- };
187
- // Set parent-child relationship
188
- if (this._currentExecution && enableNestedTracking) {
189
- execution.parent = this._currentExecution;
190
- this._currentExecution.children.push(execution);
191
- }
192
- else {
193
- // This is a root execution
194
- this._executions.push(execution);
195
- }
196
- // Save the previous current execution
197
- const previousExecution = this._currentExecution;
198
- // Set this as the current execution
199
- this._currentExecution = execution;
200
- let result;
201
- try {
202
- // Execute the function
203
- result = fn();
204
- }
205
- catch (error) {
206
- // End timing
207
- const endTime = performance.now();
208
- execution.endTime = endTime;
209
- execution.duration = endTime - execution.startTime;
210
- execution.isSlow = execution.duration > threshold;
211
- // Calculate memory usage
212
- if (trackMemory && startMemory !== undefined) {
213
- try {
214
- const memoryDiff = this._performanceMonitor.getMemoryDiff(startMemory);
215
- execution.memoryUsage = memoryDiff;
216
- }
217
- catch (e) {
218
- console.warn('Error calculating memory usage:', e);
219
- }
220
- }
221
- // Restore the previous current execution
222
- this._currentExecution = previousExecution;
223
- // Remove from call stack
224
- this._callStack.pop();
225
- // Re-throw the error
226
- throw error;
227
- }
228
- // End timing
229
- const endTime = performance.now();
230
- execution.endTime = endTime;
231
- execution.duration = endTime - execution.startTime;
232
- execution.isSlow = execution.duration > threshold;
233
- // Calculate memory usage
234
- if (trackMemory && startMemory !== undefined) {
235
- try {
236
- const memoryDiff = this._performanceMonitor.getMemoryDiff(startMemory);
237
- execution.memoryUsage = memoryDiff;
238
- }
239
- catch (e) {
240
- console.warn('Error calculating memory usage:', e);
241
- }
242
- }
243
- // Generate suggestion if slow
244
- if (execution.isSlow) {
245
- execution.suggestion = this.generateSuggestion(fnName, execution.duration);
246
- }
247
- // Restore the previous current execution
248
- this._currentExecution = previousExecution;
249
- // Remove from call stack
250
- this._callStack.pop();
251
- return result;
252
- }
253
- /**
254
- * Create a trackable version of a function
255
- *
256
- * This is a helper method to create a tracked version of a function
257
- * that can be used for nested function tracking.
258
- *
259
- * @param fn - The function to make trackable
260
- * @param options - Options for tracking
261
- * @returns A tracked version of the function
262
- */
263
- createTrackable(fn, options) {
264
- var _a, _b, _c;
265
- const label = (options === null || options === void 0 ? void 0 : options.label) || fn.name || 'anonymous';
266
- const threshold = (_a = options === null || options === void 0 ? void 0 : options.threshold) !== null && _a !== void 0 ? _a : 100; // Use a sensible default of 100ms
267
- const enableNestedTracking = (_b = options === null || options === void 0 ? void 0 : options.enableNestedTracking) !== null && _b !== void 0 ? _b : true;
268
- const trackMemory = (_c = options === null || options === void 0 ? void 0 : options.trackMemory) !== null && _c !== void 0 ? _c : true;
269
- const trackingMode = (options === null || options === void 0 ? void 0 : options.trackingMode) || exports.TrackingMode.BALANCED;
270
- // Create a tracked version of the function using arrow function
271
- const self = this;
272
- return function (...args) {
273
- return self.track(() => fn.apply(this, args), {
274
- ...options,
275
- label,
276
- threshold,
277
- enableNestedTracking,
278
- trackMemory,
279
- trackingMode
280
- });
71
+ record.children
72
+ .filter(child => child.duration >= child.threshold)
73
+ .forEach(child => visit(child, level + 1));
281
74
  };
282
- }
283
- /**
284
- * Get the current call stack
285
- *
286
- * @returns The current call stack
287
- */
288
- getCallStack() {
289
- return [...this._callStack];
290
- }
291
- /**
292
- * Generate a visual representation of the execution flow
293
- *
294
- * @returns ASCII flow chart of the execution
295
- */
296
- generateFlowChart() {
297
- let result = 'Execution Flow:\n';
298
- // Process each execution
299
- this.prepareExecutionData(this._executions).forEach(execution => {
300
- const indent = ' '.repeat(execution.level);
301
- const durationStr = execution.duration.toFixed(2);
302
- const slowMarker = execution.isSlow ? ' [SLOW]' : '';
303
- let memoryStr = '';
304
- if (execution.memoryUsage !== undefined && execution.memoryUsage > 0) {
305
- memoryStr = ` [${this.formatMemorySize(execution.memoryUsage)}]`;
306
- }
307
- result += `${indent}→ ${execution.name} (${durationStr}ms)${slowMarker}${memoryStr}\n`;
308
- // Add suggestion if available
309
- if (execution.suggestion) {
310
- result += `${indent} ⚠️ ${execution.suggestion}\n`;
311
- }
312
- });
313
- return result;
314
- }
315
- /**
316
- * Prepare execution data for the flow chart
317
- *
318
- * @param executions - The execution records to prepare
319
- * @returns A list of execution data
320
- */
321
- prepareExecutionData(executions) {
322
- const result = [];
323
- // Process each root execution
324
- executions.forEach(execution => {
325
- // Add the root execution
326
- result.push({
327
- name: execution.name,
328
- duration: execution.duration,
329
- isSlow: execution.isSlow,
330
- suggestion: execution.suggestion,
331
- level: execution.level,
332
- memoryUsage: execution.memoryUsage
333
- });
334
- // Add children recursively
335
- this.addChildrenToResult(execution.children, result);
336
- });
337
- return result;
338
- }
339
- /**
340
- * Add children to the result list
341
- *
342
- * @param children - The children to add
343
- * @param result - The result list
344
- */
345
- addChildrenToResult(children, result) {
346
- children.forEach(child => {
347
- // Add the child
348
- result.push({
349
- name: child.name,
350
- duration: child.duration,
351
- isSlow: child.isSlow,
352
- suggestion: child.suggestion,
353
- level: child.level,
354
- memoryUsage: child.memoryUsage
355
- });
356
- // Add grandchildren recursively
357
- this.addChildrenToResult(child.children, result);
358
- });
359
- }
360
- /**
361
- * Format memory size for display
362
- * @param bytes Memory usage in bytes
363
- * @returns Formatted string
364
- */
365
- formatMemorySize(bytes) {
366
- if (bytes < 1024) {
367
- return `${bytes.toFixed(2)}B`;
368
- }
369
- else if (bytes < 1024 * 1024) {
370
- return `${(bytes / 1024).toFixed(2)}KB`;
371
- }
372
- else if (bytes < 1024 * 1024 * 1024) {
373
- return `${(bytes / (1024 * 1024)).toFixed(2)}MB`;
374
- }
375
- else {
376
- return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)}GB`;
377
- }
378
- }
379
- /**
380
- * Clear all execution records
381
- */
382
- clear() {
383
- this._executions = [];
384
- this._currentExecution = null;
385
- this._callStack = [];
386
- }
387
- }
388
- exports.BrowserExecutionTracker = BrowserExecutionTracker;
389
- /**
390
- * Browser-compatible logger
391
- */
392
- class BrowserLogger {
393
- constructor(config = {}) {
394
- this._mode = 'dev';
395
- this._indentLevel = 0;
396
- this._trackingMode = exports.TrackingMode.BALANCED;
397
- this._mode = config.mode || 'dev';
398
- this._trackingMode = config.trackingMode || exports.TrackingMode.BALANCED;
399
- this._executionTracker = new BrowserExecutionTracker({
400
- defaultThreshold: config.performanceThreshold || 100,
401
- });
402
- this._performanceMonitor = new BrowserPerformanceMonitor({
403
- defaultThreshold: config.performanceThreshold || 100,
404
- });
75
+ visit(root, 0);
76
+ return lines.join('\n');
405
77
  }
406
78
  info(message, ...args) {
407
79
  this.log('info', message, args);
@@ -445,63 +117,25 @@ class BrowserLogger {
445
117
  * @returns This instance for chaining
446
118
  */
447
119
  setTrackingMode(mode) {
448
- this._trackingMode = mode;
120
+ super.setTrackingMode(mode);
449
121
  return this;
450
122
  }
451
123
  /**
452
- * Get the current tracking mode
453
- * @returns Current tracking mode
124
+ * Create a trackable version of a function. Calls go through `track()`,
125
+ * so nested trackables attach to their caller.
454
126
  */
455
- getTrackingMode() {
456
- return this._trackingMode;
457
- }
458
- track(fn, options) {
459
- var _a, _b;
460
- const silent = (_a = options === null || options === void 0 ? void 0 : options.silent) !== null && _a !== void 0 ? _a : false;
461
- const trackMemory = (_b = options === null || options === void 0 ? void 0 : options.trackMemory) !== null && _b !== void 0 ? _b : true;
462
- const trackingMode = (options === null || options === void 0 ? void 0 : options.trackingMode) || this._trackingMode;
463
- // Track the function execution
464
- const result = this._executionTracker.track(fn, {
127
+ createTrackable(fn, options = {}) {
128
+ const label = options.label || fn.name || 'anonymous';
129
+ // Use a regular function so callers keep their own `this`
130
+ const run = (thisArg, args) => this.track(() => fn.apply(thisArg, args), {
465
131
  ...options,
466
- trackMemory,
467
- trackingMode
132
+ label
468
133
  });
469
- // Log the execution flow if not silent
470
- if (!silent) {
471
- const flowChart = this._executionTracker.generateFlowChart();
472
- console.log(flowChart);
473
- }
474
- return result;
475
- }
476
- /**
477
- * Create a trackable version of a function
478
- *
479
- * This is a helper method to create a tracked version of a function
480
- * that can be used for nested function tracking.
481
- *
482
- * @param fn - The function to make trackable
483
- * @param options - Options for tracking
484
- * @returns A tracked version of the function
485
- */
486
- createTrackable(fn, options) {
487
- var _a, _b, _c;
488
- const label = (options === null || options === void 0 ? void 0 : options.label) || fn.name || 'anonymous';
489
- const threshold = (_a = options === null || options === void 0 ? void 0 : options.threshold) !== null && _a !== void 0 ? _a : 100; // Use a sensible default of 100ms
490
- const enableNestedTracking = (_b = options === null || options === void 0 ? void 0 : options.enableNestedTracking) !== null && _b !== void 0 ? _b : true;
491
- const trackMemory = (_c = options === null || options === void 0 ? void 0 : options.trackMemory) !== null && _c !== void 0 ? _c : true;
492
- const trackingMode = (options === null || options === void 0 ? void 0 : options.trackingMode) || this._trackingMode;
493
- // Create a tracked version of the function using arrow function
494
- const self = this;
495
- return function (...args) {
496
- return self.track(() => fn.apply(this, args), {
497
- ...options,
498
- label,
499
- threshold,
500
- enableNestedTracking,
501
- trackMemory,
502
- trackingMode
503
- });
134
+ const tracked = function (...args) {
135
+ return run(this, args);
504
136
  };
137
+ preserveSignature(tracked, fn);
138
+ return tracked;
505
139
  }
506
140
  log(level, message, args) {
507
141
  // Skip logs based on mode
@@ -520,7 +154,7 @@ class BrowserLogger {
520
154
  try {
521
155
  formattedMessage = JSON.stringify(message, null, 2);
522
156
  }
523
- catch (error) {
157
+ catch (_a) {
524
158
  formattedMessage = String(message);
525
159
  }
526
160
  }
@@ -545,12 +179,39 @@ class BrowserLogger {
545
179
  }
546
180
  }
547
181
  exports.BrowserLogger = BrowserLogger;
182
+ function formatMemorySize(bytes) {
183
+ if (bytes < 1024) {
184
+ return `${bytes.toFixed(2)}B`;
185
+ }
186
+ else if (bytes < 1024 * 1024) {
187
+ return `${(bytes / 1024).toFixed(2)}KB`;
188
+ }
189
+ else if (bytes < 1024 * 1024 * 1024) {
190
+ return `${(bytes / (1024 * 1024)).toFixed(2)}MB`;
191
+ }
192
+ return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)}GB`;
193
+ }
194
+ function slowSuggestion(name, duration) {
195
+ if (duration > 500) {
196
+ return `Function "${name}" took ${duration.toFixed(2)}ms to execute. Consider optimizing or breaking it down into smaller functions.`;
197
+ }
198
+ else if (duration > 200) {
199
+ return `Function "${name}" took ${duration.toFixed(2)}ms to execute. Consider optimizing if called frequently.`;
200
+ }
201
+ else if (duration > 100) {
202
+ return `Function "${name}" took ${duration.toFixed(2)}ms to execute. Monitor if called in critical paths.`;
203
+ }
204
+ return '';
205
+ }
548
206
  /**
549
207
  * Create a browser-compatible logger instance
550
208
  * @param config Configuration options
551
209
  * @returns Browser logger instance
552
210
  */
553
211
  function createBrowserLogger(config = {}) {
212
+ if (config.logger instanceof BrowserLogger) {
213
+ return config.logger;
214
+ }
554
215
  return new BrowserLogger(config);
555
216
  }
556
217
  /**
@@ -566,16 +227,28 @@ function createTracePerf(config = {}) {
566
227
  const browserLogger = createBrowserLogger();
567
228
  // Export the default instance
568
229
  exports.default = browserLogger;
569
- // Add CommonJS compatibility
230
+ // Plugins and exporters that work in browsers
231
+ var timeline_1 = require("./core/timeline");
232
+ Object.defineProperty(exports, "performanceTimeline", { enumerable: true, get: function () { return timeline_1.performanceTimeline; } });
233
+ var exporters_1 = require("./core/exporters");
234
+ Object.defineProperty(exports, "toChromeTrace", { enumerable: true, get: function () { return exporters_1.toChromeTrace; } });
235
+ Object.defineProperty(exports, "jsonLinesExporter", { enumerable: true, get: function () { return exporters_1.jsonLinesExporter; } });
236
+ Object.defineProperty(exports, "openTelemetryExporter", { enumerable: true, get: function () { return exporters_1.openTelemetryExporter; } });
237
+ Object.defineProperty(exports, "recordToJSON", { enumerable: true, get: function () { return exporters_1.recordToJSON; } });
238
+ var records_1 = require("./core/records");
239
+ Object.defineProperty(exports, "formatTree", { enumerable: true, get: function () { return records_1.formatTree; } });
240
+ var instrument_1 = require("./instrument");
241
+ Object.defineProperty(exports, "instrumentFetch", { enumerable: true, get: function () { return instrument_1.instrumentFetch; } });
242
+ // <cjs-compat>
243
+ // CommonJS compatibility (stripped from the ESM build)
570
244
  if (typeof module !== 'undefined' && module.exports) {
571
- module.exports = Object.assign(browserLogger, {
245
+ module.exports = Object.assign(browserLogger, module.exports, {
572
246
  default: browserLogger,
573
247
  createBrowserLogger,
574
248
  createTracePerf,
575
249
  BrowserLogger,
576
- BrowserPerformanceMonitor,
577
- BrowserExecutionTracker,
578
250
  TrackingMode: exports.TrackingMode
579
251
  });
580
252
  }
253
+ // </cjs-compat>
581
254
  //# sourceMappingURL=browser.js.map
@@ -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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"}