@paulirish/trace_engine 0.0.32 → 0.0.34

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 (309) hide show
  1. package/.tmp/tsbuildinfo/analyze-trace.d.mts +18 -0
  2. package/.tmp/tsbuildinfo/analyze-trace.d.mts.map +1 -0
  3. package/.tmp/tsbuildinfo/models/trace/LanternComputationData.d.ts +46 -0
  4. package/.tmp/tsbuildinfo/models/trace/LanternComputationData.d.ts.map +1 -0
  5. package/.tmp/tsbuildinfo/models/trace/LegacyTracingModel.d.ts +2 -0
  6. package/.tmp/tsbuildinfo/models/trace/LegacyTracingModel.d.ts.map +1 -0
  7. package/.tmp/tsbuildinfo/models/trace/ModelImpl.d.ts +72 -0
  8. package/.tmp/tsbuildinfo/models/trace/ModelImpl.d.ts.map +1 -0
  9. package/.tmp/tsbuildinfo/models/trace/Processor.d.ts +25 -0
  10. package/.tmp/tsbuildinfo/models/trace/Processor.d.ts.map +1 -0
  11. package/.tmp/tsbuildinfo/models/trace/TracingManager.d.ts +2 -0
  12. package/.tmp/tsbuildinfo/models/trace/TracingManager.d.ts.map +1 -0
  13. package/.tmp/tsbuildinfo/models/trace/trace.d.ts +13 -0
  14. package/.tmp/tsbuildinfo/models/trace/trace.d.ts.map +1 -0
  15. package/.tmp/tsbuildinfo/test/test-trace-engine.d.mts +2 -0
  16. package/.tmp/tsbuildinfo/test/test-trace-engine.d.mts.map +1 -0
  17. package/.tmp/tsbuildinfo/third_party/third-party-web/third-party-web.d.ts +3 -0
  18. package/.tmp/tsbuildinfo/third_party/third-party-web/third-party-web.d.ts.map +1 -0
  19. package/.tmp/tsbuildinfo/tsconfig.tsbuildinfo +1 -0
  20. package/README.md +6 -10
  21. package/analyze-trace.mjs +51 -16
  22. package/core/platform/ArrayUtilities.js +1 -0
  23. package/core/platform/ArrayUtilities.js.map +1 -1
  24. package/core/platform/DevToolsPath.d.ts +1 -1
  25. package/core/platform/DevToolsPath.js.map +1 -1
  26. package/core/platform/MimeType.js +4 -2
  27. package/core/platform/MimeType.js.map +1 -1
  28. package/core/platform/NumberUtilities.js +8 -0
  29. package/core/platform/NumberUtilities.js.map +1 -1
  30. package/core/platform/ServerTiming.d.ts +31 -0
  31. package/core/platform/ServerTiming.js +212 -0
  32. package/core/platform/ServerTiming.js.map +1 -0
  33. package/core/platform/Timing.d.ts +1 -1
  34. package/core/platform/Timing.js.map +1 -1
  35. package/core/platform/TypescriptUtilities.d.ts +3 -0
  36. package/core/platform/TypescriptUtilities.js.map +1 -1
  37. package/core/platform/UIString.d.ts +1 -1
  38. package/core/platform/UIString.js.map +1 -1
  39. package/core/platform/UserVisibleError.d.ts +1 -1
  40. package/core/platform/UserVisibleError.js.map +1 -1
  41. package/core/platform/platform-tsconfig.json +1 -1
  42. package/core/platform/platform.d.ts +2 -2
  43. package/core/platform/platform.js +2 -2
  44. package/core/platform/platform.js.map +1 -1
  45. package/generated/protocol.d.ts +289 -16
  46. package/models/trace/LanternComputationData.d.ts +4 -4
  47. package/models/trace/LanternComputationData.js +22 -23
  48. package/models/trace/LanternComputationData.js.map +1 -1
  49. package/models/trace/ModelImpl.d.ts +11 -12
  50. package/models/trace/ModelImpl.js +22 -33
  51. package/models/trace/ModelImpl.js.map +1 -1
  52. package/models/trace/Processor.d.ts +21 -12
  53. package/models/trace/Processor.js +151 -67
  54. package/models/trace/Processor.js.map +1 -1
  55. package/models/trace/TracingManager.js.map +1 -1
  56. package/models/trace/extras/FetchNodes.d.ts +8 -8
  57. package/models/trace/extras/FetchNodes.js +16 -11
  58. package/models/trace/extras/FetchNodes.js.map +1 -1
  59. package/models/trace/extras/FilmStrip.d.ts +2 -2
  60. package/models/trace/extras/FilmStrip.js +8 -8
  61. package/models/trace/extras/FilmStrip.js.map +1 -1
  62. package/models/trace/extras/MainThreadActivity.d.ts +1 -1
  63. package/models/trace/extras/MainThreadActivity.js +1 -1
  64. package/models/trace/extras/MainThreadActivity.js.map +1 -1
  65. package/models/trace/extras/Metadata.js +2 -2
  66. package/models/trace/extras/Metadata.js.map +1 -1
  67. package/models/trace/extras/ThirdParties.d.ts +23 -0
  68. package/models/trace/extras/ThirdParties.js +152 -0
  69. package/models/trace/extras/ThirdParties.js.map +1 -0
  70. package/models/trace/extras/URLForEntry.d.ts +9 -1
  71. package/models/trace/extras/URLForEntry.js +18 -10
  72. package/models/trace/extras/URLForEntry.js.map +1 -1
  73. package/models/trace/extras/extras-tsconfig.json +1 -0
  74. package/models/trace/extras/extras.d.ts +4 -1
  75. package/models/trace/extras/extras.js +4 -1
  76. package/models/trace/extras/extras.js.map +1 -1
  77. package/models/trace/handlers/AnimationHandler.d.ts +2 -2
  78. package/models/trace/handlers/AnimationHandler.js +1 -1
  79. package/models/trace/handlers/AnimationHandler.js.map +1 -1
  80. package/models/trace/handlers/AuctionWorkletsHandler.d.ts +2 -2
  81. package/models/trace/handlers/AuctionWorkletsHandler.js +11 -11
  82. package/models/trace/handlers/AuctionWorkletsHandler.js.map +1 -1
  83. package/models/trace/handlers/ExtensionTraceDataHandler.d.ts +6 -6
  84. package/models/trace/handlers/ExtensionTraceDataHandler.js +12 -8
  85. package/models/trace/handlers/ExtensionTraceDataHandler.js.map +1 -1
  86. package/models/trace/handlers/FramesHandler.d.ts +34 -22
  87. package/models/trace/handlers/FramesHandler.js +54 -26
  88. package/models/trace/handlers/FramesHandler.js.map +1 -1
  89. package/models/trace/handlers/GPUHandler.d.ts +4 -4
  90. package/models/trace/handlers/GPUHandler.js +3 -3
  91. package/models/trace/handlers/GPUHandler.js.map +1 -1
  92. package/models/trace/handlers/ImagePaintingHandler.d.ts +3 -3
  93. package/models/trace/handlers/ImagePaintingHandler.js +6 -8
  94. package/models/trace/handlers/ImagePaintingHandler.js.map +1 -1
  95. package/models/trace/handlers/InitiatorsHandler.d.ts +3 -3
  96. package/models/trace/handlers/InitiatorsHandler.js +25 -14
  97. package/models/trace/handlers/InitiatorsHandler.js.map +1 -1
  98. package/models/trace/handlers/InvalidationsHandler.d.ts +4 -2
  99. package/models/trace/handlers/InvalidationsHandler.js +29 -11
  100. package/models/trace/handlers/InvalidationsHandler.js.map +1 -1
  101. package/models/trace/handlers/LargestImagePaintHandler.d.ts +2 -2
  102. package/models/trace/handlers/LargestImagePaintHandler.js +1 -1
  103. package/models/trace/handlers/LargestImagePaintHandler.js.map +1 -1
  104. package/models/trace/handlers/LargestTextPaintHandler.d.ts +2 -2
  105. package/models/trace/handlers/LargestTextPaintHandler.js +1 -1
  106. package/models/trace/handlers/LargestTextPaintHandler.js.map +1 -1
  107. package/models/trace/handlers/LayerTreeHandler.d.ts +6 -6
  108. package/models/trace/handlers/LayerTreeHandler.js +6 -6
  109. package/models/trace/handlers/LayerTreeHandler.js.map +1 -1
  110. package/models/trace/handlers/LayoutShiftsHandler.d.ts +14 -20
  111. package/models/trace/handlers/LayoutShiftsHandler.js +87 -12
  112. package/models/trace/handlers/LayoutShiftsHandler.js.map +1 -1
  113. package/models/trace/handlers/MemoryHandler.d.ts +2 -2
  114. package/models/trace/handlers/MemoryHandler.js +1 -1
  115. package/models/trace/handlers/MemoryHandler.js.map +1 -1
  116. package/models/trace/handlers/MetaHandler.d.ts +15 -14
  117. package/models/trace/handlers/MetaHandler.js +32 -30
  118. package/models/trace/handlers/MetaHandler.js.map +1 -1
  119. package/models/trace/handlers/ModelHandlers.d.ts +1 -1
  120. package/models/trace/handlers/ModelHandlers.js +1 -1
  121. package/models/trace/handlers/ModelHandlers.js.map +1 -1
  122. package/models/trace/handlers/NetworkRequestsHandler.d.ts +13 -12
  123. package/models/trace/handlers/NetworkRequestsHandler.js +68 -66
  124. package/models/trace/handlers/NetworkRequestsHandler.js.map +1 -1
  125. package/models/trace/handlers/PageFramesHandler.d.ts +2 -2
  126. package/models/trace/handlers/PageFramesHandler.js +2 -2
  127. package/models/trace/handlers/PageFramesHandler.js.map +1 -1
  128. package/models/trace/handlers/PageLoadMetricsHandler.d.ts +7 -7
  129. package/models/trace/handlers/PageLoadMetricsHandler.js +21 -24
  130. package/models/trace/handlers/PageLoadMetricsHandler.js.map +1 -1
  131. package/models/trace/handlers/RendererHandler.d.ts +19 -19
  132. package/models/trace/handlers/RendererHandler.js +5 -5
  133. package/models/trace/handlers/RendererHandler.js.map +1 -1
  134. package/models/trace/handlers/SamplesHandler.d.ts +6 -6
  135. package/models/trace/handlers/SamplesHandler.js +3 -3
  136. package/models/trace/handlers/SamplesHandler.js.map +1 -1
  137. package/models/trace/handlers/ScreenshotsHandler.d.ts +6 -4
  138. package/models/trace/handlers/ScreenshotsHandler.js +11 -9
  139. package/models/trace/handlers/ScreenshotsHandler.js.map +1 -1
  140. package/models/trace/handlers/SelectorStatsHandler.d.ts +3 -3
  141. package/models/trace/handlers/SelectorStatsHandler.js +2 -2
  142. package/models/trace/handlers/SelectorStatsHandler.js.map +1 -1
  143. package/models/trace/handlers/ServerTimingsHandler.d.ts +10 -0
  144. package/models/trace/handlers/ServerTimingsHandler.js +118 -0
  145. package/models/trace/handlers/ServerTimingsHandler.js.map +1 -0
  146. package/models/trace/handlers/Threads.d.ts +7 -7
  147. package/models/trace/handlers/Threads.js +5 -5
  148. package/models/trace/handlers/Threads.js.map +1 -1
  149. package/models/trace/handlers/UserInteractionsHandler.d.ts +13 -11
  150. package/models/trace/handlers/UserInteractionsHandler.js +13 -7
  151. package/models/trace/handlers/UserInteractionsHandler.js.map +1 -1
  152. package/models/trace/handlers/UserTimingsHandler.d.ts +5 -5
  153. package/models/trace/handlers/UserTimingsHandler.js +52 -9
  154. package/models/trace/handlers/UserTimingsHandler.js.map +1 -1
  155. package/models/trace/handlers/WarningsHandler.d.ts +5 -5
  156. package/models/trace/handlers/WarningsHandler.js +4 -5
  157. package/models/trace/handlers/WarningsHandler.js.map +1 -1
  158. package/models/trace/handlers/WorkersHandler.d.ts +4 -4
  159. package/models/trace/handlers/WorkersHandler.js +1 -1
  160. package/models/trace/handlers/WorkersHandler.js.map +1 -1
  161. package/models/trace/handlers/handlers-tsconfig.json +1 -1
  162. package/models/trace/handlers/types.d.ts +7 -7
  163. package/models/trace/handlers/types.js.map +1 -1
  164. package/models/trace/helpers/Extensions.d.ts +2 -2
  165. package/models/trace/helpers/Extensions.js.map +1 -1
  166. package/models/trace/helpers/Network.d.ts +2 -2
  167. package/models/trace/helpers/Network.js +19 -2
  168. package/models/trace/helpers/Network.js.map +1 -1
  169. package/models/trace/helpers/SamplesIntegrator.d.ts +5 -5
  170. package/models/trace/helpers/SamplesIntegrator.js +10 -11
  171. package/models/trace/helpers/SamplesIntegrator.js.map +1 -1
  172. package/models/trace/helpers/SyntheticEvents.d.ts +8 -14
  173. package/models/trace/helpers/SyntheticEvents.js +20 -31
  174. package/models/trace/helpers/SyntheticEvents.js.map +1 -1
  175. package/models/trace/helpers/Timing.d.ts +18 -4
  176. package/models/trace/helpers/Timing.js +43 -1
  177. package/models/trace/helpers/Timing.js.map +1 -1
  178. package/models/trace/helpers/Trace.d.ts +46 -32
  179. package/models/trace/helpers/Trace.js +53 -24
  180. package/models/trace/helpers/Trace.js.map +1 -1
  181. package/models/trace/helpers/TreeHelpers.d.ts +40 -8
  182. package/models/trace/helpers/TreeHelpers.js +147 -19
  183. package/models/trace/helpers/TreeHelpers.js.map +1 -1
  184. package/models/trace/helpers/helpers-tsconfig.json +3 -0
  185. package/models/trace/insights/Common.d.ts +4 -3
  186. package/models/trace/insights/Common.js +22 -7
  187. package/models/trace/insights/Common.js.map +1 -1
  188. package/models/trace/insights/CumulativeLayoutShift.d.ts +36 -13
  189. package/models/trace/insights/CumulativeLayoutShift.js +199 -73
  190. package/models/trace/insights/CumulativeLayoutShift.js.map +1 -1
  191. package/models/trace/insights/DocumentLatency.d.ts +9 -4
  192. package/models/trace/insights/DocumentLatency.js +82 -7
  193. package/models/trace/insights/DocumentLatency.js.map +1 -1
  194. package/models/trace/insights/FontDisplay.d.ts +11 -0
  195. package/models/trace/insights/FontDisplay.js +44 -0
  196. package/models/trace/insights/FontDisplay.js.map +1 -0
  197. package/models/trace/insights/InsightRunners.d.ts +3 -0
  198. package/models/trace/insights/InsightRunners.js +3 -0
  199. package/models/trace/insights/InsightRunners.js.map +1 -1
  200. package/models/trace/insights/InteractionToNextPaint.d.ts +4 -5
  201. package/models/trace/insights/InteractionToNextPaint.js +5 -3
  202. package/models/trace/insights/InteractionToNextPaint.js.map +1 -1
  203. package/models/trace/insights/LargestContentfulPaint.d.ts +20 -7
  204. package/models/trace/insights/LargestContentfulPaint.js +57 -37
  205. package/models/trace/insights/LargestContentfulPaint.js.map +1 -1
  206. package/models/trace/insights/RenderBlocking.d.ts +3 -3
  207. package/models/trace/insights/RenderBlocking.js +29 -24
  208. package/models/trace/insights/RenderBlocking.js.map +1 -1
  209. package/models/trace/insights/SlowCSSSelector.d.ts +11 -0
  210. package/models/trace/insights/SlowCSSSelector.js +67 -0
  211. package/models/trace/insights/SlowCSSSelector.js.map +1 -0
  212. package/models/trace/insights/ThirdPartyWeb.d.ts +13 -0
  213. package/models/trace/insights/ThirdPartyWeb.js +42 -0
  214. package/models/trace/insights/ThirdPartyWeb.js.map +1 -0
  215. package/models/trace/insights/Viewport.d.ts +5 -2
  216. package/models/trace/insights/Viewport.js +14 -9
  217. package/models/trace/insights/Viewport.js.map +1 -1
  218. package/models/trace/insights/insights-tsconfig.json +9 -0
  219. package/models/trace/insights/insights.d.ts +1 -0
  220. package/models/trace/insights/insights.js +1 -0
  221. package/models/trace/insights/insights.js.map +1 -1
  222. package/models/trace/insights/types.d.ts +43 -25
  223. package/models/trace/insights/types.js.map +1 -1
  224. package/models/trace/lantern/core/NetworkAnalyzer.d.ts +9 -9
  225. package/models/trace/lantern/core/NetworkAnalyzer.js +18 -15
  226. package/models/trace/lantern/core/NetworkAnalyzer.js.map +1 -1
  227. package/models/trace/lantern/graph/BaseNode.d.ts +4 -4
  228. package/models/trace/lantern/graph/BaseNode.js +21 -21
  229. package/models/trace/lantern/graph/BaseNode.js.map +1 -1
  230. package/models/trace/lantern/graph/CPUNode.d.ts +1 -1
  231. package/models/trace/lantern/graph/CPUNode.js +5 -5
  232. package/models/trace/lantern/graph/CPUNode.js.map +1 -1
  233. package/models/trace/lantern/graph/PageDependencyGraph.d.ts +4 -4
  234. package/models/trace/lantern/graph/PageDependencyGraph.js +5 -5
  235. package/models/trace/lantern/graph/PageDependencyGraph.js.map +1 -1
  236. package/models/trace/lantern/simulation/ConnectionPool.d.ts +7 -7
  237. package/models/trace/lantern/simulation/ConnectionPool.js +26 -26
  238. package/models/trace/lantern/simulation/ConnectionPool.js.map +1 -1
  239. package/models/trace/lantern/simulation/DNSCache.d.ts +3 -3
  240. package/models/trace/lantern/simulation/DNSCache.js +11 -11
  241. package/models/trace/lantern/simulation/DNSCache.js.map +1 -1
  242. package/models/trace/lantern/simulation/SimulationTimingMap.d.ts +1 -1
  243. package/models/trace/lantern/simulation/SimulationTimingMap.js +15 -15
  244. package/models/trace/lantern/simulation/SimulationTimingMap.js.map +1 -1
  245. package/models/trace/lantern/simulation/Simulator.d.ts +28 -28
  246. package/models/trace/lantern/simulation/Simulator.js +113 -113
  247. package/models/trace/lantern/simulation/Simulator.js.map +1 -1
  248. package/models/trace/lantern/simulation/TCPConnection.d.ts +9 -9
  249. package/models/trace/lantern/simulation/TCPConnection.js +36 -36
  250. package/models/trace/lantern/simulation/TCPConnection.js.map +1 -1
  251. package/models/trace/root-causes/LayoutShift.d.ts +13 -13
  252. package/models/trace/root-causes/LayoutShift.js +7 -25
  253. package/models/trace/root-causes/LayoutShift.js.map +1 -1
  254. package/models/trace/types/Configuration.d.ts +16 -0
  255. package/models/trace/types/Configuration.js +1 -0
  256. package/models/trace/types/Configuration.js.map +1 -1
  257. package/models/trace/types/Extensions.d.ts +9 -12
  258. package/models/trace/types/Extensions.js +2 -1
  259. package/models/trace/types/Extensions.js.map +1 -1
  260. package/models/trace/types/File.d.ts +55 -23
  261. package/models/trace/types/File.js +15 -3
  262. package/models/trace/types/File.js.map +1 -1
  263. package/models/trace/types/TraceEvents.d.ts +868 -713
  264. package/models/trace/types/TraceEvents.js +281 -276
  265. package/models/trace/types/TraceEvents.js.map +1 -1
  266. package/models/trace/types/types.d.ts +1 -1
  267. package/models/trace/types/types.js +1 -1
  268. package/models/trace/types/types.js.map +1 -1
  269. package/package.json +10 -4
  270. package/test/test-trace-engine.mjs +56 -3
  271. package/third_party/third-party-web/third-party-web.js +1 -0
  272. package/tsconfig.json +29 -0
  273. package/core/platform/PromiseUtilities.d.ts +0 -10
  274. package/core/platform/PromiseUtilities.js +0 -18
  275. package/core/platform/PromiseUtilities.js.map +0 -1
  276. package/core/platform/SetUtilities.d.ts +0 -2
  277. package/core/platform/SetUtilities.js +0 -23
  278. package/core/platform/SetUtilities.js.map +0 -1
  279. package/models/trace/EntriesFilter.d.ts +0 -72
  280. package/models/trace/EntriesFilter.js +0 -296
  281. package/models/trace/EntriesFilter.js.map +0 -1
  282. package/models/trace/LegacyTracingModel.js.map +0 -1
  283. package/models/trace/handlers/EnhancedTracesHandler.d.ts +0 -48
  284. package/models/trace/handlers/EnhancedTracesHandler.js +0 -165
  285. package/models/trace/handlers/EnhancedTracesHandler.js.map +0 -1
  286. package/models/trace/lantern/BaseNode.d.ts +0 -91
  287. package/models/trace/lantern/BaseNode.js +0 -268
  288. package/models/trace/lantern/BaseNode.js.map +0 -1
  289. package/models/trace/lantern/CPUNode.d.ts +0 -24
  290. package/models/trace/lantern/CPUNode.js +0 -64
  291. package/models/trace/lantern/CPUNode.js.map +0 -1
  292. package/models/trace/lantern/LanternError.d.ts +0 -3
  293. package/models/trace/lantern/LanternError.js +0 -7
  294. package/models/trace/lantern/LanternError.js.map +0 -1
  295. package/models/trace/lantern/MetricsModule.d.ts +0 -11
  296. package/models/trace/lantern/MetricsModule.js +0 -14
  297. package/models/trace/lantern/MetricsModule.js.map +0 -1
  298. package/models/trace/lantern/NetworkNode.d.ts +0 -22
  299. package/models/trace/lantern/NetworkNode.js +0 -83
  300. package/models/trace/lantern/NetworkNode.js.map +0 -1
  301. package/models/trace/lantern/PageDependencyGraph.d.ts +0 -43
  302. package/models/trace/lantern/PageDependencyGraph.js +0 -509
  303. package/models/trace/lantern/PageDependencyGraph.js.map +0 -1
  304. package/models/trace/lantern/SimulationModule.d.ts +0 -17
  305. package/models/trace/lantern/SimulationModule.js +0 -13
  306. package/models/trace/lantern/SimulationModule.js.map +0 -1
  307. package/models/trace/lantern/simulation/NetworkAnalyzer.d.ts +0 -112
  308. package/models/trace/lantern/simulation/NetworkAnalyzer.js +0 -486
  309. package/models/trace/lantern/simulation/NetworkAnalyzer.js.map +0 -1
