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