@paulirish/trace_engine 0.0.18 → 0.0.20

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 (75) hide show
  1. package/PAUL.readme.md +5 -0
  2. package/README.md +2 -5
  3. package/core/platform/StringUtilities.js +3 -3
  4. package/core/platform/StringUtilities.js.map +1 -1
  5. package/core/platform/TypedArrayUtilities.d.ts +26 -0
  6. package/core/platform/TypedArrayUtilities.js +111 -0
  7. package/core/platform/TypedArrayUtilities.js.map +1 -0
  8. package/core/platform/platform-tsconfig.json +1 -0
  9. package/core/platform/platform.d.ts +2 -1
  10. package/core/platform/platform.js +2 -1
  11. package/core/platform/platform.js.map +1 -1
  12. package/generated/protocol.d.ts +273 -5
  13. package/models/cpu_profile/CPUProfileDataModel.js +3 -3
  14. package/models/cpu_profile/CPUProfileDataModel.js.map +1 -1
  15. package/models/trace/EntriesFilter.d.ts +3 -2
  16. package/models/trace/EntriesFilter.js +5 -3
  17. package/models/trace/EntriesFilter.js.map +1 -1
  18. package/models/trace/LegacyTracingModel.js.map +1 -1
  19. package/models/trace/ModelImpl.d.ts +1 -0
  20. package/models/trace/ModelImpl.js +5 -0
  21. package/models/trace/ModelImpl.js.map +1 -1
  22. package/models/trace/Processor.js +7 -1
  23. package/models/trace/Processor.js.map +1 -1
  24. package/models/trace/extras/FetchNodes.d.ts +8 -0
  25. package/models/trace/extras/FetchNodes.js +54 -2
  26. package/models/trace/extras/FetchNodes.js.map +1 -1
  27. package/models/trace/handlers/ExtensionTraceDataHandler.d.ts +13 -0
  28. package/models/trace/handlers/ExtensionTraceDataHandler.js +93 -0
  29. package/models/trace/handlers/ExtensionTraceDataHandler.js.map +1 -0
  30. package/models/trace/handlers/ImagePaintingHandler.d.ts +8 -0
  31. package/models/trace/handlers/ImagePaintingHandler.js +108 -0
  32. package/models/trace/handlers/ImagePaintingHandler.js.map +1 -0
  33. package/models/trace/handlers/InvalidationsHandler.js +9 -0
  34. package/models/trace/handlers/InvalidationsHandler.js.map +1 -1
  35. package/models/trace/handlers/MetaHandler.js +4 -2
  36. package/models/trace/handlers/MetaHandler.js.map +1 -1
  37. package/models/trace/handlers/ModelHandlers.d.ts +3 -0
  38. package/models/trace/handlers/ModelHandlers.js +3 -0
  39. package/models/trace/handlers/ModelHandlers.js.map +1 -1
  40. package/models/trace/handlers/PageFramesHandler.d.ts +7 -0
  41. package/models/trace/handlers/PageFramesHandler.js +41 -0
  42. package/models/trace/handlers/PageFramesHandler.js.map +1 -0
  43. package/models/trace/handlers/PageLoadMetricsHandler.d.ts +0 -7
  44. package/models/trace/handlers/PageLoadMetricsHandler.js +2 -21
  45. package/models/trace/handlers/PageLoadMetricsHandler.js.map +1 -1
  46. package/models/trace/handlers/handlers-tsconfig.json +3 -0
  47. package/models/trace/helpers/Extensions.d.ts +2 -0
  48. package/models/trace/helpers/Extensions.js +22 -0
  49. package/models/trace/helpers/Extensions.js.map +1 -0
  50. package/models/trace/helpers/Trace.d.ts +4 -3
  51. package/models/trace/helpers/Trace.js +17 -3
  52. package/models/trace/helpers/Trace.js.map +1 -1
  53. package/models/trace/helpers/helpers-tsconfig.json +1 -0
  54. package/models/trace/helpers/helpers.d.ts +1 -0
  55. package/models/trace/helpers/helpers.js +1 -0
  56. package/models/trace/helpers/helpers.js.map +1 -1
  57. package/models/trace/root-causes/LayoutShift.d.ts +7 -1
  58. package/models/trace/root-causes/LayoutShift.js +19 -4
  59. package/models/trace/root-causes/LayoutShift.js.map +1 -1
  60. package/models/trace/root-causes/RootCauses.d.ts +1 -0
  61. package/models/trace/root-causes/RootCauses.js +1 -0
  62. package/models/trace/root-causes/RootCauses.js.map +1 -1
  63. package/models/trace/types/Extensions.d.ts +62 -0
  64. package/models/trace/types/Extensions.js +38 -0
  65. package/models/trace/types/Extensions.js.map +1 -0
  66. package/models/trace/types/File.d.ts +10 -3
  67. package/models/trace/types/File.js.map +1 -1
  68. package/models/trace/types/TraceEvents.d.ts +82 -14
  69. package/models/trace/types/TraceEvents.js +46 -9
  70. package/models/trace/types/TraceEvents.js.map +1 -1
  71. package/models/trace/types/types-tsconfig.json +1 -0
  72. package/models/trace/types/types.d.ts +1 -0
  73. package/models/trace/types/types.js +1 -0
  74. package/models/trace/types/types.js.map +1 -1
  75. package/package.json +1 -1
