@paulirish/trace_engine 0.0.41 → 0.0.42
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/.tmp/tsbuildinfo/tsconfig.tsbuildinfo +1 -1
- package/generated/protocol.d.ts +79 -3
- package/locales/en-US.json +222 -0
- package/locales/en-XL.json +222 -0
- package/models/cpu_profile/CPUProfileDataModel.d.ts +7 -0
- package/models/cpu_profile/CPUProfileDataModel.js +7 -0
- package/models/cpu_profile/CPUProfileDataModel.js.map +1 -1
- package/models/cpu_profile/ProfileTreeModel.d.ts +1 -1
- package/models/cpu_profile/ProfileTreeModel.js.map +1 -1
- package/models/trace/LanternComputationData.d.ts +1 -1
- package/models/trace/LanternComputationData.js +7 -5
- package/models/trace/LanternComputationData.js.map +1 -1
- package/models/trace/Processor.d.ts +2 -16
- package/models/trace/Processor.js +6 -4
- package/models/trace/Processor.js.map +1 -1
- package/models/trace/extras/FilmStrip.d.ts +5 -5
- package/models/trace/extras/FilmStrip.js +2 -1
- package/models/trace/extras/FilmStrip.js.map +1 -1
- package/models/trace/extras/MainThreadActivity.d.ts +1 -1
- package/models/trace/extras/MainThreadActivity.js +3 -3
- package/models/trace/extras/MainThreadActivity.js.map +1 -1
- package/models/trace/extras/ThirdParties.d.ts +14 -13
- package/models/trace/extras/ThirdParties.js +51 -61
- package/models/trace/extras/ThirdParties.js.map +1 -1
- package/models/trace/extras/TimelineJSProfile.d.ts +1 -1
- package/models/trace/extras/TimelineJSProfile.js +9 -4
- package/models/trace/extras/TimelineJSProfile.js.map +1 -1
- package/models/trace/extras/TraceTree.d.ts +6 -6
- package/models/trace/extras/TraceTree.js +4 -1
- package/models/trace/extras/TraceTree.js.map +1 -1
- package/models/trace/handlers/AnimationFramesHandler.js +1 -1
- package/models/trace/handlers/AnimationFramesHandler.js.map +1 -1
- package/models/trace/handlers/ExtensionTraceDataHandler.js +8 -2
- package/models/trace/handlers/ExtensionTraceDataHandler.js.map +1 -1
- package/models/trace/handlers/FlowsHandler.js.map +1 -1
- package/models/trace/handlers/FramesHandler.d.ts +12 -12
- package/models/trace/handlers/FramesHandler.js +3 -3
- package/models/trace/handlers/FramesHandler.js.map +1 -1
- package/models/trace/handlers/LayoutShiftsHandler.d.ts +2 -2
- package/models/trace/handlers/LayoutShiftsHandler.js +25 -16
- package/models/trace/handlers/LayoutShiftsHandler.js.map +1 -1
- package/models/trace/handlers/MetaHandler.d.ts +2 -2
- package/models/trace/handlers/MetaHandler.js +18 -18
- package/models/trace/handlers/MetaHandler.js.map +1 -1
- package/models/trace/handlers/NetworkRequestsHandler.js +37 -38
- package/models/trace/handlers/NetworkRequestsHandler.js.map +1 -1
- package/models/trace/handlers/PageLoadMetricsHandler.d.ts +6 -6
- package/models/trace/handlers/PageLoadMetricsHandler.js +9 -9
- package/models/trace/handlers/PageLoadMetricsHandler.js.map +1 -1
- package/models/trace/handlers/RendererHandler.js +3 -3
- package/models/trace/handlers/RendererHandler.js.map +1 -1
- package/models/trace/handlers/SamplesHandler.d.ts +1 -1
- package/models/trace/handlers/SamplesHandler.js +50 -42
- package/models/trace/handlers/SamplesHandler.js.map +1 -1
- package/models/trace/handlers/ScreenshotsHandler.d.ts +6 -3
- package/models/trace/handlers/ScreenshotsHandler.js +21 -7
- package/models/trace/handlers/ScreenshotsHandler.js.map +1 -1
- package/models/trace/handlers/ServerTimingsHandler.js +4 -4
- package/models/trace/handlers/ServerTimingsHandler.js.map +1 -1
- package/models/trace/handlers/Threads.js +3 -4
- package/models/trace/handlers/Threads.js.map +1 -1
- package/models/trace/handlers/UserInteractionsHandler.d.ts +2 -2
- package/models/trace/handlers/UserInteractionsHandler.js +12 -12
- package/models/trace/handlers/UserInteractionsHandler.js.map +1 -1
- package/models/trace/handlers/WarningsHandler.d.ts +2 -2
- package/models/trace/handlers/WarningsHandler.js +2 -2
- package/models/trace/handlers/WarningsHandler.js.map +1 -1
- package/models/trace/handlers/helpers.d.ts +3 -3
- package/models/trace/handlers/helpers.js +16 -19
- package/models/trace/handlers/helpers.js.map +1 -1
- package/models/trace/handlers/types.d.ts +1 -1
- package/models/trace/handlers/types.js.map +1 -1
- package/models/trace/helpers/SamplesIntegrator.js +52 -13
- package/models/trace/helpers/SamplesIntegrator.js.map +1 -1
- package/models/trace/helpers/Timing.d.ts +23 -23
- package/models/trace/helpers/Timing.js +11 -11
- package/models/trace/helpers/Timing.js.map +1 -1
- package/models/trace/helpers/Trace.d.ts +14 -13
- package/models/trace/helpers/Trace.js +10 -4
- package/models/trace/helpers/Trace.js.map +1 -1
- package/models/trace/helpers/TreeHelpers.d.ts +2 -2
- package/models/trace/helpers/TreeHelpers.js +4 -4
- package/models/trace/helpers/TreeHelpers.js.map +1 -1
- package/models/trace/insights/CLSCulprits.d.ts +44 -1
- package/models/trace/insights/CLSCulprits.js +44 -2
- package/models/trace/insights/CLSCulprits.js.map +1 -1
- package/models/trace/insights/Common.d.ts +11 -7
- package/models/trace/insights/Common.js +85 -26
- package/models/trace/insights/Common.js.map +1 -1
- package/models/trace/insights/DOMSize.d.ts +26 -1
- package/models/trace/insights/DOMSize.js +44 -7
- package/models/trace/insights/DOMSize.js.map +1 -1
- package/models/trace/insights/DocumentLatency.d.ts +50 -3
- package/models/trace/insights/DocumentLatency.js +51 -4
- package/models/trace/insights/DocumentLatency.js.map +1 -1
- package/models/trace/insights/FontDisplay.d.ts +8 -2
- package/models/trace/insights/FontDisplay.js +10 -4
- package/models/trace/insights/FontDisplay.js.map +1 -1
- package/models/trace/insights/ForcedReflow.d.ts +30 -0
- package/models/trace/insights/ForcedReflow.js +181 -0
- package/models/trace/insights/ForcedReflow.js.map +1 -0
- package/models/trace/insights/ImageDelivery.d.ts +15 -1
- package/models/trace/insights/ImageDelivery.js +21 -1
- package/models/trace/insights/ImageDelivery.js.map +1 -1
- package/models/trace/insights/InteractionToNextPaint.d.ts +26 -1
- package/models/trace/insights/InteractionToNextPaint.js +27 -1
- package/models/trace/insights/InteractionToNextPaint.js.map +1 -1
- package/models/trace/insights/LCPDiscovery.d.ts +38 -2
- package/models/trace/insights/LCPDiscovery.js +38 -2
- package/models/trace/insights/LCPDiscovery.js.map +1 -1
- package/models/trace/insights/LCPPhases.d.ts +36 -7
- package/models/trace/insights/LCPPhases.js +37 -8
- package/models/trace/insights/LCPPhases.js.map +1 -1
- package/models/trace/insights/LongCriticalNetworkTree.d.ts +22 -0
- package/models/trace/insights/LongCriticalNetworkTree.js +40 -0
- package/models/trace/insights/LongCriticalNetworkTree.js.map +1 -0
- package/models/trace/insights/Models.d.ts +2 -0
- package/models/trace/insights/Models.js +2 -0
- package/models/trace/insights/Models.js.map +1 -1
- package/models/trace/insights/RenderBlocking.d.ts +14 -1
- package/models/trace/insights/RenderBlocking.js +14 -1
- package/models/trace/insights/RenderBlocking.js.map +1 -1
- package/models/trace/insights/SlowCSSSelector.d.ts +27 -2
- package/models/trace/insights/SlowCSSSelector.js +27 -2
- package/models/trace/insights/SlowCSSSelector.js.map +1 -1
- package/models/trace/insights/ThirdParties.d.ts +13 -4
- package/models/trace/insights/ThirdParties.js +21 -12
- package/models/trace/insights/ThirdParties.js.map +1 -1
- package/models/trace/insights/Viewport.d.ts +2 -1
- package/models/trace/insights/Viewport.js +2 -1
- package/models/trace/insights/Viewport.js.map +1 -1
- package/models/trace/insights/insights-tsconfig.json +2 -0
- package/models/trace/insights/types.d.ts +23 -8
- package/models/trace/insights/types.js.map +1 -1
- package/models/trace/lantern/graph/CPUNode.d.ts +1 -1
- package/models/trace/lantern/graph/CPUNode.js.map +1 -1
- package/models/trace/lantern/graph/NetworkNode.d.ts +1 -1
- package/models/trace/lantern/graph/NetworkNode.js.map +1 -1
- package/models/trace/types/Configuration.d.ts +15 -0
- package/models/trace/types/Configuration.js.map +1 -1
- package/models/trace/types/File.d.ts +4 -4
- package/models/trace/types/File.js.map +1 -1
- package/models/trace/types/Timing.d.ts +7 -13
- package/models/trace/types/Timing.js +5 -2
- package/models/trace/types/Timing.js.map +1 -1
- package/models/trace/types/TraceEvents.d.ts +143 -108
- package/models/trace/types/TraceEvents.js +9 -7
- package/models/trace/types/TraceEvents.js.map +1 -1
- package/package.json +1 -1
- package/test/test-trace-engine.mjs +18 -14
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type * as Protocol from '../../../generated/protocol.js';
|
|
2
|
-
import type {
|
|
2
|
+
import type { Micro, Milli, Seconds, TraceWindowMicro } from './Timing.js';
|
|
3
3
|
export declare const enum Phase {
|
|
4
4
|
BEGIN = "B",
|
|
5
5
|
END = "E",
|
|
@@ -26,9 +26,6 @@ export declare const enum Phase {
|
|
|
26
26
|
MARK = "R",
|
|
27
27
|
CLOCK_SYNC = "c"
|
|
28
28
|
}
|
|
29
|
-
export type NonEmptyString = string & {
|
|
30
|
-
_tag: 'NonEmptyString';
|
|
31
|
-
};
|
|
32
29
|
export declare function isNestableAsyncPhase(phase: Phase): boolean;
|
|
33
30
|
export declare function isPhaseAsync(phase: Phase): boolean;
|
|
34
31
|
export declare function isFlowPhase(phase: Phase): boolean;
|
|
@@ -44,10 +41,10 @@ export interface Event {
|
|
|
44
41
|
ph: Phase;
|
|
45
42
|
pid: ProcessID;
|
|
46
43
|
tid: ThreadID;
|
|
47
|
-
tts?:
|
|
48
|
-
ts:
|
|
49
|
-
tdur?:
|
|
50
|
-
dur?:
|
|
44
|
+
tts?: Micro;
|
|
45
|
+
ts: Micro;
|
|
46
|
+
tdur?: Micro;
|
|
47
|
+
dur?: Micro;
|
|
51
48
|
}
|
|
52
49
|
export interface Args {
|
|
53
50
|
data?: ArgsData;
|
|
@@ -97,7 +94,7 @@ export interface Profile extends Sample {
|
|
|
97
94
|
id: ProfileID;
|
|
98
95
|
args: Args & {
|
|
99
96
|
data: ArgsData & {
|
|
100
|
-
startTime:
|
|
97
|
+
startTime: Micro;
|
|
101
98
|
};
|
|
102
99
|
};
|
|
103
100
|
}
|
|
@@ -107,14 +104,20 @@ export interface ProfileChunk extends Sample {
|
|
|
107
104
|
args: Args & {
|
|
108
105
|
data?: ArgsData & {
|
|
109
106
|
cpuProfile?: PartialProfile;
|
|
110
|
-
timeDeltas?:
|
|
111
|
-
lines?:
|
|
107
|
+
timeDeltas?: Micro[];
|
|
108
|
+
lines?: Micro[];
|
|
112
109
|
};
|
|
113
110
|
};
|
|
114
111
|
}
|
|
115
112
|
export interface PartialProfile {
|
|
116
113
|
nodes?: PartialNode[];
|
|
117
114
|
samples: CallFrameID[];
|
|
115
|
+
/**
|
|
116
|
+
* Contains trace ids assigned to samples, if any. Trace ids are
|
|
117
|
+
* keyed by the sample index in the profile (the keys of the object
|
|
118
|
+
* are strings containing the numeric index).
|
|
119
|
+
*/
|
|
120
|
+
trace_ids?: Record<string, number>;
|
|
118
121
|
}
|
|
119
122
|
export interface PartialNode {
|
|
120
123
|
callFrame: CallFrame;
|
|
@@ -123,7 +126,7 @@ export interface PartialNode {
|
|
|
123
126
|
}
|
|
124
127
|
export interface Complete extends Event {
|
|
125
128
|
ph: Phase.COMPLETE;
|
|
126
|
-
dur:
|
|
129
|
+
dur: Micro;
|
|
127
130
|
}
|
|
128
131
|
export interface RunTask extends Complete {
|
|
129
132
|
name: Name.RUN_TASK;
|
|
@@ -133,7 +136,7 @@ export interface FireIdleCallback extends Complete {
|
|
|
133
136
|
name: Name.FIRE_IDLE_CALLBACK;
|
|
134
137
|
args: Args & {
|
|
135
138
|
data: ArgsData & {
|
|
136
|
-
allottedMilliseconds:
|
|
139
|
+
allottedMilliseconds: Milli;
|
|
137
140
|
frame: string;
|
|
138
141
|
id: number;
|
|
139
142
|
timedOut: boolean;
|
|
@@ -199,17 +202,17 @@ export interface EventTimingBegin extends Event {
|
|
|
199
202
|
args: Args & {
|
|
200
203
|
data: ArgsData & {
|
|
201
204
|
cancelable: boolean;
|
|
202
|
-
duration:
|
|
205
|
+
duration: Milli;
|
|
203
206
|
type: string;
|
|
204
207
|
interactionId: number;
|
|
205
208
|
interactionOffset: number;
|
|
206
209
|
nodeId: Protocol.DOM.BackendNodeId;
|
|
207
210
|
frame?: string;
|
|
208
|
-
processingEnd?:
|
|
209
|
-
processingStart?:
|
|
210
|
-
timeStamp?:
|
|
211
|
-
enqueuedToMainThreadTime?:
|
|
212
|
-
commitFinishTime?:
|
|
211
|
+
processingEnd?: Milli;
|
|
212
|
+
processingStart?: Milli;
|
|
213
|
+
timeStamp?: Milli;
|
|
214
|
+
enqueuedToMainThreadTime?: Milli;
|
|
215
|
+
commitFinishTime?: Milli;
|
|
213
216
|
};
|
|
214
217
|
frame?: string;
|
|
215
218
|
};
|
|
@@ -233,31 +236,31 @@ export interface SyntheticNetworkRedirect {
|
|
|
233
236
|
url: string;
|
|
234
237
|
priority: string;
|
|
235
238
|
requestMethod?: string;
|
|
236
|
-
ts:
|
|
237
|
-
dur:
|
|
239
|
+
ts: Micro;
|
|
240
|
+
dur: Micro;
|
|
238
241
|
}
|
|
239
242
|
interface SyntheticArgsData {
|
|
240
|
-
dnsLookup:
|
|
241
|
-
download:
|
|
242
|
-
downloadStart:
|
|
243
|
-
finishTime:
|
|
244
|
-
initialConnection:
|
|
243
|
+
dnsLookup: Micro;
|
|
244
|
+
download: Micro;
|
|
245
|
+
downloadStart: Micro;
|
|
246
|
+
finishTime: Micro;
|
|
247
|
+
initialConnection: Micro;
|
|
245
248
|
isDiskCached: boolean;
|
|
246
249
|
isHttps: boolean;
|
|
247
250
|
isMemoryCached: boolean;
|
|
248
251
|
isPushedResource: boolean;
|
|
249
|
-
networkDuration:
|
|
250
|
-
processingDuration:
|
|
251
|
-
proxyNegotiation:
|
|
252
|
-
queueing:
|
|
253
|
-
redirectionDuration:
|
|
254
|
-
requestSent:
|
|
255
|
-
sendStartTime:
|
|
256
|
-
ssl:
|
|
257
|
-
stalled:
|
|
258
|
-
totalTime:
|
|
252
|
+
networkDuration: Micro;
|
|
253
|
+
processingDuration: Micro;
|
|
254
|
+
proxyNegotiation: Micro;
|
|
255
|
+
queueing: Micro;
|
|
256
|
+
redirectionDuration: Micro;
|
|
257
|
+
requestSent: Micro;
|
|
258
|
+
sendStartTime: Micro;
|
|
259
|
+
ssl: Micro;
|
|
260
|
+
stalled: Micro;
|
|
261
|
+
totalTime: Micro;
|
|
259
262
|
/** Server response time (receiveHeadersEnd - sendEnd) */
|
|
260
|
-
waiting:
|
|
263
|
+
waiting: Micro;
|
|
261
264
|
}
|
|
262
265
|
export interface SyntheticNetworkRequest extends Complete, SyntheticBased<Phase.COMPLETE> {
|
|
263
266
|
rawSourceEvent: ResourceSendRequest;
|
|
@@ -310,12 +313,12 @@ export interface SyntheticNetworkRequest extends Complete, SyntheticBased<Phase.
|
|
|
310
313
|
};
|
|
311
314
|
};
|
|
312
315
|
cat: 'loading';
|
|
313
|
-
name:
|
|
316
|
+
name: Name.SYNTHETIC_NETWORK_REQUEST;
|
|
314
317
|
ph: Phase.COMPLETE;
|
|
315
|
-
dur:
|
|
316
|
-
tdur:
|
|
317
|
-
ts:
|
|
318
|
-
tts:
|
|
318
|
+
dur: Micro;
|
|
319
|
+
tdur: Micro;
|
|
320
|
+
ts: Micro;
|
|
321
|
+
tts: Micro;
|
|
319
322
|
pid: ProcessID;
|
|
320
323
|
tid: ThreadID;
|
|
321
324
|
}
|
|
@@ -331,8 +334,8 @@ export interface SyntheticWebSocketConnection extends Complete, SyntheticBased<P
|
|
|
331
334
|
cat: string;
|
|
332
335
|
name: 'SyntheticWebSocketConnection';
|
|
333
336
|
ph: Phase.COMPLETE;
|
|
334
|
-
dur:
|
|
335
|
-
ts:
|
|
337
|
+
dur: Micro;
|
|
338
|
+
ts: Micro;
|
|
336
339
|
pid: ProcessID;
|
|
337
340
|
tid: ThreadID;
|
|
338
341
|
s: Scope;
|
|
@@ -391,11 +394,26 @@ export interface AuctionWorkletDoneWithProcess extends Event {
|
|
|
391
394
|
}
|
|
392
395
|
export declare function isAuctionWorkletRunningInProcess(event: Event): event is AuctionWorkletRunningInProcess;
|
|
393
396
|
export declare function isAuctionWorkletDoneWithProcess(event: Event): event is AuctionWorkletDoneWithProcess;
|
|
394
|
-
|
|
397
|
+
/**
|
|
398
|
+
* In January 2025 when crrev.com/c/6197645 landed, it changed the format of screenshot events.
|
|
399
|
+
* That is why we two screenshot types:
|
|
400
|
+
* `LegacyScreenshot` and `LegacySyntheticScreenshot`: BEFORE the above CL.
|
|
401
|
+
* `Screenshot`: AFTER the above CL.
|
|
402
|
+
* Important things to note:
|
|
403
|
+
* 1. Both the "old" and "new" events share the name "Screenshot" but their format is very different.
|
|
404
|
+
* 2. The old events had both a raw event (LegacyScreenshot) and a synthetic
|
|
405
|
+
* event (LegacySyntheticScreenshot). The new events only have a raw event, as
|
|
406
|
+
* we do not need the additional complexity of a synthetic event.
|
|
407
|
+
* 3. Because we like to support "old" traces, DevTools will maintain its
|
|
408
|
+
* support for both screenshot events for the foreseeable future. If you are
|
|
409
|
+
* consuming screenshot events from the ScreenshotHandler, you must make sure
|
|
410
|
+
* to have your code deal with the two different formats.
|
|
411
|
+
*/
|
|
412
|
+
export interface LegacyScreenshot extends Event {
|
|
395
413
|
/**
|
|
396
414
|
* @deprecated This value is incorrect. Use ScreenshotHandler.getPresentationTimestamp()
|
|
397
415
|
*/
|
|
398
|
-
ts:
|
|
416
|
+
ts: Micro;
|
|
399
417
|
/** The id is the frame sequence number in hex */
|
|
400
418
|
id: string;
|
|
401
419
|
args: Args & {
|
|
@@ -405,11 +423,13 @@ export interface Screenshot extends Event {
|
|
|
405
423
|
cat: 'disabled-by-default-devtools.screenshot';
|
|
406
424
|
ph: Phase.OBJECT_SNAPSHOT;
|
|
407
425
|
}
|
|
426
|
+
export declare function isLegacyScreenshot(event: Event): event is LegacyScreenshot;
|
|
427
|
+
export declare function isLegacySyntheticScreenshot(event: Event): event is LegacySyntheticScreenshot;
|
|
408
428
|
export declare function isScreenshot(event: Event): event is Screenshot;
|
|
409
|
-
export interface
|
|
410
|
-
rawSourceEvent:
|
|
429
|
+
export interface LegacySyntheticScreenshot extends Event, SyntheticBased {
|
|
430
|
+
rawSourceEvent: LegacyScreenshot;
|
|
411
431
|
/** This is the correct presentation timestamp. */
|
|
412
|
-
ts:
|
|
432
|
+
ts: Micro;
|
|
413
433
|
args: Args & {
|
|
414
434
|
dataUri: string;
|
|
415
435
|
};
|
|
@@ -417,6 +437,14 @@ export interface SyntheticScreenshot extends Event, SyntheticBased {
|
|
|
417
437
|
cat: 'disabled-by-default-devtools.screenshot';
|
|
418
438
|
ph: Phase.OBJECT_SNAPSHOT;
|
|
419
439
|
}
|
|
440
|
+
export interface Screenshot extends Instant {
|
|
441
|
+
args: Args & {
|
|
442
|
+
snapshot: string;
|
|
443
|
+
source_id: number;
|
|
444
|
+
frame_sequence: number;
|
|
445
|
+
expected_display_time: number;
|
|
446
|
+
};
|
|
447
|
+
}
|
|
420
448
|
export interface Animation extends Event {
|
|
421
449
|
args: Args & {
|
|
422
450
|
data: ArgsData & {
|
|
@@ -455,29 +483,30 @@ export interface ProcessName extends Metadata {
|
|
|
455
483
|
export interface Mark extends Event {
|
|
456
484
|
ph: Phase.MARK;
|
|
457
485
|
}
|
|
458
|
-
export interface
|
|
486
|
+
export interface NavigationStart extends Mark {
|
|
459
487
|
name: 'navigationStart';
|
|
460
488
|
args: Args & {
|
|
489
|
+
frame: string;
|
|
461
490
|
data?: ArgsData & {
|
|
462
|
-
/**
|
|
463
|
-
documentLoaderURL:
|
|
491
|
+
/** Must be non-empty to be valid. An empty documentLoaderURL means the event can be ignored. */
|
|
492
|
+
documentLoaderURL: string;
|
|
464
493
|
isLoadingMainFrame: boolean;
|
|
465
|
-
isOutermostMainFrame?: boolean;
|
|
466
494
|
navigationId: string;
|
|
495
|
+
/**
|
|
496
|
+
* `isOutermostMainFrame` was introduced in crrev.com/c/3625434 and exists because of Fenced Frames
|
|
497
|
+
* [github.com/WICG/fenced-frame/tree/master/explainer]. Fenced frames introduce a situation where
|
|
498
|
+
* `isLoadingMainFrame` could be true for a navigation, but that navigation be within an embedded "main frame", and
|
|
499
|
+
* therefore it wouldn't be on the top level main frame. In situations where we need to distinguish that, we can
|
|
500
|
+
* rely on `isOutermostMainFrame`, which will only be true for navigations on the top level main frame.
|
|
501
|
+
* This flag is optional as it was introduced in May 2022; so users reasonably may import traces from before that
|
|
502
|
+
* date that do not have this field present.
|
|
503
|
+
*/
|
|
504
|
+
isOutermostMainFrame?: boolean;
|
|
467
505
|
/**
|
|
468
506
|
* @deprecated use documentLoaderURL for navigation events URLs
|
|
469
507
|
*/
|
|
470
508
|
url?: string;
|
|
471
509
|
};
|
|
472
|
-
frame: string;
|
|
473
|
-
};
|
|
474
|
-
}
|
|
475
|
-
export interface NavigationStart extends NavigationStartUnreliable {
|
|
476
|
-
args: NavigationStartUnreliable['args'] & {
|
|
477
|
-
data: NavigationStartUnreliable['args']['data'] & {
|
|
478
|
-
/** This navigationStart is valid, as the documentLoaderURL isn't empty. */
|
|
479
|
-
documentLoaderURL: NonEmptyString;
|
|
480
|
-
};
|
|
481
510
|
};
|
|
482
511
|
}
|
|
483
512
|
export interface FirstContentfulPaint extends Mark {
|
|
@@ -698,10 +727,10 @@ interface LayoutShiftSessionWindowData {
|
|
|
698
727
|
export interface LayoutShiftParsedData {
|
|
699
728
|
/** screenshot taken before and after this shift. Before *should* always exist, but after might not at the end of a trace. */
|
|
700
729
|
screenshots: {
|
|
701
|
-
before:
|
|
702
|
-
after:
|
|
730
|
+
before: LegacySyntheticScreenshot | Screenshot | null;
|
|
731
|
+
after: LegacySyntheticScreenshot | Screenshot | null;
|
|
703
732
|
};
|
|
704
|
-
timeFromNavigation?:
|
|
733
|
+
timeFromNavigation?: Micro;
|
|
705
734
|
cumulativeWeightedScoreInWindow: number;
|
|
706
735
|
sessionWindowData: LayoutShiftSessionWindowData;
|
|
707
736
|
}
|
|
@@ -729,18 +758,18 @@ export type NavigationId = string | typeof NO_NAVIGATION;
|
|
|
729
758
|
*/
|
|
730
759
|
export interface SyntheticLayoutShiftCluster {
|
|
731
760
|
name: 'SyntheticLayoutShiftCluster';
|
|
732
|
-
clusterWindow:
|
|
761
|
+
clusterWindow: TraceWindowMicro;
|
|
733
762
|
clusterCumulativeScore: number;
|
|
734
763
|
events: SyntheticLayoutShift[];
|
|
735
764
|
scoreWindows: {
|
|
736
|
-
good:
|
|
737
|
-
needsImprovement?:
|
|
738
|
-
bad?:
|
|
765
|
+
good: TraceWindowMicro;
|
|
766
|
+
needsImprovement?: TraceWindowMicro;
|
|
767
|
+
bad?: TraceWindowMicro;
|
|
739
768
|
};
|
|
740
769
|
navigationId?: NavigationId;
|
|
741
770
|
worstShiftEvent?: Event;
|
|
742
|
-
ts:
|
|
743
|
-
dur:
|
|
771
|
+
ts: Micro;
|
|
772
|
+
dur: Micro;
|
|
744
773
|
cat: '';
|
|
745
774
|
ph: Phase.COMPLETE;
|
|
746
775
|
pid: ProcessID;
|
|
@@ -816,24 +845,24 @@ export interface ResourceReceivedData extends Instant {
|
|
|
816
845
|
}
|
|
817
846
|
/** See https://mdn.github.io/shared-assets/images/diagrams/api/performance/timestamp-diagram.svg */
|
|
818
847
|
interface ResourceReceiveResponseTimingData {
|
|
819
|
-
connectEnd:
|
|
820
|
-
connectStart:
|
|
821
|
-
dnsEnd:
|
|
822
|
-
dnsStart:
|
|
823
|
-
proxyEnd:
|
|
824
|
-
proxyStart:
|
|
825
|
-
pushEnd:
|
|
826
|
-
pushStart:
|
|
827
|
-
receiveHeadersEnd:
|
|
828
|
-
receiveHeadersStart:
|
|
848
|
+
connectEnd: Milli;
|
|
849
|
+
connectStart: Milli;
|
|
850
|
+
dnsEnd: Milli;
|
|
851
|
+
dnsStart: Milli;
|
|
852
|
+
proxyEnd: Milli;
|
|
853
|
+
proxyStart: Milli;
|
|
854
|
+
pushEnd: Milli;
|
|
855
|
+
pushStart: Milli;
|
|
856
|
+
receiveHeadersEnd: Milli;
|
|
857
|
+
receiveHeadersStart: Milli;
|
|
829
858
|
/** When the network service is about to handle a request, ie. just before going to the HTTP cache or going to the network for DNS/connection setup. */
|
|
830
859
|
requestTime: Seconds;
|
|
831
|
-
sendEnd:
|
|
832
|
-
sendStart:
|
|
833
|
-
sslEnd:
|
|
834
|
-
sslStart:
|
|
835
|
-
workerReady:
|
|
836
|
-
workerStart:
|
|
860
|
+
sendEnd: Milli;
|
|
861
|
+
sendStart: Milli;
|
|
862
|
+
sslEnd: Milli;
|
|
863
|
+
sslStart: Milli;
|
|
864
|
+
workerReady: Milli;
|
|
865
|
+
workerStart: Milli;
|
|
837
866
|
}
|
|
838
867
|
export interface ResourceReceiveResponse extends Instant {
|
|
839
868
|
name: 'ResourceReceiveResponse';
|
|
@@ -853,7 +882,7 @@ export interface ResourceReceiveResponse extends Instant {
|
|
|
853
882
|
fromServiceWorker: boolean;
|
|
854
883
|
mimeType: string;
|
|
855
884
|
requestId: string;
|
|
856
|
-
responseTime:
|
|
885
|
+
responseTime: Milli;
|
|
857
886
|
statusCode: number;
|
|
858
887
|
timing?: ResourceReceiveResponseTimingData;
|
|
859
888
|
connectionId: number;
|
|
@@ -1067,7 +1096,7 @@ export interface PerformanceMeasureBegin extends PairableUserTiming {
|
|
|
1067
1096
|
args: Args & {
|
|
1068
1097
|
detail?: string;
|
|
1069
1098
|
stackTrace?: CallFrame[];
|
|
1070
|
-
callTime?:
|
|
1099
|
+
callTime?: Micro;
|
|
1071
1100
|
};
|
|
1072
1101
|
ph: Phase.ASYNC_NESTABLE_START;
|
|
1073
1102
|
}
|
|
@@ -1078,7 +1107,7 @@ export interface PerformanceMark extends UserTiming {
|
|
|
1078
1107
|
data?: ArgsData & {
|
|
1079
1108
|
detail?: string;
|
|
1080
1109
|
stackTrace?: CallFrame[];
|
|
1081
|
-
callTime?:
|
|
1110
|
+
callTime?: Micro;
|
|
1082
1111
|
};
|
|
1083
1112
|
};
|
|
1084
1113
|
ph: Phase.INSTANT | Phase.MARK | Phase.ASYNC_NESTABLE_INSTANT;
|
|
@@ -1095,13 +1124,14 @@ export interface ConsoleTimeStamp extends Event {
|
|
|
1095
1124
|
name: Name.CONSOLE_TIME_STAMP;
|
|
1096
1125
|
ph: Phase.COMPLETE;
|
|
1097
1126
|
args: Args & {
|
|
1098
|
-
data
|
|
1127
|
+
data?: ArgsData & {
|
|
1099
1128
|
name: string | number;
|
|
1100
1129
|
start?: string | number;
|
|
1101
1130
|
end?: string | number;
|
|
1102
1131
|
track?: string | number;
|
|
1103
1132
|
trackGroup?: string | number;
|
|
1104
1133
|
color?: string | number;
|
|
1134
|
+
sampleTraceId?: number;
|
|
1105
1135
|
};
|
|
1106
1136
|
};
|
|
1107
1137
|
}
|
|
@@ -1212,7 +1242,7 @@ export interface SyntheticEventPair<T extends PairableAsync = PairableAsync> ext
|
|
|
1212
1242
|
local?: string;
|
|
1213
1243
|
global?: string;
|
|
1214
1244
|
};
|
|
1215
|
-
dur:
|
|
1245
|
+
dur: Micro;
|
|
1216
1246
|
args: Args & {
|
|
1217
1247
|
data: {
|
|
1218
1248
|
beginEvent: T & PairableAsyncBegin;
|
|
@@ -1229,13 +1259,13 @@ export type SyntheticAnimationPair = SyntheticEventPair<Animation>;
|
|
|
1229
1259
|
export interface SyntheticInteractionPair extends SyntheticEventPair<EventTimingBeginOrEnd> {
|
|
1230
1260
|
interactionId: number;
|
|
1231
1261
|
type: string;
|
|
1232
|
-
ts:
|
|
1233
|
-
dur:
|
|
1234
|
-
processingStart:
|
|
1235
|
-
processingEnd:
|
|
1236
|
-
inputDelay:
|
|
1237
|
-
mainThreadHandling:
|
|
1238
|
-
presentationDelay:
|
|
1262
|
+
ts: Micro;
|
|
1263
|
+
dur: Micro;
|
|
1264
|
+
processingStart: Micro;
|
|
1265
|
+
processingEnd: Micro;
|
|
1266
|
+
inputDelay: Micro;
|
|
1267
|
+
mainThreadHandling: Micro;
|
|
1268
|
+
presentationDelay: Micro;
|
|
1239
1269
|
}
|
|
1240
1270
|
/**
|
|
1241
1271
|
* A profile call created in the frontend from samples disguised as a
|
|
@@ -1281,6 +1311,7 @@ export interface SyntheticJSSample extends Event {
|
|
|
1281
1311
|
name: Name.JS_SAMPLE;
|
|
1282
1312
|
args: Args & {
|
|
1283
1313
|
data: ArgsData & {
|
|
1314
|
+
traceId?: number;
|
|
1284
1315
|
stackTrace: Protocol.Runtime.CallFrame[];
|
|
1285
1316
|
};
|
|
1286
1317
|
};
|
|
@@ -1532,8 +1563,6 @@ export declare function isProcessName(event: Event): event is ProcessName;
|
|
|
1532
1563
|
export declare function isTracingStartedInBrowser(event: Event): event is TracingStartedInBrowser;
|
|
1533
1564
|
export declare function isFrameCommittedInBrowser(event: Event): event is FrameCommittedInBrowser;
|
|
1534
1565
|
export declare function isCommitLoad(event: Event): event is CommitLoad;
|
|
1535
|
-
/** @deprecated You probably want `isNavigationStart` instead. */
|
|
1536
|
-
export declare function isNavigationStartUnreliable(event: Event): event is NavigationStartUnreliable;
|
|
1537
1566
|
export declare function isAnimation(event: Event): event is Animation;
|
|
1538
1567
|
export declare function isSyntheticAnimation(event: Event): event is SyntheticAnimationPair;
|
|
1539
1568
|
export declare function isLayoutShift(event: Event): event is LayoutShift;
|
|
@@ -1896,7 +1925,7 @@ export interface SchedulePostTaskCallback extends Instant {
|
|
|
1896
1925
|
data: {
|
|
1897
1926
|
taskId: number;
|
|
1898
1927
|
priority: 'user-blocking' | 'user-visible' | 'background';
|
|
1899
|
-
delay:
|
|
1928
|
+
delay: Milli;
|
|
1900
1929
|
frame?: string;
|
|
1901
1930
|
stackTrace?: CallFrame;
|
|
1902
1931
|
};
|
|
@@ -1909,7 +1938,7 @@ export interface RunPostTaskCallback extends Complete {
|
|
|
1909
1938
|
data: {
|
|
1910
1939
|
taskId: number;
|
|
1911
1940
|
priority: 'user-blocking' | 'user-visible' | 'background';
|
|
1912
|
-
delay:
|
|
1941
|
+
delay: Milli;
|
|
1913
1942
|
frame?: string;
|
|
1914
1943
|
};
|
|
1915
1944
|
};
|
|
@@ -1934,6 +1963,11 @@ export declare function isAbortPostTaskCallback(event: Event): event is RunPostT
|
|
|
1934
1963
|
*/
|
|
1935
1964
|
export declare function isJSInvocationEvent(event: Event): boolean;
|
|
1936
1965
|
export interface ConsoleRunTask extends Event {
|
|
1966
|
+
args: Args & {
|
|
1967
|
+
data: ArgsData & {
|
|
1968
|
+
sampleTraceId?: number;
|
|
1969
|
+
};
|
|
1970
|
+
};
|
|
1937
1971
|
name: Name.V8_CONSOLE_RUN_TASK;
|
|
1938
1972
|
}
|
|
1939
1973
|
export declare function isConsoleRunTask(event: Event): event is ConsoleRunTask;
|
|
@@ -2113,7 +2147,8 @@ export declare const enum Name {
|
|
|
2113
2147
|
DOM_LOADING = "domLoading",
|
|
2114
2148
|
BEGIN_REMOTE_FONT_LOAD = "BeginRemoteFontLoad",
|
|
2115
2149
|
ANIMATION_FRAME = "AnimationFrame",
|
|
2116
|
-
ANIMATION_FRAME_PRESENTATION = "AnimationFrame::Presentation"
|
|
2150
|
+
ANIMATION_FRAME_PRESENTATION = "AnimationFrame::Presentation",
|
|
2151
|
+
SYNTHETIC_NETWORK_REQUEST = "SyntheticNetworkRequest"
|
|
2117
2152
|
}
|
|
2118
2153
|
export declare const Categories: {
|
|
2119
2154
|
readonly Console: "blink.console";
|
|
@@ -2135,10 +2170,10 @@ export declare const Categories: {
|
|
|
2135
2170
|
* handlers.
|
|
2136
2171
|
*/
|
|
2137
2172
|
export interface LegacyTimelineFrame extends Event {
|
|
2138
|
-
startTime:
|
|
2139
|
-
startTimeOffset:
|
|
2140
|
-
endTime:
|
|
2141
|
-
duration:
|
|
2173
|
+
startTime: Micro;
|
|
2174
|
+
startTimeOffset: Micro;
|
|
2175
|
+
endTime: Micro;
|
|
2176
|
+
duration: Micro;
|
|
2142
2177
|
idle: boolean;
|
|
2143
2178
|
dropped: boolean;
|
|
2144
2179
|
isPartial: boolean;
|
|
@@ -28,8 +28,14 @@ export function isAuctionWorkletRunningInProcess(event) {
|
|
|
28
28
|
export function isAuctionWorkletDoneWithProcess(event) {
|
|
29
29
|
return event.name === 'AuctionWorkletDoneWithProcess';
|
|
30
30
|
}
|
|
31
|
+
export function isLegacyScreenshot(event) {
|
|
32
|
+
return event.name === "Screenshot" /* Name.SCREENSHOT */ && 'id' in event;
|
|
33
|
+
}
|
|
34
|
+
export function isLegacySyntheticScreenshot(event) {
|
|
35
|
+
return event.name === "Screenshot" /* Name.SCREENSHOT */ && 'dataUri' in (event.args ?? {});
|
|
36
|
+
}
|
|
31
37
|
export function isScreenshot(event) {
|
|
32
|
-
return event.name === "Screenshot" /* Name.SCREENSHOT
|
|
38
|
+
return event.name === "Screenshot" /* Name.SCREENSHOT */ && 'source_id' in (event.args ?? {});
|
|
33
39
|
}
|
|
34
40
|
const markerTypeGuards = [
|
|
35
41
|
isMarkDOMContent,
|
|
@@ -264,10 +270,6 @@ export function isFrameCommittedInBrowser(event) {
|
|
|
264
270
|
export function isCommitLoad(event) {
|
|
265
271
|
return event.name === 'CommitLoad';
|
|
266
272
|
}
|
|
267
|
-
/** @deprecated You probably want `isNavigationStart` instead. */
|
|
268
|
-
export function isNavigationStartUnreliable(event) {
|
|
269
|
-
return event.name === 'navigationStart';
|
|
270
|
-
}
|
|
271
273
|
export function isAnimation(event) {
|
|
272
274
|
// We've found some rare traces with an Animtation trace event from a different category: https://crbug.com/1472375#comment7
|
|
273
275
|
return event.name === 'Animation' && event.cat.includes('devtools.timeline');
|
|
@@ -355,7 +357,7 @@ export function isResourceReceivedData(event) {
|
|
|
355
357
|
return event.name === 'ResourceReceivedData';
|
|
356
358
|
}
|
|
357
359
|
export function isSyntheticNetworkRequest(event) {
|
|
358
|
-
return event.name ===
|
|
360
|
+
return event.name === "SyntheticNetworkRequest" /* Name.SYNTHETIC_NETWORK_REQUEST */;
|
|
359
361
|
}
|
|
360
362
|
export function isSyntheticWebSocketConnection(event) {
|
|
361
363
|
return event.name === 'SyntheticWebSocketConnection';
|
|
@@ -368,7 +370,7 @@ export function isPrePaint(event) {
|
|
|
368
370
|
}
|
|
369
371
|
/** A VALID navigation start (as it has a populated documentLoaderURL) */
|
|
370
372
|
export function isNavigationStart(event) {
|
|
371
|
-
return
|
|
373
|
+
return event.name === 'navigationStart' && event.args?.data?.documentLoaderURL !== '';
|
|
372
374
|
}
|
|
373
375
|
export function isMainFrameViewport(event) {
|
|
374
376
|
return event.name === 'PaintTimingVisualizer::Viewport';
|