devtools-tracing 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (397) hide show
  1. package/generate.ts +643 -0
  2. package/index.ts +16 -0
  3. package/lib/front_end/core/common/App.ts +7 -0
  4. package/lib/front_end/core/common/AppProvider.ts +32 -0
  5. package/lib/front_end/core/common/Base64.ts +47 -0
  6. package/lib/front_end/core/common/CharacterIdMap.ts +30 -0
  7. package/lib/front_end/core/common/Color.ts +2506 -0
  8. package/lib/front_end/core/common/ColorConverter.ts +402 -0
  9. package/lib/front_end/core/common/ColorUtils.ts +252 -0
  10. package/lib/front_end/core/common/Console.ts +114 -0
  11. package/lib/front_end/core/common/Debouncer.ts +15 -0
  12. package/lib/front_end/core/common/EventTarget.ts +52 -0
  13. package/lib/front_end/core/common/Gzip.ts +74 -0
  14. package/lib/front_end/core/common/JavaScriptMetaData.ts +29 -0
  15. package/lib/front_end/core/common/Lazy.ts +31 -0
  16. package/lib/front_end/core/common/Linkifier.ts +55 -0
  17. package/lib/front_end/core/common/MapWithDefault.ts +26 -0
  18. package/lib/front_end/core/common/Mutex.ts +55 -0
  19. package/lib/front_end/core/common/Object.ts +145 -0
  20. package/lib/front_end/core/common/ParsedURL.ts +554 -0
  21. package/lib/front_end/core/common/Progress.ts +180 -0
  22. package/lib/front_end/core/common/QueryParamHandler.ts +7 -0
  23. package/lib/front_end/core/common/ResolverBase.ts +85 -0
  24. package/lib/front_end/core/common/ResourceType.ts +588 -0
  25. package/lib/front_end/core/common/ReturnToPanel.ts +17 -0
  26. package/lib/front_end/core/common/Revealer.ts +192 -0
  27. package/lib/front_end/core/common/Runnable.ts +41 -0
  28. package/lib/front_end/core/common/SegmentedRange.ts +87 -0
  29. package/lib/front_end/core/common/SettingRegistration.ts +339 -0
  30. package/lib/front_end/core/common/Settings.ts +1497 -0
  31. package/lib/front_end/core/common/SimpleHistoryManager.ts +124 -0
  32. package/lib/front_end/core/common/StringOutputStream.ts +26 -0
  33. package/lib/front_end/core/common/TextDictionary.ts +48 -0
  34. package/lib/front_end/core/common/Throttler.ts +99 -0
  35. package/lib/front_end/core/common/Trie.ts +152 -0
  36. package/lib/front_end/core/common/Worker.ts +60 -0
  37. package/lib/front_end/core/common/common.ts +81 -0
  38. package/lib/front_end/core/host/AidaClient.ts +733 -0
  39. package/lib/front_end/core/host/GdpClient.ts +316 -0
  40. package/lib/front_end/core/host/InspectorFrontendHost.ts +648 -0
  41. package/lib/front_end/core/host/InspectorFrontendHostAPI.ts +551 -0
  42. package/lib/front_end/core/host/Platform.ts +76 -0
  43. package/lib/front_end/core/host/ResourceLoader.ts +282 -0
  44. package/lib/front_end/core/host/UserMetrics.ts +1230 -0
  45. package/lib/front_end/core/host/host.ts +23 -0
  46. package/lib/front_end/core/i18n/ByteUtilities.ts +82 -0
  47. package/lib/front_end/core/i18n/DevToolsLocale.ts +87 -0
  48. package/lib/front_end/core/i18n/NumberFormatter.ts +82 -0
  49. package/lib/front_end/core/i18n/i18n.ts +17 -0
  50. package/lib/front_end/core/i18n/i18nImpl.ts +204 -0
  51. package/lib/front_end/core/i18n/i18nTypes.ts +10 -0
  52. package/lib/front_end/core/i18n/locales.js +14 -0
  53. package/lib/front_end/core/i18n/time-utilities.ts +174 -0
  54. package/lib/front_end/core/platform/ArrayUtilities.ts +271 -0
  55. package/lib/front_end/core/platform/Brand.ts +23 -0
  56. package/lib/front_end/core/platform/Constructor.ts +10 -0
  57. package/lib/front_end/core/platform/DOMUtilities.ts +138 -0
  58. package/lib/front_end/core/platform/DateUtilities.ts +15 -0
  59. package/lib/front_end/core/platform/DevToolsPath.ts +53 -0
  60. package/lib/front_end/core/platform/KeyboardUtilities.ts +38 -0
  61. package/lib/front_end/core/platform/MapUtilities.ts +95 -0
  62. package/lib/front_end/core/platform/MimeType.ts +175 -0
  63. package/lib/front_end/core/platform/NumberUtilities.ts +80 -0
  64. package/lib/front_end/core/platform/StringUtilities.ts +588 -0
  65. package/lib/front_end/core/platform/Timing.ts +17 -0
  66. package/lib/front_end/core/platform/TypedArrayUtilities.ts +189 -0
  67. package/lib/front_end/core/platform/TypescriptUtilities.ts +86 -0
  68. package/lib/front_end/core/platform/UIString.ts +39 -0
  69. package/lib/front_end/core/platform/UserVisibleError.ts +28 -0
  70. package/lib/front_end/core/platform/platform.ts +45 -0
  71. package/lib/front_end/core/protocol_client/ConnectionTransport.ts +26 -0
  72. package/lib/front_end/core/protocol_client/InspectorBackend.ts +1050 -0
  73. package/lib/front_end/core/protocol_client/NodeURL.ts +42 -0
  74. package/lib/front_end/core/protocol_client/protocol_client.ts +13 -0
  75. package/lib/front_end/core/root/Runtime.ts +609 -0
  76. package/lib/front_end/core/root/root.ts +6 -0
  77. package/lib/front_end/core/sdk/AccessibilityModel.ts +353 -0
  78. package/lib/front_end/core/sdk/AnimationModel.ts +1041 -0
  79. package/lib/front_end/core/sdk/AutofillModel.ts +184 -0
  80. package/lib/front_end/core/sdk/CPUProfilerModel.ts +148 -0
  81. package/lib/front_end/core/sdk/CPUThrottlingManager.ts +282 -0
  82. package/lib/front_end/core/sdk/CSSContainerQuery.ts +139 -0
  83. package/lib/front_end/core/sdk/CSSFontFace.ts +40 -0
  84. package/lib/front_end/core/sdk/CSSLayer.ts +30 -0
  85. package/lib/front_end/core/sdk/CSSMatchedStyles.ts +1646 -0
  86. package/lib/front_end/core/sdk/CSSMedia.ts +121 -0
  87. package/lib/front_end/core/sdk/CSSMetadata.ts +1647 -0
  88. package/lib/front_end/core/sdk/CSSModel.ts +1128 -0
  89. package/lib/front_end/core/sdk/CSSProperty.ts +384 -0
  90. package/lib/front_end/core/sdk/CSSPropertyParser.ts +681 -0
  91. package/lib/front_end/core/sdk/CSSPropertyParserMatchers.ts +1395 -0
  92. package/lib/front_end/core/sdk/CSSQuery.ts +72 -0
  93. package/lib/front_end/core/sdk/CSSRule.ts +465 -0
  94. package/lib/front_end/core/sdk/CSSScope.ts +30 -0
  95. package/lib/front_end/core/sdk/CSSStartingStyle.ts +29 -0
  96. package/lib/front_end/core/sdk/CSSStyleDeclaration.ts +313 -0
  97. package/lib/front_end/core/sdk/CSSStyleSheetHeader.ts +196 -0
  98. package/lib/front_end/core/sdk/CSSSupports.ts +33 -0
  99. package/lib/front_end/core/sdk/CategorizedBreakpoint.ts +64 -0
  100. package/lib/front_end/core/sdk/ChildTargetManager.ts +314 -0
  101. package/lib/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +62 -0
  102. package/lib/front_end/core/sdk/Connections.ts +293 -0
  103. package/lib/front_end/core/sdk/ConsoleModel.ts +808 -0
  104. package/lib/front_end/core/sdk/ConsoleModelTypes.ts +15 -0
  105. package/lib/front_end/core/sdk/Cookie.ts +319 -0
  106. package/lib/front_end/core/sdk/CookieModel.ts +239 -0
  107. package/lib/front_end/core/sdk/CookieParser.ts +185 -0
  108. package/lib/front_end/core/sdk/DOMDebuggerModel.ts +787 -0
  109. package/lib/front_end/core/sdk/DOMModel.ts +1961 -0
  110. package/lib/front_end/core/sdk/DebuggerModel.ts +1605 -0
  111. package/lib/front_end/core/sdk/EmulationModel.ts +648 -0
  112. package/lib/front_end/core/sdk/EnhancedTracesParser.ts +515 -0
  113. package/lib/front_end/core/sdk/EventBreakpointsModel.ts +183 -0
  114. package/lib/front_end/core/sdk/FrameAssociated.ts +11 -0
  115. package/lib/front_end/core/sdk/FrameManager.ts +259 -0
  116. package/lib/front_end/core/sdk/HeapProfilerModel.ts +225 -0
  117. package/lib/front_end/core/sdk/HttpReasonPhraseStrings.ts +77 -0
  118. package/lib/front_end/core/sdk/IOModel.ts +91 -0
  119. package/lib/front_end/core/sdk/IsolateManager.ts +257 -0
  120. package/lib/front_end/core/sdk/IssuesModel.ts +70 -0
  121. package/lib/front_end/core/sdk/LayerTreeBase.ts +169 -0
  122. package/lib/front_end/core/sdk/LogModel.ts +56 -0
  123. package/lib/front_end/core/sdk/NetworkManager.ts +2823 -0
  124. package/lib/front_end/core/sdk/NetworkRequest.ts +2253 -0
  125. package/lib/front_end/core/sdk/OverlayColorGenerator.ts +52 -0
  126. package/lib/front_end/core/sdk/OverlayModel.ts +1011 -0
  127. package/lib/front_end/core/sdk/OverlayPersistentHighlighter.ts +522 -0
  128. package/lib/front_end/core/sdk/PageLoad.ts +35 -0
  129. package/lib/front_end/core/sdk/PageResourceLoader.ts +435 -0
  130. package/lib/front_end/core/sdk/PaintProfiler.ts +110 -0
  131. package/lib/front_end/core/sdk/PerformanceMetricsModel.ts +84 -0
  132. package/lib/front_end/core/sdk/PreloadingModel.ts +863 -0
  133. package/lib/front_end/core/sdk/RehydratingConnection.ts +386 -0
  134. package/lib/front_end/core/sdk/RehydratingObject.ts +66 -0
  135. package/lib/front_end/core/sdk/RemoteObject.ts +1160 -0
  136. package/lib/front_end/core/sdk/Resource.ts +232 -0
  137. package/lib/front_end/core/sdk/ResourceTreeModel.ts +1160 -0
  138. package/lib/front_end/core/sdk/RuntimeModel.ts +732 -0
  139. package/lib/front_end/core/sdk/SDKModel.ts +65 -0
  140. package/lib/front_end/core/sdk/ScopeTreeCache.ts +45 -0
  141. package/lib/front_end/core/sdk/ScreenCaptureModel.ts +255 -0
  142. package/lib/front_end/core/sdk/Script.ts +534 -0
  143. package/lib/front_end/core/sdk/SecurityOriginManager.ts +76 -0
  144. package/lib/front_end/core/sdk/ServerSentEvents.ts +80 -0
  145. package/lib/front_end/core/sdk/ServerSentEventsProtocol.ts +122 -0
  146. package/lib/front_end/core/sdk/ServerTiming.ts +260 -0
  147. package/lib/front_end/core/sdk/ServiceWorkerCacheModel.ts +377 -0
  148. package/lib/front_end/core/sdk/ServiceWorkerManager.ts +605 -0
  149. package/lib/front_end/core/sdk/SourceMap.ts +867 -0
  150. package/lib/front_end/core/sdk/SourceMapCache.ts +54 -0
  151. package/lib/front_end/core/sdk/SourceMapFunctionRanges.ts +156 -0
  152. package/lib/front_end/core/sdk/SourceMapManager.ts +239 -0
  153. package/lib/front_end/core/sdk/SourceMapScopeChainEntry.ts +189 -0
  154. package/lib/front_end/core/sdk/SourceMapScopesInfo.ts +508 -0
  155. package/lib/front_end/core/sdk/StorageBucketsModel.ts +204 -0
  156. package/lib/front_end/core/sdk/StorageKeyManager.ts +98 -0
  157. package/lib/front_end/core/sdk/Target.ts +332 -0
  158. package/lib/front_end/core/sdk/TargetManager.ts +453 -0
  159. package/lib/front_end/core/sdk/TraceObject.ts +61 -0
  160. package/lib/front_end/core/sdk/WebAuthnModel.ts +104 -0
  161. package/lib/front_end/core/sdk/sdk.ts +174 -0
  162. package/lib/front_end/entrypoints/formatter_worker/FormatterActions.ts +59 -0
  163. package/lib/front_end/generated/InspectorBackendCommands.js +1617 -0
  164. package/lib/front_end/generated/SupportedCSSProperties.js +7512 -0
  165. package/lib/front_end/generated/protocol-proxy-api.d.ts +5022 -0
  166. package/lib/front_end/generated/protocol.ts +22014 -0
  167. package/lib/front_end/models/cpu_profile/CPUProfileDataModel.ts +571 -0
  168. package/lib/front_end/models/cpu_profile/ProfileTreeModel.ts +103 -0
  169. package/lib/front_end/models/cpu_profile/cpu_profile.ts +11 -0
  170. package/lib/front_end/models/formatter/FormatterWorkerPool.ts +219 -0
  171. package/lib/front_end/models/formatter/ScriptFormatter.ts +112 -0
  172. package/lib/front_end/models/formatter/formatter.ts +8 -0
  173. package/lib/front_end/models/text_utils/CodeMirrorUtils.ts +37 -0
  174. package/lib/front_end/models/text_utils/ContentData.ts +199 -0
  175. package/lib/front_end/models/text_utils/ContentProvider.ts +68 -0
  176. package/lib/front_end/models/text_utils/StaticContentProvider.ts +49 -0
  177. package/lib/front_end/models/text_utils/StreamingContentData.ts +108 -0
  178. package/lib/front_end/models/text_utils/Text.ts +90 -0
  179. package/lib/front_end/models/text_utils/TextCursor.ts +44 -0
  180. package/lib/front_end/models/text_utils/TextRange.ts +266 -0
  181. package/lib/front_end/models/text_utils/TextUtils.ts +401 -0
  182. package/lib/front_end/models/text_utils/WasmDisassembly.ts +87 -0
  183. package/lib/front_end/models/text_utils/text_utils.ts +27 -0
  184. package/lib/front_end/models/trace/EntityMapper.ts +141 -0
  185. package/lib/front_end/models/trace/EventsSerializer.ts +101 -0
  186. package/lib/front_end/models/trace/LanternComputationData.ts +438 -0
  187. package/lib/front_end/models/trace/ModelImpl.ts +236 -0
  188. package/lib/front_end/models/trace/Name.ts +136 -0
  189. package/lib/front_end/models/trace/Processor.ts +652 -0
  190. package/lib/front_end/models/trace/Styles.ts +1138 -0
  191. package/lib/front_end/models/trace/extras/FilmStrip.ts +78 -0
  192. package/lib/front_end/models/trace/extras/MainThreadActivity.ts +86 -0
  193. package/lib/front_end/models/trace/extras/ScriptDuplication.ts +236 -0
  194. package/lib/front_end/models/trace/extras/StackTraceForEvent.ts +203 -0
  195. package/lib/front_end/models/trace/extras/ThirdParties.ts +164 -0
  196. package/lib/front_end/models/trace/extras/TraceFilter.ts +62 -0
  197. package/lib/front_end/models/trace/extras/TraceTree.ts +701 -0
  198. package/lib/front_end/models/trace/extras/extras.ts +11 -0
  199. package/lib/front_end/models/trace/handlers/AnimationFramesHandler.ts +128 -0
  200. package/lib/front_end/models/trace/handlers/AnimationHandler.ts +36 -0
  201. package/lib/front_end/models/trace/handlers/AsyncJSCallsHandler.ts +239 -0
  202. package/lib/front_end/models/trace/handlers/AuctionWorkletsHandler.ts +183 -0
  203. package/lib/front_end/models/trace/handlers/DOMStatsHandler.ts +31 -0
  204. package/lib/front_end/models/trace/handlers/ExtensionTraceDataHandler.ts +306 -0
  205. package/lib/front_end/models/trace/handlers/FlowsHandler.ts +175 -0
  206. package/lib/front_end/models/trace/handlers/FramesHandler.ts +571 -0
  207. package/lib/front_end/models/trace/handlers/GPUHandler.ts +50 -0
  208. package/lib/front_end/models/trace/handlers/ImagePaintingHandler.ts +183 -0
  209. package/lib/front_end/models/trace/handlers/InitiatorsHandler.ts +193 -0
  210. package/lib/front_end/models/trace/handlers/InvalidationsHandler.ts +168 -0
  211. package/lib/front_end/models/trace/handlers/LargestImagePaintHandler.ts +109 -0
  212. package/lib/front_end/models/trace/handlers/LargestTextPaintHandler.ts +35 -0
  213. package/lib/front_end/models/trace/handlers/LayerTreeHandler.ts +123 -0
  214. package/lib/front_end/models/trace/handlers/LayoutShiftsHandler.ts +573 -0
  215. package/lib/front_end/models/trace/handlers/MemoryHandler.ts +31 -0
  216. package/lib/front_end/models/trace/handlers/MetaHandler.ts +525 -0
  217. package/lib/front_end/models/trace/handlers/ModelHandlers.ts +34 -0
  218. package/lib/front_end/models/trace/handlers/NetworkRequestsHandler.ts +672 -0
  219. package/lib/front_end/models/trace/handlers/PageFramesHandler.ts +52 -0
  220. package/lib/front_end/models/trace/handlers/PageLoadMetricsHandler.ts +460 -0
  221. package/lib/front_end/models/trace/handlers/RendererHandler.ts +428 -0
  222. package/lib/front_end/models/trace/handlers/SamplesHandler.ts +271 -0
  223. package/lib/front_end/models/trace/handlers/ScreenshotsHandler.ts +122 -0
  224. package/lib/front_end/models/trace/handlers/ScriptsHandler.ts +336 -0
  225. package/lib/front_end/models/trace/handlers/SelectorStatsHandler.ts +110 -0
  226. package/lib/front_end/models/trace/handlers/Threads.ts +139 -0
  227. package/lib/front_end/models/trace/handlers/UserInteractionsHandler.ts +400 -0
  228. package/lib/front_end/models/trace/handlers/UserTimingsHandler.ts +233 -0
  229. package/lib/front_end/models/trace/handlers/WarningsHandler.ts +162 -0
  230. package/lib/front_end/models/trace/handlers/WorkersHandler.ts +45 -0
  231. package/lib/front_end/models/trace/handlers/handlers.ts +8 -0
  232. package/lib/front_end/models/trace/handlers/helpers.ts +196 -0
  233. package/lib/front_end/models/trace/handlers/types.ts +75 -0
  234. package/lib/front_end/models/trace/helpers/Extensions.ts +54 -0
  235. package/lib/front_end/models/trace/helpers/Network.ts +129 -0
  236. package/lib/front_end/models/trace/helpers/SamplesIntegrator.ts +544 -0
  237. package/lib/front_end/models/trace/helpers/SyntheticEvents.ts +87 -0
  238. package/lib/front_end/models/trace/helpers/Timing.ts +248 -0
  239. package/lib/front_end/models/trace/helpers/Trace.ts +928 -0
  240. package/lib/front_end/models/trace/helpers/TreeHelpers.ts +320 -0
  241. package/lib/front_end/models/trace/helpers/helpers.ts +11 -0
  242. package/lib/front_end/models/trace/insights/CLSCulprits.ts +668 -0
  243. package/lib/front_end/models/trace/insights/Cache.ts +269 -0
  244. package/lib/front_end/models/trace/insights/Common.ts +453 -0
  245. package/lib/front_end/models/trace/insights/DOMSize.ts +223 -0
  246. package/lib/front_end/models/trace/insights/DocumentLatency.ts +319 -0
  247. package/lib/front_end/models/trace/insights/DuplicatedJavaScript.ts +126 -0
  248. package/lib/front_end/models/trace/insights/FontDisplay.ts +119 -0
  249. package/lib/front_end/models/trace/insights/ForcedReflow.ts +220 -0
  250. package/lib/front_end/models/trace/insights/INPBreakdown.ts +171 -0
  251. package/lib/front_end/models/trace/insights/ImageDelivery.ts +348 -0
  252. package/lib/front_end/models/trace/insights/LCPBreakdown.ts +268 -0
  253. package/lib/front_end/models/trace/insights/LCPDiscovery.ts +237 -0
  254. package/lib/front_end/models/trace/insights/LegacyJavaScript.ts +138 -0
  255. package/lib/front_end/models/trace/insights/Models.ts +22 -0
  256. package/lib/front_end/models/trace/insights/ModernHTTP.ts +257 -0
  257. package/lib/front_end/models/trace/insights/NetworkDependencyTree.ts +726 -0
  258. package/lib/front_end/models/trace/insights/RenderBlocking.ts +257 -0
  259. package/lib/front_end/models/trace/insights/SlowCSSSelector.ts +175 -0
  260. package/lib/front_end/models/trace/insights/Statistics.ts +101 -0
  261. package/lib/front_end/models/trace/insights/ThirdParties.ts +130 -0
  262. package/lib/front_end/models/trace/insights/Viewport.ts +138 -0
  263. package/lib/front_end/models/trace/insights/insights.ts +10 -0
  264. package/lib/front_end/models/trace/insights/types.ts +157 -0
  265. package/lib/front_end/models/trace/lantern/core/LanternError.ts +7 -0
  266. package/lib/front_end/models/trace/lantern/core/NetworkAnalyzer.ts +619 -0
  267. package/lib/front_end/models/trace/lantern/core/core.ts +6 -0
  268. package/lib/front_end/models/trace/lantern/graph/BaseNode.ts +345 -0
  269. package/lib/front_end/models/trace/lantern/graph/CPUNode.ts +80 -0
  270. package/lib/front_end/models/trace/lantern/graph/NetworkNode.ts +101 -0
  271. package/lib/front_end/models/trace/lantern/graph/PageDependencyGraph.ts +636 -0
  272. package/lib/front_end/models/trace/lantern/graph/graph.ts +8 -0
  273. package/lib/front_end/models/trace/lantern/lantern.ts +17 -0
  274. package/lib/front_end/models/trace/lantern/metrics/FirstContentfulPaint.ts +187 -0
  275. package/lib/front_end/models/trace/lantern/metrics/Interactive.ts +88 -0
  276. package/lib/front_end/models/trace/lantern/metrics/LargestContentfulPaint.ts +92 -0
  277. package/lib/front_end/models/trace/lantern/metrics/MaxPotentialFID.ts +72 -0
  278. package/lib/front_end/models/trace/lantern/metrics/Metric.ts +126 -0
  279. package/lib/front_end/models/trace/lantern/metrics/SpeedIndex.ts +126 -0
  280. package/lib/front_end/models/trace/lantern/metrics/TBTUtils.ts +82 -0
  281. package/lib/front_end/models/trace/lantern/metrics/TotalBlockingTime.ts +112 -0
  282. package/lib/front_end/models/trace/lantern/metrics/metrics.ts +12 -0
  283. package/lib/front_end/models/trace/lantern/simulation/ConnectionPool.ts +150 -0
  284. package/lib/front_end/models/trace/lantern/simulation/Constants.ts +46 -0
  285. package/lib/front_end/models/trace/lantern/simulation/DNSCache.ts +61 -0
  286. package/lib/front_end/models/trace/lantern/simulation/SimulationTimingMap.ts +196 -0
  287. package/lib/front_end/models/trace/lantern/simulation/Simulator.ts +556 -0
  288. package/lib/front_end/models/trace/lantern/simulation/TCPConnection.ts +192 -0
  289. package/lib/front_end/models/trace/lantern/simulation/simulation.ts +10 -0
  290. package/lib/front_end/models/trace/lantern/types/Lantern.ts +220 -0
  291. package/lib/front_end/models/trace/lantern/types/types.ts +5 -0
  292. package/lib/front_end/models/trace/trace.ts +33 -0
  293. package/lib/front_end/models/trace/types/Configuration.ts +110 -0
  294. package/lib/front_end/models/trace/types/Extensions.ts +136 -0
  295. package/lib/front_end/models/trace/types/File.ts +281 -0
  296. package/lib/front_end/models/trace/types/Overlays.ts +138 -0
  297. package/lib/front_end/models/trace/types/Timing.ts +30 -0
  298. package/lib/front_end/models/trace/types/TraceEvents.ts +3277 -0
  299. package/lib/front_end/models/trace/types/types.ts +10 -0
  300. package/lib/front_end/third_party/i18n/LICENSE +202 -0
  301. package/lib/front_end/third_party/i18n/README.chromium +15 -0
  302. package/lib/front_end/third_party/i18n/i18n-impl.ts +61 -0
  303. package/lib/front_end/third_party/i18n/i18n.ts +11 -0
  304. package/lib/front_end/third_party/i18n/localized-string-set.ts +129 -0
  305. package/lib/front_end/third_party/intl-messageformat/LICENSE +33 -0
  306. package/lib/front_end/third_party/intl-messageformat/README.chromium +24 -0
  307. package/lib/front_end/third_party/intl-messageformat/intl-messageformat-tsconfig.json +16 -0
  308. package/lib/front_end/third_party/intl-messageformat/intl-messageformat.ts +6 -0
  309. package/lib/front_end/third_party/intl-messageformat/package/LICENSE.md +33 -0
  310. package/lib/front_end/third_party/intl-messageformat/package/README.md +3 -0
  311. package/lib/front_end/third_party/intl-messageformat/package/index.d.ts +6 -0
  312. package/lib/front_end/third_party/intl-messageformat/package/index.d.ts.map +1 -0
  313. package/lib/front_end/third_party/intl-messageformat/package/index.js +13 -0
  314. package/lib/front_end/third_party/intl-messageformat/package/intl-messageformat.esm.d.ts +5 -0
  315. package/lib/front_end/third_party/intl-messageformat/package/intl-messageformat.esm.js +1710 -0
  316. package/lib/front_end/third_party/intl-messageformat/package/intl-messageformat.iife.js +1815 -0
  317. package/lib/front_end/third_party/intl-messageformat/package/lib/index.d.ts +6 -0
  318. package/lib/front_end/third_party/intl-messageformat/package/lib/index.d.ts.map +1 -0
  319. package/lib/front_end/third_party/intl-messageformat/package/lib/index.js +10 -0
  320. package/lib/front_end/third_party/intl-messageformat/package/lib/src/core.d.ts +34 -0
  321. package/lib/front_end/third_party/intl-messageformat/package/lib/src/core.d.ts.map +1 -0
  322. package/lib/front_end/third_party/intl-messageformat/package/lib/src/core.js +229 -0
  323. package/lib/front_end/third_party/intl-messageformat/package/lib/src/error.d.ts +28 -0
  324. package/lib/front_end/third_party/intl-messageformat/package/lib/src/error.d.ts.map +1 -0
  325. package/lib/front_end/third_party/intl-messageformat/package/lib/src/error.js +48 -0
  326. package/lib/front_end/third_party/intl-messageformat/package/lib/src/formatters.d.ts +34 -0
  327. package/lib/front_end/third_party/intl-messageformat/package/lib/src/formatters.d.ts.map +1 -0
  328. package/lib/front_end/third_party/intl-messageformat/package/lib/src/formatters.js +179 -0
  329. package/lib/front_end/third_party/intl-messageformat/package/package.json +42 -0
  330. package/lib/front_end/third_party/intl-messageformat/package/src/core.d.ts +34 -0
  331. package/lib/front_end/third_party/intl-messageformat/package/src/core.d.ts.map +1 -0
  332. package/lib/front_end/third_party/intl-messageformat/package/src/core.js +230 -0
  333. package/lib/front_end/third_party/intl-messageformat/package/src/error.d.ts +28 -0
  334. package/lib/front_end/third_party/intl-messageformat/package/src/error.d.ts.map +1 -0
  335. package/lib/front_end/third_party/intl-messageformat/package/src/error.js +51 -0
  336. package/lib/front_end/third_party/intl-messageformat/package/src/formatters.d.ts +34 -0
  337. package/lib/front_end/third_party/intl-messageformat/package/src/formatters.d.ts.map +1 -0
  338. package/lib/front_end/third_party/intl-messageformat/package/src/formatters.js +182 -0
  339. package/lib/front_end/third_party/intl-messageformat/package/src/icu-messageformat-parser/error.d.ts +79 -0
  340. package/lib/front_end/third_party/intl-messageformat/package/src/icu-messageformat-parser/index.d.ts +15 -0
  341. package/lib/front_end/third_party/intl-messageformat/package/src/icu-messageformat-parser/parser.d.ts +153 -0
  342. package/lib/front_end/third_party/intl-messageformat/package/src/icu-messageformat-parser/types.d.ts +139 -0
  343. package/lib/front_end/third_party/legacy-javascript/LICENSE +202 -0
  344. package/lib/front_end/third_party/legacy-javascript/README.chromium +13 -0
  345. package/lib/front_end/third_party/legacy-javascript/legacy-javascript-tsconfig.json +8 -0
  346. package/lib/front_end/third_party/legacy-javascript/legacy-javascript.ts +3 -0
  347. package/lib/front_end/third_party/legacy-javascript/lib/legacy-javascript.d.ts +18 -0
  348. package/lib/front_end/third_party/legacy-javascript/lib/legacy-javascript.js +943 -0
  349. package/lib/front_end/third_party/legacy-javascript/package.json +8 -0
  350. package/lib/front_end/third_party/legacy-javascript/rebuild.sh +9 -0
  351. package/lib/front_end/third_party/third-party-web/LICENSE +20 -0
  352. package/lib/front_end/third_party/third-party-web/README.chromium +13 -0
  353. package/lib/front_end/third_party/third-party-web/lib/nostats-subset.d.ts +2 -0
  354. package/lib/front_end/third_party/third-party-web/lib/nostats-subset.js +149 -0
  355. package/lib/front_end/third_party/third-party-web/package/LICENSE +20 -0
  356. package/lib/front_end/third_party/third-party-web/package/README.md +929 -0
  357. package/lib/front_end/third_party/third-party-web/package/dist/entities-httparchive-nostats.json +1 -0
  358. package/lib/front_end/third_party/third-party-web/package/dist/entities-httparchive.json +1 -0
  359. package/lib/front_end/third_party/third-party-web/package/dist/entities-nostats.json +1 -0
  360. package/lib/front_end/third_party/third-party-web/package/dist/entities.json +1 -0
  361. package/lib/front_end/third_party/third-party-web/package/facades.md +46 -0
  362. package/lib/front_end/third_party/third-party-web/package/httparchive-nostats-subset.d.ts +1 -0
  363. package/lib/front_end/third_party/third-party-web/package/httparchive-nostats-subset.js +1 -0
  364. package/lib/front_end/third_party/third-party-web/package/httparchive-subset.d.ts +1 -0
  365. package/lib/front_end/third_party/third-party-web/package/httparchive-subset.js +1 -0
  366. package/lib/front_end/third_party/third-party-web/package/lib/__snapshots__/index.test.js.snap +1006 -0
  367. package/lib/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.js +139 -0
  368. package/lib/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.test.js +44 -0
  369. package/lib/front_end/third_party/third-party-web/package/lib/entities.test.js +27 -0
  370. package/lib/front_end/third_party/third-party-web/package/lib/index.d.ts +34 -0
  371. package/lib/front_end/third_party/third-party-web/package/lib/index.js +3 -0
  372. package/lib/front_end/third_party/third-party-web/package/lib/index.test.js +246 -0
  373. package/lib/front_end/third_party/third-party-web/package/lib/markdown/faqs.partial.md +36 -0
  374. package/lib/front_end/third_party/third-party-web/package/lib/markdown/goals.partial.md +9 -0
  375. package/lib/front_end/third_party/third-party-web/package/lib/markdown/methodology.partial.md +5 -0
  376. package/lib/front_end/third_party/third-party-web/package/lib/markdown/template.md +151 -0
  377. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-02-01.md +1 -0
  378. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-03-01.md +1 -0
  379. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-05-06.md +1 -0
  380. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-05-13.md +14 -0
  381. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2021-01-01.md +1 -0
  382. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2024-07-01.md +3 -0
  383. package/lib/front_end/third_party/third-party-web/package/lib/subsets/httparchive-nostats.d.ts +1 -0
  384. package/lib/front_end/third_party/third-party-web/package/lib/subsets/httparchive-nostats.js +3 -0
  385. package/lib/front_end/third_party/third-party-web/package/lib/subsets/httparchive.d.ts +1 -0
  386. package/lib/front_end/third_party/third-party-web/package/lib/subsets/httparchive.js +3 -0
  387. package/lib/front_end/third_party/third-party-web/package/lib/subsets/nostats.d.ts +1 -0
  388. package/lib/front_end/third_party/third-party-web/package/lib/subsets/nostats.js +3 -0
  389. package/lib/front_end/third_party/third-party-web/package/nostats-subset.d.ts +1 -0
  390. package/lib/front_end/third_party/third-party-web/package/nostats-subset.js +1 -0
  391. package/lib/front_end/third_party/third-party-web/package/package.json +46 -0
  392. package/lib/front_end/third_party/third-party-web/package.json +8 -0
  393. package/lib/front_end/third_party/third-party-web/rebuild.sh +13 -0
  394. package/lib/front_end/third_party/third-party-web/third-party-web-tsconfig.json +8 -0
  395. package/lib/front_end/third_party/third-party-web/third-party-web.ts +3 -0
  396. package/package.json +24 -0
  397. package/patches/chrome-devtools-frontend+1.0.1533544.patch +187 -0