@@ -4,17 +4,19 @@ export declare const secondsToMilliseconds: (value: Types.Timing.Seconds) => Typ
4
4
  export declare const secondsToMicroseconds: (value: Types.Timing.Seconds) => Types.Timing.MicroSeconds;
5
5
  export declare const microSecondsToMilliseconds: (value: Types.Timing.MicroSeconds) => Types.Timing.MilliSeconds;
6
6
  export declare const microSecondsToSeconds: (value: Types.Timing.MicroSeconds) => Types.Timing.Seconds;
7
- export declare function timeStampForEventAdjustedByClosestNavigation(event: Types.TraceEvents.TraceEventData, traceBounds: Types.Timing.TraceWindowMicroSeconds, navigationsByNavigationId: Map<string, Types.TraceEvents.TraceEventNavigationStart>, navigationsByFrameId: Map<string, Types.TraceEvents.TraceEventNavigationStart[]>): Types.Timing.MicroSeconds;
7
+ export declare function timeStampForEventAdjustedByClosestNavigation(event: Types.Events.Event, traceBounds: Types.Timing.TraceWindowMicroSeconds, navigationsByNavigationId: Map<string, Types.Events.NavigationStart>, navigationsByFrameId: Map<string, Types.Events.NavigationStart[]>): Types.Timing.MicroSeconds;
8
+ export declare function expandWindowByPercentOrToOneMillisecond(annotationWindow: Types.Timing.TraceWindowMicroSeconds, maxTraceWindow: Types.Timing.TraceWindowMicroSeconds, percentage: number): Types.Timing.TraceWindowMicroSeconds;
8
9
  export interface EventTimingsData<ValueType extends Types.Timing.MicroSeconds | Types.Timing.MilliSeconds | Types.Timing.Seconds> {
9
10
  startTime: ValueType;
10
11
  endTime: ValueType;
11
12
  duration: ValueType;
12
13
  }
