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.
- package/README.md +612 -209
- package/dist/__tests__/helpers/console.d.ts +9 -0
- package/dist/__tests__/helpers/console.js +25 -0
- package/dist/__tests__/helpers/console.js.map +1 -0
- package/dist/auto.d.ts +30 -0
- package/dist/auto.js +91 -0
- package/dist/auto.js.map +1 -0
- package/dist/browser.d.ts +52 -144
- package/dist/browser.js +112 -439
- package/dist/browser.js.map +1 -1
- package/dist/cli.d.ts +68 -0
- package/dist/cli.js +528 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/allocations.d.ts +38 -0
- package/dist/core/allocations.js +85 -0
- package/dist/core/allocations.js.map +1 -0
- package/dist/core/cpu-profile.d.ts +84 -0
- package/dist/core/cpu-profile.js +181 -0
- package/dist/core/cpu-profile.js.map +1 -0
- package/dist/core/env.d.ts +10 -0
- package/dist/core/env.js +40 -0
- package/dist/core/env.js.map +1 -0
- package/dist/core/event-loop.d.ts +30 -0
- package/dist/core/event-loop.js +43 -0
- package/dist/core/event-loop.js.map +1 -0
- package/dist/core/explain.d.ts +48 -0
- package/dist/core/explain.js +236 -0
- package/dist/core/explain.js.map +1 -0
- package/dist/core/exporters.d.ts +111 -0
- package/dist/core/exporters.js +236 -0
- package/dist/core/exporters.js.map +1 -0
- package/dist/core/index.d.ts +9 -3
- package/dist/core/index.js +9 -3
- package/dist/core/index.js.map +1 -1
- package/dist/core/optimized-performance-monitor.d.ts +180 -26
- package/dist/core/optimized-performance-monitor.js +687 -175
- package/dist/core/optimized-performance-monitor.js.map +1 -1
- package/dist/core/prometheus.d.ts +36 -0
- package/dist/core/prometheus.js +93 -0
- package/dist/core/prometheus.js.map +1 -0
- package/dist/core/records.d.ts +97 -0
- package/dist/core/records.js +87 -0
- package/dist/core/records.js.map +1 -0
- package/dist/core/stats.d.ts +45 -0
- package/dist/core/stats.js +136 -0
- package/dist/core/stats.js.map +1 -0
- package/dist/core/timeline.d.ts +28 -0
- package/dist/core/timeline.js +65 -0
- package/dist/core/timeline.js.map +1 -0
- package/dist/drivers.d.ts +51 -0
- package/dist/drivers.js +205 -0
- package/dist/drivers.js.map +1 -0
- package/dist/esm/auto.d.ts +30 -0
- package/dist/esm/auto.js +87 -0
- package/dist/esm/auto.js.map +1 -0
- package/dist/esm/browser.d.ts +52 -144
- package/dist/esm/browser.js +101 -445
- package/dist/esm/browser.js.map +1 -1
- package/dist/esm/cli.d.ts +68 -0
- package/dist/esm/cli.js +520 -0
- package/dist/esm/cli.js.map +1 -0
- package/dist/esm/core/allocations.d.ts +38 -0
- package/dist/esm/core/allocations.js +82 -0
- package/dist/esm/core/allocations.js.map +1 -0
- package/dist/esm/core/cpu-profile.d.ts +84 -0
- package/dist/esm/core/cpu-profile.js +176 -0
- package/dist/esm/core/cpu-profile.js.map +1 -0
- package/dist/esm/core/env.d.ts +10 -0
- package/dist/esm/core/env.js +35 -0
- package/dist/esm/core/env.js.map +1 -0
- package/dist/esm/core/event-loop.d.ts +30 -0
- package/dist/esm/core/event-loop.js +40 -0
- package/dist/esm/core/event-loop.js.map +1 -0
- package/dist/esm/core/explain.d.ts +48 -0
- package/dist/esm/core/explain.js +232 -0
- package/dist/esm/core/explain.js.map +1 -0
- package/dist/esm/core/exporters.d.ts +111 -0
- package/dist/esm/core/exporters.js +229 -0
- package/dist/esm/core/exporters.js.map +1 -0
- package/dist/esm/core/index.d.ts +10 -4
- package/dist/esm/core/index.js +10 -4
- package/dist/esm/core/index.js.map +1 -1
- package/dist/esm/core/optimized-performance-monitor.d.ts +180 -26
- package/dist/esm/core/optimized-performance-monitor.js +685 -173
- package/dist/esm/core/optimized-performance-monitor.js.map +1 -1
- package/dist/esm/core/prometheus.d.ts +36 -0
- package/dist/esm/core/prometheus.js +89 -0
- package/dist/esm/core/prometheus.js.map +1 -0
- package/dist/esm/core/records.d.ts +97 -0
- package/dist/esm/core/records.js +82 -0
- package/dist/esm/core/records.js.map +1 -0
- package/dist/esm/core/stats.d.ts +45 -0
- package/dist/esm/core/stats.js +131 -0
- package/dist/esm/core/stats.js.map +1 -0
- package/dist/esm/core/timeline.d.ts +28 -0
- package/dist/esm/core/timeline.js +62 -0
- package/dist/esm/core/timeline.js.map +1 -0
- package/dist/esm/drivers.d.ts +51 -0
- package/dist/esm/drivers.js +197 -0
- package/dist/esm/drivers.js.map +1 -0
- package/dist/esm/index.d.ts +13 -5
- package/dist/esm/index.js +21 -17
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/instrument.d.ts +88 -0
- package/dist/esm/instrument.js +274 -0
- package/dist/esm/instrument.js.map +1 -0
- package/dist/esm/integrations.d.ts +70 -0
- package/dist/esm/integrations.js +197 -0
- package/dist/esm/integrations.js.map +1 -0
- package/dist/esm/node-builtins.d.ts +1 -0
- package/dist/esm/node-builtins.js +32 -0
- package/dist/esm/node-builtins.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/register.d.ts +20 -0
- package/dist/esm/register.js +98 -0
- package/dist/esm/register.js.map +1 -0
- package/dist/esm/report-html.d.ts +11 -0
- package/dist/esm/report-html.js +106 -0
- package/dist/esm/report-html.js.map +1 -0
- package/dist/esm/types/index.d.ts +4 -80
- package/dist/esm/types/index.js +1 -2
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/types/options.d.ts +72 -0
- package/dist/esm/types/options.js +2 -0
- package/dist/esm/types/options.js.map +1 -0
- package/dist/esm/watch.d.ts +17 -0
- package/dist/esm/watch.js +87 -0
- package/dist/esm/watch.js.map +1 -0
- package/dist/index.d.ts +10 -2
- package/dist/index.js +26 -29
- package/dist/index.js.map +1 -1
- package/dist/instrument.d.ts +88 -0
- package/dist/instrument.js +282 -0
- package/dist/instrument.js.map +1 -0
- package/dist/integrations.d.ts +70 -0
- package/dist/integrations.js +205 -0
- package/dist/integrations.js.map +1 -0
- package/dist/node-builtins.d.ts +1 -0
- package/dist/node-builtins.js +67 -0
- package/dist/node-builtins.js.map +1 -0
- package/dist/register.d.ts +20 -0
- package/dist/register.js +103 -0
- package/dist/register.js.map +1 -0
- package/dist/report-html.d.ts +11 -0
- package/dist/report-html.js +109 -0
- package/dist/report-html.js.map +1 -0
- package/dist/traceperf.browser.js +1910 -0
- package/dist/traceperf.browser.min.js +6 -0
- package/dist/types/index.d.ts +4 -80
- package/dist/types/index.js +1 -2
- package/dist/types/index.js.map +1 -1
- package/dist/types/options.d.ts +72 -0
- package/dist/types/{config.js → options.js} +1 -1
- package/dist/types/options.js.map +1 -0
- package/dist/watch.d.ts +17 -0
- package/dist/watch.js +90 -0
- package/dist/watch.js.map +1 -0
- package/package.json +99 -19
- package/dist/core/config.d.ts +0 -77
- package/dist/core/config.js +0 -116
- package/dist/core/config.js.map +0 -1
- package/dist/core/constants.d.ts +0 -78
- package/dist/core/constants.js +0 -109
- package/dist/core/constants.js.map +0 -1
- package/dist/core/logger.d.ts +0 -97
- package/dist/core/logger.js +0 -186
- package/dist/core/logger.js.map +0 -1
- package/dist/esm/core/config.d.ts +0 -77
- package/dist/esm/core/config.js +0 -112
- package/dist/esm/core/config.js.map +0 -1
- package/dist/esm/core/constants.d.ts +0 -78
- package/dist/esm/core/constants.js +0 -106
- package/dist/esm/core/constants.js.map +0 -1
- package/dist/esm/core/logger.d.ts +0 -97
- package/dist/esm/core/logger.js +0 -182
- package/dist/esm/core/logger.js.map +0 -1
- package/dist/esm/formatters/ascii.d.ts +0 -52
- package/dist/esm/formatters/ascii.js +0 -100
- package/dist/esm/formatters/ascii.js.map +0 -1
- package/dist/esm/formatters/cli.d.ts +0 -50
- package/dist/esm/formatters/cli.js +0 -96
- package/dist/esm/formatters/cli.js.map +0 -1
- package/dist/esm/formatters/index.d.ts +0 -3
- package/dist/esm/formatters/index.js +0 -4
- package/dist/esm/formatters/index.js.map +0 -1
- package/dist/esm/formatters/json.d.ts +0 -45
- package/dist/esm/formatters/json.js +0 -85
- package/dist/esm/formatters/json.js.map +0 -1
- package/dist/esm/trackers/execution.d.ts +0 -101
- package/dist/esm/trackers/execution.js +0 -226
- package/dist/esm/trackers/execution.js.map +0 -1
- package/dist/esm/trackers/index.d.ts +0 -2
- package/dist/esm/trackers/index.js +0 -3
- package/dist/esm/trackers/index.js.map +0 -1
- package/dist/esm/trackers/performance.d.ts +0 -68
- package/dist/esm/trackers/performance.js +0 -112
- package/dist/esm/trackers/performance.js.map +0 -1
- package/dist/esm/types/config.d.ts +0 -142
- package/dist/esm/types/config.js +0 -2
- package/dist/esm/types/config.js.map +0 -1
- package/dist/esm/types/logger.d.ts +0 -147
- package/dist/esm/types/logger.js +0 -2
- package/dist/esm/types/logger.js.map +0 -1
- package/dist/esm/utils/colors.d.ts +0 -87
- package/dist/esm/utils/colors.js +0 -146
- package/dist/esm/utils/colors.js.map +0 -1
- package/dist/esm/utils/index.d.ts +0 -3
- package/dist/esm/utils/index.js +0 -4
- package/dist/esm/utils/index.js.map +0 -1
- package/dist/esm/utils/proxy-tracker.d.ts +0 -68
- package/dist/esm/utils/proxy-tracker.js +0 -127
- package/dist/esm/utils/proxy-tracker.js.map +0 -1
- package/dist/esm/utils/stack.d.ts +0 -63
- package/dist/esm/utils/stack.js +0 -110
- package/dist/esm/utils/stack.js.map +0 -1
- package/dist/esm/utils/string.d.ts +0 -29
- package/dist/esm/utils/string.js +0 -45
- package/dist/esm/utils/string.js.map +0 -1
- package/dist/esm/utils/timing.d.ts +0 -65
- package/dist/esm/utils/timing.js +0 -99
- package/dist/esm/utils/timing.js.map +0 -1
- package/dist/formatters/ascii.d.ts +0 -52
- package/dist/formatters/ascii.js +0 -104
- package/dist/formatters/ascii.js.map +0 -1
- package/dist/formatters/cli.d.ts +0 -50
- package/dist/formatters/cli.js +0 -100
- package/dist/formatters/cli.js.map +0 -1
- package/dist/formatters/index.d.ts +0 -3
- package/dist/formatters/index.js +0 -20
- package/dist/formatters/index.js.map +0 -1
- package/dist/formatters/json.d.ts +0 -45
- package/dist/formatters/json.js +0 -89
- package/dist/formatters/json.js.map +0 -1
- package/dist/trackers/execution.d.ts +0 -101
- package/dist/trackers/execution.js +0 -230
- package/dist/trackers/execution.js.map +0 -1
- package/dist/trackers/index.d.ts +0 -2
- package/dist/trackers/index.js +0 -19
- package/dist/trackers/index.js.map +0 -1
- package/dist/trackers/performance.d.ts +0 -68
- package/dist/trackers/performance.js +0 -116
- package/dist/trackers/performance.js.map +0 -1
- package/dist/types/config.d.ts +0 -142
- package/dist/types/config.js.map +0 -1
- package/dist/types/logger.d.ts +0 -147
- package/dist/types/logger.js +0 -3
- package/dist/types/logger.js.map +0 -1
- package/dist/types.d.ts +0 -65
- package/dist/types.js +0 -6
- package/dist/types.js.map +0 -1
- package/dist/utils/colors.d.ts +0 -87
- package/dist/utils/colors.js +0 -160
- package/dist/utils/colors.js.map +0 -1
- package/dist/utils/index.d.ts +0 -3
- package/dist/utils/index.js +0 -20
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/proxy-tracker.d.ts +0 -68
- package/dist/utils/proxy-tracker.js +0 -131
- package/dist/utils/proxy-tracker.js.map +0 -1
- package/dist/utils/stack.d.ts +0 -63
- package/dist/utils/stack.js +0 -116
- package/dist/utils/stack.js.map +0 -1
- package/dist/utils/string.d.ts +0 -29
- package/dist/utils/string.js +0 -50
- package/dist/utils/string.js.map +0 -1
- package/dist/utils/timing.d.ts +0 -65
- package/dist/utils/timing.js +0 -106
- package/dist/utils/timing.js.map +0 -1
|
@@ -10,11 +10,15 @@
|
|
|
10
10
|
* 6. Module registration capability
|
|
11
11
|
* 7. Enhanced visualization
|
|
12
12
|
*/
|
|
13
|
+
import { ExecutionRecord, TracePerfPlugin } from './records';
|
|
14
|
+
import { LabelStats, StatsCollector, StatsOptions } from './stats';
|
|
15
|
+
import { TraceRecorder } from './exporters';
|
|
16
|
+
import type { ModuleTrackOptions, TrackCallOptions, TrackOptions, TracePerfConfig } from '../types/options';
|
|
13
17
|
export declare const TrackingModes: {
|
|
14
|
-
PERFORMANCE:
|
|
15
|
-
BALANCED:
|
|
16
|
-
DETAILED:
|
|
17
|
-
DEBUG:
|
|
18
|
+
readonly PERFORMANCE: "performance";
|
|
19
|
+
readonly BALANCED: "balanced";
|
|
20
|
+
readonly DETAILED: "detailed";
|
|
21
|
+
readonly DEBUG: "debug";
|
|
18
22
|
};
|
|
19
23
|
/**
|
|
20
24
|
* Get current memory usage with environment detection
|
|
@@ -41,6 +45,13 @@ export interface ExecutionTrackerOptions {
|
|
|
41
45
|
showMemoryUsage?: boolean;
|
|
42
46
|
enableNestedTracking?: boolean;
|
|
43
47
|
threshold?: number;
|
|
48
|
+
sampleRate?: number;
|
|
49
|
+
enabled?: boolean;
|
|
50
|
+
blockingThreshold?: number;
|
|
51
|
+
stats?: boolean | StatsOptions;
|
|
52
|
+
reporter?: (root: ExecutionRecord) => void;
|
|
53
|
+
plugins?: TracePerfPlugin[];
|
|
54
|
+
asyncLocalStorage?: new () => any;
|
|
44
55
|
}
|
|
45
56
|
/**
|
|
46
57
|
* Interface for timer options
|
|
@@ -49,6 +60,11 @@ export interface TimerOptions {
|
|
|
49
60
|
trackMemory?: boolean;
|
|
50
61
|
captureArgs?: boolean;
|
|
51
62
|
args?: any[];
|
|
63
|
+
/** Per-execution overrides; fall back to the tracker's current settings */
|
|
64
|
+
silent?: boolean;
|
|
65
|
+
trackingMode?: string;
|
|
66
|
+
/** Minimum duration in milliseconds for this execution to be reported */
|
|
67
|
+
threshold?: number;
|
|
52
68
|
}
|
|
53
69
|
/**
|
|
54
70
|
* Interface for execution data
|
|
@@ -68,6 +84,29 @@ export interface ExecutionData {
|
|
|
68
84
|
memoryDelta?: number;
|
|
69
85
|
result?: any;
|
|
70
86
|
error?: Error | null;
|
|
87
|
+
silent?: boolean;
|
|
88
|
+
trackingMode?: string;
|
|
89
|
+
threshold?: number;
|
|
90
|
+
/** Set when the function returned a promise: the end of its synchronous part */
|
|
91
|
+
syncEndTime?: number;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Render one captured argument as a short, safe string.
|
|
95
|
+
* Never throws and never walks large structures in full.
|
|
96
|
+
*/
|
|
97
|
+
export declare const formatArg: (arg: unknown) => string;
|
|
98
|
+
/**
|
|
99
|
+
* A manually-ended execution, see `startSpan()` / `monitor.start()`
|
|
100
|
+
*/
|
|
101
|
+
export interface Span {
|
|
102
|
+
/** Execution id ('' when the span is not recorded: disabled or sampled out) */
|
|
103
|
+
readonly id: string;
|
|
104
|
+
/** Rename the span before it ends (e.g. once a route is known) */
|
|
105
|
+
setLabel(label: string): void;
|
|
106
|
+
/** Run `fn` as part of this span; tracked calls inside become its children */
|
|
107
|
+
run<R>(fn: () => R): R;
|
|
108
|
+
/** Finish the span; pass the error if the work failed. Calling twice is a no-op. */
|
|
109
|
+
end(error?: unknown): void;
|
|
71
110
|
}
|
|
72
111
|
/**
|
|
73
112
|
* Optimized tracker for individual function executions
|
|
@@ -76,17 +115,40 @@ export declare class OptimizedExecutionTracker {
|
|
|
76
115
|
private executionTree;
|
|
77
116
|
private currentExecutionId;
|
|
78
117
|
private activeExecutions;
|
|
118
|
+
private context;
|
|
79
119
|
showMemoryUsage: boolean;
|
|
80
120
|
enableNestedTracking: boolean;
|
|
81
121
|
silent: boolean;
|
|
82
122
|
trackingMode: string;
|
|
83
123
|
defaultThreshold: number;
|
|
84
|
-
|
|
124
|
+
defaultSampleRate: number;
|
|
125
|
+
/** When false, tracked functions just call through (no timing at all) */
|
|
126
|
+
enabled: boolean;
|
|
127
|
+
/** Sync time (ms) from which detailed output flags event-loop blocking; 0 disables */
|
|
128
|
+
blockingThreshold: number;
|
|
129
|
+
/** Replaces console output for reported trees (null = default console tree) */
|
|
130
|
+
reporter: ((root: ExecutionRecord) => void) | null;
|
|
131
|
+
/** Per-label statistics (null when disabled) */
|
|
132
|
+
stats: StatsCollector | null;
|
|
133
|
+
private plugins;
|
|
134
|
+
private wrappers;
|
|
135
|
+
private failedPlugins;
|
|
85
136
|
/**
|
|
86
137
|
* Create a new execution tracker
|
|
87
138
|
* @param options Tracker configuration options
|
|
88
139
|
*/
|
|
89
140
|
constructor(options?: ExecutionTrackerOptions);
|
|
141
|
+
/**
|
|
142
|
+
* Register a plugin. Returns a function that removes it again.
|
|
143
|
+
*/
|
|
144
|
+
use(plugin: TracePerfPlugin): () => void;
|
|
145
|
+
/**
|
|
146
|
+
* Run `run` inside every plugin's wrap() (first registered = outermost).
|
|
147
|
+
* A wrap() that throws before calling run is reported once and skipped.
|
|
148
|
+
*/
|
|
149
|
+
private _wrap;
|
|
150
|
+
private _pluginFailed;
|
|
151
|
+
private _callPlugins;
|
|
90
152
|
/**
|
|
91
153
|
* Start timing a function execution
|
|
92
154
|
* @param label Function name or label
|
|
@@ -94,7 +156,7 @@ export declare class OptimizedExecutionTracker {
|
|
|
94
156
|
* @param options Additional options
|
|
95
157
|
* @returns Execution ID
|
|
96
158
|
*/
|
|
97
|
-
startTimer(label: string, parentExecutionId?: string | null, options?: TimerOptions): string;
|
|
159
|
+
startTimer(label: string, parentExecutionId?: string | null, options?: TimerOptions, args?: ArrayLike<unknown> | undefined): string;
|
|
98
160
|
/**
|
|
99
161
|
* End timing a function execution
|
|
100
162
|
* @param executionId ID of the execution to end
|
|
@@ -104,14 +166,25 @@ export declare class OptimizedExecutionTracker {
|
|
|
104
166
|
*/
|
|
105
167
|
endTimer(executionId: string, result?: any, error?: Error | null): ExecutionData | null;
|
|
106
168
|
/**
|
|
107
|
-
*
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
*
|
|
112
|
-
* @returns Formatted execution flow chart
|
|
169
|
+
* Drop a finished execution and its finished descendants
|
|
170
|
+
*/
|
|
171
|
+
private _release;
|
|
172
|
+
/**
|
|
173
|
+
* Mark the end of the synchronous part of an execution that returned a promise
|
|
113
174
|
*/
|
|
114
|
-
|
|
175
|
+
markSyncEnd(executionId: string): void;
|
|
176
|
+
/**
|
|
177
|
+
* Convert a finished execution (and its finished children) to a record tree
|
|
178
|
+
*/
|
|
179
|
+
private _toRecord;
|
|
180
|
+
/**
|
|
181
|
+
* Print a finished tree (or hand it to the custom reporter)
|
|
182
|
+
*/
|
|
183
|
+
private _report;
|
|
184
|
+
/**
|
|
185
|
+
* Run one call of `fn` with tracking (shared by createTrackable and track)
|
|
186
|
+
*/
|
|
187
|
+
private _invoke;
|
|
115
188
|
/**
|
|
116
189
|
* Create a trackable version of a function
|
|
117
190
|
* @param fn Function to track
|
|
@@ -119,6 +192,12 @@ export declare class OptimizedExecutionTracker {
|
|
|
119
192
|
* @returns Tracked version of the function
|
|
120
193
|
*/
|
|
121
194
|
createTrackable<T extends (...args: any[]) => any>(fn: T, options?: Record<string, any>): (...args: Parameters<T>) => ReturnType<T>;
|
|
195
|
+
/**
|
|
196
|
+
* Start a manually-ended execution (a "span"). Use `run()` to execute code
|
|
197
|
+
* as part of it, so tracked calls inside attach as children, and `end()`
|
|
198
|
+
* when the work is finished.
|
|
199
|
+
*/
|
|
200
|
+
startSpan(label: string, options?: Record<string, any>): Span;
|
|
122
201
|
/**
|
|
123
202
|
* Track a module's methods
|
|
124
203
|
* @param module Module to track
|
|
@@ -139,16 +218,11 @@ export declare class OptimizedExecutionTracker {
|
|
|
139
218
|
reset(): void;
|
|
140
219
|
}
|
|
141
220
|
/**
|
|
142
|
-
*
|
|
221
|
+
* @deprecated Use `TracePerfConfig`.
|
|
143
222
|
*/
|
|
144
|
-
export
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
trackMemory?: boolean;
|
|
148
|
-
enableNestedTracking?: boolean;
|
|
149
|
-
threshold?: number;
|
|
150
|
-
sampleRate?: number;
|
|
151
|
-
}
|
|
223
|
+
export type PerformanceMonitorOptions = TracePerfConfig;
|
|
224
|
+
/** Decorator returned by `traced()`: works as a standard or legacy method decorator */
|
|
225
|
+
export type TracedDecorator = (target: any, context?: any, descriptor?: PropertyDescriptor) => any;
|
|
152
226
|
/**
|
|
153
227
|
* Main performance monitoring interface
|
|
154
228
|
*/
|
|
@@ -166,21 +240,97 @@ export declare class OptimizedPerformanceMonitor {
|
|
|
166
240
|
* @param options Tracking options
|
|
167
241
|
* @returns Result of the tracked function
|
|
168
242
|
*/
|
|
169
|
-
track<T>(fn: () => T, options?:
|
|
243
|
+
track<T>(fn: () => T, options?: TrackCallOptions): T;
|
|
170
244
|
/**
|
|
171
245
|
* Create a trackable version of a function
|
|
172
246
|
* @param fn The function to track
|
|
173
247
|
* @param options Tracking options
|
|
174
248
|
* @returns Tracked version of the function
|
|
175
249
|
*/
|
|
176
|
-
createTrackable<T extends (...args: any[]) => any>(fn: T, options?:
|
|
250
|
+
createTrackable<T extends (...args: any[]) => any>(fn: T, options?: TrackOptions): (...args: Parameters<T>) => ReturnType<T>;
|
|
177
251
|
/**
|
|
178
252
|
* Register a module for tracking
|
|
179
253
|
* @param module The module or object containing methods to track
|
|
180
254
|
* @param options Tracking options
|
|
181
255
|
* @returns Modified module with tracked methods
|
|
182
256
|
*/
|
|
183
|
-
registerModule<T extends Record<string, any>>(module: T, options?:
|
|
257
|
+
registerModule<T extends Record<string, any>>(module: T, options?: ModuleTrackOptions): T;
|
|
258
|
+
/**
|
|
259
|
+
* Track every method of an object or class instance, including methods
|
|
260
|
+
* inherited from its prototype, without copying it. Returns a proxy:
|
|
261
|
+
* state changes go to the original object, and methods run with the
|
|
262
|
+
* original object as `this` (so private #fields keep working).
|
|
263
|
+
*/
|
|
264
|
+
trackObject<T extends object>(target: T, options?: ModuleTrackOptions): T;
|
|
265
|
+
/**
|
|
266
|
+
* Method decorator. Works with TypeScript 5 / TC39 standard decorators and
|
|
267
|
+
* with legacy `experimentalDecorators`. The label defaults to
|
|
268
|
+
* "ClassName.method".
|
|
269
|
+
*
|
|
270
|
+
* class UserService {
|
|
271
|
+
* @tp.traced()
|
|
272
|
+
* async getUser(id: string) { ... }
|
|
273
|
+
* }
|
|
274
|
+
*/
|
|
275
|
+
traced(options?: TrackOptions): TracedDecorator;
|
|
276
|
+
/**
|
|
277
|
+
* Start a manually-ended execution (a span), e.g. for a request:
|
|
278
|
+
*
|
|
279
|
+
* const span = tp.start('GET /users');
|
|
280
|
+
* span.run(() => next()); // tracked calls inside become children
|
|
281
|
+
* res.on('finish', () => span.end());
|
|
282
|
+
*/
|
|
283
|
+
start(label: string, options?: TrackOptions): Span;
|
|
284
|
+
/**
|
|
285
|
+
* Register a plugin (exporter, custom sink). Returns an unsubscribe function.
|
|
286
|
+
*/
|
|
287
|
+
use(plugin: TracePerfPlugin): () => void;
|
|
288
|
+
/**
|
|
289
|
+
* Call `listener` with every finished top-level execution tree (even when
|
|
290
|
+
* silent or below threshold). Returns an unsubscribe function.
|
|
291
|
+
*/
|
|
292
|
+
onComplete(listener: (root: ExecutionRecord) => void): () => void;
|
|
293
|
+
/**
|
|
294
|
+
* Call `listener` for every finished call (nested ones included) that
|
|
295
|
+
* took at least `threshold` ms. Pass a number, or per-label thresholds
|
|
296
|
+
* with an optional '*' default:
|
|
297
|
+
*
|
|
298
|
+
* tp.onSlow(200, (call, root) => logger.warn(`${call.label} took ${call.duration}ms in ${root.label}`));
|
|
299
|
+
* tp.onSlow({ 'db.query': 50, 'GET /search': 500, '*': 1000 }, alert);
|
|
300
|
+
*
|
|
301
|
+
* Works in every tracking mode and when silent. Returns an unsubscribe function.
|
|
302
|
+
*/
|
|
303
|
+
onSlow(threshold: number | Record<string, number>, listener: (call: ExecutionRecord, root: ExecutionRecord) => void): () => void;
|
|
304
|
+
/**
|
|
305
|
+
* Per-label statistics (ms): count, errors, total, mean, min, max,
|
|
306
|
+
* p50/p95/p99 and mean self time.
|
|
307
|
+
*/
|
|
308
|
+
getStats(): Record<string, LabelStats>;
|
|
309
|
+
getStats(label: string): LabelStats | undefined;
|
|
310
|
+
/** Clear collected statistics */
|
|
311
|
+
resetStats(): OptimizedPerformanceMonitor;
|
|
312
|
+
/** Statistics as a text table, slowest total first */
|
|
313
|
+
formatStats(): string;
|
|
314
|
+
/** Print the statistics table to the console */
|
|
315
|
+
printStats(): OptimizedPerformanceMonitor;
|
|
316
|
+
/**
|
|
317
|
+
* Start recording finished calls for a Chrome/Perfetto trace.
|
|
318
|
+
*
|
|
319
|
+
* const recording = tp.startTrace();
|
|
320
|
+
* await work();
|
|
321
|
+
* fs.writeFileSync('trace.json', JSON.stringify(recording.stop()));
|
|
322
|
+
*
|
|
323
|
+
* Open the file in https://ui.perfetto.dev or chrome://tracing.
|
|
324
|
+
*/
|
|
325
|
+
startTrace(options?: {
|
|
326
|
+
maxRoots?: number;
|
|
327
|
+
}): TraceRecorder;
|
|
328
|
+
/** Turn tracking on */
|
|
329
|
+
enable(): OptimizedPerformanceMonitor;
|
|
330
|
+
/** Turn tracking off: tracked functions become plain pass-through calls */
|
|
331
|
+
disable(): OptimizedPerformanceMonitor;
|
|
332
|
+
/** Whether tracking is on */
|
|
333
|
+
isEnabled(): boolean;
|
|
184
334
|
/**
|
|
185
335
|
* Set configuration options
|
|
186
336
|
* @param config Configuration to update
|
|
@@ -203,6 +353,10 @@ export declare class OptimizedPerformanceMonitor {
|
|
|
203
353
|
* @returns This instance for chaining
|
|
204
354
|
*/
|
|
205
355
|
setTrackingMode(mode: string): OptimizedPerformanceMonitor;
|
|
356
|
+
/**
|
|
357
|
+
* Get the current tracking mode
|
|
358
|
+
*/
|
|
359
|
+
getTrackingMode(): string;
|
|
206
360
|
/**
|
|
207
361
|
* Enable memory usage tracking
|
|
208
362
|
* @returns This instance for chaining
|
|
@@ -220,7 +374,7 @@ export declare class OptimizedPerformanceMonitor {
|
|
|
220
374
|
*/
|
|
221
375
|
setSampleRate(rate: number): OptimizedPerformanceMonitor;
|
|
222
376
|
/**
|
|
223
|
-
* Reset the tracker state
|
|
377
|
+
* Reset the tracker state (in-flight executions and statistics)
|
|
224
378
|
* @returns This instance for chaining
|
|
225
379
|
*/
|
|
226
380
|
reset(): OptimizedPerformanceMonitor;
|