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,551 @@
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
+ import * as Core from '../core/core.js';
5
+ import { CPUNode } from './CPUNode.js';
6
+ import { NetworkNode } from './NetworkNode.js';
7
+ // COMPAT: m71+ We added RunTask to `disabled-by-default-lighthouse`
8
+ const SCHEDULABLE_TASK_TITLE_LH = 'RunTask';
9
+ // m69-70 DoWork is different and we now need RunTask, see https://bugs.chromium.org/p/chromium/issues/detail?id=871204#c11
10
+ const SCHEDULABLE_TASK_TITLE_ALT1 = 'ThreadControllerImpl::RunTask';
11
+ // In m66-68 refactored to this task title, https://crrev.com/c/883346
12
+ const SCHEDULABLE_TASK_TITLE_ALT2 = 'ThreadControllerImpl::DoWork';
13
+ // m65 and earlier
14
+ const SCHEDULABLE_TASK_TITLE_ALT3 = 'TaskQueueManager::ProcessTaskFromWorkQueue';
15
+ // Shorter tasks have negligible impact on simulation results.
16
+ const SIGNIFICANT_DUR_THRESHOLD_MS = 10;
17
+ // TODO: video files tend to be enormous and throw off all graph traversals, move this ignore
18
+ // into estimation logic when we use the dependency graph for other purposes.
19
+ const IGNORED_MIME_TYPES_REGEX = /^video/;
20
+ class PageDependencyGraph {
21
+ static getNetworkInitiators(request) {
22
+ if (!request.initiator) {
23
+ return [];
24
+ }
25
+ if (request.initiator.url) {
26
+ return [request.initiator.url];
27
+ }
28
+ if (request.initiator.type === 'script') {
29
+ // Script initiators have the stack of callFrames from all functions that led to this request.
30
+ // If async stacks are enabled, then the stack will also have the parent functions that asynchronously
31
+ // led to this request chained in the `parent` property.
32
+ const scriptURLs = new Set();
33
+ let stack = request.initiator.stack;
34
+ while (stack) {
35
+ const callFrames = stack.callFrames || [];
36
+ for (const frame of callFrames) {
37
+ if (frame.url) {
38
+ scriptURLs.add(frame.url);
39
+ }
40
+ }
41
+ stack = stack.parent;
42
+ }
43
+ return Array.from(scriptURLs);
44
+ }
45
+ return [];
46
+ }
47
+ static getNetworkNodeOutput(networkRequests) {
48
+ const nodes = [];
49
+ const idToNodeMap = new Map();
50
+ const urlToNodeMap = new Map();
51
+ const frameIdToNodeMap = new Map();
52
+ networkRequests.forEach(request => {
53
+ if (IGNORED_MIME_TYPES_REGEX.test(request.mimeType)) {
54
+ return;
55
+ }
56
+ if (request.fromWorker) {
57
+ return;
58
+ }
59
+ // Network requestIds can be duplicated for an unknown reason
60
+ // Suffix all subsequent requests with `:duplicate` until it's unique
61
+ // NOTE: This should never happen with modern NetworkRequest library, but old fixtures
62
+ // might still have this issue.
63
+ while (idToNodeMap.has(request.requestId)) {
64
+ request.requestId += ':duplicate';
65
+ }
66
+ const node = new NetworkNode(request);
67
+ nodes.push(node);
68
+ const urlList = urlToNodeMap.get(request.url) || [];
69
+ urlList.push(node);
70
+ idToNodeMap.set(request.requestId, node);
71
+ urlToNodeMap.set(request.url, urlList);
72
+ // If the request was for the root document of an iframe, save an entry in our
73
+ // map so we can link up the task `args.data.frame` dependencies later in graph creation.
74
+ if (request.frameId && request.resourceType === 'Document' && request.documentURL === request.url) {
75
+ // If there's ever any ambiguity, permanently set the value to `false` to avoid loops in the graph.
76
+ const value = frameIdToNodeMap.has(request.frameId) ? null : node;
77
+ frameIdToNodeMap.set(request.frameId, value);
78
+ }
79
+ });
80
+ return { nodes, idToNodeMap, urlToNodeMap, frameIdToNodeMap };
81
+ }
82
+ static isScheduleableTask(evt) {
83
+ return evt.name === SCHEDULABLE_TASK_TITLE_LH || evt.name === SCHEDULABLE_TASK_TITLE_ALT1 ||
84
+ evt.name === SCHEDULABLE_TASK_TITLE_ALT2 || evt.name === SCHEDULABLE_TASK_TITLE_ALT3;
85
+ }
86
+ /**
87
+ * There should *always* be at least one top level event, having 0 typically means something is
88
+ * drastically wrong with the trace and we should just give up early and loudly.
89
+ */
90
+ static assertHasToplevelEvents(events) {
91
+ const hasToplevelTask = events.some(this.isScheduleableTask);
92
+ if (!hasToplevelTask) {
93
+ throw new Core.LanternError('Could not find any top level events');
94
+ }
95
+ }
96
+ static getCPUNodes(mainThreadEvents) {
97
+ const nodes = [];
98
+ let i = 0;
99
+ PageDependencyGraph.assertHasToplevelEvents(mainThreadEvents);
100
+ while (i < mainThreadEvents.length) {
101
+ const evt = mainThreadEvents[i];
102
+ i++;
103
+ // Skip all trace events that aren't schedulable tasks with sizable duration
104
+ if (!PageDependencyGraph.isScheduleableTask(evt) || !evt.dur) {
105
+ continue;
106
+ }
107
+ let correctedEndTs = undefined;
108
+ // Capture all events that occurred within the task
109
+ const children = [];
110
+ for (const endTime = evt.ts + evt.dur; i < mainThreadEvents.length && mainThreadEvents[i].ts < endTime; i++) {
111
+ const event = mainThreadEvents[i];
112
+ // Temporary fix for a Chrome bug where some RunTask events can be overlapping.
113
+ // We correct that here be ensuring each RunTask ends at least 1 microsecond before the next
114
+ // https://github.com/GoogleChrome/lighthouse/issues/15896
115
+ // https://issues.chromium.org/issues/329678173
116
+ if (PageDependencyGraph.isScheduleableTask(event) && event.dur) {
117
+ correctedEndTs = event.ts - 1;
118
+ break;
119
+ }
120
+ children.push(event);
121
+ }
122
+ nodes.push(new CPUNode(evt, children, correctedEndTs));
123
+ }
124
+ return nodes;
125
+ }
126
+ static linkNetworkNodes(rootNode, networkNodeOutput) {
127
+ networkNodeOutput.nodes.forEach(node => {
128
+ const directInitiatorRequest = node.request.initiatorRequest || rootNode.request;
129
+ const directInitiatorNode = networkNodeOutput.idToNodeMap.get(directInitiatorRequest.requestId) || rootNode;
130
+ const canDependOnInitiator = !directInitiatorNode.isDependentOn(node) && node.canDependOn(directInitiatorNode);
131
+ const initiators = PageDependencyGraph.getNetworkInitiators(node.request);
132
+ if (initiators.length) {
133
+ initiators.forEach(initiator => {
134
+ const parentCandidates = networkNodeOutput.urlToNodeMap.get(initiator) || [];
135
+ // Only add the edge if the parent is unambiguous with valid timing and isn't circular.
136
+ if (parentCandidates.length === 1 && parentCandidates[0].startTime <= node.startTime &&
137
+ !parentCandidates[0].isDependentOn(node)) {
138
+ node.addDependency(parentCandidates[0]);
139
+ }
140
+ else if (canDependOnInitiator) {
141
+ directInitiatorNode.addDependent(node);
142
+ }
143
+ });
144
+ }
145
+ else if (canDependOnInitiator) {
146
+ directInitiatorNode.addDependent(node);
147
+ }
148
+ // Make sure the nodes are attached to the graph if the initiator information was invalid.
149
+ if (node !== rootNode && node.getDependencies().length === 0 && node.canDependOn(rootNode)) {
150
+ node.addDependency(rootNode);
151
+ }
152
+ if (!node.request.redirects) {
153
+ return;
154
+ }
155
+ const redirects = [...node.request.redirects, node.request];
156
+ for (let i = 1; i < redirects.length; i++) {
157
+ const redirectNode = networkNodeOutput.idToNodeMap.get(redirects[i - 1].requestId);
158
+ const actualNode = networkNodeOutput.idToNodeMap.get(redirects[i].requestId);
159
+ if (actualNode && redirectNode) {
160
+ actualNode.addDependency(redirectNode);
161
+ }
162
+ }
163
+ });
164
+ }
165
+ static linkCPUNodes(rootNode, networkNodeOutput, cpuNodes) {
166
+ const linkableResourceTypes = new Set([
167
+ 'XHR',
168
+ 'Fetch',
169
+ 'Script',
170
+ ]);
171
+ function addDependentNetworkRequest(cpuNode, reqId) {
172
+ const networkNode = networkNodeOutput.idToNodeMap.get(reqId);
173
+ if (!networkNode ||
174
+ // Ignore all network nodes that started before this CPU task started
175
+ // A network request that started earlier could not possibly have been started by this task
176
+ networkNode.startTime <= cpuNode.startTime) {
177
+ return;
178
+ }
179
+ const { request } = networkNode;
180
+ const resourceType = request.resourceType || request.redirectDestination?.resourceType;
181
+ if (!linkableResourceTypes.has(resourceType)) {
182
+ // We only link some resources to CPU nodes because we observe LCP simulation
183
+ // regressions when including images, etc.
184
+ return;
185
+ }
186
+ cpuNode.addDependent(networkNode);
187
+ }
188
+ /**
189
+ * If the node has an associated frameId, then create a dependency on the root document request
190
+ * for the frame. The task obviously couldn't have started before the frame was even downloaded.
191
+ */
192
+ function addDependencyOnFrame(cpuNode, frameId) {
193
+ if (!frameId) {
194
+ return;
195
+ }
196
+ const networkNode = networkNodeOutput.frameIdToNodeMap.get(frameId);
197
+ if (!networkNode) {
198
+ return;
199
+ }
200
+ // Ignore all network nodes that started after this CPU task started
201
+ // A network request that started after could not possibly be required this task
202
+ if (networkNode.startTime >= cpuNode.startTime) {
203
+ return;
204
+ }
205
+ cpuNode.addDependency(networkNode);
206
+ }
207
+ function addDependencyOnUrl(cpuNode, url) {
208
+ if (!url) {
209
+ return;
210
+ }
211
+ // Allow network requests that end up to 100ms before the task started
212
+ // Some script evaluations can start before the script finishes downloading
213
+ const minimumAllowableTimeSinceNetworkNodeEnd = -100 * 1000;
214
+ const candidates = networkNodeOutput.urlToNodeMap.get(url) || [];
215
+ let minCandidate = null;
216
+ let minDistance = Infinity;
217
+ // Find the closest request that finished before this CPU task started
218
+ for (const candidate of candidates) {
219
+ // Explicitly ignore all requests that started after this CPU node
220
+ // A network request that started after this task started cannot possibly be a dependency
221
+ if (cpuNode.startTime <= candidate.startTime) {
222
+ return;
223
+ }
224
+ const distance = cpuNode.startTime - candidate.endTime;
225
+ if (distance >= minimumAllowableTimeSinceNetworkNodeEnd && distance < minDistance) {
226
+ minCandidate = candidate;
227
+ minDistance = distance;
228
+ }
229
+ }
230
+ if (!minCandidate) {
231
+ return;
232
+ }
233
+ cpuNode.addDependency(minCandidate);
234
+ }
235
+ const timers = new Map();
236
+ for (const node of cpuNodes) {
237
+ for (const evt of node.childEvents) {
238
+ if (!evt.args.data) {
239
+ continue;
240
+ }
241
+ const argsUrl = evt.args.data.url;
242
+ const stackTraceUrls = (evt.args.data.stackTrace || []).map(l => l.url).filter(Boolean);
243
+ switch (evt.name) {
244
+ case 'TimerInstall':
245
+ // @ts-expect-error - 'TimerInstall' event means timerId exists.
246
+ timers.set(evt.args.data.timerId, node);
247
+ stackTraceUrls.forEach(url => addDependencyOnUrl(node, url));
248
+ break;
249
+ case 'TimerFire': {
250
+ // @ts-expect-error - 'TimerFire' event means timerId exists.
251
+ const installer = timers.get(evt.args.data.timerId);
252
+ if (!installer || installer.endTime > node.startTime) {
253
+ break;
254
+ }
255
+ installer.addDependent(node);
256
+ break;
257
+ }
258
+ case 'InvalidateLayout':
259
+ case 'ScheduleStyleRecalculation':
260
+ addDependencyOnFrame(node, evt.args.data.frame);
261
+ stackTraceUrls.forEach(url => addDependencyOnUrl(node, url));
262
+ break;
263
+ case 'EvaluateScript':
264
+ addDependencyOnFrame(node, evt.args.data.frame);
265
+ // @ts-expect-error - 'EvaluateScript' event means argsUrl is defined.
266
+ addDependencyOnUrl(node, argsUrl);
267
+ stackTraceUrls.forEach(url => addDependencyOnUrl(node, url));
268
+ break;
269
+ case 'XHRReadyStateChange':
270
+ // Only create the dependency if the request was completed
271
+ // 'XHRReadyStateChange' event means readyState is defined.
272
+ if (evt.args.data.readyState !== 4) {
273
+ break;
274
+ }
275
+ // @ts-expect-error - 'XHRReadyStateChange' event means argsUrl is defined.
276
+ addDependencyOnUrl(node, argsUrl);
277
+ stackTraceUrls.forEach(url => addDependencyOnUrl(node, url));
278
+ break;
279
+ case 'FunctionCall':
280
+ case 'v8.compile':
281
+ addDependencyOnFrame(node, evt.args.data.frame);
282
+ // @ts-expect-error - events mean argsUrl is defined.
283
+ addDependencyOnUrl(node, argsUrl);
284
+ break;
285
+ case 'ParseAuthorStyleSheet':
286
+ addDependencyOnFrame(node, evt.args.data.frame);
287
+ // @ts-expect-error - 'ParseAuthorStyleSheet' event means styleSheetUrl is defined.
288
+ addDependencyOnUrl(node, evt.args.data.styleSheetUrl);
289
+ break;
290
+ case 'ResourceSendRequest':
291
+ addDependencyOnFrame(node, evt.args.data.frame);
292
+ // @ts-expect-error - 'ResourceSendRequest' event means requestId is defined.
293
+ addDependentNetworkRequest(node, evt.args.data.requestId);
294
+ stackTraceUrls.forEach(url => addDependencyOnUrl(node, url));
295
+ break;
296
+ }
297
+ }
298
+ // Nodes starting before the root node cannot depend on it.
299
+ if (node.getNumberOfDependencies() === 0 && node.canDependOn(rootNode)) {
300
+ node.addDependency(rootNode);
301
+ }
302
+ }
303
+ // Second pass to prune the graph of short tasks.
304
+ const minimumEvtDur = SIGNIFICANT_DUR_THRESHOLD_MS * 1000;
305
+ let foundFirstLayout = false;
306
+ let foundFirstPaint = false;
307
+ let foundFirstParse = false;
308
+ for (const node of cpuNodes) {
309
+ // Don't prune if event is the first ParseHTML/Layout/Paint.
310
+ // See https://github.com/GoogleChrome/lighthouse/issues/9627#issuecomment-526699524 for more.
311
+ let isFirst = false;
312
+ if (!foundFirstLayout && node.childEvents.some(evt => evt.name === 'Layout')) {
313
+ isFirst = foundFirstLayout = true;
314
+ }
315
+ if (!foundFirstPaint && node.childEvents.some(evt => evt.name === 'Paint')) {
316
+ isFirst = foundFirstPaint = true;
317
+ }
318
+ if (!foundFirstParse && node.childEvents.some(evt => evt.name === 'ParseHTML')) {
319
+ isFirst = foundFirstParse = true;
320
+ }
321
+ if (isFirst || node.duration >= minimumEvtDur) {
322
+ // Don't prune this node. The task is long / important so it will impact simulation.
323
+ continue;
324
+ }
325
+ // Prune the node if it isn't highly connected to minimize graph size. Rewiring the graph
326
+ // here replaces O(M + N) edges with (M * N) edges, which is fine if either M or N is at
327
+ // most 1.
328
+ if (node.getNumberOfDependencies() === 1 || node.getNumberOfDependents() <= 1) {
329
+ PageDependencyGraph.pruneNode(node);
330
+ }
331
+ }
332
+ }
333
+ /**
334
+ * Removes the given node from the graph, but retains all paths between its dependencies and
335
+ * dependents.
336
+ */
337
+ static pruneNode(node) {
338
+ const dependencies = node.getDependencies();
339
+ const dependents = node.getDependents();
340
+ for (const dependency of dependencies) {
341
+ node.removeDependency(dependency);
342
+ for (const dependent of dependents) {
343
+ dependency.addDependent(dependent);
344
+ }
345
+ }
346
+ for (const dependent of dependents) {
347
+ node.removeDependent(dependent);
348
+ }
349
+ }
350
+ /**
351
+ * TODO: remove when CDT backend in Lighthouse is gone. Until then, this is a useful debugging tool
352
+ * to find delta between using CDP or the trace to create the network requests.
353
+ *
354
+ * When a test fails using the trace backend, I enabled this debug method and copied the network
355
+ * requests when CDP was used, then when trace is used, and diff'd them. This method helped
356
+ * remove non-logical differences from the comparison (order of properties, slight rounding
357
+ * discrepancies, removing object cycles, etc).
358
+ *
359
+ * When using for a unit test, make sure to do `.only` so you are getting what you expect.
360
+ */
361
+ static debugNormalizeRequests(lanternRequests) {
362
+ for (const request of lanternRequests) {
363
+ request.rendererStartTime = Math.round(request.rendererStartTime * 1000) / 1000;
364
+ request.networkRequestTime = Math.round(request.networkRequestTime * 1000) / 1000;
365
+ request.responseHeadersEndTime = Math.round(request.responseHeadersEndTime * 1000) / 1000;
366
+ request.networkEndTime = Math.round(request.networkEndTime * 1000) / 1000;
367
+ }
368
+ for (const r of lanternRequests) {
369
+ delete r.rawRequest;
370
+ if (r.initiatorRequest) {
371
+ // @ts-expect-error
372
+ r.initiatorRequest = { id: r.initiatorRequest.requestId };
373
+ }
374
+ if (r.redirectDestination) {
375
+ // @ts-expect-error
376
+ r.redirectDestination = { id: r.redirectDestination.requestId };
377
+ }
378
+ if (r.redirectSource) {
379
+ // @ts-expect-error
380
+ r.redirectSource = { id: r.redirectSource.requestId };
381
+ }
382
+ if (r.redirects) {
383
+ // @ts-expect-error
384
+ r.redirects = r.redirects.map(r2 => r2.requestId);
385
+ }
386
+ }
387
+ const requests = lanternRequests
388
+ .map(r => ({
389
+ requestId: r.requestId,
390
+ connectionId: r.connectionId,
391
+ connectionReused: r.connectionReused,
392
+ url: r.url,
393
+ protocol: r.protocol,
394
+ parsedURL: r.parsedURL,
395
+ documentURL: r.documentURL,
396
+ rendererStartTime: r.rendererStartTime,
397
+ networkRequestTime: r.networkRequestTime,
398
+ responseHeadersEndTime: r.responseHeadersEndTime,
399
+ networkEndTime: r.networkEndTime,
400
+ transferSize: r.transferSize,
401
+ resourceSize: r.resourceSize,
402
+ fromDiskCache: r.fromDiskCache,
403
+ fromMemoryCache: r.fromMemoryCache,
404
+ finished: r.finished,
405
+ statusCode: r.statusCode,
406
+ redirectSource: r.redirectSource,
407
+ redirectDestination: r.redirectDestination,
408
+ redirects: r.redirects,
409
+ failed: r.failed,
410
+ initiator: r.initiator,
411
+ timing: r.timing ? {
412
+ requestTime: r.timing.requestTime,
413
+ proxyStart: r.timing.proxyStart,
414
+ proxyEnd: r.timing.proxyEnd,
415
+ dnsStart: r.timing.dnsStart,
416
+ dnsEnd: r.timing.dnsEnd,
417
+ connectStart: r.timing.connectStart,
418
+ connectEnd: r.timing.connectEnd,
419
+ sslStart: r.timing.sslStart,
420
+ sslEnd: r.timing.sslEnd,
421
+ workerStart: r.timing.workerStart,
422
+ workerReady: r.timing.workerReady,
423
+ workerFetchStart: r.timing.workerFetchStart,
424
+ workerRespondWithSettled: r.timing.workerRespondWithSettled,
425
+ sendStart: r.timing.sendStart,
426
+ sendEnd: r.timing.sendEnd,
427
+ pushStart: r.timing.pushStart,
428
+ pushEnd: r.timing.pushEnd,
429
+ receiveHeadersStart: r.timing.receiveHeadersStart,
430
+ receiveHeadersEnd: r.timing.receiveHeadersEnd,
431
+ } :
432
+ r.timing,
433
+ resourceType: r.resourceType,
434
+ mimeType: r.mimeType,
435
+ priority: r.priority,
436
+ initiatorRequest: r.initiatorRequest,
437
+ frameId: r.frameId,
438
+ fromWorker: r.fromWorker,
439
+ isLinkPreload: r.isLinkPreload,
440
+ serverResponseTime: r.serverResponseTime,
441
+ }))
442
+ .filter(r => !r.fromWorker);
443
+ const debug = requests;
444
+ // Set breakpoint here.
445
+ // Copy `debug` and compare with https://www.diffchecker.com/text-compare/
446
+ // eslint-disable-next-line no-console
447
+ console.log(debug);
448
+ }
449
+ static createGraph(mainThreadEvents, networkRequests, url) {
450
+ // This is for debugging trace/devtoolslog network records.
451
+ // const debug = PageDependencyGraph.debugNormalizeRequests(networkRequests);
452
+ const networkNodeOutput = PageDependencyGraph.getNetworkNodeOutput(networkRequests);
453
+ const cpuNodes = PageDependencyGraph.getCPUNodes(mainThreadEvents);
454
+ const { requestedUrl, mainDocumentUrl } = url;
455
+ if (!requestedUrl) {
456
+ throw new Core.LanternError('requestedUrl is required to get the root request');
457
+ }
458
+ if (!mainDocumentUrl) {
459
+ throw new Core.LanternError('mainDocumentUrl is required to get the main resource');
460
+ }
461
+ const rootRequest = Core.NetworkAnalyzer.findResourceForUrl(networkRequests, requestedUrl);
462
+ if (!rootRequest) {
463
+ throw new Core.LanternError('rootRequest not found');
464
+ }
465
+ const rootNode = networkNodeOutput.idToNodeMap.get(rootRequest.requestId);
466
+ if (!rootNode) {
467
+ throw new Core.LanternError('rootNode not found');
468
+ }
469
+ const mainDocumentRequest = Core.NetworkAnalyzer.findLastDocumentForUrl(networkRequests, mainDocumentUrl);
470
+ if (!mainDocumentRequest) {
471
+ throw new Core.LanternError('mainDocumentRequest not found');
472
+ }
473
+ const mainDocumentNode = networkNodeOutput.idToNodeMap.get(mainDocumentRequest.requestId);
474
+ if (!mainDocumentNode) {
475
+ throw new Core.LanternError('mainDocumentNode not found');
476
+ }
477
+ PageDependencyGraph.linkNetworkNodes(rootNode, networkNodeOutput);
478
+ PageDependencyGraph.linkCPUNodes(rootNode, networkNodeOutput, cpuNodes);
479
+ mainDocumentNode.setIsMainDocument(true);
480
+ if (NetworkNode.findCycle(rootNode)) {
481
+ // Uncomment the following if you are debugging cycles.
482
+ // this.printGraph(rootNode);
483
+ throw new Core.LanternError('Invalid dependency graph created, cycle detected');
484
+ }
485
+ return rootNode;
486
+ }
487
+ // Unused, but useful for debugging.
488
+ static printGraph(rootNode, widthInCharacters = 80) {
489
+ function padRight(str, target, padChar = ' ') {
490
+ return str + padChar.repeat(Math.max(target - str.length, 0));
491
+ }
492
+ const nodes = [];
493
+ rootNode.traverse(node => nodes.push(node));
494
+ nodes.sort((a, b) => a.startTime - b.startTime);
495
+ // Assign labels (A, B, C, ..., Z, Z1, Z2, ...) for each node.
496
+ const nodeToLabel = new Map();
497
+ rootNode.traverse(node => {
498
+ const ascii = 65 + nodeToLabel.size;
499
+ let label;
500
+ if (ascii > 90) {
501
+ label = `Z${ascii - 90}`;
502
+ }
503
+ else {
504
+ label = String.fromCharCode(ascii);
505
+ }
506
+ nodeToLabel.set(node, label);
507
+ });
508
+ const min = nodes[0].startTime;
509
+ const max = nodes.reduce((max, node) => Math.max(max, node.endTime), 0);
510
+ const totalTime = max - min;
511
+ const timePerCharacter = totalTime / widthInCharacters;
512
+ nodes.forEach(node => {
513
+ const offset = Math.round((node.startTime - min) / timePerCharacter);
514
+ const length = Math.ceil((node.endTime - node.startTime) / timePerCharacter);
515
+ const bar = padRight('', offset) + padRight('', length, '=');
516
+ // @ts-expect-error -- disambiguate displayName from across possible Node types.
517
+ const displayName = node.request ? node.request.url : node.type;
518
+ // eslint-disable-next-line
519
+ console.log(padRight(bar, widthInCharacters), `| ${displayName.slice(0, 50)}`);
520
+ });
521
+ // Print labels for each node.
522
+ // eslint-disable-next-line
523
+ console.log();
524
+ // Print dependencies.
525
+ nodes.forEach(node => {
526
+ // @ts-expect-error -- disambiguate displayName from across possible Node types.
527
+ const displayName = node.request ? node.request.url : node.type;
528
+ // eslint-disable-next-line
529
+ console.log(nodeToLabel.get(node), displayName.slice(0, widthInCharacters - 5));
530
+ for (const child of node.dependents) {
531
+ // @ts-expect-error -- disambiguate displayName from across possible Node types.
532
+ const displayName = child.request ? child.request.url : child.type;
533
+ // eslint-disable-next-line
534
+ console.log(' ->', nodeToLabel.get(child), displayName.slice(0, widthInCharacters - 10));
535
+ }
536
+ // eslint-disable-next-line
537
+ console.log();
538
+ });
539
+ // Show cycle.
540
+ const cyclePath = NetworkNode.findCycle(rootNode);
541
+ // eslint-disable-next-line
542
+ console.log('Cycle?', cyclePath ? 'yes' : 'no');
543
+ if (cyclePath) {
544
+ const path = [...cyclePath];
545
+ path.push(path[0]);
546
+ // eslint-disable-next-line
547
+ console.log(path.map(node => nodeToLabel.get(node)).join(' -> '));
548
+ }
549
+ }
550
+ }
551
+ export { PageDependencyGraph };
@@ -0,0 +1,7 @@
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
+ export * from './BaseNode.js';
5
+ export * from './CPUNode.js';
6
+ export * from './NetworkNode.js';
7
+ export * from './PageDependencyGraph.js';
@@ -0,0 +1,9 @@
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
+ import * as Core from './core/core.js';
5
+ import * as Graph from './graph/graph.js';
6
+ import * as Metrics from './metrics/metrics.js';
7
+ import * as Simulation from './simulation/simulation.js';
8
+ import * as Types from './types/types.js';
9
+ export { Core, Graph, Metrics, Simulation, Types, };