traceperf 0.1.5 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +227 -223
  2. package/dist/browser.d.ts +52 -7
  3. package/dist/browser.js +198 -35
  4. package/dist/browser.js.map +1 -1
  5. package/dist/core/index.d.ts +1 -0
  6. package/dist/core/index.js +1 -0
  7. package/dist/core/index.js.map +1 -1
  8. package/dist/core/optimized-performance-monitor.d.ts +227 -0
  9. package/dist/core/optimized-performance-monitor.js +543 -0
  10. package/dist/core/optimized-performance-monitor.js.map +1 -0
  11. package/dist/esm/browser.d.ts +52 -7
  12. package/dist/esm/browser.js +196 -34
  13. package/dist/esm/browser.js.map +1 -1
  14. package/dist/esm/core/index.d.ts +1 -0
  15. package/dist/esm/core/index.js +1 -0
  16. package/dist/esm/core/index.js.map +1 -1
  17. package/dist/esm/core/optimized-performance-monitor.d.ts +227 -0
  18. package/dist/esm/core/optimized-performance-monitor.js +535 -0
  19. package/dist/esm/core/optimized-performance-monitor.js.map +1 -0
  20. package/dist/esm/index.d.ts +7 -8
  21. package/dist/esm/index.js +18 -19
  22. package/dist/esm/index.js.map +1 -1
  23. package/dist/esm/trackers/execution.d.ts +34 -26
  24. package/dist/esm/trackers/execution.js +99 -60
  25. package/dist/esm/trackers/execution.js.map +1 -1
  26. package/dist/esm/trackers/performance.d.ts +7 -21
  27. package/dist/esm/trackers/performance.js +25 -19
  28. package/dist/esm/trackers/performance.js.map +1 -1
  29. package/dist/esm/types/config.d.ts +16 -2
  30. package/dist/esm/types/index.d.ts +32 -34
  31. package/dist/esm/types/logger.d.ts +11 -2
  32. package/dist/esm/utils/colors.js +12 -0
  33. package/dist/esm/utils/colors.js.map +1 -1
  34. package/dist/esm/utils/string.d.ts +29 -0
  35. package/dist/esm/utils/string.js +45 -0
  36. package/dist/esm/utils/string.js.map +1 -0
  37. package/dist/index.d.ts +7 -8
  38. package/dist/index.js +42 -20
  39. package/dist/index.js.map +1 -1
  40. package/dist/trackers/execution.d.ts +34 -26
  41. package/dist/trackers/execution.js +98 -59
  42. package/dist/trackers/execution.js.map +1 -1
  43. package/dist/trackers/performance.d.ts +7 -21
  44. package/dist/trackers/performance.js +25 -19
  45. package/dist/trackers/performance.js.map +1 -1
  46. package/dist/types/config.d.ts +16 -2
  47. package/dist/types/index.d.ts +32 -34
  48. package/dist/types/logger.d.ts +11 -2
  49. package/dist/types.d.ts +65 -0
  50. package/dist/types.js +6 -0
  51. package/dist/types.js.map +1 -0
  52. package/dist/utils/colors.js +12 -0
  53. package/dist/utils/colors.js.map +1 -1
  54. package/dist/utils/string.d.ts +29 -0
  55. package/dist/utils/string.js +50 -0
  56. package/dist/utils/string.js.map +1 -0
  57. package/package.json +11 -8