13
- export declare function eventTimingsMicroSeconds(event: Types.TraceEvents.TraceEventData): EventTimingsData<Types.Timing.MicroSeconds>;
14
- export declare function eventTimingsMilliSeconds(event: Types.TraceEvents.TraceEventData): EventTimingsData<Types.Timing.MilliSeconds>;
15
- export declare function eventTimingsSeconds(event: Types.TraceEvents.TraceEventData): EventTimingsData<Types.Timing.Seconds>;
14
+ export declare function eventTimingsMicroSeconds(event: Types.Events.Event): EventTimingsData<Types.Timing.MicroSeconds>;
15
+ export declare function eventTimingsMilliSeconds(event: Types.Events.Event): EventTimingsData<Types.Timing.MilliSeconds>;
16
+ export declare function eventTimingsSeconds(event: Types.Events.Event): EventTimingsData<Types.Timing.Seconds>;
16
17
  export declare function traceWindowMilliSeconds(bounds: Types.Timing.TraceWindowMicroSeconds): Types.Timing.TraceWindowMilliSeconds;
17
18
  export declare function traceWindowMillisecondsToMicroSeconds(bounds: Types.Timing.TraceWindowMilliSeconds): Types.Timing.TraceWindowMicroSeconds;
19
+ export declare function traceWindowMicroSecondsToMilliSeconds(bounds: Types.Timing.TraceWindowMicroSeconds): Types.Timing.TraceWindowMilliSeconds;
18
20
  export declare function traceWindowFromMilliSeconds(min: Types.Timing.MilliSeconds, max: Types.Timing.MilliSeconds): Types.Timing.TraceWindowMicroSeconds;