@@ -427,6 +427,12 @@ export interface TraceEventFirstPaint extends TraceEventMark {
427
427
  };
428
428
  }
429
429
  export type PageLoadEvent = TraceEventFirstContentfulPaint | TraceEventMarkDOMContent | TraceEventInteractiveTime | TraceEventLargestContentfulPaintCandidate | TraceEventLayoutShift | TraceEventFirstPaint | TraceEventMarkLoad | TraceEventNavigationStart;
430
+ export declare const MarkerName: readonly ["MarkDOMContent", "MarkLoad", "firstPaint", "firstContentfulPaint", "largestContentfulPaint::Candidate"];
431
+ interface MakerEvent extends TraceEventData {
432
+ name: typeof MarkerName[number];
433
+ }
434
+ export declare function isTraceEventMarkerEvent(event: TraceEventData): event is MakerEvent;
435
+ export declare function eventIsPageLoadEvent(event: TraceEventData): event is PageLoadEvent;
430
436
  export interface TraceEventLargestContentfulPaintCandidate extends TraceEventMark {
431
437
  name: 'largestContentfulPaint::Candidate';
432
438
  args: TraceEventArgs & {
@@ -545,6 +551,7 @@ export interface TraceEventMarkDOMContent extends TraceEventInstant {
545
551
  data?: TraceEventArgsData & {
546
552
  frame: string;
547
553
  isMainFrame: boolean;
554
+ isOutermostMainFrame?: boolean;
548
555
  page: string;
549
556
  };
550
557
  };
@@ -556,6 +563,7 @@ export interface TraceEventMarkLoad extends TraceEventInstant {
556
563
  frame: string;
557
564
  isMainFrame: boolean;
558
565
  page: string;
566
+ isOutermostMainFrame?: boolean;
559
567
  };
560
568
  };
561
569
  }
@@ -837,7 +845,12 @@ export interface TraceEventPerformanceMeasureBegin extends TraceEventPairableUse
837
845
  export type TraceEventPerformanceMeasureEnd = TraceEventPairableUserTiming & TraceEventPairableAsyncEnd;
838
846
  export type TraceEventPerformanceMeasure = TraceEventPerformanceMeasureBegin | TraceEventPerformanceMeasureEnd;
839
847
  export interface TraceEventPerformanceMark extends TraceEventUserTiming {
840
- ph: Phase.INSTANT | Phase.MARK;
848
+ args: TraceEventArgs & {
849
+ data?: TraceEventArgsData & {
850
+ detail?: string;
851
+ };
852
+ };
853
+ ph: Phase.INSTANT | Phase.MARK | Phase.ASYNC_NESTABLE_INSTANT;
841
854
  }