@@ -0,0 +1,543 @@
1
+ "use strict";
2
+ /**
3
+ * Optimized Performance Monitoring Library
4
+ *
5
+ * This implementation incorporates all optimizations from benchmarking:
6
+ * 1. Tiered tracking modes for performance vs. detail balance
7
+ * 2. Context preservation for object methods
8
+ * 3. Async/Promise support
9
+ * 4. Browser/Node.js environment detection
10
+ * 5. Memory usage tracking optimizations
11
+ * 6. Module registration capability
12
+ * 7. Enhanced visualization
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.OptimizedPerformanceMonitor = exports.OptimizedExecutionTracker = exports.getDuration = exports.getTimestamp = exports.getMemoryUsage = exports.TrackingModes = void 0;
16
+ // Define tracking mode constants directly to avoid circular dependency
17
+ exports.TrackingModes = {
18
+ PERFORMANCE: 'performance',
19
+ BALANCED: 'balanced',
20
+ DETAILED: 'detailed',
21
+ DEBUG: 'debug'
22
+ };
23
+ // Define default tracking mode separately to avoid circular dependency
24
+ const DEFAULT_TRACKING_MODE = exports.TrackingModes.BALANCED;
25
+ /**
26
+ * Get current memory usage with environment detection
27
+ * @returns Memory usage in bytes
28
+ */
29
+ const getMemoryUsage = () => {
30
+ var _a;
31
+ // Safe check for Node.js process.memoryUsage()
32
+ if (typeof process !== 'undefined' && process.memoryUsage) {
33
+ const mem = process.memoryUsage();
34
+ return mem.heapUsed;
35
+ }
36
+ // Browser memory API if available
37
+ else if (typeof performance !== 'undefined' && 'memory' in performance) {
38
+ // @ts-expect-error This is a browser-specific check
39
+ return ((_a = window.performance.memory) === null || _a === void 0 ? void 0 : _a.usedJSHeapSize) || 0;
40
+ }
41
+ // Fallback when no memory API available
42
+ return 0;
43
+ };
44
+ exports.getMemoryUsage = getMemoryUsage;
45
+ /**
46
+ * Get high-resolution timestamp with environment detection
47
+ * @returns Timestamp in nanoseconds
48
+ */
49
+ const getTimestamp = () => {
50
+ // Use performance.now() in browsers (convert to nanoseconds)
51
+ if (typeof performance !== 'undefined' && performance.now) {
52
+ return performance.now() * 1000000;
53
+ }
54
+ // Use process.hrtime() in Node.js
55
+ else if (typeof process !== 'undefined' && process.hrtime) {
56
+ const hrTime = process.hrtime();
57
+ return hrTime[0] * 1000000000 + hrTime[1];
58
+ }
59
+ // Fallback to Date.now() (converted to nanoseconds)
60
+ return Date.now() * 1000000;
61
+ };
62
+ exports.getTimestamp = getTimestamp;
63
+ /**
64
+ * Calculate time difference between two timestamps
65
+ * @param startTime Starting timestamp in nanoseconds
66
+ * @returns Duration in nanoseconds
67
+ */
68
+ const getDuration = (startTime) => {
69
+ return (0, exports.getTimestamp)() - startTime;
70
+ };
71
+ exports.getDuration = getDuration;
72
+ /**
73
+ * Optimized tracker for individual function executions
74
+ */
75
+ class OptimizedExecutionTracker {
76
+ /**
77
+ * Create a new execution tracker
78
+ * @param options Tracker configuration options
79
+ */
80
+ constructor(options = {}) {
81
+ var _a, _b, _c, _d, _e;
82
+ this.executionTree = {};
83
+ this.currentExecutionId = 0;
84
+ this.activeExecutions = new Map();
85
+ // Formatters for flow chart generation
86
+ this._formatters = {
87
+ indent: ' ',
88
+ childPrefix: '├─ ',
89
+ lastChildPrefix: '└─ ',
90
+ linePrefix: '│ ',
91
+ emptyPrefix: ' ',
92
+ errorMarker: '✖ ',
93
+ memoryLabel: '📊 '
94
+ };
95
+ this.showMemoryUsage = (_a = options.showMemoryUsage) !== null && _a !== void 0 ? _a : true;
96
+ this.enableNestedTracking = (_b = options.enableNestedTracking) !== null && _b !== void 0 ? _b : true;
97
+ this.silent = (_c = options.silent) !== null && _c !== void 0 ? _c : false;
98
+ this.trackingMode = (_d = options.trackingMode) !== null && _d !== void 0 ? _d : exports.TrackingModes.BALANCED;
99
+ this.defaultThreshold = (_e = options.threshold) !== null && _e !== void 0 ? _e : 100;
100
+ }
101
+ /**
102
+ * Start timing a function execution
103
+ * @param label Function name or label
104
+ * @param parentExecutionId ID of parent execution if nested
105
+ * @param options Additional options
106
+ * @returns Execution ID
107
+ */
108
+ startTimer(label, parentExecutionId = null, options = {}) {
109
+ // Skip detailed tracking in performance mode
110
+ const collectMemory = this.trackingMode !== exports.TrackingModes.PERFORMANCE && this.showMemoryUsage;
111
+ const startTime = (0, exports.getTimestamp)();
112
+ const executionId = (++this.currentExecutionId).toString();
113
+ const execution = {
114
+ id: executionId,
115
+ label: label || 'anonymous',
116
+ startTime,
117
+ endTime: 0,
118
+ duration: 0,
119
+ parentId: parentExecutionId,
120
+ children: [],
121
+ args: options.captureArgs && options.args ?
122
+ Array.from(options.args).map(arg => String(arg).substring(0, 50)) : [],
123
+ complete: false
124
+ };
125
+ // Collect memory usage if enabled
126
+ if (collectMemory) {
127
+ execution.memoryAtStart = (0, exports.getMemoryUsage)();
128
+ execution.memoryAtEnd = 0;
129
+ execution.memoryDelta = 0;
130
+ }
131
+ // Add to parent's children if parent exists
132
+ if (parentExecutionId && this.activeExecutions.has(parentExecutionId)) {
133
+ const parent = this.activeExecutions.get(parentExecutionId);
134
+ if (parent && parent.children) {
135
+ parent.children.push(executionId);
136
+ }
137
+ }
138
+ // Store in active executions map
139
+ this.activeExecutions.set(executionId, execution);
140
+ return executionId;
141
+ }
142
+ /**
143
+ * End timing a function execution
144
+ * @param executionId ID of the execution to end
145
+ * @param result Result of the function
146
+ * @param error Error if the function threw
147
+ * @returns Execution data
148
+ */
149
+ endTimer(executionId, result, error = null) {
150
+ if (!this.activeExecutions.has(executionId)) {
151
+ return null;
152
+ }
153
+ const execution = this.activeExecutions.get(executionId);
154
+ execution.endTime = (0, exports.getTimestamp)();
155
+ execution.duration = execution.endTime - execution.startTime;
156
+ execution.result = result;
157
+ execution.error = error;
158
+ execution.complete = true;
159
+ // Only collect memory in non-performance modes
160
+ if (this.trackingMode !== exports.TrackingModes.PERFORMANCE && this.showMemoryUsage) {
161
+ execution.memoryAtEnd = (0, exports.getMemoryUsage)();
162
+ execution.memoryDelta = execution.memoryAtEnd - (execution.memoryAtStart || 0);
163
+ }
164
+ // Store in the execution tree
165
+ this.executionTree[executionId] = { ...execution };
166
+ // Generate flow chart if not silent
167
+ if (!this.silent && this.trackingMode !== exports.TrackingModes.PERFORMANCE) {
168
+ const flowChart = this._generateExecutionFlowChart(execution);
169
+ console.log(flowChart);
170
+ }
171
+ return execution;
172
+ }
173
+ /**
174
+ * Generate a visualization of the execution flow
175
+ * @param execution The execution to visualize
176
+ * @param depth Current depth in the tree
177
+ * @param isLastChild Whether this is the last child
178
+ * @param ancestors Array tracking if parents were last children
179
+ * @returns Formatted execution flow chart
180
+ */
181
+ _generateExecutionFlowChart(execution, depth = 0, isLastChild = true, ancestors = []) {
182
+ // Skip in performance mode
183
+ if (this.trackingMode === exports.TrackingModes.PERFORMANCE) {
184
+ return '';
185
+ }
186
+ // Build the flow chart
187
+ let flowChart = '';
188
+ // Format the execution line based on tracking mode
189
+ const durationStr = (execution.duration / 1000000).toFixed(3);
190
+ const formatters = this._formatters;
191
+ let line = `${formatters.indent.repeat(depth)}${isLastChild ? formatters.lastChildPrefix : formatters.childPrefix}${execution.label}: ${durationStr} ms`;
192
+ // Add memory usage if enabled and in detailed modes
193
+ if (this.showMemoryUsage &&
194
+ execution.memoryDelta !== undefined &&
195
+ this.trackingMode !== exports.TrackingModes.PERFORMANCE) {
196
+ const memoryStr = (execution.memoryDelta / 1024).toFixed(2);
197
+ const sign = execution.memoryDelta >= 0 ? '+' : '';
198
+ line += ` ${formatters.memoryLabel}${sign}${memoryStr} KB`;
199
+ }
200
+ // Add error indicator
201
+ if (execution.error && (this.trackingMode === exports.TrackingModes.DETAILED || this.trackingMode === exports.TrackingModes.DEBUG)) {
202
+ line += ` ${formatters.errorMarker}${execution.error.message}`;
203
+ }
204
+ flowChart += line + '\n';
205
+ // Process children (skip in performance mode)
206
+ if (execution.children && execution.children.length > 0 && this.trackingMode !== exports.TrackingModes.PERFORMANCE) {
207
+ const childExecutions = execution.children
208
+ .map(childId => this.executionTree[childId] || this.activeExecutions.get(childId))
209
+ .filter(Boolean);
210
+ for (let i = 0; i < childExecutions.length; i++) {
211
+ const isLast = i === childExecutions.length - 1;
212
+ const childFlowChart = this._generateExecutionFlowChart(childExecutions[i], depth + 1, isLast, [...ancestors, !isLastChild]);
213
+ flowChart += childFlowChart;
214
+ }
215
+ }
216
+ return flowChart;
217
+ }
218
+ /**
219
+ * Create a trackable version of a function
220
+ * @param fn Function to track
221
+ * @param options Tracking options
222
+ * @returns Tracked version of the function
223
+ */
224
+ createTrackable(fn, options = {}) {
225
+ if (typeof fn !== 'function') {
226
+ throw new Error('First argument must be a function');
227
+ }
228
+ const label = options.label || fn.name || 'anonymous';
229
+ const parentExecutionId = options.parentExecutionId || null;
230
+ const silent = options.hasOwnProperty('silent') ? options.silent : this.silent;
231
+ const trackingMode = options.trackingMode || this.trackingMode;
232
+ const sampleRate = options.hasOwnProperty('sampleRate') ?
233
+ Math.max(0, Math.min(1, options.sampleRate)) : 1.0;
234
+ // Performance optimization - if in performance mode and silent, return original function
235
+ if (trackingMode === exports.TrackingModes.PERFORMANCE &&
236
+ (options.silent || this.silent) &&
237
+ !this.enableNestedTracking) {
238
+ return fn;
239
+ }
240
+ // Create the tracked function using arrow function to preserve 'this'
241
+ const trackedFn = (...args) => {
242
+ // Apply sampling - randomly decide whether to track this call
243
+ const shouldSample = Math.random() < sampleRate;
244
+ // If not sampling this call, just execute the function directly
245
+ if (!shouldSample) {
246
+ return fn.apply(this, args);
247
+ }
248
+ // Start tracking the execution
249
+ const executionId = this.startTimer(label, parentExecutionId, {
250
+ trackMemory: options.trackMemory !== undefined ? options.trackMemory : this.showMemoryUsage,
251
+ captureArgs: options.captureArgs,
252
+ args: args
253
+ });
254
+ try {
255
+ // Execute the function with correct this context
256
+ const result = fn.apply(this, args);
257
+ // Handle promises
258
+ if (result && typeof result.then === 'function') {
259
+ return result
260
+ .then((resolvedValue) => {
261
+ this.endTimer(executionId, resolvedValue);
262
+ return resolvedValue;
263
+ })
264
+ .catch((error) => {
265
+ this.endTimer(executionId, undefined, error);
266
+ throw error; // Re-throw to preserve error behavior
267
+ });
268
+ }
269
+ // Handle synchronous functions
270
+ this.endTimer(executionId, result);
271
+ return result;
272
+ }
273
+ catch (error) {
274
+ // Handle synchronous errors
275
+ this.endTimer(executionId, undefined, error);
276
+ throw error; // Re-throw to preserve error behavior
277
+ }
278
+ };
279
+ // Preserve function properties
280
+ Object.defineProperty(trackedFn, 'name', { value: fn.name, configurable: true });
281
+ Object.defineProperty(trackedFn, 'length', { value: fn.length });
282
+ return trackedFn;
283
+ }
284
+ /**
285
+ * Track a module's methods
286
+ * @param module Module to track
287
+ * @param options Tracking options
288
+ * @returns Tracked module
289
+ */
290
+ trackModule(module, options = {}) {
291
+ if (!module || typeof module !== 'object') {
292
+ throw new Error('Module must be an object');
293
+ }
294
+ const prefix = options.prefix || '';
295
+ const trackingMode = options.trackingMode || this.trackingMode;
296
+ // Performance optimization - if in performance mode and silent, return original module
297
+ if (trackingMode === exports.TrackingModes.PERFORMANCE &&
298
+ (options.silent || this.silent) &&
299
+ !this.enableNestedTracking) {
300
+ return module;
301
+ }
302
+ // Create a new object to avoid modifying the original
303
+ const trackedModule = Object.create(Object.getPrototypeOf(module));
304
+ // Copy own properties
305
+ Object.getOwnPropertyNames(module).forEach(key => {
306
+ const descriptor = Object.getOwnPropertyDescriptor(module, key);
307
+ if (!descriptor)
308
+ return;
309
+ // If it's a method, track it
310
+ if (typeof module[key] === 'function') {
311
+ const methodOptions = {
312
+ ...options,
313
+ label: `${prefix}${key}`
314
+ };
315
+ trackedModule[key] = this.createTrackable(module[key], methodOptions);
316
+ }
317
+ else {
318
+ // Otherwise, just copy the property
319
+ Object.defineProperty(trackedModule, key, descriptor);
320
+ }
321
+ });
322
+ return trackedModule;
323
+ }
324
+ /**
325
+ * Track a function execution directly
326
+ * @param fn Function to track
327
+ * @param options Tracking options
328
+ * @returns Function result
329
+ */
330
+ track(fn, options = {}) {
331
+ // Create a trackable version and call it immediately
332
+ const trackableFn = this.createTrackable(fn, options);
333
+ return trackableFn.apply(options.thisContext || this, options.args || []);
334
+ }
335
+ /**
336
+ * Reset the tracker state
337
+ */
338
+ reset() {
339
+ this.executionTree = {};
340
+ this.currentExecutionId = 0;
341
+ this.activeExecutions = new Map();
342
+ }
343
+ }
344
+ exports.OptimizedExecutionTracker = OptimizedExecutionTracker;
345
+ /**
346
+ * Main performance monitoring interface
347
+ */
348
+ class OptimizedPerformanceMonitor {
349
+ /**
350
+ * Create a new performance monitor instance
351
+ * @param options Configuration options
352
+ */
353
+ constructor(options = {}) {
354
+ this.config = {
355
+ trackingMode: options.trackingMode || DEFAULT_TRACKING_MODE,
356
+ silent: options.silent || false,
357
+ trackMemory: options.trackMemory !== undefined ? options.trackMemory : true,
358
+ enableNestedTracking: options.enableNestedTracking !== undefined ? options.enableNestedTracking : true,
359
+ threshold: options.threshold || 100,
360
+ sampleRate: options.sampleRate !== undefined ?
361
+ Math.max(0, Math.min(1, options.sampleRate)) : 1.0 // Clamp between 0 and 1
362
+ };
363
+ this.executionTracker = new OptimizedExecutionTracker({
364
+ trackingMode: this.config.trackingMode,
365
+ silent: this.config.silent,
366
+ showMemoryUsage: this.config.trackMemory,
367
+ enableNestedTracking: this.config.enableNestedTracking,
368
+ threshold: this.config.threshold
369
+ });
370
+ }
371
+ /**
372
+ * Track a function execution
373
+ * @param fn The function to track
374
+ * @param options Tracking options
375
+ * @returns Result of the tracked function
376
+ */
377
+ track(fn, options = {}) {
378
+ if (typeof fn !== 'function') {
379
+ throw new Error('First argument must be a function');
380
+ }
381
+ // Merge global config with function-specific options
382
+ const trackingOptions = {
383
+ label: options.label || fn.name || 'anonymous',
384
+ trackingMode: options.trackingMode || this.config.trackingMode,
385
+ silent: options.hasOwnProperty('silent') ? options.silent : this.config.silent,
386
+ trackMemory: options.hasOwnProperty('trackMemory') ? options.trackMemory : this.config.trackMemory,
387
+ sampleRate: options.hasOwnProperty('sampleRate') ? options.sampleRate : this.config.sampleRate,
388
+ captureArgs: options.hasOwnProperty('captureArgs') ? options.captureArgs : false,
389
+ parentExecutionId: options.parentExecutionId || null,
390
+ thisContext: options.thisContext,
391
+ args: options.args
392
+ };
393
+ // Use the tracker to directly track the function
394
+ return this.executionTracker.track(fn, trackingOptions);
395
+ }
396
+ /**
397
+ * Create a trackable version of a function
398
+ * @param fn The function to track
399
+ * @param options Tracking options
400
+ * @returns Tracked version of the function
401
+ */
402
+ createTrackable(fn, options = {}) {
403
+ if (typeof fn !== 'function') {
404
+ throw new Error('First argument must be a function');
405
+ }
406
+ // Merge global config with function-specific options
407
+ const trackingOptions = {
408
+ label: options.label || fn.name || 'anonymous',
409
+ trackingMode: options.trackingMode || this.config.trackingMode,
410
+ silent: options.hasOwnProperty('silent') ? options.silent : this.config.silent,
411
+ trackMemory: options.hasOwnProperty('trackMemory') ? options.trackMemory : this.config.trackMemory,
412
+ sampleRate: options.hasOwnProperty('sampleRate') ? options.sampleRate : this.config.sampleRate,
413
+ captureArgs: options.hasOwnProperty('captureArgs') ? options.captureArgs : false,
414
+ parentExecutionId: options.parentExecutionId || null
415
+ };
416
+ return this.executionTracker.createTrackable(fn, trackingOptions);
417
+ }
418
+ /**
419
+ * Register a module for tracking
420
+ * @param module The module or object containing methods to track
421
+ * @param options Tracking options
422
+ * @returns Modified module with tracked methods
423
+ */
424
+ registerModule(module, options = {}) {
425
+ if (!module || typeof module !== 'object') {
426
+ throw new Error('Module must be an object');
427
+ }
428
+ // Merge global config with module-specific options
429
+ const trackingOptions = {
430
+ prefix: options.prefix || '',
431
+ trackingMode: options.trackingMode || this.config.trackingMode,
432
+ silent: options.hasOwnProperty('silent') ? options.silent : this.config.silent,
433
+ trackMemory: options.hasOwnProperty('trackMemory') ? options.trackMemory : this.config.trackMemory,
434
+ sampleRate: options.hasOwnProperty('sampleRate') ? options.sampleRate : this.config.sampleRate,
435
+ captureArgs: options.hasOwnProperty('captureArgs') ? options.captureArgs : false
436
+ };
437
+ return this.executionTracker.trackModule(module, trackingOptions);
438
+ }
439
+ /**
440
+ * Set configuration options
441
+ * @param config Configuration to update
442
+ * @returns Current configuration after update
443
+ */
444
+ setConfig(config = {}) {
445
+ // Update trackingMode if specified
446
+ if (config.trackingMode) {
447
+ this.config.trackingMode = config.trackingMode;
448
+ this.executionTracker.trackingMode = config.trackingMode;
449
+ }
450
+ // Update silent if specified
451
+ if (config.silent !== undefined) {
452
+ this.config.silent = config.silent;
453
+ this.executionTracker.silent = config.silent;
454
+ }
455
+ // Update trackMemory if specified
456
+ if (config.trackMemory !== undefined) {
457
+ this.config.trackMemory = config.trackMemory;
458
+ this.executionTracker.showMemoryUsage = config.trackMemory;
459
+ }
460
+ // Update enableNestedTracking if specified
461
+ if (config.enableNestedTracking !== undefined) {
462
+ this.config.enableNestedTracking = config.enableNestedTracking;
463
+ this.executionTracker.enableNestedTracking = config.enableNestedTracking;
464
+ }
465
+ // Update threshold if specified
466
+ if (config.threshold !== undefined) {
467
+ this.config.threshold = config.threshold;
468
+ this.executionTracker.defaultThreshold = config.threshold;
469
+ }
470
+ // Update sampleRate if specified
471
+ if (config.sampleRate !== undefined) {
472
+ this.config.sampleRate = Math.max(0, Math.min(1, config.sampleRate));
473
+ }
474
+ return { ...this.config };
475
+ }
476
+ /**
477
+ * Enable silent mode (no console output)
478
+ * @returns This instance for chaining
479
+ */
480
+ enableSilentMode() {
481
+ this.config.silent = true;
482
+ this.executionTracker.silent = true;
483
+ return this;
484
+ }
485
+ /**
486
+ * Disable silent mode (allow console output)
487
+ * @returns This instance for chaining
488
+ */
489
+ disableSilentMode() {
490
+ this.config.silent = false;
491
+ this.executionTracker.silent = false;
492
+ return this;
493
+ }
494
+ /**
495
+ * Set the tracking mode
496
+ * @param mode Tracking mode from TrackingMode enum
497
+ * @returns This instance for chaining
498
+ */
499
+ setTrackingMode(mode) {
500
+ this.config.trackingMode = mode;
501
+ this.executionTracker.trackingMode = mode;
502
+ return this;
503
+ }
504
+ /**
505
+ * Enable memory usage tracking
506
+ * @returns This instance for chaining
507
+ */
508
+ enableMemoryTracking() {
509
+ this.config.trackMemory = true;
510
+ this.executionTracker.showMemoryUsage = true;
511
+ return this;
512
+ }
513
+ /**
514
+ * Disable memory usage tracking
515
+ * @returns This instance for chaining
516
+ */
517
+ disableMemoryTracking() {
518
+ this.config.trackMemory = false;
519
+ this.executionTracker.showMemoryUsage = false;
520
+ return this;
521
+ }
522
+ /**
523
+ * Set the sampling rate
524
+ * @param rate Sampling rate between 0.0 and 1.0
525
+ * @returns This instance for chaining
526
+ */
527
+ setSampleRate(rate) {
528
+ this.config.sampleRate = Math.max(0, Math.min(1, rate));
529
+ return this;
530
+ }
531
+ /**
532
+ * Reset the tracker state
533
+ * @returns This instance for chaining
534
+ */
535
+ reset() {
536
+ this.executionTracker.reset();
537
+ return this;
538
+ }
539
+ }
540
+ exports.OptimizedPerformanceMonitor = OptimizedPerformanceMonitor;
541
+ // Remove singleton instance to avoid circular dependency - it will be created in index.ts
542
+ // export const optimizedTracePerf = new OptimizedPerformanceMonitor();
543
+ //# sourceMappingURL=optimized-performance-monitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimized-performance-monitor.js","sourceRoot":"","sources":["../../src/core/optimized-performance-monitor.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,12 @@
5
5
  * in React, Next.js, or other frontend applications.