19
21
  export declare function traceWindowFromMicroSeconds(min: Types.Timing.MicroSeconds, max: Types.Timing.MicroSeconds): Types.Timing.TraceWindowMicroSeconds;
20
22
  export interface BoundsIncludeTimeRange {
@@ -34,4 +36,16 @@ export interface BoundsIncludeTimeRange {
34
36
  * |------------------------|
35
37
  */
36
38
  export declare function boundsIncludeTimeRange(data: BoundsIncludeTimeRange): boolean;
39
+ /** Checks to see if the event is within or overlaps the bounds */
40
+ export declare function eventIsInBounds(event: Types.Events.Event, bounds: Types.Timing.TraceWindowMicroSeconds): boolean;
37
41
  export declare function timestampIsInBounds(bounds: Types.Timing.TraceWindowMicroSeconds, timestamp: Types.Timing.MicroSeconds): boolean;
42
+ export interface WindowFitsInsideBounds {
43
+ window: Types.Timing.TraceWindowMicroSeconds;
44
+ bounds: Types.Timing.TraceWindowMicroSeconds;
45
+ }
46
+ /**
47
+ * Returns true if the window fits entirely within the bounds.
48
+ * Note that if the window is equivalent to the bounds, that is considered to fit
49
+ */
50
+ export declare function windowFitsInsideBounds(data: WindowFitsInsideBounds): boolean;
51
+ export declare function windowsEqual(w1: Types.Timing.TraceWindowMicroSeconds, w2: Types.Timing.TraceWindowMicroSeconds): boolean;
@@ -24,10 +24,30 @@ export function timeStampForEventAdjustedByClosestNavigation(event, traceBounds,
24
24
  }
25
25
  return Types.Timing.MicroSeconds(eventTimeStamp);
26
26
  }
27
+ // Expands the trace window by a provided percentage or, if it the expanded window is smaller than 1 millisecond, expands it to 1 millisecond.
28
+ // If the expanded window is outside of the max trace window, cut the overflowing bound to the max trace window bound.
29
+ export function expandWindowByPercentOrToOneMillisecond(annotationWindow, maxTraceWindow, percentage) {
30
+ // Expand min and max of the window by half of the provided percentage. That way, in total, the window will be expanded by the provided percentage.
31
+ let newMin = annotationWindow.min - annotationWindow.range * (percentage / 100) / 2;
32
+ let newMax = annotationWindow.max + annotationWindow.range * (percentage / 100) / 2;
33
+ if (newMax - newMin < 1_000) {
34
+ const rangeMiddle = (annotationWindow.min + annotationWindow.max) / 2;
35
+ newMin = rangeMiddle - 500;
36
+ newMax = rangeMiddle + 500;
37
+ }
38
+ newMin = Math.max(newMin, maxTraceWindow.min);
39
+ newMax = Math.min(newMax, maxTraceWindow.max);
40
+ const expandedWindow = {
41
+ min: Types.Timing.MicroSeconds(newMin),
42
+ max: Types.Timing.MicroSeconds(newMax),
43
+ range: Types.Timing.MicroSeconds(newMax - newMin),
44
+ };
45
+ return expandedWindow;
46
+ }
27
47
  export function eventTimingsMicroSeconds(event) {
28
48
  return {
29
49
  startTime: event.ts,
30
- endTime: Types.Timing.MicroSeconds(event.ts + (event.dur || Types.Timing.MicroSeconds(0))),
50
+ endTime: Types.Timing.MicroSeconds(event.ts + (event.dur ?? Types.Timing.MicroSeconds(0))),
31
51
  duration: Types.Timing.MicroSeconds(event.dur || 0),
32
52
  };
33
53
  }
@@ -61,6 +81,13 @@ export function traceWindowMillisecondsToMicroSeconds(bounds) {
61
81
  range: millisecondsToMicroseconds(bounds.range),
62
82
  };
63
83
  }