842
855
  export interface TraceEventConsoleTimeBegin extends TraceEventPairableAsyncBegin {
843
856
  cat: 'blink.console';
@@ -858,17 +871,6 @@ export interface TraceEventTimeStamp extends TraceEventData {
858
871
  };
859
872
  };
860
873
  }
861
- export interface TraceEventExtensionMeasureBegin extends TraceEventPerformanceMeasureBegin {
862
- name: `devtools-entry-${string}`;
863
- }
864
- export interface TraceEventExtensionMeasureEnd extends TraceEventPerformanceMeasureEnd {
865
- name: `devtools-entry-${string}`;
866
- }
867
- export interface TraceEventExtensionMark extends TraceEventPerformanceMark {
868
- name: `devtools-entry-${string}`;
869
- ph: Phase.INSTANT | Phase.MARK;
870
- }
871
- export type TraceEventExtensionMeasure = TraceEventExtensionMeasureBegin | TraceEventExtensionMeasureEnd;
872
874
  /** ChromeFrameReporter args for PipelineReporter event.
873
875
  Matching proto: https://source.chromium.org/chromium/chromium/src/+/main:third_party/perfetto/protos/perfetto/trace/track_event/chrome_frame_reporter.proto
874
876
  */
@@ -958,6 +960,7 @@ export interface TraceEventPipelineReporter extends TraceEventData {
958
960
  }
959
961
  export declare function isTraceEventPipelineReporter(event: TraceEventData): event is TraceEventPipelineReporter;