6
6
  */
7
7
  import { ILoggerConfig, LogMode, ITrackOptions } from './types';
8
+ export declare const TrackingMode: {
9
+ PERFORMANCE: string;
10
+ BALANCED: string;
11
+ DETAILED: string;
12
+ DEBUG: string;
13
+ };
8
14
  /**
9
15
  * Browser-compatible performance monitoring
10
16
  */
@@ -17,12 +23,25 @@ declare class BrowserPerformanceMonitor {
17
23
  startTimer(label: string): string;
18
24
  endTimer(id: string): number;
19
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
+ */
20
30
  getMemoryUsage(): {
21
31
  heapUsed: number;
22
32
  heapTotal: number;
23
33
  external: number;
24
34
  rss: number;
25
- };
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;
26
45
  generateSuggestion(functionName: string, duration: number, memoryUsage?: number): string;
27
46
  }
28
47
  /**
@@ -34,6 +53,8 @@ declare class BrowserExecutionTracker {
34
53
  private _currentExecution;
35
54
  private _defaultThreshold;
36
55
  private _globalScope;
56
+ private _trackedFunctions;
57
+ private _performanceMonitor;
37
58
  /**
38
59
  * Create a new BrowserExecutionTracker instance
39
60
  *
@@ -97,6 +118,12 @@ declare class BrowserExecutionTracker {
97
118
  * @param result - The result list
98
119
  */