84
+ export function traceWindowMicroSecondsToMilliSeconds(bounds) {
85
+ return {
86
+ min: microSecondsToMilliseconds(bounds.min),
87
+ max: microSecondsToMilliseconds(bounds.max),
88
+ range: microSecondsToMilliseconds(bounds.range),
89
+ };
90
+ }
64
91
  export function traceWindowFromMilliSeconds(min, max) {
65
92
  const traceWindow = {
66
93
  min: millisecondsToMicroseconds(min),
@@ -94,7 +121,22 @@ export function boundsIncludeTimeRange(data) {
94
121
  const { min: rangeMin, max: rangeMax } = data.timeRange;
95
122
  return visibleMin <= rangeMax && visibleMax >= rangeMin;
96
123
  }
124
+ /** Checks to see if the event is within or overlaps the bounds */
125
+ export function eventIsInBounds(event, bounds) {
126
+ const startTime = event.ts;
127
+ return startTime <= bounds.max && bounds.min <= (startTime + (event.dur ?? 0));
128
+ }
97
129
  export function timestampIsInBounds(bounds, timestamp) {
98
130
  return timestamp >= bounds.min && timestamp <= bounds.max;
99
131
  }
132
+ /**
133
+ * Returns true if the window fits entirely within the bounds.
134
+ * Note that if the window is equivalent to the bounds, that is considered to fit
135
+ */
136
+ export function windowFitsInsideBounds(data) {
137
+ return data.window.min >= data.bounds.min && data.window.max <= data.bounds.max;
138
+ }
139
+ export function windowsEqual(w1, w2) {
140
+ return w1.min === w2.min && w1.max === w2.max;
141
+ }
100
142
  //# sourceMappingURL=Timing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Timing.js","sourceRoot":"","sources":["../../../../../../../front_end/models/trace/helpers/Timing.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2022 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport * as Types from '../types/types.js';\n\nimport {getNavigationForTraceEvent} from './Trace.js';\n\nexport const millisecondsToMicroseconds = (value: Types.Timing.MilliSeconds): Types.Timing.MicroSeconds =>\n Types.Timing.MicroSeconds(value * 1000);\n\nexport const secondsToMilliseconds = (value: Types.Timing.Seconds): Types.Timing.MilliSeconds =>\n Types.Timing.MilliSeconds(value * 1000);\n\nexport const secondsToMicroseconds = (value: Types.Timing.Seconds): Types.Timing.MicroSeconds =>\n millisecondsToMicroseconds(secondsToMilliseconds(value));\n\nexport const microSecondsToMilliseconds = (value: Types.Timing.MicroSeconds): Types.Timing.MilliSeconds =>\n Types.Timing.MilliSeconds(value / 1000);\n\nexport const microSecondsToSeconds = (value: Types.Timing.MicroSeconds): Types.Timing.Seconds =>\n Types.Timing.Seconds(value / 1000 / 1000);\n\nexport function timeStampForEventAdjustedByClosestNavigation(\n event: Types.TraceEvents.TraceEventData,\n traceBounds: Types.Timing.TraceWindowMicroSeconds,\n navigationsByNavigationId: Map<string, Types.TraceEvents.TraceEventNavigationStart>,\n navigationsByFrameId: Map<string, Types.TraceEvents.TraceEventNavigationStart[]>,\n ): Types.Timing.MicroSeconds {\n let eventTimeStamp = event.ts - traceBounds.min;\n if (event.args?.data?.navigationId) {\n const navigationForEvent = navigationsByNavigationId.get(event.args.data.navigationId);\n if (navigationForEvent) {\n eventTimeStamp = event.ts - navigationForEvent.ts;\n }\n } else if (event.args?.data?.frame) {\n const navigationForEvent = getNavigationForTraceEvent(event, event.args.data.frame, navigationsByFrameId);\n if (navigationForEvent) {\n eventTimeStamp = event.ts - navigationForEvent.ts;\n }\n }\n return Types.Timing.MicroSeconds(eventTimeStamp);\n}\n\nexport interface EventTimingsData<\n ValueType extends Types.Timing.MicroSeconds|Types.Timing.MilliSeconds|Types.Timing.Seconds,\n> {\n startTime: ValueType;\n endTime: ValueType;\n duration: ValueType;\n}\n\nexport function eventTimingsMicroSeconds(event: Types.TraceEvents.TraceEventData):\n EventTimingsData<Types.Timing.MicroSeconds> {\n return {\n startTime: event.ts,\n endTime: Types.Timing.MicroSeconds(event.ts + (event.dur || Types.Timing.MicroSeconds(0))),\n duration: Types.Timing.MicroSeconds(event.dur || 0),\n };\n}\nexport function eventTimingsMilliSeconds(event: Types.TraceEvents.TraceEventData):\n EventTimingsData<Types.Timing.MilliSeconds> {\n const microTimes = eventTimingsMicroSeconds(event);\n return {\n startTime: microSecondsToMilliseconds(microTimes.startTime),\n endTime: microSecondsToMilliseconds(microTimes.endTime),\n duration: microSecondsToMilliseconds(microTimes.duration),\n };\n}\nexport function eventTimingsSeconds(event: Types.TraceEvents.TraceEventData): EventTimingsData<Types.Timing.Seconds> {\n const microTimes = eventTimingsMicroSeconds(event);\n return {\n startTime: microSecondsToSeconds(microTimes.startTime),\n endTime: microSecondsToSeconds(microTimes.endTime),\n duration: microSecondsToSeconds(microTimes.duration),\n };\n}\n\nexport function traceWindowMilliSeconds(bounds: Types.Timing.TraceWindowMicroSeconds):\n Types.Timing.TraceWindowMilliSeconds {\n return {\n min: microSecondsToMilliseconds(bounds.min),\n max: microSecondsToMilliseconds(bounds.max),\n range: microSecondsToMilliseconds(bounds.range),\n };\n}\n\nexport function traceWindowMillisecondsToMicroSeconds(bounds: Types.Timing.TraceWindowMilliSeconds):\n Types.Timing.TraceWindowMicroSeconds {\n return {\n min: millisecondsToMicroseconds(bounds.min),\n max: millisecondsToMicroseconds(bounds.max),\n range: millisecondsToMicroseconds(bounds.range),\n };\n}\n\nexport function traceWindowFromMilliSeconds(\n min: Types.Timing.MilliSeconds, max: Types.Timing.MilliSeconds): Types.Timing.TraceWindowMicroSeconds {\n const traceWindow: Types.Timing.TraceWindowMicroSeconds = {\n min: millisecondsToMicroseconds(min),\n max: millisecondsToMicroseconds(max),\n range: Types.Timing.MicroSeconds(millisecondsToMicroseconds(max) - millisecondsToMicroseconds(min)),\n };\n return traceWindow;\n}\n\nexport function traceWindowFromMicroSeconds(\n min: Types.Timing.MicroSeconds, max: Types.Timing.MicroSeconds): Types.Timing.TraceWindowMicroSeconds {\n const traceWindow: Types.Timing.TraceWindowMicroSeconds = {\n min,\n max,\n range: Types.Timing.MicroSeconds(max - min),\n };\n return traceWindow;\n}\n\nexport interface BoundsIncludeTimeRange {\n timeRange: Types.Timing.TraceWindowMicroSeconds;\n bounds: Types.Timing.TraceWindowMicroSeconds;\n}\n\n/**\n * Checks to see if the timeRange is within the bounds. By \"within\" we mean\n * \"has any overlap\":\n * |------------------------|\n * == no overlap (entirely before)\n * ========= overlap\n * ========= overlap\n * ========= overlap\n * ==== no overlap (entirely after)\n * ============================== overlap (time range is larger than bounds)\n * |------------------------|\n */\nexport function boundsIncludeTimeRange(data: BoundsIncludeTimeRange): boolean {\n const {min: visibleMin, max: visibleMax} = data.bounds;\n const {min: rangeMin, max: rangeMax} = data.timeRange;\n\n return visibleMin <= rangeMax && visibleMax >= rangeMin;\n}\n\nexport function timestampIsInBounds(\n bounds: Types.Timing.TraceWindowMicroSeconds, timestamp: Types.Timing.MicroSeconds): boolean {\n return timestamp >= bounds.min && timestamp <= bounds.max;\n}\n"]}
1
+ {"version":3,"file":"Timing.js","sourceRoot":"","sources":["../../../../../../../front_end/models/trace/helpers/Timing.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2022 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport * as Types from '../types/types.js';\n\nimport {getNavigationForTraceEvent} from './Trace.js';\n\nexport const millisecondsToMicroseconds = (value: Types.Timing.MilliSeconds): Types.Timing.MicroSeconds =>\n Types.Timing.MicroSeconds(value * 1000);\n\nexport const secondsToMilliseconds = (value: Types.Timing.Seconds): Types.Timing.MilliSeconds =>\n Types.Timing.MilliSeconds(value * 1000);\n\nexport const secondsToMicroseconds = (value: Types.Timing.Seconds): Types.Timing.MicroSeconds =>\n millisecondsToMicroseconds(secondsToMilliseconds(value));\n\nexport const microSecondsToMilliseconds = (value: Types.Timing.MicroSeconds): Types.Timing.MilliSeconds =>\n Types.Timing.MilliSeconds(value / 1000);\n\nexport const microSecondsToSeconds = (value: Types.Timing.MicroSeconds): Types.Timing.Seconds =>\n Types.Timing.Seconds(value / 1000 / 1000);\n\nexport function timeStampForEventAdjustedByClosestNavigation(\n event: Types.Events.Event,\n traceBounds: Types.Timing.TraceWindowMicroSeconds,\n navigationsByNavigationId: Map<string, Types.Events.NavigationStart>,\n navigationsByFrameId: Map<string, Types.Events.NavigationStart[]>,\n ): Types.Timing.MicroSeconds {\n let eventTimeStamp = event.ts - traceBounds.min;\n if (event.args?.data?.navigationId) {\n const navigationForEvent = navigationsByNavigationId.get(event.args.data.navigationId);\n if (navigationForEvent) {\n eventTimeStamp = event.ts - navigationForEvent.ts;\n }\n } else if (event.args?.data?.frame) {\n const navigationForEvent = getNavigationForTraceEvent(event, event.args.data.frame, navigationsByFrameId);\n if (navigationForEvent) {\n eventTimeStamp = event.ts - navigationForEvent.ts;\n }\n }\n return Types.Timing.MicroSeconds(eventTimeStamp);\n}\n\n// Expands the trace window by a provided percentage or, if it the expanded window is smaller than 1 millisecond, expands it to 1 millisecond.\n// If the expanded window is outside of the max trace window, cut the overflowing bound to the max trace window bound.\nexport function expandWindowByPercentOrToOneMillisecond(\n annotationWindow: Types.Timing.TraceWindowMicroSeconds, maxTraceWindow: Types.Timing.TraceWindowMicroSeconds,\n percentage: number): Types.Timing.TraceWindowMicroSeconds {\n // Expand min and max of the window by half of the provided percentage. That way, in total, the window will be expanded by the provided percentage.\n let newMin = annotationWindow.min - annotationWindow.range * (percentage / 100) / 2;\n let newMax = annotationWindow.max + annotationWindow.range * (percentage / 100) / 2;\n\n if (newMax - newMin < 1_000) {\n const rangeMiddle = (annotationWindow.min + annotationWindow.max) / 2;\n newMin = rangeMiddle - 500;\n newMax = rangeMiddle + 500;\n }\n\n newMin = Math.max(newMin, maxTraceWindow.min);\n newMax = Math.min(newMax, maxTraceWindow.max);\n\n const expandedWindow: Types.Timing.TraceWindowMicroSeconds = {\n min: Types.Timing.MicroSeconds(newMin),\n max: Types.Timing.MicroSeconds(newMax),\n range: Types.Timing.MicroSeconds(newMax - newMin),\n };\n\n return expandedWindow;\n}\n\nexport interface EventTimingsData<\n ValueType extends Types.Timing.MicroSeconds|Types.Timing.MilliSeconds|Types.Timing.Seconds,\n> {\n startTime: ValueType;\n endTime: ValueType;\n duration: ValueType;\n}\n\nexport function eventTimingsMicroSeconds(event: Types.Events.Event): EventTimingsData<Types.Timing.MicroSeconds> {\n return {\n startTime: event.ts,\n endTime: Types.Timing.MicroSeconds(event.ts + (event.dur ?? Types.Timing.MicroSeconds(0))),\n duration: Types.Timing.MicroSeconds(event.dur || 0),\n };\n}\nexport function eventTimingsMilliSeconds(event: Types.Events.Event): EventTimingsData<Types.Timing.MilliSeconds> {\n const microTimes = eventTimingsMicroSeconds(event);\n return {\n startTime: microSecondsToMilliseconds(microTimes.startTime),\n endTime: microSecondsToMilliseconds(microTimes.endTime),\n duration: microSecondsToMilliseconds(microTimes.duration),\n };\n}\nexport function eventTimingsSeconds(event: Types.Events.Event): EventTimingsData<Types.Timing.Seconds> {\n const microTimes = eventTimingsMicroSeconds(event);\n return {\n startTime: microSecondsToSeconds(microTimes.startTime),\n endTime: microSecondsToSeconds(microTimes.endTime),\n duration: microSecondsToSeconds(microTimes.duration),\n };\n}\n\nexport function traceWindowMilliSeconds(bounds: Types.Timing.TraceWindowMicroSeconds):\n Types.Timing.TraceWindowMilliSeconds {\n return {\n min: microSecondsToMilliseconds(bounds.min),\n max: microSecondsToMilliseconds(bounds.max),\n range: microSecondsToMilliseconds(bounds.range),\n };\n}\n\nexport function traceWindowMillisecondsToMicroSeconds(bounds: Types.Timing.TraceWindowMilliSeconds):\n Types.Timing.TraceWindowMicroSeconds {\n return {\n min: millisecondsToMicroseconds(bounds.min),\n max: millisecondsToMicroseconds(bounds.max),\n range: millisecondsToMicroseconds(bounds.range),\n };\n}\nexport function traceWindowMicroSecondsToMilliSeconds(bounds: Types.Timing.TraceWindowMicroSeconds):\n Types.Timing.TraceWindowMilliSeconds {\n return {\n min: microSecondsToMilliseconds(bounds.min),\n max: microSecondsToMilliseconds(bounds.max),\n range: microSecondsToMilliseconds(bounds.range),\n };\n}\n\nexport function traceWindowFromMilliSeconds(\n min: Types.Timing.MilliSeconds, max: Types.Timing.MilliSeconds): Types.Timing.TraceWindowMicroSeconds {\n const traceWindow: Types.Timing.TraceWindowMicroSeconds = {\n min: millisecondsToMicroseconds(min),\n max: millisecondsToMicroseconds(max),\n range: Types.Timing.MicroSeconds(millisecondsToMicroseconds(max) - millisecondsToMicroseconds(min)),\n };\n return traceWindow;\n}\n\nexport function traceWindowFromMicroSeconds(\n min: Types.Timing.MicroSeconds, max: Types.Timing.MicroSeconds): Types.Timing.TraceWindowMicroSeconds {\n const traceWindow: Types.Timing.TraceWindowMicroSeconds = {\n min,\n max,\n range: Types.Timing.MicroSeconds(max - min),\n };\n return traceWindow;\n}\n\nexport interface BoundsIncludeTimeRange {\n timeRange: Types.Timing.TraceWindowMicroSeconds;\n bounds: Types.Timing.TraceWindowMicroSeconds;\n}\n\n/**\n * Checks to see if the timeRange is within the bounds. By \"within\" we mean\n * \"has any overlap\":\n * |------------------------|\n * == no overlap (entirely before)\n * ========= overlap\n * ========= overlap\n * ========= overlap\n * ==== no overlap (entirely after)\n * ============================== overlap (time range is larger than bounds)\n * |------------------------|\n */\nexport function boundsIncludeTimeRange(data: BoundsIncludeTimeRange): boolean {\n const {min: visibleMin, max: visibleMax} = data.bounds;\n const {min: rangeMin, max: rangeMax} = data.timeRange;\n\n return visibleMin <= rangeMax && visibleMax >= rangeMin;\n}\n\n/** Checks to see if the event is within or overlaps the bounds */\nexport function eventIsInBounds(event: Types.Events.Event, bounds: Types.Timing.TraceWindowMicroSeconds): boolean {\n const startTime = event.ts;\n return startTime <= bounds.max && bounds.min <= (startTime + (event.dur ?? 0));\n}\n\nexport function timestampIsInBounds(\n bounds: Types.Timing.TraceWindowMicroSeconds, timestamp: Types.Timing.MicroSeconds): boolean {\n return timestamp >= bounds.min && timestamp <= bounds.max;\n}\n\nexport interface WindowFitsInsideBounds {\n window: Types.Timing.TraceWindowMicroSeconds;\n bounds: Types.Timing.TraceWindowMicroSeconds;\n}\n\n/**\n * Returns true if the window fits entirely within the bounds.\n * Note that if the window is equivalent to the bounds, that is considered to fit\n */\nexport function windowFitsInsideBounds(data: WindowFitsInsideBounds): boolean {\n return data.window.min >= data.bounds.min && data.window.max <= data.bounds.max;\n}\n\nexport function windowsEqual(\n w1: Types.Timing.TraceWindowMicroSeconds, w2: Types.Timing.TraceWindowMicroSeconds): boolean {\n return w1.min === w2.min && w1.max === w2.max;\n}\n"]}
@@ -1,16 +1,24 @@
1
1
  import type * as Protocol from '../../../generated/protocol.js';
2
2
  import type * as CPUProfile from '../../cpu_profile/cpu_profile.js';
3
3
  import * as Types from '../types/types.js';
4
- type MatchedPairType<T extends Types.TraceEvents.TraceEventPairableAsync> = Types.TraceEvents.SyntheticEventPair<T>;
4
+ type MatchedPairType<T extends Types.Events.PairableAsync> = Types.Events.SyntheticEventPair<T>;
5
5
  type MatchingPairableAsyncEvents = {
6
- begin: Types.TraceEvents.TraceEventPairableAsyncBegin | null;
7
- end: Types.TraceEvents.TraceEventPairableAsyncEnd | null;
8
- instant?: Types.TraceEvents.TraceEventPairableAsyncInstant[];
6
+ begin: Types.Events.PairableAsyncBegin | null;
7
+ end: Types.Events.PairableAsyncEnd | null;
8
+ instant?: Types.Events.PairableAsyncInstant[];
9
9
  };
10
+ /**
11
+ * Extracts the raw stack trace of known trace events. Most likely than
12
+ * not you want to use `getZeroIndexedStackTraceForEvent`, which returns
13
+ * the stack with zero based numbering. Since some trace events are
14
+ * one based this function can yield unexpected results when used
15
+ * indiscriminately.
16
+ */
17
+ export declare function stackTraceForEvent(event: Types.Events.Event): Types.Events.CallFrame[] | null;
10
18
  export declare function extractOriginFromTrace(firstNavigationURL: string): string | null;
11
- export type EventsInThread<T extends Types.TraceEvents.TraceEventData> = Map<Types.TraceEvents.ThreadID, T[]>;
12
- export declare function addEventToProcessThread<T extends Types.TraceEvents.TraceEventData>(event: T, eventsInProcessThread: Map<Types.TraceEvents.ProcessID, EventsInThread<T>>): void;
13
- type TimeSpan = {
19
+ export type EventsInThread<T extends Types.Events.Event> = Map<Types.Events.ThreadID, T[]>;
20
+ export declare function addEventToProcessThread<T extends Types.Events.Event>(event: T, eventsInProcessThread: Map<Types.Events.ProcessID, EventsInThread<T>>): void;
21
+ export type TimeSpan = {
14
22
  ts: Types.Timing.MicroSeconds;
15
23
  dur?: Types.Timing.MicroSeconds;
16
24
  };
@@ -27,11 +35,11 @@ export declare function sortTraceEventsInPlace(events: {
27
35
  * Returns an array of ordered events that results after merging the two
28
36
  * ordered input arrays.
29
37
  */
30
- export declare function mergeEventsInOrder<T1 extends Types.TraceEvents.TraceEventData, T2 extends Types.TraceEvents.TraceEventData>(eventsArray1: readonly T1[], eventsArray2: readonly T2[]): (T1 | T2)[];
31
- export declare function getNavigationForTraceEvent(event: Types.TraceEvents.TraceEventData, eventFrameId: string, navigationsByFrameId: Map<string, Types.TraceEvents.TraceEventNavigationStart[]>): Types.TraceEvents.TraceEventNavigationStart | null;
32
- export declare function extractId(event: Types.TraceEvents.TraceEventPairableAsync | MatchedPairType<Types.TraceEvents.TraceEventPairableAsync>): string | undefined;
33
- export declare function activeURLForFrameAtTime(frameId: string, time: Types.Timing.MicroSeconds, rendererProcessesByFrame: Map<string, Map<Types.TraceEvents.ProcessID, {
34
- frame: Types.TraceEvents.TraceFrame;
38
+ export declare function mergeEventsInOrder<T1 extends Types.Events.Event, T2 extends Types.Events.Event>(eventsArray1: readonly T1[], eventsArray2: readonly T2[]): (T1 | T2)[];
39
+ export declare function getNavigationForTraceEvent(event: Types.Events.Event, eventFrameId: string, navigationsByFrameId: Map<string, Types.Events.NavigationStart[]>): Types.Events.NavigationStart | null;
40
+ export declare function extractId(event: Types.Events.PairableAsync | MatchedPairType<Types.Events.PairableAsync>): string | undefined;
41
+ export declare function activeURLForFrameAtTime(frameId: string, time: Types.Timing.MicroSeconds, rendererProcessesByFrame: Map<string, Map<Types.Events.ProcessID, {
42
+ frame: Types.Events.TraceFrame;
35
43
  window: Types.Timing.TraceWindowMicroSeconds;
36
44
  }[]>>): string | null;
37
45
  /**
@@ -44,27 +52,27 @@ export declare function activeURLForFrameAtTime(frameId: string, time: Types.Tim
44
52
  *
45
53
  * See `panels/timeline/docs/profile_calls.md` for more context on how these events are created.
46
54
  */
47
- export declare function makeProfileCall(node: CPUProfile.ProfileTreeModel.ProfileNode, profileId: Types.TraceEvents.ProfileID, sampleIndex: number, ts: Types.Timing.MicroSeconds, pid: Types.TraceEvents.ProcessID, tid: Types.TraceEvents.ThreadID): Types.TraceEvents.SyntheticProfileCall;
55
+ export declare function makeProfileCall(node: CPUProfile.ProfileTreeModel.ProfileNode, profileId: Types.Events.ProfileID, sampleIndex: number, ts: Types.Timing.MicroSeconds, pid: Types.Events.ProcessID, tid: Types.Events.ThreadID): Types.Events.SyntheticProfileCall;
48
56
  /**
49
- * Matches beginning events with TraceEventPairableAsyncEnd and TraceEventPairableAsyncInstant (ASYNC_NESTABLE_INSTANT)
57
+ * Matches beginning events with PairableAsyncEnd and PairableAsyncInstant (ASYNC_NESTABLE_INSTANT)
50
58
  * if provided, though currently only coming from Animations. Traces may contain multiple instant events so we need to
51
59
  * account for that.
52
60
  *
53
61
  * @returns {Map<string, MatchingPairableAsyncEvents>} Map of the animation's ID to it's matching events.
54
62
  */
55
- export declare function matchEvents(unpairedEvents: Types.TraceEvents.TraceEventPairableAsync[]): Map<string, MatchingPairableAsyncEvents>;
56
- export declare function createSortedSyntheticEvents<T extends Types.TraceEvents.TraceEventPairableAsync>(matchedPairs: Map<string, {
57
- begin: Types.TraceEvents.TraceEventPairableAsyncBegin | null;
58
- end: Types.TraceEvents.TraceEventPairableAsyncEnd | null;
59
- instant?: Types.TraceEvents.TraceEventPairableAsyncInstant[];
63
+ export declare function matchEvents(unpairedEvents: Types.Events.PairableAsync[]): Map<string, MatchingPairableAsyncEvents>;
64
+ export declare function createSortedSyntheticEvents<T extends Types.Events.PairableAsync>(matchedPairs: Map<string, {
65
+ begin: Types.Events.PairableAsyncBegin | null;
66
+ end: Types.Events.PairableAsyncEnd | null;
67
+ instant?: Types.Events.PairableAsyncInstant[];
60
68
  }>, syntheticEventCallback?: (syntheticEvent: MatchedPairType<T>) => void): MatchedPairType<T>[];
61
- export declare function createMatchedSortedSyntheticEvents<T extends Types.TraceEvents.TraceEventPairableAsync>(unpairedAsyncEvents: T[], syntheticEventCallback?: (syntheticEvent: MatchedPairType<T>) => void): MatchedPairType<T>[];
69
+ export declare function createMatchedSortedSyntheticEvents<T extends Types.Events.PairableAsync>(unpairedAsyncEvents: T[], syntheticEventCallback?: (syntheticEvent: MatchedPairType<T>) => void): MatchedPairType<T>[];
62
70
  /**
63
71
  * Different trace events return line/column numbers that are 1 or 0 indexed.
64
72
  * This function knows which events return 1 indexed numbers and normalizes
65
73
  * them. The UI expects 0 indexed line numbers, so that is what we return.
66
74
  */
67
- export declare function getZeroIndexedLineAndColumnForEvent(event: Types.TraceEvents.TraceEventData): {
75
+ export declare function getZeroIndexedLineAndColumnForEvent(event: Types.Events.Event): {
68
76
  lineNumber?: number;
69
77
  columnNumber?: number;
70
78
  };
@@ -74,15 +82,21 @@ export declare function getZeroIndexedLineAndColumnForEvent(event: Types.TraceEv
74
82
  * This function knows which events return 1 indexed numbers and normalizes
75
83
  * them. The UI expects 0 indexed line numbers, so that is what we return.
76
84
  */
77
- export declare function getZeroIndexedStackTraceForEvent(event: Types.TraceEvents.TraceEventData): Types.TraceEvents.TraceEventCallFrame[] | null;
78
- export declare function frameIDForEvent(event: Types.TraceEvents.TraceEventData): string | null;
79
- export declare function isTopLevelEvent(event: Types.TraceEvents.TraceEventData): boolean;
80
- export declare function findUpdateLayoutTreeEvents(events: Types.TraceEvents.TraceEventData[], startTime: Types.Timing.MicroSeconds, endTime?: Types.Timing.MicroSeconds): Types.TraceEvents.TraceEventUpdateLayoutTree[];
85
+ export declare function getZeroIndexedStackTraceForEvent(event: Types.Events.Event): Types.Events.CallFrame[] | null;
86
+ /**
87
+ * Given a 1-based call frame creates a 0-based one.
88
+ */
89
+ export declare function makeZeroBasedCallFrame(callFrame: Types.Events.CallFrame): Types.Events.CallFrame;
90
+ export declare function frameIDForEvent(event: Types.Events.Event): string | null;
91
+ export declare function isTopLevelEvent(event: Types.Events.Event): boolean;
92
+ export declare function findUpdateLayoutTreeEvents(events: Types.Events.Event[], startTime: Types.Timing.MicroSeconds, endTime?: Types.Timing.MicroSeconds): Types.Events.UpdateLayoutTree[];
93
+ export declare function findNextEventAfterTimestamp<T extends Types.Events.Event>(candidates: T[], ts: Types.Timing.MicroSeconds): T | null;
94
+ export declare function findPreviousEventBeforeTimestamp<T extends Types.Events.Event>(candidates: T[], ts: Types.Timing.MicroSeconds): T | null;
81
95
  export interface ForEachEventConfig {
82
- onStartEvent: (event: Types.TraceEvents.TraceEventData) => void;
83
- onEndEvent: (event: Types.TraceEvents.TraceEventData) => void;
84
- onInstantEvent?: (event: Types.TraceEvents.TraceEventData) => void;
85
- eventFilter?: (event: Types.TraceEvents.TraceEventData) => boolean;
96
+ onStartEvent: (event: Types.Events.Event) => void;
97
+ onEndEvent: (event: Types.Events.Event) => void;
98
+ onInstantEvent?: (event: Types.Events.Event) => void;
99
+ eventFilter?: (event: Types.Events.Event) => boolean;
86
100
  startTime?: Types.Timing.MicroSeconds;
87
101
  endTime?: Types.Timing.MicroSeconds;
88
102
  ignoreAsyncEvents?: boolean;
@@ -117,7 +131,7 @@ export interface ForEachEventConfig {
117
131
  * By default, async events are skipped. This behaviour can be
118
132
  * overriden making use of the config.ignoreAsyncEvents parameter.
119
133
  */
120
- export declare function forEachEvent(events: Types.TraceEvents.TraceEventData[], config: ForEachEventConfig): void;
121
- export declare function eventHasCategory(event: Types.TraceEvents.TraceEventData, category: string): boolean;
122
- export declare function nodeIdForInvalidationEvent(event: Types.TraceEvents.InvalidationTrackingEvent): Protocol.DOM.BackendNodeId | null;
134
+ export declare function forEachEvent(events: Types.Events.Event[], config: ForEachEventConfig): void;
135
+ export declare function eventHasCategory(event: Types.Events.Event, category: string): boolean;
136
+ export declare function nodeIdForInvalidationEvent(event: Types.Events.InvalidationTrackingEvent): Protocol.DOM.BackendNodeId | null;
123
137
  export {};
@@ -12,13 +12,22 @@ import { eventTimingsMicroSeconds } from './Timing.js';
12
12
  * one based this function can yield unexpected results when used
13
13
  * indiscriminately.
14
14
  */
15
- function stackTraceForEvent(event) {
15
+ export function stackTraceForEvent(event) {
16
16
  if (event.args?.data?.stackTrace) {
17
17
  return event.args.data.stackTrace;
18
18
  }
19
- if (Types.TraceEvents.isTraceEventUpdateLayoutTree(event)) {
19
+ if (event.args?.stackTrace) {
20
+ return event.args.stackTrace;
21
+ }
22
+ if (Types.Events.isUpdateLayoutTree(event)) {
20
23
  return event.args.beginData?.stackTrace || null;
21
24
  }
25
+ if (Types.Extensions.isSyntheticExtensionEntry(event)) {
26
+ return stackTraceForEvent(event.rawSourceEvent);
27
+ }
28
+ if (Types.Events.isSyntheticUserTiming(event)) {
29
+ return stackTraceForEvent(event.rawSourceEvent);
30
+ }
22
31
  return null;
23
32
  }
24
33
  export function extractOriginFromTrace(firstNavigationURL) {
@@ -154,7 +163,7 @@ export function makeProfileCall(node, profileId, sampleIndex, ts, pid, tid) {
154
163
  name: 'ProfileCall',
155
164
  nodeId: node.id,
156
165
  args: {},
157
- ph: "X" /* Types.TraceEvents.Phase.COMPLETE */,
166
+ ph: "X" /* Types.Events.Phase.COMPLETE */,
158
167
  pid,
159
168
  tid,
160
169
  ts,
@@ -165,7 +174,7 @@ export function makeProfileCall(node, profileId, sampleIndex, ts, pid, tid) {
165
174
  };
166
175
  }
167
176
  /**
168
- * Matches beginning events with TraceEventPairableAsyncEnd and TraceEventPairableAsyncInstant (ASYNC_NESTABLE_INSTANT)
177
+ * Matches beginning events with PairableAsyncEnd and PairableAsyncInstant (ASYNC_NESTABLE_INSTANT)
169
178
  * if provided, though currently only coming from Animations. Traces may contain multiple instant events so we need to
170
179
  * account for that.
171
180
  *
@@ -186,9 +195,9 @@ export function matchEvents(unpairedEvents) {
186
195
  const otherEventsWithID = Platform.MapUtilities.getWithDefault(matchedPairs, syntheticId, () => {
187
196
  return { begin: null, end: null, instant: [] };
188
197
  });
189
- const isStartEvent = event.ph === "b" /* Types.TraceEvents.Phase.ASYNC_NESTABLE_START */;
190
- const isEndEvent = event.ph === "e" /* Types.TraceEvents.Phase.ASYNC_NESTABLE_END */;
191
- const isInstantEvent = event.ph === "n" /* Types.TraceEvents.Phase.ASYNC_NESTABLE_INSTANT */;
198
+ const isStartEvent = event.ph === "b" /* Types.Events.Phase.ASYNC_NESTABLE_START */;
199
+ const isEndEvent = event.ph === "e" /* Types.Events.Phase.ASYNC_NESTABLE_END */;
200
+ const isInstantEvent = event.ph === "n" /* Types.Events.Phase.ASYNC_NESTABLE_INSTANT */;
192
201
  if (isStartEvent) {
193
202
  otherEventsWithID.begin = event;
194
203
  }
@@ -235,7 +244,7 @@ export function createSortedSyntheticEvents(matchedPairs, syntheticEventCallback
235
244
  continue;
236
245
  }
237
246
  const targetEvent = endEvent || beginEvent;
238
- const event = SyntheticEventsManager.registerSyntheticBasedEvent({
247
+ const event = SyntheticEventsManager.registerSyntheticEvent({
239
248
  rawSourceEvent: beginEvent,
240
249
  cat: targetEvent.cat,
241
250
  ph: targetEvent.ph,
@@ -284,10 +293,10 @@ export function getZeroIndexedLineAndColumnForEvent(event) {
284
293
  switch (event.name) {
285
294
  // All these events have line/column numbers which are 1 indexed; so we
286
295
  // subtract to make them 0 indexed.
287
- case "FunctionCall" /* Types.TraceEvents.KnownEventName.FunctionCall */:
288
- case "EvaluateScript" /* Types.TraceEvents.KnownEventName.EvaluateScript */:
289
- case "v8.compile" /* Types.TraceEvents.KnownEventName.Compile */:
290
- case "v8.produceCache" /* Types.TraceEvents.KnownEventName.CacheScript */: {
296
+ case "FunctionCall" /* Types.Events.Name.FUNCTION_CALL */:
297
+ case "EvaluateScript" /* Types.Events.Name.EVALUATE_SCRIPT */:
298
+ case "v8.compile" /* Types.Events.Name.COMPILE */:
299
+ case "v8.produceCache" /* Types.Events.Name.CACHE_SCRIPT */: {
291
300
  return {
292
301
  lineNumber: typeof lineNumber === 'number' ? lineNumber - 1 : undefined,
293
302
  columnNumber: typeof columnNumber === 'number' ? columnNumber - 1 : undefined,
@@ -310,18 +319,30 @@ export function getZeroIndexedStackTraceForEvent(event) {
310
319
  return null;
311
320
  }
312
321
  return stack.map(callFrame => {
313
- const normalizedCallFrame = { ...callFrame };
314
322
  switch (event.name) {
315
- case "ScheduleStyleRecalculation" /* Types.TraceEvents.KnownEventName.ScheduleStyleRecalculation */:
316
- case "InvalidateLayout" /* Types.TraceEvents.KnownEventName.InvalidateLayout */:
317
- case "UpdateLayoutTree" /* Types.TraceEvents.KnownEventName.UpdateLayoutTree */: {
318
- normalizedCallFrame.lineNumber = callFrame.lineNumber && callFrame.lineNumber - 1;
319
- normalizedCallFrame.columnNumber = callFrame.columnNumber && callFrame.columnNumber - 1;
323
+ case "ScheduleStyleRecalculation" /* Types.Events.Name.SCHEDULE_STYLE_RECALCULATION */:
324
+ case "InvalidateLayout" /* Types.Events.Name.INVALIDATE_LAYOUT */:
325
+ case "UpdateLayoutTree" /* Types.Events.Name.UPDATE_LAYOUT_TREE */: {
326
+ return makeZeroBasedCallFrame(callFrame);
327
+ }
328
+ default: {
329
+ if (Types.Events.isUserTiming(event) || Types.Extensions.isSyntheticExtensionEntry(event)) {
330
+ return makeZeroBasedCallFrame(callFrame);
331
+ }
320
332
  }
321
333
  }
322
- return normalizedCallFrame;
334
+ return callFrame;
323
335
  });
324
336
  }
337
+ /**
338
+ * Given a 1-based call frame creates a 0-based one.
339
+ */
340
+ export function makeZeroBasedCallFrame(callFrame) {
341
+ const normalizedCallFrame = { ...callFrame };
342
+ normalizedCallFrame.lineNumber = callFrame.lineNumber && callFrame.lineNumber - 1;
343
+ normalizedCallFrame.columnNumber = callFrame.columnNumber && callFrame.columnNumber - 1;
344
+ return normalizedCallFrame;
345
+ }
325
346
  /**
326
347
  * NOTE: you probably do not want this function! (Which is why it is not exported).
327
348
  *
@@ -376,7 +397,7 @@ export function isTopLevelEvent(event) {
376
397
  // TODO(crbug.com/341234884): do we need this?
377
398
  return true;
378
399
  }
379
- return event.cat.includes(DevToolsTimelineEventCategory) && event.name === "RunTask" /* Types.TraceEvents.KnownEventName.RunTask */;
400
+ return event.cat.includes(DevToolsTimelineEventCategory) && event.name === "RunTask" /* Types.Events.Name.RUN_TASK */;
380
401
  }
381
402
  function topLevelEventIndexEndingAfter(events, time) {
382
403
  let index = Platform.ArrayUtilities.upperBound(events, time, (time, event) => time - event.ts) - 1;
@@ -390,7 +411,7 @@ export function findUpdateLayoutTreeEvents(events, startTime, endTime) {
390
411
  const startEventIndex = topLevelEventIndexEndingAfter(events, startTime);
391
412
  for (let i = startEventIndex; i < events.length; i++) {
392
413
  const event = events[i];
393
- if (!Types.TraceEvents.isTraceEventUpdateLayoutTree(event)) {
414
+ if (!Types.Events.isUpdateLayoutTree(event)) {
394
415
  continue;
395
416
  }
396
417
  if (event.ts >= (endTime || Infinity)) {
@@ -400,6 +421,14 @@ export function findUpdateLayoutTreeEvents(events, startTime, endTime) {
400
421
  }
401
422
  return foundEvents;
402
423
  }
424
+ export function findNextEventAfterTimestamp(candidates, ts) {
425
+ const index = Platform.ArrayUtilities.nearestIndexFromBeginning(candidates, candidate => ts < candidate.ts);
426
+ return index === null ? null : candidates[index];
427
+ }
428
+ export function findPreviousEventBeforeTimestamp(candidates, ts) {
429
+ const index = Platform.ArrayUtilities.nearestIndexFromEnd(candidates, candidate => candidate.ts < ts);
430
+ return index === null ? null : candidates[index];
431
+ }
403
432
  /**
404
433
  * Iterates events in a tree hierarchically, from top to bottom,
405
434
  * calling back on every event's start and end in the order
@@ -431,7 +460,7 @@ export function findUpdateLayoutTreeEvents(events, startTime, endTime) {
431
460
  * overriden making use of the config.ignoreAsyncEvents parameter.
432
461
  */
433
462
  export function forEachEvent(events, config) {
434
- const globalStartTime = config.startTime || Types.Timing.MicroSeconds(0);
463
+ const globalStartTime = config.startTime ?? Types.Timing.MicroSeconds(0);
435
464
  const globalEndTime = config.endTime || Types.Timing.MicroSeconds(Infinity);
436
465
  const ignoreAsyncEvents = config.ignoreAsyncEvents === false ? false : true;
437
466
  const stack = [];
@@ -445,8 +474,8 @@ export function forEachEvent(events, config) {
445
474
  if (currentEventTimings.startTime > globalEndTime) {
446
475
  break;
447
476
  }
448
- const isIgnoredAsyncEvent = ignoreAsyncEvents && Types.TraceEvents.isAsyncPhase(currentEvent.ph);
449
- if (isIgnoredAsyncEvent || Types.TraceEvents.isFlowPhase(currentEvent.ph)) {
477
+ const isIgnoredAsyncEvent = ignoreAsyncEvents && Types.Events.isPhaseAsync(currentEvent.ph);
478
+ if (isIgnoredAsyncEvent || Types.Events.isFlowPhase(currentEvent.ph)) {
450
479
  continue;
451
480
  }
452
481
  // If we have now reached an event that is after a bunch of events, we need