@@ -0,0 +1,192 @@
1
+ // Copyright 2024 The Chromium Authors
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ import type {ConnectionTiming} from './SimulationTimingMap.js';
6
+
7
+ interface DownloadOptions {
8
+ dnsResolutionTime?: number;
9
+ timeAlreadyElapsed?: number;
10
+ maximumTimeToElapse?: number;
11
+ }
12
+
13
+ interface DownloadResults {
14
+ roundTrips: number;
15
+ timeElapsed: number;
16
+ bytesDownloaded: number;
17
+ extraBytesDownloaded: number;
18
+ congestionWindow: number;
19
+ connectionTiming: ConnectionTiming;
20
+ }
21
+
22
+ const INITIAL_CONGESTION_WINDOW = 10;
23
+ const TCP_SEGMENT_SIZE = 1460;
24
+
25
+ class TCPConnection {
26
+ warmed: boolean;
27
+ ssl: boolean;
28
+ h2: boolean;
29
+ rtt: number;
30
+ throughput: number;
31
+ serverLatency: number;
32
+ _congestionWindow: number;
33
+ h2OverflowBytesDownloaded: number;
34
+
35
+ constructor(rtt: number, throughput: number, serverLatency = 0, ssl = true, h2 = false) {
36
+ this.warmed = false;
37
+ this.ssl = ssl;
38
+ this.h2 = h2;
39
+ this.rtt = rtt;
40
+ this.throughput = throughput;
41
+ this.serverLatency = serverLatency;
42
+ this._congestionWindow = INITIAL_CONGESTION_WINDOW;
43
+ this.h2OverflowBytesDownloaded = 0;
44
+ }
45
+
46
+ static maximumSaturatedConnections(rtt: number, availableThroughput: number): number {
47
+ const roundTripsPerSecond = 1000 / rtt;
48
+ const bytesPerRoundTrip = TCP_SEGMENT_SIZE;
49
+ const bytesPerSecond = roundTripsPerSecond * bytesPerRoundTrip;
50
+ const minimumThroughputRequiredPerRequest = bytesPerSecond * 8;
51
+ return Math.floor(availableThroughput / minimumThroughputRequiredPerRequest);
52
+ }
53
+
54
+ computeMaximumCongestionWindowInSegments(): number {
55
+ const bytesPerSecond = this.throughput / 8;
56
+ const secondsPerRoundTrip = this.rtt / 1000;
57
+ const bytesPerRoundTrip = bytesPerSecond * secondsPerRoundTrip;
58
+ return Math.floor(bytesPerRoundTrip / TCP_SEGMENT_SIZE);
59
+ }
60
+
61
+ setThroughput(throughput: number): void {
62
+ this.throughput = throughput;
63
+ }
64
+
65
+ setCongestionWindow(congestion: number): void {
66
+ this._congestionWindow = congestion;
67
+ }
68
+
69
+ setWarmed(warmed: boolean): void {
70
+ this.warmed = warmed;
71
+ }
72
+
73
+ isH2(): boolean {
74
+ return this.h2;
75
+ }
76
+
77
+ get congestionWindow(): number {
78
+ return this._congestionWindow;
79
+ }
80
+
81
+ /**
82
+ * Sets the number of excess bytes that are available to this connection on future downloads, only
83
+ * applies to H2 connections.
84
+ */
85
+ setH2OverflowBytesDownloaded(bytes: number): void {
86
+ if (!this.h2) {
87
+ return;
88
+ }
89
+ this.h2OverflowBytesDownloaded = bytes;
90
+ }
91
+
92
+ clone(): TCPConnection {
93
+ return Object.assign(new TCPConnection(this.rtt, this.throughput), this);
94
+ }
95
+
96
+ /**
97
+ * Simulates a network download of a particular number of bytes over an optional maximum amount of time
98
+ * and returns information about the ending state.
99
+ *
100
+ * See https://hpbn.co/building-blocks-of-tcp/#three-way-handshake and
101
+ * https://hpbn.co/transport-layer-security-tls/#tls-handshake for details.
102
+ */
103
+ simulateDownloadUntil(bytesToDownload: number, options?: DownloadOptions): DownloadResults {
104
+ const {timeAlreadyElapsed = 0, maximumTimeToElapse = Infinity, dnsResolutionTime = 0} = options || {};
105
+
106
+ if (this.warmed && this.h2) {
107
+ bytesToDownload -= this.h2OverflowBytesDownloaded;
108
+ }
109
+ const twoWayLatency = this.rtt;
110
+ const oneWayLatency = twoWayLatency / 2;
111
+ const maximumCongestionWindow = this.computeMaximumCongestionWindowInSegments();
112
+
113
+ let handshakeAndRequest = oneWayLatency;
114
+ if (!this.warmed) {
115
+ handshakeAndRequest =
116
+ // DNS lookup
117
+ dnsResolutionTime +
118
+ // SYN
119
+ oneWayLatency +
120
+ // SYN ACK
121
+ oneWayLatency +
122
+ // ACK + initial request
123
+ oneWayLatency +
124
+ // ClientHello/ServerHello assuming TLS False Start is enabled (https://istlsfastyet.com/#server-performance).
125
+ (this.ssl ? twoWayLatency : 0);
126
+ }
127
+
128
+ let roundTrips = Math.ceil(handshakeAndRequest / twoWayLatency);
129
+ let timeToFirstByte = handshakeAndRequest + this.serverLatency + oneWayLatency;
130
+ if (this.warmed && this.h2) {
131
+ timeToFirstByte = 0;
132
+ }
133
+
134
+ const timeElapsedForTTFB = Math.max(timeToFirstByte - timeAlreadyElapsed, 0);
135
+ const maximumDownloadTimeToElapse = maximumTimeToElapse - timeElapsedForTTFB;
136
+
137
+ let congestionWindow = Math.min(this._congestionWindow, maximumCongestionWindow);
138
+ let totalBytesDownloaded = 0;
139
+ if (timeElapsedForTTFB > 0) {
140
+ totalBytesDownloaded = congestionWindow * TCP_SEGMENT_SIZE;
141
+ } else {
142
+ roundTrips = 0;
143
+ }
144
+
145
+ let downloadTimeElapsed = 0;
146
+ let bytesRemaining = bytesToDownload - totalBytesDownloaded;
147
+ while (bytesRemaining > 0 && downloadTimeElapsed <= maximumDownloadTimeToElapse) {
148
+ roundTrips++;
149
+ downloadTimeElapsed += twoWayLatency;
150
+ congestionWindow = Math.max(Math.min(maximumCongestionWindow, congestionWindow * 2), 1);
151
+
152
+ const bytesDownloadedInWindow = congestionWindow * TCP_SEGMENT_SIZE;
153
+ totalBytesDownloaded += bytesDownloadedInWindow;
154
+ bytesRemaining -= bytesDownloadedInWindow;
155
+ }
156
+
157
+ const timeElapsed = timeElapsedForTTFB + downloadTimeElapsed;
158
+ const extraBytesDownloaded = this.h2 ? Math.max(totalBytesDownloaded - bytesToDownload, 0) : 0;
159
+ const bytesDownloaded = Math.max(Math.min(totalBytesDownloaded, bytesToDownload), 0);
160
+
161
+ let connectionTiming: ConnectionTiming;
162
+ if (!this.warmed) {
163
+ connectionTiming = {
164
+ dnsResolutionTime,
165
+ connectionTime: handshakeAndRequest - dnsResolutionTime,
166
+ sslTime: this.ssl ? twoWayLatency : undefined,
167
+ timeToFirstByte,
168
+ };
169
+ } else if (this.h2) {
170
+ // TODO: timing information currently difficult to model for warm h2 connections.
171
+ connectionTiming = {
172
+ timeToFirstByte,
173
+ };
174
+ } else {
175
+ connectionTiming = {
176
+ connectionTime: handshakeAndRequest,
177
+ timeToFirstByte,
178
+ };
179
+ }
180
+
181
+ return {
182
+ roundTrips,
183
+ timeElapsed,
184
+ bytesDownloaded,
185
+ extraBytesDownloaded,
186
+ congestionWindow,
187
+ connectionTiming,
188
+ };
189
+ }
190
+ }
191
+
192
+ export {TCPConnection};
@@ -0,0 +1,10 @@
1
+ // Copyright 2024 The Chromium Authors
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ export * from './ConnectionPool.js';
6
+ export * from './Constants.js';
7
+ export * from './DNSCache.js';
8
+ export * from './SimulationTimingMap.js';
9
+ export * from './Simulator.js';
10
+ export * from './TCPConnection.js';
@@ -0,0 +1,220 @@
1
+ // Copyright 2024 The Chromium Authors
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ import type * as Protocol from '../../../../generated/protocol.js';
6
+
7
+ export const NetworkRequestTypes = {
8
+ XHR: 'XHR',
9
+ Fetch: 'Fetch',
10
+ EventSource: 'EventSource',
11
+ Script: 'Script',
12
+ Stylesheet: 'Stylesheet',
13
+ Image: 'Image',
14
+ Media: 'Media',
15
+ Font: 'Font',
16
+ Document: 'Document',
17
+ TextTrack: 'TextTrack',
18
+ WebSocket: 'WebSocket',
19
+ Other: 'Other',
20
+ Manifest: 'Manifest',
21
+ SignedExchange: 'SignedExchange',
22
+ Ping: 'Ping',
23
+ Preflight: 'Preflight',
24
+ CSPViolationReport: 'CSPViolationReport',
25
+ Prefetch: 'Prefetch',
26
+ FedCM: 'FedCM',
27
+ } as const;
28
+
29
+ export interface TraceEvent {
30
+ name: string;
31
+ args: {
32
+ name?: string,
33
+ data?: {
34
+ frame?: string,
35
+ readyState?: number,
36
+ stackTrace?: Array<{
37
+ url: string,
38
+ }>,
39
+ url?: string,
40
+ },
41
+ };
42
+ pid: number;
43
+ tid: number;
44
+ /** Timestamp of the event in microseconds. */
45
+ ts: number;
46
+ dur: number;
47
+ }
48
+ export interface Trace {
49
+ traceEvents: TraceEvent[];
50
+ }
51
+ export type ResourcePriority = ('VeryLow'|'Low'|'Medium'|'High'|'VeryHigh');
52
+ export type ResourceType = keyof typeof NetworkRequestTypes;
53
+ type InitiatorType = ('parser'|'script'|'preload'|'SignedExchange'|'preflight'|'FedCM'|'other');
54
+ export type ResourceTiming = Protocol.Network.ResourceTiming;
55
+ export interface CallStack {
56
+ callFrames: Array<{
57
+ scriptId: string,
58
+ url: string,
59
+ lineNumber: number,
60
+ columnNumber: number,
61
+ functionName: string,
62
+ }>;
63
+ parent?: CallStack;
64
+ }
65
+
66
+ export interface ParsedURL {
67
+ /**
68
+ * Equivalent to a `new URL(url).protocol` BUT w/o the trailing colon (:)
69
+ */
70
+ scheme: string;
71
+ /**
72
+ * Equivalent to a `new URL(url).hostname`
73
+ */
74
+ host: string;
75
+ securityOrigin: string;
76
+ }
77
+
78
+ // When Lantern NetworkRequests are constructed, the source-of-truth of the network record is given as `rawRequest`.
79
+ // Internally Lantern doesn't care about the type of this field, so a default type is given to simplify internal code
80
+ // by avoiding unnecessary typescript overhead.
81
+ // If callers want to access the underlying network record, they are expected to make use of this generic on top-level
82
+ // interfaces like Simulator.
83
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
84
+ export type AnyNetworkObject = any;
85
+
86
+ export interface NetworkRequest<T = AnyNetworkObject> {
87
+ requestId: string;
88
+ connectionId: number;
89
+ connectionReused: boolean;
90
+ url: string;
91
+ protocol: string;
92
+ parsedURL: ParsedURL;
93
+ documentURL: string;
94
+ /** When the renderer process initially discovers a network request, in milliseconds. */
95
+ rendererStartTime: number;
96
+ /**
97
+ * When the network service is about to handle a request, ie. just before going to the
98
+ * HTTP cache or going to the network for DNS/connection setup, in milliseconds.
99
+ */
100
+ networkRequestTime: number;
101
+ /**
102
+ * When the last byte of the response headers is received, in milliseconds.
103
+ * Equal to networkRequestTime if no data is received over the
104
+ * network (ex: cached requests or data urls).
105
+ */
106
+ responseHeadersEndTime: number;
107
+ /** When the last byte of the response body is received, in milliseconds. */
108
+ networkEndTime: number;
109
+ transferSize: number;
110
+ resourceSize: number;
111
+ fromDiskCache: boolean;
112
+ fromMemoryCache: boolean;
113
+ isLinkPreload: boolean;
114
+ finished: boolean;
115
+ failed: boolean;
116
+ statusCode: number;
117
+ /** The network request that redirected to this one */
118
+ redirectSource: NetworkRequest<T>|undefined;
119
+ /** The network request that this one redirected to */
120
+ redirectDestination: NetworkRequest<T>|undefined;
121
+ // TODO: can't use Protocol.Network.Initiator because of type mismatch in Lighthouse initiator.
122
+ initiator: {
123
+ type: InitiatorType,
124
+ url?: string,
125
+ stack?: CallStack,
126
+ };
127
+ initiatorRequest: NetworkRequest<T>|undefined;
128
+ /** The chain of network requests that redirected to this one */
129
+ redirects: NetworkRequest[]|undefined;
130
+ timing: Protocol.Network.ResourceTiming|undefined;
131
+ resourceType: ResourceType|undefined;
132
+ mimeType: string;
133
+ priority: ResourcePriority;
134
+ frameId: string|undefined;
135
+ fromWorker: boolean;
136
+ /**
137
+ * Optional value for how long the server took to respond to this request, in ms.
138
+ * When not provided, the server response time is derived from the timing object.
139
+ */
140
+ serverResponseTime?: number;
141
+ /**
142
+ * Implementation-specific canonical data structure that this Lantern NetworkRequest
143
+ * was derived from.
144
+ * Users of Lantern create a NetworkRequest matching this interface,
145
+ * but can store the source-of-truth for their network model in this property.
146
+ * This is then accessible as a read-only property on NetworkNode.
147
+ */
148
+ rawRequest?: T;
149
+ }
150
+
151
+ export namespace Simulation {
152
+ export interface URL {
153
+ /** URL of the initially requested URL */
154
+ requestedUrl?: string;
155
+ /** URL of the last document request */
156
+ mainDocumentUrl?: string;
157
+ }
158
+
159
+ /** Simulation settings that control the amount of network & cpu throttling in the run. */
160
+ export interface ThrottlingSettings {
161
+ /** The round trip time in milliseconds. */
162
+ rttMs?: number;
163
+ /** The network throughput in kilobits per second. */
164
+ throughputKbps?: number;
165
+ // devtools settings
166
+ /** The network request latency in milliseconds. */
167
+ requestLatencyMs?: number;
168
+ /** The network download throughput in kilobits per second. */
169
+ downloadThroughputKbps?: number;
170
+ /** The network upload throughput in kilobits per second. */
171
+ uploadThroughputKbps?: number;
172
+ // used by both
173
+ /** The amount of slowdown applied to the cpu (1/<cpuSlowdownMultiplier>). */
174
+ cpuSlowdownMultiplier?: number;
175
+ }
176
+
177
+ export interface PrecomputedLanternData {
178
+ additionalRttByOrigin: Record<string, number>;
179
+ serverResponseTimeByOrigin: Record<string, number>;
180
+ }
181
+
182
+ export interface Settings {
183
+ networkAnalysis: {
184
+ rtt: number,
185
+ additionalRttByOrigin: Map<string, number>,
186
+ serverResponseTimeByOrigin: Map<string, number>,
187
+ throughput: number,
188
+ };
189
+ /** The method used to throttle the network. */
190
+ throttlingMethod: 'devtools'|'simulate'|'provided';
191
+ /** The throttling config settings. */
192
+ throttling?: Required<ThrottlingSettings>;
193
+ /** Precomputed lantern estimates to use instead of observed analysis. */
194
+ precomputedLanternData?: PrecomputedLanternData|null;
195
+ }
196
+
197
+ export interface Options {
198
+ rtt?: number;
199
+ throughput?: number;
200
+ observedThroughput: number;
201
+ maximumConcurrentRequests?: number;
202
+ cpuSlowdownMultiplier?: number;
203
+ layoutTaskMultiplier?: number;
204
+ additionalRttByOrigin?: Map<string, number>;
205
+ serverResponseTimeByOrigin?: Map<string, number>;
206
+ }
207
+
208
+ export interface ProcessedNavigation {
209
+ timestamps: {
210
+ firstContentfulPaint: number,
211
+ largestContentfulPaint?: number,
212
+ };
213
+ }
214
+
215
+ export interface NodeTiming {
216
+ startTime: number;
217
+ endTime: number;
218
+ duration: number;
219
+ }
220
+ }
@@ -0,0 +1,5 @@
1
+ // Copyright 2024 The Chromium Authors
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ export * from './Lantern.js';
@@ -0,0 +1,33 @@
1
+ // Copyright 2022 The Chromium Authors
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ import * as EntityMapper from './EntityMapper.js';
6
+ import * as EventsSerializer from './EventsSerializer.js';
7
+ import * as Extras from './extras/extras.js';
8
+ import * as Handlers from './handlers/handlers.js';
9
+ import * as Helpers from './helpers/helpers.js';
10
+ import * as Insights from './insights/insights.js';
11
+ import * as Lantern from './lantern/lantern.js';
12
+ import * as LanternComputationData from './LanternComputationData.js';
13
+ import * as TraceModel from './ModelImpl.js';
14
+ import * as Name from './Name.js';
15
+ import * as Processor from './Processor.js';
16
+ import * as Styles from './Styles.js';
17
+ import * as Types from './types/types.js';
18
+
19
+ export {
20
+ EntityMapper,
21
+ EventsSerializer,
22
+ Extras,
23
+ Handlers,
24
+ Helpers,
25
+ Insights,
26
+ Lantern,
27
+ LanternComputationData,
28
+ Name,
29
+ Processor,
30
+ Styles,
31
+ TraceModel,
32
+ Types,
33
+ };
@@ -0,0 +1,110 @@
1
+ // Copyright 2023 The Chromium Authors
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ import type * as Platform from '../../../core/platform/platform.js';
6
+ import type * as SDK from '../../../core/sdk/sdk.js';
7
+ import type * as Protocol from '../../../generated/protocol.js';
8
+ import type * as Lantern from '../lantern/lantern.js';
9
+
10
+ import type * as File from './File.js';
11
+ import type {Milli} from './Timing.js';
12
+
13
+ export interface Configuration {
14
+ /**
15
+ * Include V8 RCS functions in the JS stacks
16
+ */
17
+ includeRuntimeCallStats: boolean;
18
+ /**
19
+ * Show all events: disable the default filtering which hides and excludes some events.
20
+ */
21
+ showAllEvents: boolean;
22
+ /**
23
+ * Extra detail for RPP developers (eg Trace Event json in Summary, and individual JS Sample events)
24
+ */
25
+ debugMode: boolean;
26
+ /**
27
+ * How many invalidation events will be stored for a layout (or similar) event.
28
+ * On large sites with a lot of DOM there can be thousands of invalidations
29
+ * associated with any given event. It is not useful to show the user 1000s of
30
+ * invalidations in the UI, but it is also expensive for us to hold onto them
31
+ * all, and it helps prevents OOM issues when running in NodeJS
32
+ * [https://github.com/GoogleChrome/lighthouse/issues/16111].
33
+ * Therefore, instead, we store only the latest 20 per event. We do also store
34
+ * the total count, so we can show that, but we'll only ever hold on to the
35
+ * last 20 invalidations (in DESC trace order - so the latest 20 in the trace file)
36
+ *
37
+ * If you set this to 0, we will skip the Invalidations processing entirely.
38
+ * 0 effectively disables the InvalidationsHandler and it will not even
39
+ * attempt to gather or track invalidations.
40
+ */
41
+ maxInvalidationEventsPerEvent: number;
42
+ /**
43
+ * Determines if the AnimationFramesHandler should be enabled. Currently in
44
+ * DevTools we do not use it, so we disable it by default to avoid work that
45
+ * we do not use. If you disable it, you will still see `data.AnimationFrames`
46
+ * from the model, but the contents will be empty.
47
+ */
48
+ enableAnimationsFrameHandler: boolean;
49
+ }
50
+
51
+ export const defaults = (): Configuration => ({
52
+ includeRuntimeCallStats: false,
53
+ showAllEvents: false,
54
+ debugMode: false,
55
+ maxInvalidationEventsPerEvent: 20,
56
+ enableAnimationsFrameHandler: false,
57
+ });
58
+
59
+ /**
60
+ * Generates a key that can be used to represent this config in a cache. This is
61
+ * used mainly in tests, where we want to avoid re-parsing a file if we have
62
+ * already processed it with the same configuration.
63
+ */
64
+ export function configToCacheKey(config: Configuration): string {
65
+ return JSON.stringify(config);
66
+ }
67
+
68
+ export interface ParseOptions {
69
+ showAllEvents?: boolean;
70
+ /**
71
+ * If the trace was just recorded on the current page, rather than an imported file.
72
+ * TODO(paulirish): Maybe remove. This is currently unused by the Processor and Handlers
73
+ * @default false
74
+ */
75
+ isFreshRecording?: boolean;
76
+ /**
77
+ * If the trace is a CPU Profile rather than a Chrome tracing trace.
78
+ * @default false
79
+ */
80
+ isCPUProfile?: boolean;
81
+ metadata?: File.MetaData;
82
+ resolveSourceMap?: (params: ResolveSourceMapParams) => Promise<SDK.SourceMap.SourceMap|null>;
83
+ logger?: {
84
+ start: (id: string) => void,
85
+ end: (id: string) => void,
86
+ };
87
+ lanternSettings?: Omit<Lantern.Types.Simulation.Settings, 'networkAnalysis'>;
88
+ /**
89
+ * Used when an Insight needs to format a time to string as part of its
90
+ * output. By default we use the i18n.TimeUtilities in DevTools but this
91
+ * enables it to be overridden, which is useful if you are consuming the trace
92
+ * engine outside of DevTools.
93
+ */
94
+ insightTimeFormatters?: InsightTimeFormatters;
95
+ }
96
+
97
+ export interface InsightTimeFormatters {
98
+ milli: (x: Milli) => string;
99
+ }
100
+
101
+ export interface ResolveSourceMapParams {
102
+ scriptId: string;
103
+ scriptUrl: Platform.DevToolsPath.UrlString;
104
+ /** The url as resolved by any sourceUrl comment. */
105
+ sourceUrl: Platform.DevToolsPath.UrlString;
106
+ sourceMapUrl: Platform.DevToolsPath.UrlString;
107
+ frame: Protocol.Page.FrameId;
108
+ /** Set only if the raw source map was found on the provided metadata. Never set for source maps from data urls. */
109
+ cachedRawSourceMap?: SDK.SourceMap.SourceMapV3;
110
+ }