@paulirish/trace_engine 0.0.58 → 0.0.60
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/analyze-trace.d.mts +2 -3
- package/.tmp/tsbuildinfo/analyze-trace.d.mts.map +1 -1
- package/.tmp/tsbuildinfo/tsconfig.tsbuildinfo +1 -1
- package/LICENSE +1 -1
- package/README.md +28 -1
- package/analyze-trace.mjs +5 -3
- package/core/platform/ArrayUtilities.d.ts +1 -0
- package/core/platform/ArrayUtilities.js +2 -2
- package/core/platform/ArrayUtilities.js.map +1 -1
- package/core/platform/Brand.js +1 -1
- package/core/platform/Brand.js.map +1 -1
- package/core/platform/Constructor.js +1 -1
- package/core/platform/Constructor.js.map +1 -1
- package/core/platform/DOMUtilities.js +1 -1
- package/core/platform/DOMUtilities.js.map +1 -1
- package/core/platform/DateUtilities.js +1 -1
- package/core/platform/DateUtilities.js.map +1 -1
- package/core/platform/DevToolsPath.js +1 -1
- package/core/platform/DevToolsPath.js.map +1 -1
- package/core/platform/KeyboardUtilities.js +1 -1
- package/core/platform/KeyboardUtilities.js.map +1 -1
- package/core/platform/MapUtilities.js +1 -1
- package/core/platform/MapUtilities.js.map +1 -1
- package/core/platform/MimeType.js +1 -1
- package/core/platform/MimeType.js.map +1 -1
- package/core/platform/NumberUtilities.js +1 -1
- package/core/platform/NumberUtilities.js.map +1 -1
- package/core/platform/StringUtilities.d.ts +2 -1
- package/core/platform/StringUtilities.js +34 -32
- package/core/platform/StringUtilities.js.map +1 -1
- package/core/platform/Timing.js +1 -1
- package/core/platform/Timing.js.map +1 -1
- package/core/platform/TypedArrayUtilities.js +1 -1
- package/core/platform/TypedArrayUtilities.js.map +1 -1
- package/core/platform/TypescriptUtilities.js +1 -1
- package/core/platform/TypescriptUtilities.js.map +1 -1
- package/core/platform/UIString.js +1 -1
- package/core/platform/UIString.js.map +1 -1
- package/core/platform/UserVisibleError.js +1 -1
- package/core/platform/UserVisibleError.js.map +1 -1
- package/core/platform/devtools_entrypoint-bundle-typescript-tsconfig.json +6 -2
- package/core/platform/platform-tsconfig.json +6 -2
- package/core/platform/platform.js +3 -29
- package/core/platform/platform.js.map +1 -1
- package/generated/protocol.d.ts +224 -14
- package/generated/protocol.js +1 -1
- package/locales/af.json +0 -9
- package/locales/am.json +0 -9
- package/locales/ar.json +0 -9
- package/locales/as.json +0 -9
- package/locales/az.json +0 -9
- package/locales/be.json +0 -9
- package/locales/bg.json +0 -9
- package/locales/bn.json +1 -10
- package/locales/bs.json +0 -9
- package/locales/ca.json +0 -9
- package/locales/cs.json +0 -9
- package/locales/cy.json +0 -9
- package/locales/da.json +0 -9
- package/locales/de.json +0 -9
- package/locales/el.json +0 -9
- package/locales/en-GB.json +0 -9
- package/locales/en-US.json +8 -8
- package/locales/en-XL.json +8 -8
- package/locales/es-419.json +0 -9
- package/locales/es.json +0 -9
- package/locales/et.json +0 -9
- package/locales/eu.json +0 -9
- package/locales/fa.json +0 -9
- package/locales/fi.json +0 -9
- package/locales/fil.json +0 -9
- package/locales/fr-CA.json +0 -9
- package/locales/fr.json +0 -9
- package/locales/gl.json +0 -9
- package/locales/gu.json +0 -9
- package/locales/he.json +0 -9
- package/locales/hi.json +0 -9
- package/locales/hr.json +4 -13
- package/locales/hu.json +0 -9
- package/locales/hy.json +0 -9
- package/locales/id.json +0 -9
- package/locales/is.json +0 -9
- package/locales/it.json +0 -9
- package/locales/ja.json +0 -9
- package/locales/ka.json +0 -9
- package/locales/kk.json +0 -9
- package/locales/km.json +0 -9
- package/locales/kn.json +0 -9
- package/locales/ko.json +0 -9
- package/locales/ky.json +0 -9
- package/locales/lo.json +0 -9
- package/locales/lt.json +0 -9
- package/locales/lv.json +0 -9
- package/locales/mk.json +0 -9
- package/locales/ml.json +0 -9
- package/locales/mn.json +0 -9
- package/locales/mr.json +0 -9
- package/locales/ms.json +0 -9
- package/locales/my.json +1 -10
- package/locales/ne.json +22 -31
- package/locales/nl.json +0 -9
- package/locales/no.json +0 -9
- package/locales/or.json +0 -9
- package/locales/pa.json +0 -9
- package/locales/pl.json +0 -9
- package/locales/pt-PT.json +0 -9
- package/locales/pt.json +0 -9
- package/locales/ro.json +0 -9
- package/locales/ru.json +0 -9
- package/locales/si.json +1 -10
- package/locales/sk.json +0 -9
- package/locales/sl.json +0 -9
- package/locales/sq.json +0 -9
- package/locales/sr-Latn.json +0 -9
- package/locales/sr.json +0 -9
- package/locales/sv.json +0 -9
- package/locales/sw.json +0 -9
- package/locales/ta.json +0 -9
- package/locales/te.json +0 -9
- package/locales/th.json +0 -9
- package/locales/tr.json +0 -9
- package/locales/uk.json +0 -9
- package/locales/ur.json +0 -9
- package/locales/uz.json +0 -9
- package/locales/vi.json +0 -9
- package/locales/zh-HK.json +0 -9
- package/locales/zh-TW.json +0 -9
- package/locales/zh.json +0 -9
- package/locales/zu.json +0 -9
- package/models/cpu_profile/CPUProfileDataModel.d.ts +1 -0
- package/models/cpu_profile/CPUProfileDataModel.js +1 -1
- package/models/cpu_profile/CPUProfileDataModel.js.map +1 -1
- package/models/cpu_profile/ProfileTreeModel.d.ts +1 -1
- package/models/cpu_profile/ProfileTreeModel.js +1 -1
- package/models/cpu_profile/ProfileTreeModel.js.map +1 -1
- package/models/cpu_profile/cpu_profile-tsconfig.json +6 -2
- package/models/cpu_profile/cpu_profile.js +1 -1
- package/models/cpu_profile/cpu_profile.js.map +1 -1
- package/models/cpu_profile/devtools_entrypoint-bundle-typescript-tsconfig.json +6 -2
- package/models/trace/EntityMapper.d.ts +33 -0
- package/models/trace/EntityMapper.js +123 -0
- package/models/trace/EntityMapper.js.map +1 -0
- package/models/trace/EventsSerializer.d.ts +11 -0
- package/models/trace/EventsSerializer.js +82 -0
- package/models/trace/EventsSerializer.js.map +1 -0
- package/models/trace/LanternComputationData.d.ts +3 -3
- package/models/trace/LanternComputationData.js +12 -10
- package/models/trace/LanternComputationData.js.map +1 -1
- package/models/trace/ModelImpl.d.ts +7 -14
- package/models/trace/ModelImpl.js +25 -52
- package/models/trace/ModelImpl.js.map +1 -1
- package/models/trace/Name.d.ts +12 -0
- package/models/trace/Name.js +115 -0
- package/models/trace/Name.js.map +1 -0
- package/models/trace/Processor.d.ts +1 -1
- package/models/trace/Processor.js +42 -61
- package/models/trace/Processor.js.map +1 -1
- package/models/trace/Styles.d.ts +50 -0
- package/models/trace/Styles.js +816 -0
- package/models/trace/Styles.js.map +1 -0
- package/models/trace/devtools_entrypoint-bundle-typescript-tsconfig.json +6 -2
- package/models/trace/extras/FilmStrip.d.ts +1 -1
- package/models/trace/extras/FilmStrip.js +7 -7
- package/models/trace/extras/FilmStrip.js.map +1 -1
- package/models/trace/extras/MainThreadActivity.js +1 -1
- package/models/trace/extras/MainThreadActivity.js.map +1 -1
- package/models/trace/extras/ScriptDuplication.js +1 -1
- package/models/trace/extras/ScriptDuplication.js.map +1 -1
- package/models/trace/extras/StackTraceForEvent.d.ts +2 -2
- package/models/trace/extras/StackTraceForEvent.js +21 -21
- package/models/trace/extras/StackTraceForEvent.js.map +1 -1
- package/models/trace/extras/ThirdParties.d.ts +2 -2
- package/models/trace/extras/ThirdParties.js +17 -17
- package/models/trace/extras/ThirdParties.js.map +1 -1
- package/models/trace/extras/TraceFilter.d.ts +1 -1
- package/models/trace/extras/TraceFilter.js +1 -1
- package/models/trace/extras/TraceFilter.js.map +1 -1
- package/models/trace/extras/TraceTree.d.ts +1 -0
- package/models/trace/extras/TraceTree.js +2 -2
- package/models/trace/extras/TraceTree.js.map +1 -1
- package/models/trace/extras/devtools_entrypoint-bundle-typescript-tsconfig.json +6 -2
- package/models/trace/extras/extras-tsconfig.json +6 -2
- package/models/trace/extras/extras.js.map +1 -1
- package/models/trace/handlers/AnimationFramesHandler.js +11 -11
- package/models/trace/handlers/AnimationFramesHandler.js.map +1 -1
- package/models/trace/handlers/AnimationHandler.js +5 -5
- package/models/trace/handlers/AnimationHandler.js.map +1 -1
- package/models/trace/handlers/AsyncJSCallsHandler.d.ts +3 -3
- package/models/trace/handlers/AsyncJSCallsHandler.js +9 -9
- package/models/trace/handlers/AsyncJSCallsHandler.js.map +1 -1
- package/models/trace/handlers/AuctionWorkletsHandler.js +12 -12
- package/models/trace/handlers/AuctionWorkletsHandler.js.map +1 -1
- package/models/trace/handlers/DOMStatsHandler.js +3 -3
- package/models/trace/handlers/DOMStatsHandler.js.map +1 -1
- package/models/trace/handlers/ExtensionTraceDataHandler.d.ts +15 -2
- package/models/trace/handlers/ExtensionTraceDataHandler.js +53 -64
- package/models/trace/handlers/ExtensionTraceDataHandler.js.map +1 -1
- package/models/trace/handlers/FlowsHandler.js +11 -11
- package/models/trace/handlers/FlowsHandler.js.map +1 -1
- package/models/trace/handlers/FramesHandler.d.ts +7 -0
- package/models/trace/handlers/FramesHandler.js +12 -10
- package/models/trace/handlers/FramesHandler.js.map +1 -1
- package/models/trace/handlers/GPUHandler.js +3 -3
- package/models/trace/handlers/GPUHandler.js.map +1 -1
- package/models/trace/handlers/ImagePaintingHandler.js +13 -13
- package/models/trace/handlers/ImagePaintingHandler.js.map +1 -1
- package/models/trace/handlers/InitiatorsHandler.js +32 -41
- package/models/trace/handlers/InitiatorsHandler.js.map +1 -1
- package/models/trace/handlers/InvalidationsHandler.js +63 -44
- package/models/trace/handlers/InvalidationsHandler.js.map +1 -1
- package/models/trace/handlers/LargestImagePaintHandler.js +5 -4
- package/models/trace/handlers/LargestImagePaintHandler.js.map +1 -1
- package/models/trace/handlers/LargestTextPaintHandler.js +3 -3
- package/models/trace/handlers/LargestTextPaintHandler.js.map +1 -1
- package/models/trace/handlers/LayerTreeHandler.js +11 -11
- package/models/trace/handlers/LayerTreeHandler.js.map +1 -1
- package/models/trace/handlers/LayoutShiftsHandler.d.ts +17 -4
- package/models/trace/handlers/LayoutShiftsHandler.js +47 -40
- package/models/trace/handlers/LayoutShiftsHandler.js.map +1 -1
- package/models/trace/handlers/MemoryHandler.js +3 -3
- package/models/trace/handlers/MemoryHandler.js.map +1 -1
- package/models/trace/handlers/MetaHandler.d.ts +22 -1
- package/models/trace/handlers/MetaHandler.js +30 -29
- package/models/trace/handlers/MetaHandler.js.map +1 -1
- package/models/trace/handlers/ModelHandlers.js +1 -1
- package/models/trace/handlers/ModelHandlers.js.map +1 -1
- package/models/trace/handlers/NetworkRequestsHandler.d.ts +10 -0
- package/models/trace/handlers/NetworkRequestsHandler.js +44 -25
- package/models/trace/handlers/NetworkRequestsHandler.js.map +1 -1
- package/models/trace/handlers/PageFramesHandler.js +3 -3
- package/models/trace/handlers/PageFramesHandler.js.map +1 -1
- package/models/trace/handlers/PageLoadMetricsHandler.js +5 -5
- package/models/trace/handlers/PageLoadMetricsHandler.js.map +1 -1
- package/models/trace/handlers/RendererHandler.d.ts +1 -1
- package/models/trace/handlers/RendererHandler.js +22 -22
- package/models/trace/handlers/RendererHandler.js.map +1 -1
- package/models/trace/handlers/SamplesHandler.d.ts +2 -2
- package/models/trace/handlers/SamplesHandler.js +7 -9
- package/models/trace/handlers/SamplesHandler.js.map +1 -1
- package/models/trace/handlers/ScreenshotsHandler.js +9 -10
- package/models/trace/handlers/ScreenshotsHandler.js.map +1 -1
- package/models/trace/handlers/ScriptsHandler.js +9 -8
- package/models/trace/handlers/ScriptsHandler.js.map +1 -1
- package/models/trace/handlers/SelectorStatsHandler.d.ts +2 -2
- package/models/trace/handlers/SelectorStatsHandler.js +13 -13
- package/models/trace/handlers/SelectorStatsHandler.js.map +1 -1
- package/models/trace/handlers/Threads.d.ts +2 -2
- package/models/trace/handlers/Threads.js +9 -9
- package/models/trace/handlers/Threads.js.map +1 -1
- package/models/trace/handlers/UserInteractionsHandler.d.ts +10 -3
- package/models/trace/handlers/UserInteractionsHandler.js +104 -84
- package/models/trace/handlers/UserInteractionsHandler.js.map +1 -1
- package/models/trace/handlers/UserTimingsHandler.d.ts +21 -0
- package/models/trace/handlers/UserTimingsHandler.js +67 -39
- package/models/trace/handlers/UserTimingsHandler.js.map +1 -1
- package/models/trace/handlers/WarningsHandler.js +14 -14
- package/models/trace/handlers/WarningsHandler.js.map +1 -1
- package/models/trace/handlers/WorkersHandler.js +7 -7
- package/models/trace/handlers/WorkersHandler.js.map +1 -1
- package/models/trace/handlers/devtools_entrypoint-bundle-typescript-tsconfig.json +6 -2
- package/models/trace/handlers/handlers-tsconfig.json +6 -2
- package/models/trace/handlers/handlers.js +1 -1
- package/models/trace/handlers/handlers.js.map +1 -1
- package/models/trace/handlers/helpers.d.ts +3 -2
- package/models/trace/handlers/helpers.js +10 -10
- package/models/trace/handlers/helpers.js.map +1 -1
- package/models/trace/handlers/types.d.ts +25 -2
- package/models/trace/handlers/types.js.map +1 -1
- package/models/trace/helpers/Extensions.js +8 -8
- package/models/trace/helpers/Extensions.js.map +1 -1
- package/models/trace/helpers/Network.js.map +1 -1
- package/models/trace/helpers/SamplesIntegrator.js +11 -9
- package/models/trace/helpers/SamplesIntegrator.js.map +1 -1
- package/models/trace/helpers/SyntheticEvents.js +1 -1
- package/models/trace/helpers/SyntheticEvents.js.map +1 -1
- package/models/trace/helpers/Timing.d.ts +4 -0
- package/models/trace/helpers/Timing.js +6 -4
- package/models/trace/helpers/Timing.js.map +1 -1
- package/models/trace/helpers/Trace.d.ts +21 -23
- package/models/trace/helpers/Trace.js +188 -67
- package/models/trace/helpers/Trace.js.map +1 -1
- package/models/trace/helpers/TreeHelpers.js +1 -1
- package/models/trace/helpers/TreeHelpers.js.map +1 -1
- package/models/trace/helpers/devtools_entrypoint-bundle-typescript-tsconfig.json +6 -2
- package/models/trace/helpers/helpers-tsconfig.json +6 -2
- package/models/trace/helpers/helpers.js +1 -1
- package/models/trace/helpers/helpers.js.map +1 -1
- package/models/trace/insights/CLSCulprits.d.ts +2 -2
- package/models/trace/insights/CLSCulprits.js +14 -14
- package/models/trace/insights/CLSCulprits.js.map +1 -1
- package/models/trace/insights/Cache.d.ts +2 -1
- package/models/trace/insights/Cache.js +8 -5
- package/models/trace/insights/Cache.js.map +1 -1
- package/models/trace/insights/Common.d.ts +9 -1
- package/models/trace/insights/Common.js +33 -1
- package/models/trace/insights/Common.js.map +1 -1
- package/models/trace/insights/DOMSize.d.ts +3 -2
- package/models/trace/insights/DOMSize.js +10 -7
- package/models/trace/insights/DOMSize.js.map +1 -1
- package/models/trace/insights/DocumentLatency.d.ts +2 -2
- package/models/trace/insights/DocumentLatency.js +18 -17
- package/models/trace/insights/DocumentLatency.js.map +1 -1
- package/models/trace/insights/DuplicatedJavaScript.d.ts +2 -2
- package/models/trace/insights/DuplicatedJavaScript.js +5 -5
- package/models/trace/insights/DuplicatedJavaScript.js.map +1 -1
- package/models/trace/insights/FontDisplay.d.ts +2 -1
- package/models/trace/insights/FontDisplay.js +7 -4
- package/models/trace/insights/FontDisplay.js.map +1 -1
- package/models/trace/insights/ForcedReflow.d.ts +2 -1
- package/models/trace/insights/ForcedReflow.js +6 -3
- package/models/trace/insights/ForcedReflow.js.map +1 -1
- package/models/trace/insights/INPBreakdown.d.ts +3 -3
- package/models/trace/insights/INPBreakdown.js +16 -5
- package/models/trace/insights/INPBreakdown.js.map +1 -1
- package/models/trace/insights/ImageDelivery.d.ts +2 -2
- package/models/trace/insights/ImageDelivery.js +13 -13
- package/models/trace/insights/ImageDelivery.js.map +1 -1
- package/models/trace/insights/LCPBreakdown.d.ts +3 -2
- package/models/trace/insights/LCPBreakdown.js +21 -15
- package/models/trace/insights/LCPBreakdown.js.map +1 -1
- package/models/trace/insights/LCPDiscovery.d.ts +2 -2
- package/models/trace/insights/LCPDiscovery.js +9 -11
- package/models/trace/insights/LCPDiscovery.js.map +1 -1
- package/models/trace/insights/LegacyJavaScript.d.ts +1 -1
- package/models/trace/insights/LegacyJavaScript.js +5 -4
- package/models/trace/insights/LegacyJavaScript.js.map +1 -1
- package/models/trace/insights/Models.js +1 -1
- package/models/trace/insights/Models.js.map +1 -1
- package/models/trace/insights/ModernHTTP.d.ts +2 -2
- package/models/trace/insights/ModernHTTP.js +6 -6
- package/models/trace/insights/ModernHTTP.js.map +1 -1
- package/models/trace/insights/NetworkDependencyTree.d.ts +6 -3
- package/models/trace/insights/NetworkDependencyTree.js +19 -16
- package/models/trace/insights/NetworkDependencyTree.js.map +1 -1
- package/models/trace/insights/RenderBlocking.d.ts +2 -2
- package/models/trace/insights/RenderBlocking.js +11 -11
- package/models/trace/insights/RenderBlocking.js.map +1 -1
- package/models/trace/insights/SlowCSSSelector.d.ts +3 -2
- package/models/trace/insights/SlowCSSSelector.js +9 -6
- package/models/trace/insights/SlowCSSSelector.js.map +1 -1
- package/models/trace/insights/Statistics.js +1 -1
- package/models/trace/insights/Statistics.js.map +1 -1
- package/models/trace/insights/ThirdParties.d.ts +2 -1
- package/models/trace/insights/ThirdParties.js +8 -5
- package/models/trace/insights/ThirdParties.js.map +1 -1
- package/models/trace/insights/Viewport.d.ts +2 -1
- package/models/trace/insights/Viewport.js +8 -5
- package/models/trace/insights/Viewport.js.map +1 -1
- package/models/trace/insights/devtools_entrypoint-bundle-typescript-tsconfig.json +6 -2
- package/models/trace/insights/insights-tsconfig.json +6 -2
- package/models/trace/insights/insights.d.ts +2 -0
- package/models/trace/insights/insights.js +3 -1
- package/models/trace/insights/insights.js.map +1 -1
- package/models/trace/insights/types.d.ts +4 -1
- package/models/trace/insights/types.js +2 -1
- package/models/trace/insights/types.js.map +1 -1
- package/models/trace/lantern/core/LanternError.js +1 -1
- package/models/trace/lantern/core/LanternError.js.map +1 -1
- package/models/trace/lantern/core/NetworkAnalyzer.js +1 -1
- package/models/trace/lantern/core/NetworkAnalyzer.js.map +1 -1
- package/models/trace/lantern/core/core-tsconfig.json +6 -2
- package/models/trace/lantern/core/core.js +1 -1
- package/models/trace/lantern/core/core.js.map +1 -1
- package/models/trace/lantern/core/devtools_entrypoint-bundle-typescript-tsconfig.json +6 -2
- package/models/trace/lantern/devtools_entrypoint-bundle-typescript-tsconfig.json +6 -2
- package/models/trace/lantern/graph/BaseNode.js +1 -1
- package/models/trace/lantern/graph/BaseNode.js.map +1 -1
- package/models/trace/lantern/graph/CPUNode.js +1 -1
- package/models/trace/lantern/graph/CPUNode.js.map +1 -1
- package/models/trace/lantern/graph/NetworkNode.js +1 -1
- package/models/trace/lantern/graph/NetworkNode.js.map +1 -1
- package/models/trace/lantern/graph/PageDependencyGraph.js +1 -1
- package/models/trace/lantern/graph/PageDependencyGraph.js.map +1 -1
- package/models/trace/lantern/graph/devtools_entrypoint-bundle-typescript-tsconfig.json +6 -2
- package/models/trace/lantern/graph/graph-tsconfig.json +6 -2
- package/models/trace/lantern/graph/graph.js +1 -1
- package/models/trace/lantern/graph/graph.js.map +1 -1
- package/models/trace/lantern/lantern-tsconfig.json +6 -2
- package/models/trace/lantern/lantern.js +1 -1
- package/models/trace/lantern/lantern.js.map +1 -1
- package/models/trace/lantern/metrics/FirstContentfulPaint.js +1 -1
- package/models/trace/lantern/metrics/FirstContentfulPaint.js.map +1 -1
- package/models/trace/lantern/metrics/Interactive.js +1 -1
- package/models/trace/lantern/metrics/Interactive.js.map +1 -1
- package/models/trace/lantern/metrics/LargestContentfulPaint.js +1 -1
- package/models/trace/lantern/metrics/LargestContentfulPaint.js.map +1 -1
- package/models/trace/lantern/metrics/MaxPotentialFID.js +1 -1
- package/models/trace/lantern/metrics/MaxPotentialFID.js.map +1 -1
- package/models/trace/lantern/metrics/Metric.js +1 -1
- package/models/trace/lantern/metrics/Metric.js.map +1 -1
- package/models/trace/lantern/metrics/SpeedIndex.js +1 -1
- package/models/trace/lantern/metrics/SpeedIndex.js.map +1 -1
- package/models/trace/lantern/metrics/TBTUtils.js +1 -1
- package/models/trace/lantern/metrics/TBTUtils.js.map +1 -1
- package/models/trace/lantern/metrics/TotalBlockingTime.js +1 -1
- package/models/trace/lantern/metrics/TotalBlockingTime.js.map +1 -1
- package/models/trace/lantern/metrics/devtools_entrypoint-bundle-typescript-tsconfig.json +6 -2
- package/models/trace/lantern/metrics/metrics-tsconfig.json +6 -2
- package/models/trace/lantern/metrics/metrics.js +1 -1
- package/models/trace/lantern/metrics/metrics.js.map +1 -1
- package/models/trace/lantern/simulation/ConnectionPool.js +1 -1
- package/models/trace/lantern/simulation/ConnectionPool.js.map +1 -1
- package/models/trace/lantern/simulation/Constants.js +1 -1
- package/models/trace/lantern/simulation/Constants.js.map +1 -1
- package/models/trace/lantern/simulation/DNSCache.js +1 -1
- package/models/trace/lantern/simulation/DNSCache.js.map +1 -1
- package/models/trace/lantern/simulation/SimulationTimingMap.js +1 -1
- package/models/trace/lantern/simulation/SimulationTimingMap.js.map +1 -1
- package/models/trace/lantern/simulation/Simulator.js +1 -1
- package/models/trace/lantern/simulation/Simulator.js.map +1 -1
- package/models/trace/lantern/simulation/TCPConnection.js +1 -1
- package/models/trace/lantern/simulation/TCPConnection.js.map +1 -1
- package/models/trace/lantern/simulation/devtools_entrypoint-bundle-typescript-tsconfig.json +6 -2
- package/models/trace/lantern/simulation/simulation-tsconfig.json +6 -2
- package/models/trace/lantern/simulation/simulation.js +1 -1
- package/models/trace/lantern/simulation/simulation.js.map +1 -1
- package/models/trace/lantern/types/Lantern.js +1 -1
- package/models/trace/lantern/types/Lantern.js.map +1 -1
- package/models/trace/lantern/types/devtools_entrypoint-bundle-typescript-tsconfig.json +6 -2
- package/models/trace/lantern/types/types-tsconfig.json +6 -2
- package/models/trace/lantern/types/types.js +1 -1
- package/models/trace/lantern/types/types.js.map +1 -1
- package/models/trace/trace-tsconfig.json +10 -2
- package/models/trace/trace.d.ts +5 -1
- package/models/trace/trace.js +6 -2
- package/models/trace/trace.js.map +1 -1
- package/models/trace/types/Configuration.d.ts +11 -0
- package/models/trace/types/Configuration.js +1 -1
- package/models/trace/types/Configuration.js.map +1 -1
- package/models/trace/types/Extensions.d.ts +25 -13
- package/models/trace/types/Extensions.js +6 -3
- package/models/trace/types/Extensions.js.map +1 -1
- package/models/trace/types/File.d.ts +13 -2
- package/models/trace/types/File.js +1 -1
- package/models/trace/types/File.js.map +1 -1
- package/models/trace/types/Overlays.d.ts +5 -4
- package/models/trace/types/Overlays.js +1 -1
- package/models/trace/types/Overlays.js.map +1 -1
- package/models/trace/types/Timing.d.ts +1 -0
- package/models/trace/types/Timing.js +1 -1
- package/models/trace/types/Timing.js.map +1 -1
- package/models/trace/types/TraceEvents.d.ts +81 -61
- package/models/trace/types/TraceEvents.js +42 -29
- package/models/trace/types/TraceEvents.js.map +1 -1
- package/models/trace/types/devtools_entrypoint-bundle-typescript-tsconfig.json +6 -2
- package/models/trace/types/types-tsconfig.json +6 -2
- package/models/trace/types/types.js +1 -1
- package/models/trace/types/types.js.map +1 -1
- package/package.json +1 -1
- package/test/test-trace-engine.mjs +4 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright 2022 The Chromium Authors
|
|
1
|
+
// Copyright 2022 The Chromium Authors
|
|
2
2
|
// Use of this source code is governed by a BSD-style license that can be
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
import * as Platform from '../../../core/platform/platform.js';
|
|
@@ -24,7 +24,7 @@ export function stackTraceInEvent(event) {
|
|
|
24
24
|
if (event.args?.stackTrace) {
|
|
25
25
|
return event.args.stackTrace;
|
|
26
26
|
}
|
|
27
|
-
if (Types.Events.
|
|
27
|
+
if (Types.Events.isRecalcStyle(event)) {
|
|
28
28
|
return event.args.beginData?.stackTrace || null;
|
|
29
29
|
}
|
|
30
30
|
if (Types.Events.isLayout(event)) {
|
|
@@ -69,8 +69,10 @@ export function extractOriginFromTrace(firstNavigationURL) {
|
|
|
69
69
|
}
|
|
70
70
|
return null;
|
|
71
71
|
}
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
/**
|
|
73
|
+
* Each thread contains events. Events indicate the thread and process IDs, which are
|
|
74
|
+
* used to store the event in the correct process thread entry below.
|
|
75
|
+
**/
|
|
74
76
|
export function addEventToProcessThread(event, eventsInProcessThread) {
|
|
75
77
|
const { tid, pid } = event;
|
|
76
78
|
let eventsInThread = eventsInProcessThread.get(pid);
|
|
@@ -85,25 +87,32 @@ export function addEventToProcessThread(event, eventsInProcessThread) {
|
|
|
85
87
|
eventsInThread.set(event.tid, events);
|
|
86
88
|
eventsInProcessThread.set(event.pid, eventsInThread);
|
|
87
89
|
}
|
|
88
|
-
export function
|
|
89
|
-
const aBeginTime = a.ts;
|
|
90
|
-
const bBeginTime = b.ts;
|
|
90
|
+
export function compareBeginAndEnd(aBeginTime, bBeginTime, aEndTime, bEndTime) {
|
|
91
91
|
if (aBeginTime < bBeginTime) {
|
|
92
92
|
return -1;
|
|
93
93
|
}
|
|
94
94
|
if (aBeginTime > bBeginTime) {
|
|
95
95
|
return 1;
|
|
96
96
|
}
|
|
97
|
-
const aDuration = a.dur ?? 0;
|
|
98
|
-
const bDuration = b.dur ?? 0;
|
|
99
|
-
const aEndTime = aBeginTime + aDuration;
|
|
100
|
-
const bEndTime = bBeginTime + bDuration;
|
|
101
97
|
if (aEndTime > bEndTime) {
|
|
102
98
|
return -1;
|
|
103
99
|
}
|
|
104
100
|
if (aEndTime < bEndTime) {
|
|
105
101
|
return 1;
|
|
106
102
|
}
|
|
103
|
+
return 0;
|
|
104
|
+
}
|
|
105
|
+
export function eventTimeComparator(a, b) {
|
|
106
|
+
const aBeginTime = a.ts;
|
|
107
|
+
const bBeginTime = b.ts;
|
|
108
|
+
const aDuration = a.dur ?? 0;
|
|
109
|
+
const bDuration = b.dur ?? 0;
|
|
110
|
+
const aEndTime = aBeginTime + aDuration;
|
|
111
|
+
const bEndTime = bBeginTime + bDuration;
|
|
112
|
+
const timeDifference = compareBeginAndEnd(aBeginTime, bBeginTime, aEndTime, bEndTime);
|
|
113
|
+
if (timeDifference) {
|
|
114
|
+
return timeDifference;
|
|
115
|
+
}
|
|
107
116
|
// If times are equal, prioritize profile calls over trace events,
|
|
108
117
|
// since an exactly equal timestamp with a trace event is likely
|
|
109
118
|
// indicates that the SamplesIntegrator meant to parent the trace
|
|
@@ -152,6 +161,29 @@ export function mergeEventsInOrder(eventsArray1, eventsArray2) {
|
|
|
152
161
|
}
|
|
153
162
|
return result;
|
|
154
163
|
}
|
|
164
|
+
export function parseDevtoolsDetails(timingDetail, key) {
|
|
165
|
+
try {
|
|
166
|
+
// Attempt to parse the detail as an object that might be coming from a
|
|
167
|
+
// DevTools Perf extension.
|
|
168
|
+
// Wrapped in a try-catch because timingDetail might either:
|
|
169
|
+
// 1. Not be `json.parse`-able (it should, but just in case...)
|
|
170
|
+
// 2. Not be an object - in which case the `in` check will error.
|
|
171
|
+
// If we hit either of these cases, we just ignore this mark and move on.
|
|
172
|
+
const detailObj = JSON.parse(timingDetail);
|
|
173
|
+
if (!(key in detailObj)) {
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
if (!Types.Extensions.isValidExtensionPayload(detailObj[key])) {
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
return detailObj[key];
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
// No need to worry about this error, just discard this event and don't
|
|
183
|
+
// treat it as having any useful information for the purposes of extensions.
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
155
187
|
export function getNavigationForTraceEvent(event, eventFrameId, navigationsByFrameId) {
|
|
156
188
|
const navigations = navigationsByFrameId.get(eventFrameId);
|
|
157
189
|
if (!navigations || eventFrameId === '') {
|
|
@@ -211,52 +243,109 @@ export function makeProfileCall(node, profileId, sampleIndex, ts, pid, tid) {
|
|
|
211
243
|
};
|
|
212
244
|
}
|
|
213
245
|
/**
|
|
214
|
-
* Matches beginning events with PairableAsyncEnd and PairableAsyncInstant
|
|
215
|
-
* if provided
|
|
216
|
-
* account for that.
|
|
246
|
+
* Matches beginning events with PairableAsyncEnd and PairableAsyncInstant
|
|
247
|
+
* if provided. Traces may contain multiple instant events so we need to
|
|
248
|
+
* account for that. Additionally we have seen cases where we might only have a
|
|
249
|
+
* begin event & instant event(s), with no end event. So we account for that
|
|
250
|
+
* situation also.
|
|
251
|
+
*
|
|
252
|
+
* You might also like to read the models/trace/README.md which has some
|
|
253
|
+
* documentation on trace IDs. This is important as Perfetto will reuse trace
|
|
254
|
+
* IDs when emitting events (if they do not overlap). This means it's not as
|
|
255
|
+
* simple as grouping events by IDs. Instead, we group begin & instant events
|
|
256
|
+
* by ID as we find them. When we find end events, we then pop any matching
|
|
257
|
+
* begin/instant events off the stack and group those. That way, if we meet the
|
|
258
|
+
* same ID later on it doesn't cause us collisions.
|
|
217
259
|
*
|
|
218
|
-
* @returns
|
|
260
|
+
* @returns An array of all the matched event groups, along with their ID. Note
|
|
261
|
+
* that two event groups can have the same ID if they were non-overlapping
|
|
262
|
+
* events. You cannot rely on ID being unique across a trace. The returned set
|
|
263
|
+
* of groups are NOT SORTED in any order.
|
|
219
264
|
*/
|
|
220
|
-
|
|
265
|
+
function matchEvents(unpairedEvents) {
|
|
266
|
+
sortTraceEventsInPlace(unpairedEvents);
|
|
221
267
|
// map to store begin and end of the event
|
|
222
|
-
const
|
|
223
|
-
|
|
268
|
+
const matches = [];
|
|
269
|
+
const beginEventsById = new Map();
|
|
270
|
+
const instantEventsById = new Map();
|
|
224
271
|
for (const event of unpairedEvents) {
|
|
225
|
-
const
|
|
226
|
-
if (
|
|
272
|
+
const id = getSyntheticId(event);
|
|
273
|
+
if (id === undefined) {
|
|
227
274
|
continue;
|
|
228
275
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
if (!otherEventsWithID.instant) {
|
|
246
|
-
otherEventsWithID.instant = [];
|
|
276
|
+
if (Types.Events.isPairableAsyncBegin(event)) {
|
|
277
|
+
const existingEvents = beginEventsById.get(id) ?? [];
|
|
278
|
+
existingEvents.push(event);
|
|
279
|
+
beginEventsById.set(id, existingEvents);
|
|
280
|
+
}
|
|
281
|
+
else if (Types.Events.isPairableAsyncInstant(event)) {
|
|
282
|
+
const existingEvents = instantEventsById.get(id) ?? [];
|
|
283
|
+
existingEvents.push(event);
|
|
284
|
+
instantEventsById.set(id, existingEvents);
|
|
285
|
+
}
|
|
286
|
+
else if (Types.Events.isPairableAsyncEnd(event)) {
|
|
287
|
+
// Find matching begin event by ID
|
|
288
|
+
const beginEventsWithMatchingId = beginEventsById.get(id) ?? [];
|
|
289
|
+
const beginEvent = beginEventsWithMatchingId.pop();
|
|
290
|
+
if (!beginEvent) {
|
|
291
|
+
continue;
|
|
247
292
|
}
|
|
248
|
-
|
|
293
|
+
const instantEventsWithMatchingId = instantEventsById.get(id) ?? [];
|
|
294
|
+
// Find all instant events after the begin event ts.
|
|
295
|
+
const instantEventsForThisGroup = [];
|
|
296
|
+
while (instantEventsWithMatchingId.length > 0) {
|
|
297
|
+
if (instantEventsWithMatchingId[0].ts >= beginEvent.ts) {
|
|
298
|
+
const event = instantEventsWithMatchingId.pop();
|
|
299
|
+
if (event) {
|
|
300
|
+
instantEventsForThisGroup.push(event);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
break;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
const matchingGroup = {
|
|
308
|
+
begin: beginEvent,
|
|
309
|
+
end: event,
|
|
310
|
+
instant: instantEventsForThisGroup,
|
|
311
|
+
syntheticId: id,
|
|
312
|
+
};
|
|
313
|
+
matches.push(matchingGroup);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
// At this point we know we have paired up all the Begin & End & Instant
|
|
317
|
+
// events. But it is possible to see only begin & instant events with the
|
|
318
|
+
// same ID, and no end event. So now we do a second pass through our begin
|
|
319
|
+
// events to find any that did not have an end event. If we find some
|
|
320
|
+
// instant events for the begin event, we create a new group.
|
|
321
|
+
// Also, because there were no end events, we know that the IDs will be
|
|
322
|
+
// unique now; e.g. each key in the map should have no more than one item in
|
|
323
|
+
// it.
|
|
324
|
+
for (const [id, beginEvents] of beginEventsById) {
|
|
325
|
+
const beginEvent = beginEvents.pop();
|
|
326
|
+
if (!beginEvent) {
|
|
327
|
+
continue;
|
|
328
|
+
}
|
|
329
|
+
const matchingInstantEvents = instantEventsById.get(id);
|
|
330
|
+
if (matchingInstantEvents?.length) {
|
|
331
|
+
matches.push({
|
|
332
|
+
syntheticId: id,
|
|
333
|
+
begin: beginEvent,
|
|
334
|
+
end: null,
|
|
335
|
+
instant: matchingInstantEvents,
|
|
336
|
+
});
|
|
249
337
|
}
|
|
250
338
|
}
|
|
251
|
-
return
|
|
339
|
+
return matches;
|
|
252
340
|
}
|
|
253
|
-
function getSyntheticId(event) {
|
|
341
|
+
export function getSyntheticId(event) {
|
|
254
342
|
const id = extractId(event);
|
|
255
343
|
return id && `${event.cat}:${id}:${event.name}`;
|
|
256
344
|
}
|
|
257
|
-
|
|
345
|
+
function createSortedSyntheticEvents(matchedPairs) {
|
|
258
346
|
const syntheticEvents = [];
|
|
259
|
-
for (const
|
|
347
|
+
for (const eventsTriplet of matchedPairs) {
|
|
348
|
+
const id = eventsTriplet.syntheticId;
|
|
260
349
|
const beginEvent = eventsTriplet.begin;
|
|
261
350
|
const endEvent = eventsTriplet.end;
|
|
262
351
|
const instantEvents = eventsTriplet.instant;
|
|
@@ -304,14 +393,19 @@ export function createSortedSyntheticEvents(matchedPairs, syntheticEventCallback
|
|
|
304
393
|
// crbug.com/1472375
|
|
305
394
|
continue;
|
|
306
395
|
}
|
|
307
|
-
syntheticEventCallback?.(event);
|
|
308
396
|
syntheticEvents.push(event);
|
|
309
397
|
}
|
|
310
|
-
|
|
398
|
+
sortTraceEventsInPlace(syntheticEvents);
|
|
399
|
+
return syntheticEvents;
|
|
311
400
|
}
|
|
312
|
-
|
|
401
|
+
/**
|
|
402
|
+
* Groups up sets of async events into synthetic events.
|
|
403
|
+
* @param unpairedAsyncEvents the raw array of begin, end and async instant
|
|
404
|
+
* events. These MUST be sorted in timestamp ASC order.
|
|
405
|
+
*/
|
|
406
|
+
export function createMatchedSortedSyntheticEvents(unpairedAsyncEvents) {
|
|
313
407
|
const matchedPairs = matchEvents(unpairedAsyncEvents);
|
|
314
|
-
const syntheticEvents = createSortedSyntheticEvents(matchedPairs
|
|
408
|
+
const syntheticEvents = createSortedSyntheticEvents(matchedPairs);
|
|
315
409
|
return syntheticEvents;
|
|
316
410
|
}
|
|
317
411
|
/**
|
|
@@ -367,23 +461,45 @@ export function getZeroIndexedStackTraceInEventPayload(event) {
|
|
|
367
461
|
if (!stack) {
|
|
368
462
|
return null;
|
|
369
463
|
}
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
464
|
+
switch (event.name) {
|
|
465
|
+
case Types.Events.Name.SCHEDULE_STYLE_RECALCULATION:
|
|
466
|
+
case Types.Events.Name.INVALIDATE_LAYOUT:
|
|
467
|
+
case Types.Events.Name.FUNCTION_CALL:
|
|
468
|
+
case Types.Events.Name.LAYOUT:
|
|
469
|
+
case Types.Events.Name.RECALC_STYLE: {
|
|
470
|
+
return stack.map(makeZeroBasedCallFrame);
|
|
471
|
+
}
|
|
472
|
+
default: {
|
|
473
|
+
if (Types.Events.isUserTiming(event) || Types.Extensions.isSyntheticExtensionEntry(event)) {
|
|
474
|
+
return stack.map(makeZeroBasedCallFrame);
|
|
378
475
|
}
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
476
|
+
return stack;
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
/**
|
|
481
|
+
* Same as getZeroIndexedStackTraceInEventPayload, but only returns the top call frame.
|
|
482
|
+
*/
|
|
483
|
+
export function getStackTraceTopCallFrameInEventPayload(event) {
|
|
484
|
+
const stack = stackTraceInEvent(event);
|
|
485
|
+
if (!stack || stack.length === 0) {
|
|
486
|
+
return null;
|
|
487
|
+
}
|
|
488
|
+
switch (event.name) {
|
|
489
|
+
case Types.Events.Name.SCHEDULE_STYLE_RECALCULATION:
|
|
490
|
+
case Types.Events.Name.INVALIDATE_LAYOUT:
|
|
491
|
+
case Types.Events.Name.FUNCTION_CALL:
|
|
492
|
+
case Types.Events.Name.LAYOUT:
|
|
493
|
+
case Types.Events.Name.RECALC_STYLE: {
|
|
494
|
+
return makeZeroBasedCallFrame(stack[0]);
|
|
495
|
+
}
|
|
496
|
+
default: {
|
|
497
|
+
if (Types.Events.isUserTiming(event) || Types.Extensions.isSyntheticExtensionEntry(event)) {
|
|
498
|
+
return makeZeroBasedCallFrame(stack[0]);
|
|
383
499
|
}
|
|
500
|
+
return stack[0];
|
|
384
501
|
}
|
|
385
|
-
|
|
386
|
-
});
|
|
502
|
+
}
|
|
387
503
|
}
|
|
388
504
|
/**
|
|
389
505
|
* Given a 1-based call frame creates a 0-based one.
|
|
@@ -421,7 +537,7 @@ function getRawLineAndColumnNumbersForEvent(event) {
|
|
|
421
537
|
return { lineNumber, columnNumber };
|
|
422
538
|
}
|
|
423
539
|
export function frameIDForEvent(event) {
|
|
424
|
-
// There are a few events (for example
|
|
540
|
+
// There are a few events (for example RecalcStyle, ParseHTML) that have
|
|
425
541
|
// the frame stored in args.beginData
|
|
426
542
|
// Rather than list them all we just check for the presence of the field, so
|
|
427
543
|
// we are robust against future trace events also doing this.
|
|
@@ -443,6 +559,9 @@ const DevToolsTimelineEventCategory = 'disabled-by-default-devtools.timeline';
|
|
|
443
559
|
export function isTopLevelEvent(event) {
|
|
444
560
|
return event.cat.includes(DevToolsTimelineEventCategory) && event.name === Types.Events.Name.RUN_TASK;
|
|
445
561
|
}
|
|
562
|
+
export function isExtensionUrl(url) {
|
|
563
|
+
return url.startsWith('extensions:') || url.startsWith('chrome-extension:');
|
|
564
|
+
}
|
|
446
565
|
function topLevelEventIndexEndingAfter(events, time) {
|
|
447
566
|
let index = Platform.ArrayUtilities.upperBound(events, time, (time, event) => time - event.ts) - 1;
|
|
448
567
|
while (index > 0 && !isTopLevelEvent(events[index])) {
|
|
@@ -450,12 +569,12 @@ function topLevelEventIndexEndingAfter(events, time) {
|
|
|
450
569
|
}
|
|
451
570
|
return Math.max(index, 0);
|
|
452
571
|
}
|
|
453
|
-
export function
|
|
572
|
+
export function findRecalcStyleEvents(events, startTime, endTime) {
|
|
454
573
|
const foundEvents = [];
|
|
455
574
|
const startEventIndex = topLevelEventIndexEndingAfter(events, startTime);
|
|
456
575
|
for (let i = startEventIndex; i < events.length; i++) {
|
|
457
576
|
const event = events[i];
|
|
458
|
-
if (!Types.Events.
|
|
577
|
+
if (!Types.Events.isRecalcStyle(event)) {
|
|
459
578
|
continue;
|
|
460
579
|
}
|
|
461
580
|
if (event.ts >= (endTime || Infinity)) {
|
|
@@ -586,8 +705,10 @@ export function extractSampleTraceId(event) {
|
|
|
586
705
|
}
|
|
587
706
|
return event.args?.sampleTraceId ?? event.args?.data?.sampleTraceId ?? null;
|
|
588
707
|
}
|
|
589
|
-
|
|
590
|
-
|
|
708
|
+
/**
|
|
709
|
+
* This exactly matches Trace.Styles.visibleTypes. See the runtime verification in maybeInitStylesMap.
|
|
710
|
+
* TODO(crbug.com/410884528)
|
|
711
|
+
**/
|
|
591
712
|
export const VISIBLE_TRACE_EVENT_TYPES = new Set([
|
|
592
713
|
Types.Events.Name.ABORT_POST_TASK_CALLBACK,
|
|
593
714
|
Types.Events.Name.ANIMATION,
|
|
@@ -669,7 +790,7 @@ export const VISIBLE_TRACE_EVENT_TYPES = new Set([
|
|
|
669
790
|
Types.Events.Name.TIMER_INSTALL,
|
|
670
791
|
Types.Events.Name.TIMER_REMOVE,
|
|
671
792
|
Types.Events.Name.UPDATE_LAYER_TREE,
|
|
672
|
-
Types.Events.Name.
|
|
793
|
+
Types.Events.Name.RECALC_STYLE,
|
|
673
794
|
Types.Events.Name.USER_TIMING,
|
|
674
795
|
Types.Events.Name.V8_CONSOLE_RUN_TASK,
|
|
675
796
|
Types.Events.Name.WASM_CACHED_MODULE,
|