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
@@ -4,141 +4,58 @@
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 { ILoggerConfig, LogMode, ITrackOptions } from './types';
7
+ import type { TracePerfConfig, TrackOptions } from './types/options.js';
8
+ import { OptimizedPerformanceMonitor } from './core/optimized-performance-monitor.js';
9
+ import type { ExecutionRecord } from './core/records.js';
8
10
  export declare const TrackingMode: {
9
- PERFORMANCE: string;
10
- BALANCED: string;
11
- DETAILED: string;
12
- DEBUG: string;
11
+ readonly PERFORMANCE: "performance";
12
+ readonly BALANCED: "balanced";
13
+ readonly DETAILED: "detailed";
14
+ readonly DEBUG: "debug";
13
15
  };
14
16
  /**
15
- * Browser-compatible performance monitoring
17
+ * Configuration accepted by the browser createTracePerf()/BrowserLogger
16
18
  */
17
- declare class BrowserPerformanceMonitor {
18
- private _timers;
19
- private _defaultThreshold;
20
- constructor(options?: {
21
- defaultThreshold?: number;
22
- });
23
- startTimer(label: string): string;
24
- endTimer(id: string): number;
25
- isBottleneck(duration: number, threshold?: number): boolean;
26
- /**
27
- * Get memory usage from browser performance API
28
- * @returns Memory usage object with heap metrics or undefined if not available
29
- */
30
- getMemoryUsage(): {
31
- heapUsed: number;
32
- heapTotal: number;
33
- external: number;
34
- rss: number;
35
- } | undefined;
36
- /**
37
- * Calculate memory difference
38
- * @param start - Starting memory usage
39
- * @returns Memory difference in bytes
40
- */
41
- getMemoryDiff(start: {
42
- heapUsed: number;
43
- }): number;
44
- now(): number;
45
- generateSuggestion(functionName: string, duration: number, memoryUsage?: number): string;
46
- }
19
+ /** Log levels for BrowserLogger's console methods */
20
+ export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
47
21
  /**
48
- * Browser-compatible execution tracker for tracking function calls and generating flow charts
22
+ * BrowserLogger console-method filtering:
23
+ * - dev: everything
24
+ * - staging: warn and error
25
+ * - prod: error only
49
26
  */