99
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;
100
127
  /**
101
128
  * Clear all execution records
102
129
  */
@@ -110,6 +137,7 @@ declare class BrowserLogger {
110
137
  private _indentLevel;
111
138
  private _executionTracker;
112
139
  private _performanceMonitor;
140
+ private _trackingMode;
113
141
  constructor(config?: Partial<ILoggerConfig>);
114
142
  info(message: string | object, ...args: any[]): void;
115
143
  warn(message: string | object, ...args: any[]): void;
@@ -119,6 +147,17 @@ declare class BrowserLogger {
119
147
  groupEnd(): void;
120
148
  setMode(mode: LogMode): void;
121
149
  getMode(): LogMode;
150
+ /**
151
+ * Set the tracking mode
152
+ * @param mode Tracking mode from TrackingMode enum
153
+ * @returns This instance for chaining
154
+ */
155
+ setTrackingMode(mode: string): BrowserLogger;
156
+ /**
157
+ * Get the current tracking mode
158
+ * @returns Current tracking mode
159
+ */
160
+ getTrackingMode(): string;
122
161
  track<T>(fn: () => T, options?: ITrackOptions): T;
123
162
  /**
124
163
  * Create a trackable version of a function
@@ -136,12 +175,18 @@ declare class BrowserLogger {
136
175
  private log;
137
176
  }
138
177
  /**
139
- * Create a new browser logger instance
140
- *
141
- * @param config - Configuration options
142
- * @returns A new BrowserLogger instance
178
+ * Create a browser-compatible logger instance
179
+ * @param config Configuration options
180
+ * @returns Browser logger instance
143
181
  */
144
182
  export declare function createBrowserLogger(config?: Partial<ILoggerConfig>): BrowserLogger;
145
- declare const defaultBrowserLogger: BrowserLogger;
146
- export default defaultBrowserLogger;
183
+ /**
184
+ * Create a browser-compatible TracePerf instance
185
+ * Alias of createBrowserLogger for API consistency with Node.js version
186
+ * @param config Configuration options
187
+ * @returns Browser logger instance
188
+ */
189
+ export declare function createTracePerf(config?: Partial<ILoggerConfig>): BrowserLogger;
190
+ declare const browserLogger: BrowserLogger;
191
+ export default browserLogger;
147
192
  export { BrowserLogger, BrowserPerformanceMonitor, BrowserExecutionTracker };