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,845 @@
1
+ // Copyright 2014 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 Common from '../../core/common/common.js';
5
+ import { DeferredDOMNode } from './DOMModel.js';
6
+ import { RemoteObject } from './RemoteObject.js';
7
+ import { Events as ResourceTreeModelEvents, ResourceTreeModel } from './ResourceTreeModel.js';
8
+ import { Events as RuntimeModelEvents, RuntimeModel } from './RuntimeModel.js';
9
+ import { SDKModel } from './SDKModel.js';
10
+ const DEVTOOLS_ANIMATIONS_WORLD_NAME = 'devtools_animations';
11
+ const REPORT_SCROLL_POSITION_BINDING_NAME = '__devtools_report_scroll_position__';
12
+ const getScrollListenerNameInPage = (id) => `__devtools_scroll_listener_${id}__`;
13
+ async function resolveToObjectInWorld(domNode, worldName) {
14
+ const resourceTreeModel = domNode.domModel().target().model(ResourceTreeModel);
15
+ const pageAgent = domNode.domModel().target().pageAgent();
16
+ for (const frame of resourceTreeModel.frames()) {
17
+ // This returns previously created world if it exists for the frame.
18
+ const { executionContextId } = await pageAgent.invoke_createIsolatedWorld({ frameId: frame.id, worldName });
19
+ const object = await domNode.resolveToObject(undefined, executionContextId);
20
+ if (object) {
21
+ return object;
22
+ }
23
+ }
24
+ return null;
25
+ }
26
+ /**
27
+ * Provides an extension over `DOMNode` that gives it additional
28
+ * capabilities for animation debugging, mainly:
29
+ * - getting a node's scroll information (scroll offsets and scroll range).
30
+ * - updating a node's scroll offset.
31
+ * - tracking the node's scroll offsets with event listeners.
32
+ *
33
+ * It works by running functions on the target page, see `DOMNode`s `callFunction` method
34
+ * for more details on how a function is called on the target page.
35
+ *
36
+ * For listening to events on the target page and getting notified on the devtools frontend
37
+ * side, we're adding a binding to the page `__devtools_report_scroll_position__` in a world `devtools_animation`
38
+ * we've created. Then, we're setting scroll listeners of the `node` in the same world which calls the binding
39
+ * itself with the scroll offsets.
40
+ */
41
+ export class AnimationDOMNode {
42
+ #domNode;
43
+ #scrollListenersById = new Map();
44
+ #scrollBindingListener;
45
+ static lastAddedListenerId = 0;
46
+ constructor(domNode) {
47
+ this.#domNode = domNode;
48
+ }
49
+ async #addReportScrollPositionBinding() {
50
+ // The binding is already added so we don't need to add it again.
51
+ if (this.#scrollBindingListener) {
52
+ return;
53
+ }
54
+ this.#scrollBindingListener = ev => {
55
+ const { name, payload } = ev.data;
56
+ if (name !== REPORT_SCROLL_POSITION_BINDING_NAME) {
57
+ return;
58
+ }
59
+ const { scrollTop, scrollLeft, id } = JSON.parse(payload);
60
+ const scrollListener = this.#scrollListenersById.get(id);
61
+ if (!scrollListener) {
62
+ return;
63
+ }
64
+ scrollListener({ scrollTop, scrollLeft });
65
+ };
66
+ const runtimeModel = this.#domNode.domModel().target().model(RuntimeModel);
67
+ await runtimeModel.addBinding({
68
+ name: REPORT_SCROLL_POSITION_BINDING_NAME,
69
+ executionContextName: DEVTOOLS_ANIMATIONS_WORLD_NAME,
70
+ });
71
+ runtimeModel.addEventListener(RuntimeModelEvents.BindingCalled, this.#scrollBindingListener);
72
+ }
73
+ async #removeReportScrollPositionBinding() {
74
+ // There isn't any binding added yet.
75
+ if (!this.#scrollBindingListener) {
76
+ return;
77
+ }
78
+ const runtimeModel = this.#domNode.domModel().target().model(RuntimeModel);
79
+ await runtimeModel.removeBinding({
80
+ name: REPORT_SCROLL_POSITION_BINDING_NAME,
81
+ });
82
+ runtimeModel.removeEventListener(RuntimeModelEvents.BindingCalled, this.#scrollBindingListener);
83
+ this.#scrollBindingListener = undefined;
84
+ }
85
+ async addScrollEventListener(onScroll) {
86
+ AnimationDOMNode.lastAddedListenerId++;
87
+ const id = AnimationDOMNode.lastAddedListenerId;
88
+ this.#scrollListenersById.set(id, onScroll);
89
+ // Add the binding for reporting scroll events from the page if it doesn't exist.
90
+ if (!this.#scrollBindingListener) {
91
+ await this.#addReportScrollPositionBinding();
92
+ }
93
+ const object = await resolveToObjectInWorld(this.#domNode, DEVTOOLS_ANIMATIONS_WORLD_NAME);
94
+ if (!object) {
95
+ return null;
96
+ }
97
+ await object.callFunction(scrollListenerInPage, [
98
+ id,
99
+ REPORT_SCROLL_POSITION_BINDING_NAME,
100
+ getScrollListenerNameInPage(id),
101
+ ].map(arg => RemoteObject.toCallArgument(arg)));
102
+ object.release();
103
+ return id;
104
+ function scrollListenerInPage(id, reportScrollPositionBindingName, scrollListenerNameInPage) {
105
+ if ('scrollingElement' in this && !this.scrollingElement) {
106
+ return;
107
+ }
108
+ const scrollingElement = ('scrollingElement' in this ? this.scrollingElement : this);
109
+ // @ts-expect-error We're setting a custom field on `Element` or `Document` for retaining the function on the page.
110
+ this[scrollListenerNameInPage] = () => {
111
+ // @ts-expect-error `reportScrollPosition` binding is injected to the page before calling the function.
112
+ globalThis[reportScrollPositionBindingName](JSON.stringify({ scrollTop: scrollingElement.scrollTop, scrollLeft: scrollingElement.scrollLeft, id }));
113
+ };
114
+ // @ts-expect-error We've already defined the function used below.
115
+ this.addEventListener('scroll', this[scrollListenerNameInPage], true);
116
+ }
117
+ }
118
+ async removeScrollEventListener(id) {
119
+ const object = await resolveToObjectInWorld(this.#domNode, DEVTOOLS_ANIMATIONS_WORLD_NAME);
120
+ if (!object) {
121
+ return;
122
+ }
123
+ await object.callFunction(removeScrollListenerInPage, [getScrollListenerNameInPage(id)].map(arg => RemoteObject.toCallArgument(arg)));
124
+ object.release();
125
+ this.#scrollListenersById.delete(id);
126
+ // There aren't any scroll listeners remained on the page
127
+ // so we remove the binding.
128
+ if (this.#scrollListenersById.size === 0) {
129
+ await this.#removeReportScrollPositionBinding();
130
+ }
131
+ function removeScrollListenerInPage(scrollListenerNameInPage) {
132
+ // @ts-expect-error We've already set this custom field while adding scroll listener.
133
+ this.removeEventListener('scroll', this[scrollListenerNameInPage]);
134
+ // @ts-expect-error We've already set this custom field while adding scroll listener.
135
+ delete this[scrollListenerNameInPage];
136
+ }
137
+ }
138
+ async scrollTop() {
139
+ return await this.#domNode.callFunction(scrollTopInPage).then(res => res?.value ?? null);
140
+ function scrollTopInPage() {
141
+ if ('scrollingElement' in this) {
142
+ if (!this.scrollingElement) {
143
+ return 0;
144
+ }
145
+ return this.scrollingElement.scrollTop;
146
+ }
147
+ return this.scrollTop;
148
+ }
149
+ }
150
+ async scrollLeft() {
151
+ return await this.#domNode.callFunction(scrollLeftInPage).then(res => res?.value ?? null);
152
+ function scrollLeftInPage() {
153
+ if ('scrollingElement' in this) {
154
+ if (!this.scrollingElement) {
155
+ return 0;
156
+ }
157
+ return this.scrollingElement.scrollLeft;
158
+ }
159
+ return this.scrollLeft;
160
+ }
161
+ }
162
+ async setScrollTop(offset) {
163
+ await this.#domNode.callFunction(setScrollTopInPage, [offset]);
164
+ function setScrollTopInPage(offsetInPage) {
165
+ if ('scrollingElement' in this) {
166
+ if (!this.scrollingElement) {
167
+ return;
168
+ }
169
+ this.scrollingElement.scrollTop = offsetInPage;
170
+ }
171
+ else {
172
+ this.scrollTop = offsetInPage;
173
+ }
174
+ }
175
+ }
176
+ async setScrollLeft(offset) {
177
+ await this.#domNode.callFunction(setScrollLeftInPage, [offset]);
178
+ function setScrollLeftInPage(offsetInPage) {
179
+ if ('scrollingElement' in this) {
180
+ if (!this.scrollingElement) {
181
+ return;
182
+ }
183
+ this.scrollingElement.scrollLeft = offsetInPage;
184
+ }
185
+ else {
186
+ this.scrollLeft = offsetInPage;
187
+ }
188
+ }
189
+ }
190
+ async verticalScrollRange() {
191
+ return await this.#domNode.callFunction(verticalScrollRangeInPage).then(res => res?.value ?? null);
192
+ function verticalScrollRangeInPage() {
193
+ if ('scrollingElement' in this) {
194
+ if (!this.scrollingElement) {
195
+ return 0;
196
+ }
197
+ return this.scrollingElement.scrollHeight - this.scrollingElement.clientHeight;
198
+ }
199
+ return this.scrollHeight - this.clientHeight;
200
+ }
201
+ }
202
+ async horizontalScrollRange() {
203
+ return await this.#domNode.callFunction(horizontalScrollRangeInPage).then(res => res?.value ?? null);
204
+ function horizontalScrollRangeInPage() {
205
+ if ('scrollingElement' in this) {
206
+ if (!this.scrollingElement) {
207
+ return 0;
208
+ }
209
+ return this.scrollingElement.scrollWidth - this.scrollingElement.clientWidth;
210
+ }
211
+ return this.scrollWidth - this.clientWidth;
212
+ }
213
+ }
214
+ }
215
+ function shouldGroupAnimations(firstAnimation, anim) {
216
+ const firstAnimationTimeline = firstAnimation.viewOrScrollTimeline();
217
+ const animationTimeline = anim.viewOrScrollTimeline();
218
+ if (firstAnimationTimeline) {
219
+ // This is a SDA group so check whether the animation's
220
+ // scroll container and scroll axis is the same with the first animation.
221
+ return Boolean(animationTimeline && firstAnimationTimeline.sourceNodeId === animationTimeline.sourceNodeId &&
222
+ firstAnimationTimeline.axis === animationTimeline.axis);
223
+ }
224
+ // This is a non-SDA group so check whether the coming animation
225
+ // is a time based one too and if so, compare their start times.
226
+ return !animationTimeline && firstAnimation.startTime() === anim.startTime();
227
+ }
228
+ export class AnimationModel extends SDKModel {
229
+ runtimeModel;
230
+ agent;
231
+ #animationsById = new Map();
232
+ animationGroups = new Map();
233
+ #pendingAnimations = new Set();
234
+ playbackRate = 1;
235
+ #flushPendingAnimations;
236
+ constructor(target) {
237
+ super(target);
238
+ this.runtimeModel = target.model(RuntimeModel);
239
+ this.agent = target.animationAgent();
240
+ target.registerAnimationDispatcher(new AnimationDispatcher(this));
241
+ if (!target.suspended()) {
242
+ void this.agent.invoke_enable();
243
+ }
244
+ const resourceTreeModel = target.model(ResourceTreeModel);
245
+ resourceTreeModel.addEventListener(ResourceTreeModelEvents.PrimaryPageChanged, this.reset, this);
246
+ this.#flushPendingAnimations = Common.Debouncer.debounce(() => {
247
+ while (this.#pendingAnimations.size) {
248
+ this.matchExistingGroups(this.createGroupFromPendingAnimations());
249
+ }
250
+ }, 100);
251
+ }
252
+ reset() {
253
+ this.#animationsById.clear();
254
+ this.animationGroups.clear();
255
+ this.#pendingAnimations.clear();
256
+ this.dispatchEventToListeners(Events.ModelReset);
257
+ }
258
+ async devicePixelRatio() {
259
+ const evaluateResult = await this.target().runtimeAgent().invoke_evaluate({ expression: 'window.devicePixelRatio' });
260
+ if (evaluateResult?.result.type === 'number') {
261
+ return evaluateResult?.result.value ?? 1;
262
+ }
263
+ return 1;
264
+ }
265
+ async getAnimationGroupForAnimation(name, nodeId) {
266
+ for (const animationGroup of this.animationGroups.values()) {
267
+ for (const animation of animationGroup.animations()) {
268
+ if (animation.name() === name) {
269
+ const animationNode = await animation.source().node();
270
+ if (animationNode?.id === nodeId) {
271
+ return animationGroup;
272
+ }
273
+ }
274
+ }
275
+ }
276
+ return null;
277
+ }
278
+ animationCanceled(id) {
279
+ this.#pendingAnimations.delete(id);
280
+ }
281
+ async animationUpdated(payload) {
282
+ let foundAnimationGroup;
283
+ let foundAnimation;
284
+ for (const animationGroup of this.animationGroups.values()) {
285
+ foundAnimation = animationGroup.animations().find(animation => animation.id() === payload.id);
286
+ if (foundAnimation) {
287
+ foundAnimationGroup = animationGroup;
288
+ break;
289
+ }
290
+ }
291
+ if (!foundAnimation || !foundAnimationGroup) {
292
+ return;
293
+ }
294
+ await foundAnimation.setPayload(payload);
295
+ this.dispatchEventToListeners(Events.AnimationGroupUpdated, foundAnimationGroup);
296
+ }
297
+ async animationStarted(payload) {
298
+ // We are not interested in animations without effect or target.
299
+ if (!payload.source?.backendNodeId) {
300
+ return;
301
+ }
302
+ const animation = await AnimationImpl.parsePayload(this, payload);
303
+ // Ignore Web Animations custom effects & groups.
304
+ const keyframesRule = animation.source().keyframesRule();
305
+ if (animation.type() === 'WebAnimation' && keyframesRule?.keyframes().length === 0) {
306
+ this.#pendingAnimations.delete(animation.id());
307
+ }
308
+ else {
309
+ this.#animationsById.set(animation.id(), animation);
310
+ this.#pendingAnimations.add(animation.id());
311
+ }
312
+ this.#flushPendingAnimations();
313
+ }
314
+ matchExistingGroups(incomingGroup) {
315
+ let matchedGroup = null;
316
+ for (const group of this.animationGroups.values()) {
317
+ if (group.matches(incomingGroup)) {
318
+ matchedGroup = group;
319
+ group.rebaseTo(incomingGroup);
320
+ break;
321
+ }
322
+ if (group.shouldInclude(incomingGroup)) {
323
+ matchedGroup = group;
324
+ group.appendAnimations(incomingGroup.animations());
325
+ break;
326
+ }
327
+ }
328
+ if (!matchedGroup) {
329
+ this.animationGroups.set(incomingGroup.id(), incomingGroup);
330
+ this.dispatchEventToListeners(Events.AnimationGroupStarted, incomingGroup);
331
+ }
332
+ else {
333
+ this.dispatchEventToListeners(Events.AnimationGroupUpdated, matchedGroup);
334
+ }
335
+ return Boolean(matchedGroup);
336
+ }
337
+ createGroupFromPendingAnimations() {
338
+ console.assert(this.#pendingAnimations.size > 0);
339
+ const firstAnimationId = this.#pendingAnimations.values().next().value;
340
+ this.#pendingAnimations.delete(firstAnimationId);
341
+ const firstAnimation = this.#animationsById.get(firstAnimationId);
342
+ if (!firstAnimation) {
343
+ throw new Error('Unable to locate first animation');
344
+ }
345
+ const groupedAnimations = [firstAnimation];
346
+ const remainingAnimations = new Set();
347
+ for (const id of this.#pendingAnimations) {
348
+ const anim = this.#animationsById.get(id);
349
+ if (shouldGroupAnimations(firstAnimation, anim)) {
350
+ groupedAnimations.push(anim);
351
+ }
352
+ else {
353
+ remainingAnimations.add(id);
354
+ }
355
+ }
356
+ this.#pendingAnimations = remainingAnimations;
357
+ // Show the first starting animation at the top of the animations of the animation group.
358
+ groupedAnimations.sort((anim1, anim2) => anim1.startTime() - anim2.startTime());
359
+ return new AnimationGroup(this, firstAnimationId, groupedAnimations);
360
+ }
361
+ setPlaybackRate(playbackRate) {
362
+ this.playbackRate = playbackRate;
363
+ void this.agent.invoke_setPlaybackRate({ playbackRate });
364
+ }
365
+ async releaseAllAnimations() {
366
+ const animationIds = [...this.animationGroups.values()].flatMap(animationGroup => animationGroup.animations().map(animation => animation.id()));
367
+ await this.agent.invoke_releaseAnimations({ animations: animationIds });
368
+ }
369
+ releaseAnimations(animations) {
370
+ void this.agent.invoke_releaseAnimations({ animations });
371
+ }
372
+ async suspendModel() {
373
+ await this.agent.invoke_disable().then(() => this.reset());
374
+ }
375
+ async resumeModel() {
376
+ await this.agent.invoke_enable();
377
+ }
378
+ }
379
+ export var Events;
380
+ (function (Events) {
381
+ /* eslint-disable @typescript-eslint/naming-convention -- Used by web_tests. */
382
+ Events["AnimationGroupStarted"] = "AnimationGroupStarted";
383
+ Events["AnimationGroupUpdated"] = "AnimationGroupUpdated";
384
+ Events["ModelReset"] = "ModelReset";
385
+ /* eslint-enable @typescript-eslint/naming-convention */
386
+ })(Events || (Events = {}));
387
+ export class AnimationImpl {
388
+ #animationModel;
389
+ #payload; // Assertion is safe because only way to create `AnimationImpl` is to use `parsePayload` which calls `setPayload` and sets the value.
390
+ #source; // Assertion is safe because only way to create `AnimationImpl` is to use `parsePayload` which calls `setPayload` and sets the value.
391
+ #playState;
392
+ constructor(animationModel) {
393
+ this.#animationModel = animationModel;
394
+ }
395
+ static async parsePayload(animationModel, payload) {
396
+ const animation = new AnimationImpl(animationModel);
397
+ await animation.setPayload(payload);
398
+ return animation;
399
+ }
400
+ async setPayload(payload) {
401
+ // TODO(b/40929569): Remove normalizing by devicePixelRatio after the attached bug is resolved.
402
+ if (payload.viewOrScrollTimeline) {
403
+ const devicePixelRatio = await this.#animationModel.devicePixelRatio();
404
+ if (payload.viewOrScrollTimeline.startOffset) {
405
+ payload.viewOrScrollTimeline.startOffset /= devicePixelRatio;
406
+ }
407
+ if (payload.viewOrScrollTimeline.endOffset) {
408
+ payload.viewOrScrollTimeline.endOffset /= devicePixelRatio;
409
+ }
410
+ }
411
+ this.#payload = payload;
412
+ if (this.#source && payload.source) {
413
+ this.#source.setPayload(payload.source);
414
+ }
415
+ else if (!this.#source && payload.source) {
416
+ this.#source = new AnimationEffect(this.#animationModel, payload.source);
417
+ }
418
+ }
419
+ // `startTime` and `duration` is represented as the
420
+ // percentage of the view timeline range that starts at `startOffset`px
421
+ // from the scroll container and ends at `endOffset`px of the scroll container.
422
+ // This takes a percentage of the timeline range and returns the absolute
423
+ // pixels values as a scroll offset of the scroll container.
424
+ percentageToPixels(percentage, viewOrScrollTimeline) {
425
+ const { startOffset, endOffset } = viewOrScrollTimeline;
426
+ if (startOffset === undefined || endOffset === undefined) {
427
+ // We don't expect this situation to occur since after an animation is started
428
+ // we expect the scroll offsets to be resolved and provided correctly. If `startOffset`
429
+ // or `endOffset` is not provided in a viewOrScrollTimeline; we can assume that there is a bug here
430
+ // so it's fine to throw an error.
431
+ throw new Error('startOffset or endOffset does not exist in viewOrScrollTimeline');
432
+ }
433
+ return (endOffset - startOffset) * (percentage / 100);
434
+ }
435
+ viewOrScrollTimeline() {
436
+ return this.#payload.viewOrScrollTimeline;
437
+ }
438
+ id() {
439
+ return this.#payload.id;
440
+ }
441
+ name() {
442
+ return this.#payload.name;
443
+ }
444
+ paused() {
445
+ return this.#payload.pausedState;
446
+ }
447
+ playState() {
448
+ return this.#playState || this.#payload.playState;
449
+ }
450
+ playbackRate() {
451
+ return this.#payload.playbackRate;
452
+ }
453
+ // For scroll driven animations, it returns the pixel offset in the scroll container
454
+ // For time animations, it returns milliseconds.
455
+ startTime() {
456
+ const viewOrScrollTimeline = this.viewOrScrollTimeline();
457
+ if (viewOrScrollTimeline) {
458
+ return this.percentageToPixels(this.playbackRate() > 0 ? this.#payload.startTime : 100 - this.#payload.startTime, viewOrScrollTimeline) +
459
+ (this.viewOrScrollTimeline()?.startOffset ?? 0);
460
+ }
461
+ return this.#payload.startTime;
462
+ }
463
+ // For scroll driven animations, it returns the duration in pixels (i.e. after how many pixels of scroll the animation is going to end)
464
+ // For time animations, it returns milliseconds.
465
+ iterationDuration() {
466
+ const viewOrScrollTimeline = this.viewOrScrollTimeline();
467
+ if (viewOrScrollTimeline) {
468
+ return this.percentageToPixels(this.source().duration(), viewOrScrollTimeline);
469
+ }
470
+ return this.source().duration();
471
+ }
472
+ // For scroll driven animations, it returns the duration in pixels (i.e. after how many pixels of scroll the animation is going to end)
473
+ // For time animations, it returns milliseconds.
474
+ endTime() {
475
+ if (!this.source().iterations) {
476
+ return Infinity;
477
+ }
478
+ if (this.viewOrScrollTimeline()) {
479
+ return this.startTime() + this.iterationDuration() * this.source().iterations();
480
+ }
481
+ return this.startTime() + this.source().delay() + this.source().duration() * this.source().iterations() +
482
+ this.source().endDelay();
483
+ }
484
+ // For scroll driven animations, it returns the duration in pixels (i.e. after how many pixels of scroll the animation is going to end)
485
+ // For time animations, it returns milliseconds.
486
+ finiteDuration() {
487
+ const iterations = Math.min(this.source().iterations(), 3);
488
+ if (this.viewOrScrollTimeline()) {
489
+ return this.iterationDuration() * iterations;
490
+ }
491
+ return this.source().delay() + this.source().duration() * iterations;
492
+ }
493
+ // For scroll driven animations, it returns the duration in pixels (i.e. after how many pixels of scroll the animation is going to end)
494
+ // For time animations, it returns milliseconds.
495
+ currentTime() {
496
+ const viewOrScrollTimeline = this.viewOrScrollTimeline();
497
+ if (viewOrScrollTimeline) {
498
+ return this.percentageToPixels(this.#payload.currentTime, viewOrScrollTimeline);
499
+ }
500
+ return this.#payload.currentTime;
501
+ }
502
+ source() {
503
+ return this.#source;
504
+ }
505
+ type() {
506
+ return this.#payload.type;
507
+ }
508
+ overlaps(animation) {
509
+ // Infinite animations
510
+ if (!this.source().iterations() || !animation.source().iterations()) {
511
+ return true;
512
+ }
513
+ const firstAnimation = this.startTime() < animation.startTime() ? this : animation;
514
+ const secondAnimation = firstAnimation === this ? animation : this;
515
+ return firstAnimation.endTime() >= secondAnimation.startTime();
516
+ }
517
+ // Utility method for returning `delay` for time based animations
518
+ // and `startTime` in pixels for scroll driven animations. It is used to
519
+ // find the exact starting time of the first keyframe for both cases.
520
+ delayOrStartTime() {
521
+ if (this.viewOrScrollTimeline()) {
522
+ return this.startTime();
523
+ }
524
+ return this.source().delay();
525
+ }
526
+ setTiming(duration, delay) {
527
+ void this.#source.node().then(node => {
528
+ if (!node) {
529
+ throw new Error('Unable to find node');
530
+ }
531
+ this.updateNodeStyle(duration, delay, node);
532
+ });
533
+ this.#source.durationInternal = duration;
534
+ this.#source.delayInternal = delay;
535
+ void this.#animationModel.agent.invoke_setTiming({ animationId: this.id(), duration, delay });
536
+ }
537
+ updateNodeStyle(duration, delay, node) {
538
+ let animationPrefix;
539
+ if (this.type() === "CSSTransition" /* Protocol.Animation.AnimationType.CSSTransition */) {
540
+ animationPrefix = 'transition-';
541
+ }
542
+ else if (this.type() === "CSSAnimation" /* Protocol.Animation.AnimationType.CSSAnimation */) {
543
+ animationPrefix = 'animation-';
544
+ }
545
+ else {
546
+ return;
547
+ }
548
+ if (!node.id) {
549
+ throw new Error('Node has no id');
550
+ }
551
+ const cssModel = node.domModel().cssModel();
552
+ cssModel.setEffectivePropertyValueForNode(node.id, animationPrefix + 'duration', duration + 'ms');
553
+ cssModel.setEffectivePropertyValueForNode(node.id, animationPrefix + 'delay', delay + 'ms');
554
+ }
555
+ async remoteObjectPromise() {
556
+ const payload = await this.#animationModel.agent.invoke_resolveAnimation({ animationId: this.id() });
557
+ if (!payload) {
558
+ return null;
559
+ }
560
+ return this.#animationModel.runtimeModel.createRemoteObject(payload.remoteObject);
561
+ }
562
+ cssId() {
563
+ return this.#payload.cssId || '';
564
+ }
565
+ }
566
+ export class AnimationEffect {
567
+ #animationModel;
568
+ #payload; // Assertion is safe because `setPayload` call in `constructor` sets the value.
569
+ delayInternal; // Assertion is safe because `setPayload` call in `constructor` sets the value.
570
+ durationInternal; // Assertion is safe because `setPayload` call in `constructor` sets the value.
571
+ #keyframesRule;
572
+ #deferredNode;
573
+ constructor(animationModel, payload) {
574
+ this.#animationModel = animationModel;
575
+ this.setPayload(payload);
576
+ }
577
+ setPayload(payload) {
578
+ this.#payload = payload;
579
+ if (!this.#keyframesRule && payload.keyframesRule) {
580
+ this.#keyframesRule = new KeyframesRule(payload.keyframesRule);
581
+ }
582
+ else if (this.#keyframesRule && payload.keyframesRule) {
583
+ this.#keyframesRule.setPayload(payload.keyframesRule);
584
+ }
585
+ this.delayInternal = payload.delay;
586
+ this.durationInternal = payload.duration;
587
+ }
588
+ delay() {
589
+ return this.delayInternal;
590
+ }
591
+ endDelay() {
592
+ return this.#payload.endDelay;
593
+ }
594
+ iterations() {
595
+ // Animations with zero duration, zero delays and infinite iterations can't be shown.
596
+ if (!this.delay() && !this.endDelay() && !this.duration()) {
597
+ return 0;
598
+ }
599
+ return this.#payload.iterations || Infinity;
600
+ }
601
+ duration() {
602
+ return this.durationInternal;
603
+ }
604
+ direction() {
605
+ return this.#payload.direction;
606
+ }
607
+ fill() {
608
+ return this.#payload.fill;
609
+ }
610
+ node() {
611
+ if (!this.#deferredNode) {
612
+ this.#deferredNode = new DeferredDOMNode(this.#animationModel.target(), this.backendNodeId());
613
+ }
614
+ return this.#deferredNode.resolvePromise();
615
+ }
616
+ deferredNode() {
617
+ return new DeferredDOMNode(this.#animationModel.target(), this.backendNodeId());
618
+ }
619
+ backendNodeId() {
620
+ return this.#payload.backendNodeId;
621
+ }
622
+ keyframesRule() {
623
+ return this.#keyframesRule || null;
624
+ }
625
+ easing() {
626
+ return this.#payload.easing;
627
+ }
628
+ }
629
+ export class KeyframesRule {
630
+ #payload; // Assertion is safe because `setPayload` call in `constructor` sets the value.;
631
+ #keyframes; // Assertion is safe because `setPayload` call in `constructor` sets the value.;
632
+ constructor(payload) {
633
+ this.setPayload(payload);
634
+ }
635
+ setPayload(payload) {
636
+ this.#payload = payload;
637
+ if (!this.#keyframes) {
638
+ this.#keyframes = this.#payload.keyframes.map(keyframeStyle => new KeyframeStyle(keyframeStyle));
639
+ }
640
+ else {
641
+ this.#payload.keyframes.forEach((keyframeStyle, index) => {
642
+ this.#keyframes[index]?.setPayload(keyframeStyle);
643
+ });
644
+ }
645
+ }
646
+ name() {
647
+ return this.#payload.name;
648
+ }
649
+ keyframes() {
650
+ return this.#keyframes;
651
+ }
652
+ }
653
+ export class KeyframeStyle {
654
+ #payload; // Assertion is safe because `setPayload` call in `constructor` sets the value.
655
+ #offset; // Assertion is safe because `setPayload` call in `constructor` sets the value.
656
+ constructor(payload) {
657
+ this.setPayload(payload);
658
+ }
659
+ setPayload(payload) {
660
+ this.#payload = payload;
661
+ this.#offset = payload.offset;
662
+ }
663
+ offset() {
664
+ return this.#offset;
665
+ }
666
+ setOffset(offset) {
667
+ this.#offset = offset * 100 + '%';
668
+ }
669
+ offsetAsNumber() {
670
+ return parseFloat(this.#offset) / 100;
671
+ }
672
+ easing() {
673
+ return this.#payload.easing;
674
+ }
675
+ }
676
+ export class AnimationGroup {
677
+ #animationModel;
678
+ #id;
679
+ #scrollNode;
680
+ #animations;
681
+ #paused = false;
682
+ constructor(animationModel, id, animations) {
683
+ this.#animationModel = animationModel;
684
+ this.#id = id;
685
+ this.#animations = animations;
686
+ }
687
+ isScrollDriven() {
688
+ return Boolean(this.#animations[0]?.viewOrScrollTimeline());
689
+ }
690
+ id() {
691
+ return this.#id;
692
+ }
693
+ animations() {
694
+ return this.#animations;
695
+ }
696
+ release() {
697
+ this.#animationModel.animationGroups.delete(this.id());
698
+ this.#animationModel.releaseAnimations(this.animationIds());
699
+ }
700
+ animationIds() {
701
+ function extractId(animation) {
702
+ return animation.id();
703
+ }
704
+ return this.#animations.map(extractId);
705
+ }
706
+ startTime() {
707
+ return this.#animations[0].startTime();
708
+ }
709
+ // For scroll driven animations, it returns the duration in pixels (i.e. after how many pixels of scroll the animation is going to end)
710
+ // For time animations, it returns milliseconds.
711
+ groupDuration() {
712
+ let duration = 0;
713
+ for (const anim of this.#animations) {
714
+ duration = Math.max(duration, anim.delayOrStartTime() + anim.iterationDuration());
715
+ }
716
+ return duration;
717
+ }
718
+ // For scroll driven animations, it returns the duration in pixels (i.e. after how many pixels of scroll the animation is going to end)
719
+ // For time animations, it returns milliseconds.
720
+ finiteDuration() {
721
+ let maxDuration = 0;
722
+ for (let i = 0; i < this.#animations.length; ++i) {
723
+ maxDuration = Math.max(maxDuration, this.#animations[i].finiteDuration());
724
+ }
725
+ return maxDuration;
726
+ }
727
+ scrollOrientation() {
728
+ const timeline = this.#animations[0]?.viewOrScrollTimeline();
729
+ if (!timeline) {
730
+ return null;
731
+ }
732
+ return timeline.axis;
733
+ }
734
+ async scrollNode() {
735
+ if (this.#scrollNode) {
736
+ return this.#scrollNode;
737
+ }
738
+ if (!this.isScrollDriven()) {
739
+ return null;
740
+ }
741
+ const sourceNodeId = this.#animations[0]?.viewOrScrollTimeline()?.sourceNodeId;
742
+ if (!sourceNodeId) {
743
+ return null;
744
+ }
745
+ const deferredScrollNode = new DeferredDOMNode(this.#animationModel.target(), sourceNodeId);
746
+ const scrollNode = await deferredScrollNode.resolvePromise();
747
+ if (!scrollNode) {
748
+ return null;
749
+ }
750
+ this.#scrollNode = new AnimationDOMNode(scrollNode);
751
+ return this.#scrollNode;
752
+ }
753
+ seekTo(currentTime) {
754
+ void this.#animationModel.agent.invoke_seekAnimations({ animations: this.animationIds(), currentTime });
755
+ }
756
+ paused() {
757
+ return this.#paused;
758
+ }
759
+ togglePause(paused) {
760
+ if (paused === this.#paused) {
761
+ return;
762
+ }
763
+ this.#paused = paused;
764
+ void this.#animationModel.agent.invoke_setPaused({ animations: this.animationIds(), paused });
765
+ }
766
+ currentTimePromise() {
767
+ let longestAnim = null;
768
+ for (const anim of this.#animations) {
769
+ if (!longestAnim || anim.endTime() > longestAnim.endTime()) {
770
+ longestAnim = anim;
771
+ }
772
+ }
773
+ if (!longestAnim) {
774
+ throw new Error('No longest animation found');
775
+ }
776
+ return this.#animationModel.agent.invoke_getCurrentTime({ id: longestAnim.id() })
777
+ .then(({ currentTime }) => currentTime || 0);
778
+ }
779
+ matches(group) {
780
+ function extractId(anim) {
781
+ const timelineId = (anim.viewOrScrollTimeline()?.sourceNodeId ?? '') + (anim.viewOrScrollTimeline()?.axis ?? '');
782
+ const regularId = anim.type() === "WebAnimation" /* Protocol.Animation.AnimationType.WebAnimation */ ? anim.type() + anim.id() : anim.cssId();
783
+ return regularId + timelineId;
784
+ }
785
+ if (this.#animations.length !== group.#animations.length) {
786
+ return false;
787
+ }
788
+ const left = this.#animations.map(extractId).sort();
789
+ const right = group.#animations.map(extractId).sort();
790
+ for (let i = 0; i < left.length; i++) {
791
+ if (left[i] !== right[i]) {
792
+ return false;
793
+ }
794
+ }
795
+ return true;
796
+ }
797
+ shouldInclude(group) {
798
+ // We want to include the animations coming from the incoming group
799
+ // inside this group if they were to be grouped if the events came at the same time.
800
+ const [firstIncomingAnimation] = group.#animations;
801
+ const [firstAnimation] = this.#animations;
802
+ return shouldGroupAnimations(firstAnimation, firstIncomingAnimation);
803
+ }
804
+ appendAnimations(animations) {
805
+ this.#animations.push(...animations);
806
+ }
807
+ rebaseTo(group) {
808
+ this.#animationModel.releaseAnimations(this.animationIds());
809
+ this.#animations = group.#animations;
810
+ this.#scrollNode = undefined;
811
+ }
812
+ }
813
+ export class AnimationDispatcher {
814
+ #animationModel;
815
+ constructor(animationModel) {
816
+ this.#animationModel = animationModel;
817
+ }
818
+ animationCreated(_event) {
819
+ // Previously this event was used to batch the animations into groups
820
+ // and we were waiting for animationStarted events to be sent for
821
+ // all the created animations and until then we weren't creating any
822
+ // groups. This was allowing us to not miss any animations that were
823
+ // going to be in the same group. However, now we're not using this event
824
+ // to do batching and instead:
825
+ // * We debounce the flush calls so that if the animationStarted events
826
+ // for the same animation group come in different times; we create one
827
+ // group for them.
828
+ // * Even though an animation group is created and rendered for some animations
829
+ // that have the same startTime (or same timeline & scroll axis for SDAs), now
830
+ // whenever an `animationStarted` event comes we check whether there is a group
831
+ // we can add the related animation. If so, we add it and emit `animationGroupUpdated`
832
+ // event. So that, all the animations that were supposed to be in the same group
833
+ // will be in the same group.
834
+ }
835
+ animationCanceled({ id }) {
836
+ this.#animationModel.animationCanceled(id);
837
+ }
838
+ animationStarted({ animation }) {
839
+ void this.#animationModel.animationStarted(animation);
840
+ }
841
+ animationUpdated({ animation }) {
842
+ void this.#animationModel.animationUpdated(animation);
843
+ }
844
+ }
845
+ SDKModel.register(AnimationModel, { capabilities: 2 /* Capability.DOM */, autostart: true });