chrome-ai-bridge 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 (443) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +252 -0
  3. package/build/node_modules/chrome-devtools-frontend/LICENSE +27 -0
  4. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/App.js +4 -0
  5. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/AppProvider.js +17 -0
  6. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Base64.js +43 -0
  7. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/CharacterIdMap.js +27 -0
  8. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Color.js +2033 -0
  9. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ColorConverter.js +332 -0
  10. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ColorUtils.js +221 -0
  11. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Console.js +79 -0
  12. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Debouncer.js +14 -0
  13. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/EventTarget.js +14 -0
  14. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Gzip.js +66 -0
  15. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/JavaScriptMetaData.js +4 -0
  16. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Lazy.js +29 -0
  17. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/MapWithDefault.js +22 -0
  18. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Mutex.js +49 -0
  19. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Object.js +86 -0
  20. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ParsedURL.js +449 -0
  21. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Progress.js +144 -0
  22. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ResolverBase.js +69 -0
  23. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ResourceType.js +495 -0
  24. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ReturnToPanel.js +15 -0
  25. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Revealer.js +164 -0
  26. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Runnable.js +24 -0
  27. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SegmentedRange.js +78 -0
  28. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SettingRegistration.js +164 -0
  29. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Settings.js +1263 -0
  30. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SimpleHistoryManager.js +97 -0
  31. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/StringOutputStream.js +14 -0
  32. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/TextDictionary.js +40 -0
  33. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Throttler.js +71 -0
  34. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Trie.js +127 -0
  35. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/common.js +41 -0
  36. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/AidaClient.js +434 -0
  37. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/DispatchHttpRequestClient.js +66 -0
  38. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/GdpClient.js +202 -0
  39. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHost.js +92 -0
  40. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHostAPI.js +69 -0
  41. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHostStub.js +430 -0
  42. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/Platform.js +61 -0
  43. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/ResourceLoader.js +220 -0
  44. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/UserMetrics.js +968 -0
  45. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/host.js +13 -0
  46. package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/i18n.js +60 -0
  47. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/ArrayUtilities.js +199 -0
  48. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Brand.js +4 -0
  49. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Constructor.js +4 -0
  50. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/DateUtilities.js +13 -0
  51. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/DevToolsPath.js +27 -0
  52. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/HostRuntime.js +19 -0
  53. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/KeyboardUtilities.js +21 -0
  54. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/MapUtilities.js +79 -0
  55. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/MimeType.js +143 -0
  56. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/NumberUtilities.js +72 -0
  57. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/StringUtilities.js +538 -0
  58. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Timing.js +9 -0
  59. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/TypedArrayUtilities.js +157 -0
  60. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/TypescriptUtilities.js +24 -0
  61. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/UIString.js +4 -0
  62. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/UserVisibleError.js +22 -0
  63. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/api/HostRuntime.js +4 -0
  64. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/api/api.js +5 -0
  65. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/browser/HostRuntime.js +63 -0
  66. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/browser/browser.js +5 -0
  67. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/node/HostRuntime.js +72 -0
  68. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/node/node.js +5 -0
  69. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/platform.js +26 -0
  70. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/CDPConnection.js +17 -0
  71. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/ConnectionTransport.js +12 -0
  72. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/DevToolsCDPConnection.js +138 -0
  73. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/InspectorBackend.js +539 -0
  74. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/protocol_client.js +8 -0
  75. package/build/node_modules/chrome-devtools-frontend/front_end/core/root/DevToolsContext.js +54 -0
  76. package/build/node_modules/chrome-devtools-frontend/front_end/core/root/Runtime.js +4 -0
  77. package/build/node_modules/chrome-devtools-frontend/front_end/core/root/root.js +6 -0
  78. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AccessibilityModel.js +281 -0
  79. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AnimationModel.js +845 -0
  80. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AutofillModel.js +155 -0
  81. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CPUProfilerModel.js +99 -0
  82. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CPUThrottlingManager.js +217 -0
  83. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSContainerQuery.js +98 -0
  84. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSFontFace.js +31 -0
  85. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSLayer.js +22 -0
  86. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMatchedStyles.js +1318 -0
  87. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMedia.js +100 -0
  88. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMetadata.js +1532 -0
  89. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSModel.js +908 -0
  90. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSProperty.js +312 -0
  91. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParser.js +574 -0
  92. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParserMatchers.js +1346 -0
  93. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSQuery.js +53 -0
  94. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSRule.js +403 -0
  95. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSScope.js +22 -0
  96. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStartingStyle.js +21 -0
  97. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStyleDeclaration.js +275 -0
  98. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStyleSheetHeader.js +166 -0
  99. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSSupports.js +24 -0
  100. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CategorizedBreakpoint.js +29 -0
  101. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ChildTargetManager.js +236 -0
  102. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CompilerSourceMappingContentProvider.js +47 -0
  103. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Connections.js +205 -0
  104. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ConsoleModel.js +629 -0
  105. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ConsoleModelTypes.js +14 -0
  106. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Cookie.js +241 -0
  107. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CookieModel.js +198 -0
  108. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CookieParser.js +163 -0
  109. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DOMDebuggerModel.js +597 -0
  110. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DOMModel.js +1635 -0
  111. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DebuggerModel.js +1216 -0
  112. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EmulationModel.js +527 -0
  113. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EnhancedTracesParser.js +364 -0
  114. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EventBreakpointsModel.js +127 -0
  115. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/FrameAssociated.js +4 -0
  116. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/FrameManager.js +199 -0
  117. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/HeapProfilerModel.js +130 -0
  118. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/HttpReasonPhraseStrings.js +75 -0
  119. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IOModel.js +80 -0
  120. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IsolateManager.js +208 -0
  121. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IssuesModel.js +41 -0
  122. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/LayerTreeBase.js +95 -0
  123. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/LogModel.js +34 -0
  124. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/NetworkManager.js +2223 -0
  125. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/NetworkRequest.js +1654 -0
  126. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayColorGenerator.js +48 -0
  127. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayModel.js +765 -0
  128. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayPersistentHighlighter.js +384 -0
  129. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PageLoad.js +25 -0
  130. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PageResourceLoader.js +310 -0
  131. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PaintProfiler.js +67 -0
  132. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PerformanceMetricsModel.js +62 -0
  133. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PreloadingModel.js +608 -0
  134. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RehydratingConnection.js +413 -0
  135. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RehydratingObject.js +4 -0
  136. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RemoteObject.js +908 -0
  137. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Resource.js +163 -0
  138. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ResourceTreeModel.js +923 -0
  139. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RuntimeModel.js +535 -0
  140. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SDKModel.js +45 -0
  141. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ScopeTreeCache.js +36 -0
  142. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ScreenCaptureModel.js +176 -0
  143. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Script.js +420 -0
  144. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SecurityOriginManager.js +54 -0
  145. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerSentEvents.js +67 -0
  146. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerSentEventsProtocol.js +113 -0
  147. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerTiming.js +216 -0
  148. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServiceWorkerCacheModel.js +271 -0
  149. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServiceWorkerManager.js +511 -0
  150. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMap.js +691 -0
  151. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapCache.js +57 -0
  152. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapFunctionRanges.js +132 -0
  153. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapManager.js +201 -0
  154. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapScopeChainEntry.js +156 -0
  155. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapScopesInfo.js +508 -0
  156. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/StorageBucketsModel.js +143 -0
  157. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/StorageKeyManager.js +53 -0
  158. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Target.js +257 -0
  159. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/TargetManager.js +395 -0
  160. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/TraceObject.js +55 -0
  161. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/WebAuthnModel.js +66 -0
  162. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/sdk-meta.js +1166 -0
  163. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/sdk.js +91 -0
  164. package/build/node_modules/chrome-devtools-frontend/front_end/generated/ARIAProperties.js +2640 -0
  165. package/build/node_modules/chrome-devtools-frontend/front_end/generated/Deprecation.js +384 -0
  166. package/build/node_modules/chrome-devtools-frontend/front_end/generated/InspectorBackendCommands.js +1532 -0
  167. package/build/node_modules/chrome-devtools-frontend/front_end/generated/SupportedCSSProperties.js +7602 -0
  168. package/build/node_modules/chrome-devtools-frontend/front_end/generated/protocol.js +4 -0
  169. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.js +289 -0
  170. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.js +995 -0
  171. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.js +664 -0
  172. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/UnitFormatters.js +139 -0
  173. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AICallTree.js +377 -0
  174. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AIContext.js +131 -0
  175. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AIQueries.js +149 -0
  176. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/CSSWorkspaceBinding.js +245 -0
  177. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/CompilerScriptMapping.js +486 -0
  178. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ContentProviderBasedProject.js +130 -0
  179. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DebuggerLanguagePlugins.js +992 -0
  180. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DebuggerWorkspaceBinding.js +592 -0
  181. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DefaultScriptMapping.js +112 -0
  182. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/FileUtils.js +186 -0
  183. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/LiveLocation.js +60 -0
  184. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/NetworkProject.js +107 -0
  185. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/PresentationConsoleMessageHelper.js +244 -0
  186. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceMapping.js +564 -0
  187. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceScriptMapping.js +437 -0
  188. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceUtils.js +87 -0
  189. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/SASSSourceMapping.js +182 -0
  190. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/StylesSourceMapping.js +268 -0
  191. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/TempFile.js +55 -0
  192. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/bindings.js +20 -0
  193. package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/CPUProfileDataModel.js +516 -0
  194. package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/ProfileTreeModel.js +89 -0
  195. package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/cpu_profile.js +6 -0
  196. package/build/node_modules/chrome-devtools-frontend/front_end/models/crux-manager/CrUXManager.js +285 -0
  197. package/build/node_modules/chrome-devtools-frontend/front_end/models/crux-manager/crux-manager.js +4 -0
  198. package/build/node_modules/chrome-devtools-frontend/front_end/models/emulation/DeviceModeModel.js +775 -0
  199. package/build/node_modules/chrome-devtools-frontend/front_end/models/emulation/EmulatedDevices.js +1706 -0
  200. package/build/node_modules/chrome-devtools-frontend/front_end/models/emulation/emulation.js +6 -0
  201. package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/FormatterWorkerPool.js +145 -0
  202. package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/ScriptFormatter.js +77 -0
  203. package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/formatter.js +6 -0
  204. package/build/node_modules/chrome-devtools-frontend/front_end/models/geometry/GeometryImpl.js +347 -0
  205. package/build/node_modules/chrome-devtools-frontend/front_end/models/geometry/geometry.js +4 -0
  206. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/LogManager.js +67 -0
  207. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/NetworkLog.js +494 -0
  208. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/RequestResolver.js +49 -0
  209. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/logs-meta.js +73 -0
  210. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/logs.js +7 -0
  211. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/Calculator.js +4 -0
  212. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/NetworkTimeCalculator.js +256 -0
  213. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/RequestTimeRanges.js +122 -0
  214. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/network_time_calculator.js +6 -0
  215. package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/FunctionCodeResolver.js +192 -0
  216. package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/NamesResolver.js +622 -0
  217. package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/ScopeChainModel.js +59 -0
  218. package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/source_map_scopes.js +7 -0
  219. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTrace.js +4 -0
  220. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTraceImpl.js +67 -0
  221. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTraceModel.js +97 -0
  222. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/Trie.js +121 -0
  223. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/stack_trace.js +5 -0
  224. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/stack_trace_impl.js +7 -0
  225. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/CodeMirrorUtils.js +32 -0
  226. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/ContentData.js +173 -0
  227. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/ContentProvider.js +30 -0
  228. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/StaticContentProvider.js +32 -0
  229. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/StreamingContentData.js +79 -0
  230. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/Text.js +69 -0
  231. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextCursor.js +35 -0
  232. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextRange.js +231 -0
  233. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextUtils.js +355 -0
  234. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/WasmDisassembly.js +68 -0
  235. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/text_utils.js +14 -0
  236. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/EntityMapper.js +122 -0
  237. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/EventsSerializer.js +81 -0
  238. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/LanternComputationData.js +371 -0
  239. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/ModelImpl.js +169 -0
  240. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Name.js +114 -0
  241. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Processor.js +555 -0
  242. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Styles.js +815 -0
  243. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/FilmStrip.js +44 -0
  244. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/MainThreadActivity.js +76 -0
  245. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/ScriptDuplication.js +162 -0
  246. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/StackTraceForEvent.js +191 -0
  247. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/ThirdParties.js +118 -0
  248. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/TraceFilter.js +50 -0
  249. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/TraceTree.js +599 -0
  250. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/extras.js +10 -0
  251. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AnimationFramesHandler.js +109 -0
  252. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AnimationHandler.js +26 -0
  253. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AsyncJSCallsHandler.js +187 -0
  254. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AuctionWorkletsHandler.js +162 -0
  255. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/DOMStatsHandler.js +21 -0
  256. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ExtensionTraceDataHandler.js +263 -0
  257. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/FlowsHandler.js +148 -0
  258. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/FramesHandler.js +485 -0
  259. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/GPUHandler.js +35 -0
  260. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ImagePaintingHandler.js +147 -0
  261. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/InitiatorsHandler.js +180 -0
  262. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/InvalidationsHandler.js +126 -0
  263. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LargestImagePaintHandler.js +85 -0
  264. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LargestTextPaintHandler.js +27 -0
  265. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LayerTreeHandler.js +103 -0
  266. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LayoutShiftsHandler.js +449 -0
  267. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/MemoryHandler.js +21 -0
  268. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/MetaHandler.js +404 -0
  269. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ModelHandlers.js +33 -0
  270. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/NetworkRequestsHandler.js +566 -0
  271. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/PageFramesHandler.js +42 -0
  272. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/PageLoadMetricsHandler.js +349 -0
  273. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/RendererHandler.js +346 -0
  274. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/SamplesHandler.js +260 -0
  275. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ScreenshotsHandler.js +97 -0
  276. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ScriptsHandler.js +276 -0
  277. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/SelectorStatsHandler.js +71 -0
  278. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/Threads.js +101 -0
  279. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/UserInteractionsHandler.js +317 -0
  280. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/UserTimingsHandler.js +183 -0
  281. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/WarningsHandler.js +134 -0
  282. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/WorkersHandler.js +33 -0
  283. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/handlers.js +7 -0
  284. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/helpers.js +163 -0
  285. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/types.js +1 -0
  286. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Extensions.js +41 -0
  287. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Network.js +102 -0
  288. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/SamplesIntegrator.js +495 -0
  289. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/SyntheticEvents.js +74 -0
  290. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Timing.js +186 -0
  291. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Trace.js +820 -0
  292. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/TreeHelpers.js +254 -0
  293. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/helpers.js +10 -0
  294. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/CLSCulprits.js +489 -0
  295. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Cache.js +209 -0
  296. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Common.js +340 -0
  297. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DOMSize.js +181 -0
  298. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DocumentLatency.js +258 -0
  299. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DuplicatedJavaScript.js +90 -0
  300. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/FontDisplay.js +82 -0
  301. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ForcedReflow.js +161 -0
  302. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/INPBreakdown.js +129 -0
  303. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ImageDelivery.js +263 -0
  304. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LCPBreakdown.js +199 -0
  305. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LCPDiscovery.js +183 -0
  306. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LegacyJavaScript.js +90 -0
  307. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Models.js +21 -0
  308. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ModernHTTP.js +200 -0
  309. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/NetworkDependencyTree.js +545 -0
  310. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/RenderBlocking.js +192 -0
  311. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/SlowCSSSelector.js +136 -0
  312. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Statistics.js +92 -0
  313. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ThirdParties.js +98 -0
  314. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Viewport.js +102 -0
  315. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/insights.js +9 -0
  316. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/types.js +18 -0
  317. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/LanternError.js +6 -0
  318. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/NetworkAnalyzer.js +488 -0
  319. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/core.js +5 -0
  320. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/BaseNode.js +276 -0
  321. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/CPUNode.js +63 -0
  322. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/NetworkNode.js +82 -0
  323. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/PageDependencyGraph.js +551 -0
  324. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/graph.js +7 -0
  325. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/lantern.js +9 -0
  326. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/FirstContentfulPaint.js +136 -0
  327. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/Interactive.js +67 -0
  328. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/LargestContentfulPaint.js +68 -0
  329. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/MaxPotentialFID.js +48 -0
  330. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/Metric.js +68 -0
  331. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/SpeedIndex.js +101 -0
  332. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/TBTUtils.js +64 -0
  333. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/TotalBlockingTime.js +78 -0
  334. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/metrics.js +11 -0
  335. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/ConnectionPool.js +115 -0
  336. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/Constants.js +42 -0
  337. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/DNSCache.js +47 -0
  338. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/SimulationTimingMap.js +134 -0
  339. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/Simulator.js +450 -0
  340. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/TCPConnection.js +154 -0
  341. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/simulation.js +9 -0
  342. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/types/Lantern.js +24 -0
  343. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/types/types.js +4 -0
  344. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/trace.js +17 -0
  345. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Configuration.js +18 -0
  346. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Extensions.js +37 -0
  347. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/File.js +57 -0
  348. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Overlays.js +4 -0
  349. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Timing.js +15 -0
  350. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/TraceEvents.js +580 -0
  351. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/types.js +9 -0
  352. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace_source_maps_resolver/SourceMapsResolver.js +224 -0
  353. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace_source_maps_resolver/trace_source_maps_resolver.js +4 -0
  354. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/FileManager.js +64 -0
  355. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/IgnoreListManager.js +504 -0
  356. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/SearchConfig.js +113 -0
  357. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/UISourceCode.js +601 -0
  358. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/WorkspaceImpl.js +201 -0
  359. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/workspace-meta.js +34 -0
  360. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/workspace.js +9 -0
  361. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/codemirror.next/codemirror.next.js +1 -0
  362. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/LICENSE +202 -0
  363. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/legacy-javascript.js +2 -0
  364. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/lib/legacy-javascript.js +940 -0
  365. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/LICENSE +26 -0
  366. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.js +196 -0
  367. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.js +226 -0
  368. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/codec.js +4 -0
  369. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.js +394 -0
  370. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.js +24 -0
  371. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.js +283 -0
  372. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/mod.js +7 -0
  373. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/util.js +9 -0
  374. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/vlq.js +84 -0
  375. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/source-map-scopes-codec.js +4 -0
  376. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/LICENSE +20 -0
  377. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/lib/nostats-subset.js +146 -0
  378. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/httparchive-nostats-subset.js +2 -0
  379. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/httparchive-subset.js +2 -0
  380. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.js +118 -0
  381. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.test.js +40 -0
  382. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/entities.test.js +26 -0
  383. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/index.js +4 -0
  384. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/index.test.js +215 -0
  385. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/httparchive-nostats.js +4 -0
  386. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/httparchive.js +4 -0
  387. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/nostats.js +4 -0
  388. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/nostats-subset.js +2 -0
  389. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/third-party-web.js +2 -0
  390. package/build/src/McpContext.js +400 -0
  391. package/build/src/McpResponse.js +237 -0
  392. package/build/src/Mutex.js +40 -0
  393. package/build/src/PageCollector.js +68 -0
  394. package/build/src/WaitForHelper.js +134 -0
  395. package/build/src/browser-connection-manager.js +373 -0
  396. package/build/src/browser.js +719 -0
  397. package/build/src/cli.js +120 -0
  398. package/build/src/client-detector.js +93 -0
  399. package/build/src/config.js +38 -0
  400. package/build/src/formatters/consoleFormatter.js +73 -0
  401. package/build/src/formatters/extensionsPageFormatter.js +184 -0
  402. package/build/src/formatters/networkFormatter.js +34 -0
  403. package/build/src/formatters/snapshotFormatter.js +80 -0
  404. package/build/src/graceful.js +125 -0
  405. package/build/src/index.js +13 -0
  406. package/build/src/logger.js +27 -0
  407. package/build/src/login-helper.js +431 -0
  408. package/build/src/main.js +268 -0
  409. package/build/src/plugin-api.js +189 -0
  410. package/build/src/profile-migration.js +82 -0
  411. package/build/src/profile-resolver.js +555 -0
  412. package/build/src/project-detector.js +71 -0
  413. package/build/src/project-root-state.js +18 -0
  414. package/build/src/roots-manager.js +253 -0
  415. package/build/src/selectors/chatgpt.json +61 -0
  416. package/build/src/selectors/gemini.json +24 -0
  417. package/build/src/selectors/loader.js +128 -0
  418. package/build/src/stable-identity.js +193 -0
  419. package/build/src/startup-check.js +147 -0
  420. package/build/src/system-profile.js +181 -0
  421. package/build/src/tools/ToolDefinition.js +9 -0
  422. package/build/src/tools/bookmarks.js +170 -0
  423. package/build/src/tools/categories.js +15 -0
  424. package/build/src/tools/chatgpt-web.js +507 -0
  425. package/build/src/tools/console.js +19 -0
  426. package/build/src/tools/core-tools.js +65 -0
  427. package/build/src/tools/diagnose-ui.js +328 -0
  428. package/build/src/tools/emulation.js +67 -0
  429. package/build/src/tools/extensions.js +185 -0
  430. package/build/src/tools/gemini-web.js +491 -0
  431. package/build/src/tools/iframe-popup-tools.js +204 -0
  432. package/build/src/tools/input.js +185 -0
  433. package/build/src/tools/network.js +68 -0
  434. package/build/src/tools/optional-tools.js +69 -0
  435. package/build/src/tools/pages.js +172 -0
  436. package/build/src/tools/performance.js +127 -0
  437. package/build/src/tools/screenshot.js +48 -0
  438. package/build/src/tools/script.js +39 -0
  439. package/build/src/tools/snapshot.js +45 -0
  440. package/build/src/trace-processing/parse.js +93 -0
  441. package/build/src/utils/pagination.js +49 -0
  442. package/package.json +90 -0
  443. package/scripts/cli.mjs +49 -0