50
- declare class BrowserExecutionTracker {
51
- private _callStack;
52
- private _executions;
53
- private _currentExecution;
54
- private _defaultThreshold;
55
- private _globalScope;
56
- private _trackedFunctions;
57
- private _performanceMonitor;
58
- /**
59
- * Create a new BrowserExecutionTracker instance
60
- *
61
- * @param options - Tracker options
62
- */
63
- constructor(options?: {
64
- defaultThreshold?: number;
65
- });
66
- /**
67
- * Generate a performance optimization suggestion based on execution duration
68
- *
69
- * @param name - Function name
70
- * @param duration - Execution duration in ms
71
- * @returns Optimization suggestion
72
- */
73
- private generateSuggestion;
74
- /**
75
- * Track the execution of a function
76
- *
77
- * @param fn - The function to track
78
- * @param options - Options for tracking
79
- * @returns The return value of the tracked function
80
- */
81
- track<T>(fn: () => T, options?: any): T;
82
- /**
83
- * Create a trackable version of a function
84
- *
85
- * This is a helper method to create a tracked version of a function
86
- * that can be used for nested function tracking.
87
- *
88
- * @param fn - The function to make trackable
89
- * @param options - Options for tracking
90
- * @returns A tracked version of the function
91
- */
92
- createTrackable<T extends (...args: any[]) => any>(fn: T, options?: Omit<ITrackOptions, 'label'> & {
93
- label?: string;
94
- }): (...args: Parameters<T>) => ReturnType<T>;
95
- /**
96
- * Get the current call stack
97
- *
98
- * @returns The current call stack
99
- */
100
- getCallStack(): string[];
101
- /**
102
- * Generate a visual representation of the execution flow
103
- *
104
- * @returns ASCII flow chart of the execution
105
- */
106
- generateFlowChart(): string;
107
- /**
108
- * Prepare execution data for the flow chart
109
- *
110
- * @param executions - The execution records to prepare
111
- * @returns A list of execution data
112
- */
113
- private prepareExecutionData;
114
- /**
115
- * Add children to the result list
116
- *
117
- * @param children - The children to add
118
- * @param result - The result list
119
- */
120
- private addChildrenToResult;
121
- /**
122
- * Format memory size for display
123
- * @param bytes Memory usage in bytes
124
- * @returns Formatted string
125
- */
126
- private formatMemorySize;
127
- /**
128
- * Clear all execution records
129
- */
130
- clear(): void;
27
+ export type LogMode = 'dev' | 'staging' | 'prod';
28
+ /**
29
+ * Configuration accepted by the browser createTracePerf()/BrowserLogger
30
+ */
31
+ export interface IBrowserTracePerfConfig extends TracePerfConfig {
32
+ /** Filtering for info/warn/error/debug (default "dev") */
33
+ mode?: LogMode;
34
+ /** Calls slower than this (ms) are marked [SLOW] when no threshold is set (default 100) */
35
+ performanceThreshold?: number;
36
+ /** Use an existing logger instead of creating a new one */
37
+ logger?: BrowserLogger;
131
38
  }
132
39
  /**
133
- * Browser-compatible logger
40
+ * Browser-compatible TracePerf instance.
41
+ *
42
+ * Shares the core tracker with the Node.js entry (same nesting, statistics,
43
+ * hooks, exporters and options) and adds console-style logging methods.
44
+ * Output uses the browser format:
45
+ *
46
+ * Execution Flow:
47
+ * → parent (12.34ms)
48
+ * → child (10.01ms)
134
49
  */
135
- declare class BrowserLogger {
50
+ declare class BrowserLogger extends OptimizedPerformanceMonitor {
136
51
  private _mode;
137
52
  private _indentLevel;
138
- private _executionTracker;
139
- private _performanceMonitor;
140
- private _trackingMode;
141
- constructor(config?: Partial<ILoggerConfig>);
53
+ private _slowThreshold;
54
+ constructor(config?: IBrowserTracePerfConfig);
55
+ /**
56
+ * Render an execution tree in the browser output format
57
+ */
58
+ formatFlow(root: ExecutionRecord): string;
142
59
  info(message: string | object, ...args: any[]): void;
143
60
  warn(message: string | object, ...args: any[]): void;
144
61
  error(message: string | object, ...args: any[]): void;
@@ -154,24 +71,10 @@ declare class BrowserLogger {
154
71
  */
155
72
  setTrackingMode(mode: string): BrowserLogger;
156
73
  /**
157
- * Get the current tracking mode
158
- * @returns Current tracking mode
159
- */
160
- getTrackingMode(): string;
161
- track<T>(fn: () => T, options?: ITrackOptions): T;
162
- /**
163
- * Create a trackable version of a function
164
- *
165
- * This is a helper method to create a tracked version of a function
166
- * that can be used for nested function tracking.
167
- *
168
- * @param fn - The function to make trackable
169
- * @param options - Options for tracking
170
- * @returns A tracked version of the function
74
+ * Create a trackable version of a function. Calls go through `track()`,
75
+ * so nested trackables attach to their caller.
171
76
  */
172
- createTrackable<T extends (...args: any[]) => any>(fn: T, options?: Omit<ITrackOptions, 'label'> & {
173
- label?: string;
174
- }): (...args: Parameters<T>) => ReturnType<T>;
77
+ createTrackable<T extends (...args: any[]) => any>(fn: T, options?: TrackOptions): (...args: Parameters<T>) => ReturnType<T>;
175
78
  private log;
176
79
  }
177
80
  /**
@@ -179,14 +82,19 @@ declare class BrowserLogger {
179
82
  * @param config Configuration options
180
83
  * @returns Browser logger instance
181
84
  */
182
- export declare function createBrowserLogger(config?: Partial<ILoggerConfig>): BrowserLogger;
85
+ export declare function createBrowserLogger(config?: IBrowserTracePerfConfig): BrowserLogger;
183
86
  /**
184
87
  * Create a browser-compatible TracePerf instance
185
88
  * Alias of createBrowserLogger for API consistency with Node.js version
186
89
  * @param config Configuration options
187
90
  * @returns Browser logger instance
188
91
  */
189
- export declare function createTracePerf(config?: Partial<ILoggerConfig>): BrowserLogger;
92
+ export declare function createTracePerf(config?: IBrowserTracePerfConfig): BrowserLogger;
190
93
  declare const browserLogger: BrowserLogger;
191
94
  export default browserLogger;
192
- export { BrowserLogger, BrowserPerformanceMonitor, BrowserExecutionTracker };
95
+ export { BrowserLogger };
96
+ export { performanceTimeline } from './core/timeline.js';
97
+ export { toChromeTrace, jsonLinesExporter, openTelemetryExporter, recordToJSON } from './core/exporters.js';
98
+ export { formatTree } from './core/records.js';
99
+ export { instrumentFetch } from './instrument.js';
100
+ export type { ExecutionRecord, TracePerfPlugin } from './core/records.js';