960
962
  export interface SyntheticEventPair<T extends TraceEventPairableAsync = TraceEventPairableAsync> extends TraceEventData {
963
+ name: T['name'];
961
964
  cat: T['cat'];
962
965
  id?: string;
963
966
  id2?: {
@@ -1117,9 +1120,48 @@ export interface SyntheticInvalidation extends TraceEventInstant {
1117
1120
  stackTrace?: TraceEventCallFrame[];
1118
1121
  }
1119
1122
  export declare function isSyntheticInvalidation(event: TraceEventData): event is SyntheticInvalidation;
1123
+ export interface TraceEventDrawLazyPixelRef extends TraceEventInstant {
1124
+ name: KnownEventName.DrawLazyPixelRef;
1125
+ args?: TraceEventArgs & {
1126
+ LazyPixelRef: number;
1127
+ };
1128
+ }
1129
+ export declare function isTraceEventDrawLazyPixelRef(event: TraceEventData): event is TraceEventDrawLazyPixelRef;
1130
+ export interface TraceEventDecodeLazyPixelRef extends TraceEventInstant {
1131
+ name: KnownEventName.DecodeLazyPixelRef;
1132
+ args?: TraceEventArgs & {
1133
+ LazyPixelRef: number;
1134
+ };
1135
+ }
1136
+ export declare function isTraceEventDecodeLazyPixelRef(event: TraceEventData): event is TraceEventDecodeLazyPixelRef;
1137
+ export interface TraceEventDecodeImage extends TraceEventComplete {
1138
+ name: KnownEventName.DecodeImage;
1139
+ args: TraceEventArgs & {
1140
+ imageType: string;
1141
+ };
1142
+ }
1143
+ export declare function isTraceEventDecodeImage(event: TraceEventData): event is TraceEventDecodeImage;
1144
+ export interface SelectorTiming {
1145
+ 'elapsed (us)': number;
1146
+ 'fast_reject_count': number;
1147
+ 'match_attempts': number;
1148
+ 'selector': string;
1149
+ 'style_sheet_id': string;
1150
+ }
1151
+ export interface SelectorStats {
1152
+ selector_timings: SelectorTiming[];
1153
+ }
1154
+ export interface TraceEventStyleRecalcSelectorStats extends TraceEventComplete {
1155
+ name: KnownEventName.SelectorStats;
1156
+ args: TraceEventArgs & {
1157
+ selector_stats?: SelectorStats;
1158
+ };
1159
+ }
1160
+ export declare function isStyleRecalcSelectorStats(event: TraceEventData): event is TraceEventStyleRecalcSelectorStats;
1120
1161
  export interface TraceEventUpdateLayoutTree extends TraceEventComplete {
1121
1162
  name: KnownEventName.UpdateLayoutTree;
1122
1163
  args: TraceEventArgs & {
1164
+ selector_stats?: SelectorStats;
1123
1165
  elementCount: number;
1124
1166
  beginData?: {
1125
1167
  frame: string;
@@ -1247,11 +1289,37 @@ export interface TraceEventPaint extends TraceEventComplete {
1247
1289
  clip: number[];
1248
1290
  frame: string;
1249
1291
  layerId: number;
1250
- nodeId: number;
1292
+ nodeId?: Protocol.DOM.BackendNodeId;
1251
1293
  };
1252
1294
  };
1253
1295
  }
1254
1296
  export declare function isTraceEventPaint(event: TraceEventData): event is TraceEventPaint;
1297
+ export interface TraceEventPaintImage extends TraceEventComplete {
1298
+ name: KnownEventName.PaintImage;
1299
+ args: TraceEventArgs & {
1300
+ data: TraceEventData & {
1301
+ height: number;
1302
+ width: number;
1303
+ x: number;
1304
+ y: number;
1305
+ url?: string;
1306
+ srcHeight: number;
1307
+ srcWidth: number;
1308
+ nodeId?: Protocol.DOM.BackendNodeId;
1309
+ };
1310
+ };
1311
+ }
1312
+ export declare function isTraceEventPaintImage(event: TraceEventData): event is TraceEventPaintImage;
1313
+ export interface TraceEventScrollLayer extends TraceEventComplete {
1314
+ name: KnownEventName.ScrollLayer;
1315
+ args: TraceEventArgs & {
1316
+ data: TraceEventData & {
1317
+ frame: string;
1318
+ nodeId?: Protocol.DOM.BackendNodeId;
1319
+ };
1320
+ };
1321
+ }
1322
+ export declare function isTraceEventScrollLayer(event: TraceEventData): event is TraceEventScrollLayer;
1255
1323
  export interface TraceEventSetLayerTreeId extends TraceEventInstant {
1256
1324
  name: KnownEventName.SetLayerTreeId;
1257
1325
  args: TraceEventArgs & {
@@ -1516,7 +1584,6 @@ export declare const enum KnownEventName {
1516
1584
  V8Execute = "V8.Execute",
1517
1585
  GC = "GCEvent",
1518
1586
  DOMGC = "BlinkGC.AtomicPhase",
1519
- IncrementalGCMarking = "V8.GCIncrementalMarking",
1520
1587
  MajorGC = "MajorGC",
1521
1588
  MinorGC = "MinorGC",
1522
1589
  GCCollectGarbage = "BlinkGC.AtomicPhase",
@@ -1536,6 +1603,7 @@ export declare const enum KnownEventName {
1536
1603
  ScheduleStyleInvalidationTracking = "ScheduleStyleInvalidationTracking",
1537
1604
  StyleRecalcInvalidationTracking = "StyleRecalcInvalidationTracking",
1538
1605
  StyleInvalidatorInvalidationTracking = "StyleInvalidatorInvalidationTracking",
1606
+ SelectorStats = "SelectorStats",
1539
1607
  ScrollLayer = "ScrollLayer",
1540
1608
  UpdateLayer = "UpdateLayer",
1541
1609
  PaintSetup = "PaintSetup",
@@ -21,6 +21,25 @@ export function isTraceEventAuctionWorkletDoneWithProcess(event) {
21
21
  export function isTraceEventScreenshot(event) {
22
22
  return event.name === "Screenshot" /* KnownEventName.Screenshot */;
23
23
  }
24
+ const markerTypeGuards = [
25
+ isTraceEventMarkDOMContent,
26
+ isTraceEventMarkLoad,
27
+ isTraceEventFirstPaint,
28
+ isTraceEventFirstContentfulPaint,
29
+ isTraceEventLargestContentfulPaintCandidate,
30
+ isTraceEventNavigationStart,
31
+ ];
32
+ export const MarkerName = ['MarkDOMContent', 'MarkLoad', 'firstPaint', 'firstContentfulPaint', 'largestContentfulPaint::Candidate'];
33
+ export function isTraceEventMarkerEvent(event) {
34
+ return markerTypeGuards.some(fn => fn(event));
35
+ }
36
+ const pageLoadEventTypeGuards = [
37
+ ...markerTypeGuards,
38
+ isTraceEventInteractiveTime,
39
+ ];
40
+ export function eventIsPageLoadEvent(event) {
41
+ return pageLoadEventTypeGuards.some(fn => fn(event));
42
+ }
24
43
  export function isTraceEventTracingSessionIdForWorker(event) {
25
44
  return event.name === 'TracingSessionIdForWorker';
26
45
  }
@@ -85,6 +104,18 @@ export function isTraceEventActivateLayerTree(event) {
85
104
  export function isSyntheticInvalidation(event) {
86
105
  return event.name === 'SyntheticInvalidation';
87
106
  }
107
+ export function isTraceEventDrawLazyPixelRef(event) {
108
+ return event.name === "Draw LazyPixelRef" /* KnownEventName.DrawLazyPixelRef */;
109
+ }
110
+ export function isTraceEventDecodeLazyPixelRef(event) {
111
+ return event.name === "Decode LazyPixelRef" /* KnownEventName.DecodeLazyPixelRef */;
112
+ }
113
+ export function isTraceEventDecodeImage(event) {
114
+ return event.name === "Decode Image" /* KnownEventName.DecodeImage */;
115
+ }
116
+ export function isStyleRecalcSelectorStats(event) {
117
+ return event.name === "SelectorStats" /* KnownEventName.SelectorStats */;
118
+ }
88
119
  export function isTraceEventUpdateLayoutTree(event) {
89
120
  return event.name === "UpdateLayoutTree" /* KnownEventName.UpdateLayoutTree */;
90
121
  }
@@ -300,16 +331,16 @@ export function isTraceEventTimeStamp(traceEventData) {
300
331
  export function isTraceEventParseHTML(traceEventData) {
301
332
  return traceEventData.name === 'ParseHTML';
302
333
  }
334
+ const asyncPhases = new Set([
335
+ "b" /* Phase.ASYNC_NESTABLE_START */,
336
+ "n" /* Phase.ASYNC_NESTABLE_INSTANT */,
337
+ "e" /* Phase.ASYNC_NESTABLE_END */,
338
+ "T" /* Phase.ASYNC_STEP_INTO */,
339
+ "S" /* Phase.ASYNC_BEGIN */,
340
+ "F" /* Phase.ASYNC_END */,
341
+ "p" /* Phase.ASYNC_STEP_PAST */,
342
+ ]);
303
343
  export function isTraceEventAsyncPhase(traceEventData) {
304
- const asyncPhases = new Set([
305
- "b" /* Phase.ASYNC_NESTABLE_START */,
306
- "n" /* Phase.ASYNC_NESTABLE_INSTANT */,
307
- "e" /* Phase.ASYNC_NESTABLE_END */,
308
- "T" /* Phase.ASYNC_STEP_INTO */,
309
- "S" /* Phase.ASYNC_BEGIN */,
310
- "F" /* Phase.ASYNC_END */,
311
- "p" /* Phase.ASYNC_STEP_PAST */,
312
- ]);
313
344
  return asyncPhases.has(traceEventData.ph);
314
345
  }
315
346
  export function isSyntheticLayoutShift(traceEventData) {
@@ -324,6 +355,12 @@ export function isProfileCall(event) {
324
355
  export function isTraceEventPaint(event) {
325
356
  return event.name === "Paint" /* KnownEventName.Paint */;
326
357
  }
358
+ export function isTraceEventPaintImage(event) {
359
+ return event.name === "PaintImage" /* KnownEventName.PaintImage */;
360
+ }
361
+ export function isTraceEventScrollLayer(event) {
362
+ return event.name === "ScrollLayer" /* KnownEventName.ScrollLayer */;
363
+ }
327
364
  export function isTraceEventSetLayerId(event) {
328
365
  return event.name === "SetLayerTreeId" /* KnownEventName.SetLayerTreeId */;
329
366
  }