@@ -0,0 +1,555 @@
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
+ var _a;
5
+ import * as Handlers from './handlers/handlers.js';
6
+ import * as Helpers from './helpers/helpers.js';
7
+ import * as Insights from './insights/insights.js';
8
+ import * as Lantern from './lantern/lantern.js';
9
+ import * as LanternComputationData from './LanternComputationData.js';
10
+ import * as Types from './types/types.js';
11
+ export class TraceParseProgressEvent extends Event {
12
+ data;
13
+ static eventName = 'traceparseprogress';
14
+ constructor(data, init = { bubbles: true }) {
15
+ super(TraceParseProgressEvent.eventName, init);
16
+ this.data = data;
17
+ }
18
+ }
19
+ function calculateProgress(value, phase) {
20
+ // Finalize values should be [0.2...0.8]
21
+ if (phase === 0.8 /* ProgressPhase.FINALIZE */) {
22
+ return (value * (0.8 /* ProgressPhase.FINALIZE */ - 0.2 /* ProgressPhase.HANDLE_EVENT */)) + 0.2 /* ProgressPhase.HANDLE_EVENT */;
23
+ }
24
+ return value * phase;
25
+ }
26
+ export class TraceProcessor extends EventTarget {
27
+ // We force the Meta handler to be enabled, so the TraceHandlers type here is
28
+ // the model handlers the user passes in and the Meta handler.
29
+ #traceHandlers;
30
+ #status = "IDLE" /* Status.IDLE */;
31
+ #modelConfiguration = Types.Configuration.defaults();
32
+ #data = null;
33
+ #insights = null;
34
+ static createWithAllHandlers() {
35
+ return new _a(Handlers.ModelHandlers, Types.Configuration.defaults());
36
+ }
37
+ /**
38
+ * This function is kept for testing with `stub`.
39
+ */
40
+ static getInsightRunners() {
41
+ return { ...Insights.Models };
42
+ }
43
+ constructor(traceHandlers, modelConfiguration) {
44
+ super();
45
+ this.#verifyHandlers(traceHandlers);
46
+ this.#traceHandlers = {
47
+ Meta: Handlers.ModelHandlers.Meta,
48
+ ...traceHandlers,
49
+ };
50
+ if (modelConfiguration) {
51
+ this.#modelConfiguration = modelConfiguration;
52
+ }
53
+ this.#passConfigToHandlers();
54
+ }
55
+ #passConfigToHandlers() {
56
+ for (const handler of Object.values(this.#traceHandlers)) {
57
+ // Bit of an odd double check, but without this TypeScript refuses to let
58
+ // you call the function as it thinks it might be undefined.
59
+ if ('handleUserConfig' in handler && handler.handleUserConfig) {
60
+ handler.handleUserConfig(this.#modelConfiguration);
61
+ }
62
+ }
63
+ }
64
+ /**
65
+ * When the user passes in a set of handlers, we want to ensure that we have all
66
+ * the required handlers. Handlers can depend on other handlers, so if the user
67
+ * passes in FooHandler which depends on BarHandler, they must also pass in
68
+ * BarHandler too. This method verifies that all dependencies are met, and
69
+ * throws if not.
70
+ **/
71
+ #verifyHandlers(providedHandlers) {
72
+ // Tiny optimisation: if the amount of provided handlers matches the amount
73
+ // of handlers in the Handlers.ModelHandlers object, that means that the
74
+ // user has passed in every handler we have. So therefore they cannot have
75
+ // missed any, and there is no need to iterate through the handlers and
76
+ // check the dependencies.
77
+ if (Object.keys(providedHandlers).length === Object.keys(Handlers.ModelHandlers).length) {
78
+ return;
79
+ }
80
+ const requiredHandlerKeys = new Set();
81
+ for (const [handlerName, handler] of Object.entries(providedHandlers)) {
82
+ requiredHandlerKeys.add(handlerName);
83
+ const deps = 'deps' in handler ? handler.deps() : [];
84
+ for (const depName of deps) {
85
+ requiredHandlerKeys.add(depName);
86
+ }
87
+ }
88
+ const providedHandlerKeys = new Set(Object.keys(providedHandlers));
89
+ // We always force the Meta handler to be enabled when creating the
90
+ // Processor, so if it is missing from the set the user gave us that is OK,
91
+ // as we will have enabled it anyway.
92
+ requiredHandlerKeys.delete('Meta');
93
+ for (const requiredKey of requiredHandlerKeys) {
94
+ if (!providedHandlerKeys.has(requiredKey)) {
95
+ throw new Error(`Required handler ${requiredKey} not provided.`);
96
+ }
97
+ }
98
+ }
99
+ reset() {
100
+ if (this.#status === "PARSING" /* Status.PARSING */) {
101
+ throw new Error('Trace processor can\'t reset while parsing.');
102
+ }
103
+ const handlers = Object.values(this.#traceHandlers);
104
+ for (const handler of handlers) {
105
+ handler.reset();
106
+ }
107
+ this.#data = null;
108
+ this.#insights = null;
109
+ this.#status = "IDLE" /* Status.IDLE */;
110
+ }
111
+ async parse(traceEvents, options) {
112
+ if (this.#status !== "IDLE" /* Status.IDLE */) {
113
+ throw new Error(`Trace processor can't start parsing when not idle. Current state: ${this.#status}`);
114
+ }
115
+ if (typeof options.isCPUProfile === 'undefined' && options.metadata) {
116
+ options.isCPUProfile = options.metadata.dataOrigin === "CPUProfile" /* Types.File.DataOrigin.CPU_PROFILE */;
117
+ }
118
+ options.logger?.start('total');
119
+ try {
120
+ this.#status = "PARSING" /* Status.PARSING */;
121
+ options.logger?.start('parse');
122
+ await this.#computeParsedTrace(traceEvents, options);
123
+ options.logger?.end('parse');
124
+ if (this.#data && !options.isCPUProfile) { // We do not calculate insights for CPU Profiles.
125
+ options.logger?.start('insights');
126
+ this.#computeInsights(this.#data, traceEvents, options);
127
+ options.logger?.end('insights');
128
+ }
129
+ this.#status = "FINISHED_PARSING" /* Status.FINISHED_PARSING */;
130
+ }
131
+ catch (e) {
132
+ this.#status = "ERRORED_WHILE_PARSING" /* Status.ERRORED_WHILE_PARSING */;
133
+ throw e;
134
+ }
135
+ finally {
136
+ options.logger?.end('total');
137
+ }
138
+ }
139
+ /**
140
+ * Run all the handlers and set the result to `#data`.
141
+ */
142
+ async #computeParsedTrace(traceEvents, options) {
143
+ /**
144
+ * We want to yield regularly to maintain responsiveness. If we yield too often, we're wasting idle time.
145
+ * We could do this by checking `performance.now()` regularly, but it's an expensive call in such a hot loop.
146
+ * `eventsPerChunk` is an approximated proxy metric.
147
+ * But how big a chunk? We're aiming for long tasks that are no smaller than 100ms and not bigger than 200ms.
148
+ * It's CPU dependent, so it should be calibrated on oldish hardware.
149
+ * Illustration of a previous change to `eventsPerChunk`: https://imgur.com/wzp8BnR
150
+ */
151
+ const eventsPerChunk = 50_000;
152
+ // Convert to array so that we are able to iterate all handlers multiple times.
153
+ const sortedHandlers = [...sortHandlers(this.#traceHandlers).entries()];
154
+ // Reset.
155
+ for (const [, handler] of sortedHandlers) {
156
+ handler.reset();
157
+ }
158
+ options.logger?.start('parse:handleEvent');
159
+ // Handle each event.
160
+ for (let i = 0; i < traceEvents.length; ++i) {
161
+ // Every so often we take a break just to render.
162
+ if (i % eventsPerChunk === 0 && i) {
163
+ // Take the opportunity to provide status update events.
164
+ const percent = calculateProgress(i / traceEvents.length, 0.2 /* ProgressPhase.HANDLE_EVENT */);
165
+ this.dispatchEvent(new TraceParseProgressEvent({ percent }));
166
+ // TODO(paulirish): consider using `scheduler.yield()` or `scheduler.postTask(() => {}, {priority: 'user-blocking'})`
167
+ await new Promise(resolve => setTimeout(resolve, 0));
168
+ }
169
+ const event = traceEvents[i];
170
+ for (let j = 0; j < sortedHandlers.length; ++j) {
171
+ const [, handler] = sortedHandlers[j];
172
+ handler.handleEvent(event);
173
+ }
174
+ }
175
+ options.logger?.end('parse:handleEvent');
176
+ // Finalize.
177
+ const finalizeOptions = {
178
+ ...options,
179
+ allTraceEvents: traceEvents,
180
+ };
181
+ for (let i = 0; i < sortedHandlers.length; i++) {
182
+ const [name, handler] = sortedHandlers[i];
183
+ if (handler.finalize) {
184
+ options.logger?.start(`parse:${name}:finalize`);
185
+ // Yield to the UI because finalize() calls can be expensive
186
+ // TODO(jacktfranklin): consider using `scheduler.yield()` or `scheduler.postTask(() => {}, {priority: 'user-blocking'})`
187
+ await new Promise(resolve => setTimeout(resolve, 0));
188
+ await handler.finalize(finalizeOptions);
189
+ options.logger?.end(`parse:${name}:finalize`);
190
+ }
191
+ const percent = calculateProgress(i / sortedHandlers.length, 0.8 /* ProgressPhase.FINALIZE */);
192
+ this.dispatchEvent(new TraceParseProgressEvent({ percent }));
193
+ }
194
+ options.logger?.start('parse:handler.data()');
195
+ const parsedTrace = {};
196
+ for (const [name, handler] of Object.entries(this.#traceHandlers)) {
197
+ Object.assign(parsedTrace, { [name]: handler.data() });
198
+ }
199
+ options.logger?.end('parse:handler.data()');
200
+ this.dispatchEvent(new TraceParseProgressEvent({ percent: 1 /* ProgressPhase.CLONE */ }));
201
+ this.#data = parsedTrace;
202
+ }
203
+ get data() {
204
+ if (this.#status !== "FINISHED_PARSING" /* Status.FINISHED_PARSING */) {
205
+ return null;
206
+ }
207
+ return this.#data;
208
+ }
209
+ get insights() {
210
+ if (this.#status !== "FINISHED_PARSING" /* Status.FINISHED_PARSING */) {
211
+ return null;
212
+ }
213
+ return this.#insights;
214
+ }
215
+ #createLanternContext(data, traceEvents, frameId, navigationId, options) {
216
+ // Check for required handlers.
217
+ if (!data.NetworkRequests || !data.Workers || !data.PageLoadMetrics) {
218
+ return;
219
+ }
220
+ if (!data.NetworkRequests.byTime.length) {
221
+ throw new Lantern.Core.LanternError('No network requests found in trace');
222
+ }
223
+ const navStarts = data.Meta.navigationsByFrameId.get(frameId);
224
+ const navStartIndex = navStarts?.findIndex(n => n.args.data?.navigationId === navigationId);
225
+ if (!navStarts || navStartIndex === undefined || navStartIndex === -1) {
226
+ throw new Lantern.Core.LanternError('Could not find navigation start');
227
+ }
228
+ const startTime = navStarts[navStartIndex].ts;
229
+ const endTime = navStartIndex + 1 < navStarts.length ? navStarts[navStartIndex + 1].ts : Number.POSITIVE_INFINITY;
230
+ const boundedTraceEvents = traceEvents.filter(e => e.ts >= startTime && e.ts < endTime);
231
+ // Lantern.Types.TraceEvent and Types.Events.Event represent the same
232
+ // object - a trace event - but one is more flexible than the other. It should be safe to cast between them.
233
+ const trace = {
234
+ traceEvents: boundedTraceEvents,
235
+ };
236
+ const requests = LanternComputationData.createNetworkRequests(trace, data, startTime, endTime);
237
+ const graph = LanternComputationData.createGraph(requests, trace, data);
238
+ const processedNavigation = LanternComputationData.createProcessedNavigation(data, frameId, navigationId);
239
+ const networkAnalysis = Lantern.Core.NetworkAnalyzer.analyze(requests);
240
+ if (!networkAnalysis) {
241
+ return;
242
+ }
243
+ const lanternSettings = {
244
+ // TODO(crbug.com/372674229): if devtools throttling was on, does this network analysis capture
245
+ // that? Do we need to set 'devtools' throttlingMethod?
246
+ networkAnalysis,
247
+ throttlingMethod: 'provided',
248
+ ...options.lanternSettings,
249
+ };
250
+ const simulator = Lantern.Simulation.Simulator.createSimulator(lanternSettings);
251
+ const computeData = { graph, simulator, processedNavigation };
252
+ const fcpResult = Lantern.Metrics.FirstContentfulPaint.compute(computeData);
253
+ const lcpResult = Lantern.Metrics.LargestContentfulPaint.compute(computeData, { fcpResult });
254
+ const interactiveResult = Lantern.Metrics.Interactive.compute(computeData, { lcpResult });
255
+ const tbtResult = Lantern.Metrics.TotalBlockingTime.compute(computeData, { fcpResult, interactiveResult });
256
+ const metrics = {
257
+ firstContentfulPaint: fcpResult,
258
+ interactive: interactiveResult,
259
+ largestContentfulPaint: lcpResult,
260
+ totalBlockingTime: tbtResult,
261
+ };
262
+ return { requests, graph, simulator, metrics };
263
+ }
264
+ /**
265
+ * Sort the insight models based on the impact of each insight's estimated savings, additionally weighted by the
266
+ * worst metrics according to field data (if present).
267
+ */
268
+ sortInsightSet(insightSet, metadata) {
269
+ // The initial order of the insights is alphabetical, based on `front_end/models/trace/insights/Models.ts`.
270
+ // The order here provides a baseline that groups insights in a more logical way.
271
+ const baselineOrder = {
272
+ INPBreakdown: null,
273
+ LCPBreakdown: null,
274
+ LCPDiscovery: null,
275
+ CLSCulprits: null,
276
+ RenderBlocking: null,
277
+ NetworkDependencyTree: null,
278
+ ImageDelivery: null,
279
+ DocumentLatency: null,
280
+ FontDisplay: null,
281
+ Viewport: null,
282
+ DOMSize: null,
283
+ ThirdParties: null,
284
+ DuplicatedJavaScript: null,
285
+ SlowCSSSelector: null,
286
+ ForcedReflow: null,
287
+ Cache: null,
288
+ ModernHTTP: null,
289
+ LegacyJavaScript: null,
290
+ };
291
+ // Determine the weights for each metric based on field data, utilizing the same scoring curve that Lighthouse uses.
292
+ const weights = Insights.Common.calculateMetricWeightsForSorting(insightSet, metadata);
293
+ // Normalize the estimated savings to a single number, weighted by its relative impact
294
+ // to the page experience based on the same scoring curve that Lighthouse uses.
295
+ const observedLcpMicro = Insights.Common.getLCP(insightSet)?.value;
296
+ const observedLcp = observedLcpMicro ? Helpers.Timing.microToMilli(observedLcpMicro) : Types.Timing.Milli(0);
297
+ const observedCls = Insights.Common.getCLS(insightSet).value;
298
+ // INP is special - if users did not interact with the page, we'll have no INP, but we should still
299
+ // be able to prioritize insights based on this metric. When we observe no interaction, instead use
300
+ // a default value for the baseline INP.
301
+ const observedInpMicro = Insights.Common.getINP(insightSet)?.value;
302
+ const observedInp = observedInpMicro ? Helpers.Timing.microToMilli(observedInpMicro) : Types.Timing.Milli(200);
303
+ const observedLcpScore = observedLcp !== undefined ? Insights.Common.evaluateLCPMetricScore(observedLcp) : undefined;
304
+ const observedInpScore = Insights.Common.evaluateINPMetricScore(observedInp);
305
+ const observedClsScore = Insights.Common.evaluateCLSMetricScore(observedCls);
306
+ const insightToSortingRank = new Map();
307
+ for (const [name, model] of Object.entries(insightSet.model)) {
308
+ const lcp = model.metricSavings?.LCP ?? 0;
309
+ const inp = model.metricSavings?.INP ?? 0;
310
+ const cls = model.metricSavings?.CLS ?? 0;
311
+ const lcpPostSavings = observedLcp !== undefined ? Math.max(0, observedLcp - lcp) : undefined;
312
+ const inpPostSavings = Math.max(0, observedInp - inp);
313
+ const clsPostSavings = Math.max(0, observedCls - cls);
314
+ let score = 0;
315
+ if (weights.lcp && lcp && observedLcpScore !== undefined && lcpPostSavings !== undefined) {
316
+ score += weights.lcp * (Insights.Common.evaluateLCPMetricScore(lcpPostSavings) - observedLcpScore);
317
+ }
318
+ if (weights.inp && inp && observedInpScore !== undefined) {
319
+ score += weights.inp * (Insights.Common.evaluateINPMetricScore(inpPostSavings) - observedInpScore);
320
+ }
321
+ if (weights.cls && cls && observedClsScore !== undefined) {
322
+ score += weights.cls * (Insights.Common.evaluateCLSMetricScore(clsPostSavings) - observedClsScore);
323
+ }
324
+ insightToSortingRank.set(name, score);
325
+ }
326
+ // Now perform the actual sorting.
327
+ const baselineOrderKeys = Object.keys(baselineOrder);
328
+ const orderedKeys = Object.keys(insightSet.model);
329
+ orderedKeys.sort((a, b) => {
330
+ const a1 = baselineOrderKeys.indexOf(a);
331
+ const b1 = baselineOrderKeys.indexOf(b);
332
+ if (a1 >= 0 && b1 >= 0) {
333
+ return a1 - b1;
334
+ }
335
+ if (a1 >= 0) {
336
+ return -1;
337
+ }
338
+ if (b1 >= 0) {
339
+ return 1;
340
+ }
341
+ return 0;
342
+ });
343
+ orderedKeys.sort((a, b) => (insightToSortingRank.get(b) ?? 0) - (insightToSortingRank.get(a) ?? 0));
344
+ const newModel = {};
345
+ for (const key of orderedKeys) {
346
+ const model = insightSet.model[key];
347
+ // @ts-expect-error Maybe someday typescript will be powerful enough to handle this.
348
+ newModel[key] = model;
349
+ }
350
+ insightSet.model = newModel;
351
+ }
352
+ #computeInsightSet(data, context) {
353
+ const logger = context.options.logger;
354
+ if (!this.#insights) {
355
+ this.#insights = new Map();
356
+ }
357
+ let id, urlString, navigation;
358
+ if (context.navigation) {
359
+ id = `NAVIGATION_${this.#insights.size}`;
360
+ urlString = data.Meta.finalDisplayUrlByNavigationId.get(context.navigationId) ?? data.Meta.mainFrameURL;
361
+ navigation = context.navigation;
362
+ }
363
+ else {
364
+ id = Types.Events.NO_NAVIGATION;
365
+ urlString = data.Meta.finalDisplayUrlByNavigationId.get('') ?? data.Meta.mainFrameURL;
366
+ }
367
+ const insightSetModel = {};
368
+ for (const [name, insight] of Object.entries(_a.getInsightRunners())) {
369
+ let model;
370
+ try {
371
+ logger?.start(`insights:${name}`);
372
+ model = insight.generateInsight(data, context);
373
+ model.frameId = context.frameId;
374
+ const navId = context.navigation?.args.data?.navigationId;
375
+ if (navId) {
376
+ model.navigationId = navId;
377
+ }
378
+ model.createOverlays = () => {
379
+ // @ts-expect-error: model is a union of all possible insight model types.
380
+ return insight.createOverlays(model);
381
+ };
382
+ }
383
+ catch (err) {
384
+ model = err;
385
+ }
386
+ finally {
387
+ logger?.end(`insights:${name}`);
388
+ }
389
+ Object.assign(insightSetModel, { [name]: model });
390
+ }
391
+ // We may choose to exclude the insightSet if it's trivial. Trivial means:
392
+ // 1. There's no navigation (it's an initial trace period)
393
+ // 2. The duration is short.
394
+ // 3. All the insights are passing (aka no insights to show the user)
395
+ // 4. It has no metrics to report (apart from a CLS of 0, which is default)
396
+ // Generally, these cases are the short time ranges before a page reload starts.
397
+ const isNavigation = id === Types.Events.NO_NAVIGATION;
398
+ const trivialThreshold = Helpers.Timing.milliToMicro(Types.Timing.Milli(5000));
399
+ const everyInsightPasses = Object.values(insightSetModel)
400
+ .filter(model => !(model instanceof Error))
401
+ .every(model => model.state === 'pass');
402
+ const noLcp = !insightSetModel.LCPBreakdown.lcpEvent;
403
+ const noInp = !insightSetModel.INPBreakdown.longestInteractionEvent;
404
+ const noLayoutShifts = insightSetModel.CLSCulprits.shifts?.size === 0;
405
+ const shouldExclude = isNavigation && context.bounds.range < trivialThreshold && everyInsightPasses && noLcp &&
406
+ noInp && noLayoutShifts;
407
+ if (shouldExclude) {
408
+ return;
409
+ }
410
+ let url;
411
+ try {
412
+ url = new URL(urlString);
413
+ }
414
+ catch {
415
+ // We're pretty sure this only happens for our test fixture: missing-url.json.gz. Shouldn't
416
+ // happen for real traces.
417
+ return;
418
+ }
419
+ const insightSet = {
420
+ id,
421
+ url,
422
+ navigation,
423
+ frameId: context.frameId,
424
+ bounds: context.bounds,
425
+ model: insightSetModel,
426
+ };
427
+ this.#insights.set(insightSet.id, insightSet);
428
+ this.sortInsightSet(insightSet, context.options.metadata ?? null);
429
+ }
430
+ /**
431
+ * Run all the insights and set the result to `#insights`.
432
+ */
433
+ #computeInsights(data, traceEvents, options) {
434
+ // This insights map will be populated by the helper methods.
435
+ this.#insights = new Map();
436
+ // Filter main frame navigations to those that have the necessary data (frameId and navigationId).
437
+ // TODO(cjamcl): Does this filtering makes the "use the next nav as the end time" logic potentially broken? Are navs without nav id or frame even real?
438
+ const navigations = data.Meta.mainFrameNavigations.filter(navigation => navigation.args.frame && navigation.args.data?.navigationId);
439
+ this.#computeInsightsForInitialTracePeriod(data, navigations, options);
440
+ for (const [index, navigation] of navigations.entries()) {
441
+ const min = navigation.ts;
442
+ // Use trace end for the last navigation, otherwise use the start of the next navigation.
443
+ const max = index + 1 < navigations.length ? navigations[index + 1].ts : data.Meta.traceBounds.max;
444
+ const bounds = Helpers.Timing.traceWindowFromMicroSeconds(min, max);
445
+ this.#computeInsightsForNavigation(navigation, bounds, data, traceEvents, options);
446
+ }
447
+ }
448
+ /**
449
+ * Computes insights for the period before the first navigation, or for the entire trace if no navigations exist.
450
+ */
451
+ #computeInsightsForInitialTracePeriod(data, navigations, options) {
452
+ // Determine bounds: Use the period before the first navigation if navigations exist, otherwise use the entire trace bounds.
453
+ const bounds = navigations.length > 0 ?
454
+ Helpers.Timing.traceWindowFromMicroSeconds(data.Meta.traceBounds.min, navigations[0].ts) :
455
+ data.Meta.traceBounds;
456
+ const context = {
457
+ options,
458
+ bounds,
459
+ frameId: data.Meta.mainFrameId,
460
+ // No navigation or lantern context applies to this initial/no-navigation period.
461
+ };
462
+ this.#computeInsightSet(data, context);
463
+ }
464
+ /**
465
+ * Computes insights for a specific navigation event.
466
+ */
467
+ #computeInsightsForNavigation(navigation, bounds, data, traceEvents, options) {
468
+ const frameId = navigation.args.frame;
469
+ // Guaranteed by the filter in #computeInsights
470
+ const navigationId = navigation.args.data?.navigationId;
471
+ // The lantern sub-context is optional on InsightSetContext, so not setting it is OK.
472
+ // This is also a hedge against an error inside Lantern resulting in breaking the entire performance panel.
473
+ // Additionally, many trace fixtures are too old to be processed by Lantern.
474
+ let lantern;
475
+ try {
476
+ options.logger?.start('insights:createLanternContext');
477
+ lantern = this.#createLanternContext(data, traceEvents, frameId, navigationId, options);
478
+ }
479
+ catch (e) {
480
+ // Handle Lantern errors gracefully
481
+ // Don't allow an error in constructing the Lantern graphs to break the rest of the trace processor.
482
+ // Log unexpected errors, but suppress anything that occurs from a trace being too old.
483
+ // Otherwise tests using old fixtures become way too noisy.
484
+ const expectedErrors = [
485
+ 'mainDocumentRequest not found',
486
+ 'missing metric scores for main frame',
487
+ 'missing metric: FCP',
488
+ 'missing metric: LCP',
489
+ 'No network requests found in trace',
490
+ 'Trace is too old',
491
+ ];
492
+ if (!(e instanceof Lantern.Core.LanternError)) {
493
+ // If this wasn't a managed LanternError, the stack trace is likely needed for debugging.
494
+ console.error(e);
495
+ }
496
+ else if (!expectedErrors.some(err => e.message === err)) {
497
+ // To reduce noise from tests, only print errors that are not expected to occur because a trace is
498
+ // too old (for which there is no single check).
499
+ console.error(e);
500
+ }
501
+ }
502
+ finally {
503
+ options.logger?.end('insights:createLanternContext');
504
+ }
505
+ const context = {
506
+ options,
507
+ bounds,
508
+ frameId,
509
+ navigation,
510
+ navigationId,
511
+ lantern,
512
+ };
513
+ this.#computeInsightSet(data, context);
514
+ }
515
+ }
516
+ _a = TraceProcessor;
517
+ /**
518
+ * Some Handlers need data provided by others. Dependencies of a handler handler are
519
+ * declared in the `deps` field.
520
+ * @returns A map from trace event handler name to trace event handler whose entries
521
+ * iterate in such a way that each handler is visited after its dependencies.
522
+ */
523
+ export function sortHandlers(traceHandlers) {
524
+ const sortedMap = new Map();
525
+ const visited = new Set();
526
+ const visitHandler = (handlerName) => {
527
+ if (sortedMap.has(handlerName)) {
528
+ return;
529
+ }
530
+ if (visited.has(handlerName)) {
531
+ let stackPath = '';
532
+ for (const handler of visited) {
533
+ if (stackPath || handler === handlerName) {
534
+ stackPath += `${handler}->`;
535
+ }
536
+ }
537
+ stackPath += handlerName;
538
+ throw new Error(`Found dependency cycle in trace event handlers: ${stackPath}`);
539
+ }
540
+ visited.add(handlerName);
541
+ const handler = traceHandlers[handlerName];
542
+ if (!handler) {
543
+ return;
544
+ }
545
+ const deps = handler.deps?.();
546
+ if (deps) {
547
+ deps.forEach(visitHandler);
548
+ }
549
+ sortedMap.set(handlerName, handler);
550
+ };
551
+ for (const handlerName of Object.keys(traceHandlers)) {
552
+ visitHandler(handlerName);
553
+ }
554
+ return sortedMap;
555
+ }