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,13 @@
1
+ // Copyright 2019 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 AidaClient from './AidaClient.js';
5
+ import * as DispatchHttpRequestClient from './DispatchHttpRequestClient.js';
6
+ import * as GdpClient from './GdpClient.js';
7
+ import * as InspectorFrontendHost from './InspectorFrontendHost.js';
8
+ import * as InspectorFrontendHostAPI from './InspectorFrontendHostAPI.js';
9
+ import * as Platform from './Platform.js';
10
+ import * as ResourceLoader from './ResourceLoader.js';
11
+ import * as UserMetrics from './UserMetrics.js';
12
+ export { AidaClient, DispatchHttpRequestClient, GdpClient, InspectorFrontendHost, InspectorFrontendHostAPI, Platform, ResourceLoader, UserMetrics, };
13
+ export const userMetrics = new UserMetrics.UserMetrics();
@@ -0,0 +1,60 @@
1
+
2
+ export const i18n = {
3
+ registerUIStrings: () => {},
4
+ getLocalizedString: (_, str) => {
5
+ // So that the string passed in gets output verbatim.
6
+ return str;
7
+ },
8
+ lockedLazyString: () => {},
9
+ getLazilyComputedLocalizedString: () => {},
10
+ };
11
+
12
+ // TODO(jacktfranklin): once the DocumentLatency insight does not depend on
13
+ // this method, we can remove this stub.
14
+ export const TimeUtilities = {
15
+ millisToString(x) {
16
+ const separator = ' ';
17
+ const formatter = new Intl.NumberFormat('en-US', {
18
+ style: 'unit',
19
+ unitDisplay: 'narrow',
20
+ minimumFractionDigits: 0,
21
+ maximumFractionDigits: 1,
22
+ unit: 'millisecond',
23
+ });
24
+
25
+ const parts = formatter.formatToParts(x);
26
+ for (const part of parts) {
27
+ if (part.type === 'literal') {
28
+ if (part.value === ' ') {
29
+ part.value = separator;
30
+ }
31
+ }
32
+ }
33
+
34
+ return parts.map(part => part.value).join('');
35
+ }
36
+ };
37
+
38
+ // TODO(jacktfranklin): once the ImageDelivery insight does not depend on this method, we can remove this stub.
39
+ export const ByteUtilities = {
40
+ bytesToString(x) {
41
+ const separator = ' ';
42
+ const formatter = new Intl.NumberFormat('en-US', {
43
+ style: 'unit',
44
+ unit: 'kilobyte',
45
+ unitDisplay: 'narrow',
46
+ minimumFractionDigits: 1,
47
+ maximumFractionDigits: 1,
48
+ });
49
+ const parts = formatter.formatToParts(x / 1000);
50
+ for (const part of parts) {
51
+ if (part.type === 'literal') {
52
+ if (part.value === ' ') {
53
+ part.value = separator;
54
+ }
55
+ }
56
+ }
57
+
58
+ return parts.map(part => part.value).join('');
59
+ }
60
+ };
@@ -0,0 +1,199 @@
1
+ // Copyright 2020 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 const removeElement = (array, element, firstOnly) => {
5
+ let index = array.indexOf(element);
6
+ if (index === -1) {
7
+ return false;
8
+ }
9
+ if (firstOnly) {
10
+ array.splice(index, 1);
11
+ return true;
12
+ }
13
+ for (let i = index + 1, n = array.length; i < n; ++i) {
14
+ if (array[i] !== element) {
15
+ array[index++] = array[i];
16
+ }
17
+ }
18
+ array.length = index;
19
+ return true;
20
+ };
21
+ export function swap(array, i1, i2) {
22
+ const temp = array[i1];
23
+ array[i1] = array[i2];
24
+ array[i2] = temp;
25
+ }
26
+ function partition(array, comparator, left, right, pivotIndex) {
27
+ const pivotValue = array[pivotIndex];
28
+ swap(array, right, pivotIndex);
29
+ let storeIndex = left;
30
+ for (let i = left; i < right; ++i) {
31
+ if (comparator(array[i], pivotValue) < 0) {
32
+ swap(array, storeIndex, i);
33
+ ++storeIndex;
34
+ }
35
+ }
36
+ swap(array, right, storeIndex);
37
+ return storeIndex;
38
+ }
39
+ function quickSortRange(array, comparator, left, right, sortWindowLeft, sortWindowRight) {
40
+ if (right <= left) {
41
+ return;
42
+ }
43
+ const pivotIndex = Math.floor(Math.random() * (right - left)) + left;
44
+ const pivotNewIndex = partition(array, comparator, left, right, pivotIndex);
45
+ if (sortWindowLeft < pivotNewIndex) {
46
+ quickSortRange(array, comparator, left, pivotNewIndex - 1, sortWindowLeft, sortWindowRight);
47
+ }
48
+ if (pivotNewIndex < sortWindowRight) {
49
+ quickSortRange(array, comparator, pivotNewIndex + 1, right, sortWindowLeft, sortWindowRight);
50
+ }
51
+ }
52
+ export function sortRange(array, comparator, leftBound, rightBound, sortWindowLeft, sortWindowRight) {
53
+ if (leftBound === 0 && rightBound === (array.length - 1) && sortWindowLeft === 0 && sortWindowRight >= rightBound) {
54
+ array.sort(comparator);
55
+ }
56
+ else {
57
+ quickSortRange(array, comparator, leftBound, rightBound, sortWindowLeft, sortWindowRight);
58
+ }
59
+ return array;
60
+ }
61
+ export const binaryIndexOf = (array, value, comparator) => {
62
+ const index = lowerBound(array, value, comparator);
63
+ return index < array.length && comparator(value, array[index]) === 0 ? index : -1;
64
+ };
65
+ function mergeOrIntersect(array1, array2, comparator, mergeNotIntersect) {
66
+ const result = [];
67
+ let i = 0;
68
+ let j = 0;
69
+ while (i < array1.length && j < array2.length) {
70
+ const compareValue = comparator(array1[i], array2[j]);
71
+ if (mergeNotIntersect || !compareValue) {
72
+ result.push(compareValue <= 0 ? array1[i] : array2[j]);
73
+ }
74
+ if (compareValue <= 0) {
75
+ i++;
76
+ }
77
+ if (compareValue >= 0) {
78
+ j++;
79
+ }
80
+ }
81
+ if (mergeNotIntersect) {
82
+ while (i < array1.length) {
83
+ result.push(array1[i++]);
84
+ }
85
+ while (j < array2.length) {
86
+ result.push(array2[j++]);
87
+ }
88
+ }
89
+ return result;
90
+ }
91
+ export const intersectOrdered = (array1, array2, comparator) => {
92
+ return mergeOrIntersect(array1, array2, comparator, false);
93
+ };
94
+ export const mergeOrdered = (array1, array2, comparator) => {
95
+ return mergeOrIntersect(array1, array2, comparator, true);
96
+ };
97
+ export const DEFAULT_COMPARATOR = (a, b) => {
98
+ return a < b ? -1 : (a > b ? 1 : 0);
99
+ };
100
+ export function lowerBound(array, needle, comparator, left, right) {
101
+ let l = left || 0;
102
+ let r = right !== undefined ? right : array.length;
103
+ while (l < r) {
104
+ const m = (l + r) >> 1;
105
+ if (comparator(needle, array[m]) > 0) {
106
+ l = m + 1;
107
+ }
108
+ else {
109
+ r = m;
110
+ }
111
+ }
112
+ return r;
113
+ }
114
+ export function upperBound(array, needle, comparator, left, right) {
115
+ let l = left || 0;
116
+ let r = right !== undefined ? right : array.length;
117
+ while (l < r) {
118
+ const m = (l + r) >> 1;
119
+ if (comparator(needle, array[m]) >= 0) {
120
+ l = m + 1;
121
+ }
122
+ else {
123
+ r = m;
124
+ }
125
+ }
126
+ return r;
127
+ }
128
+ /**
129
+ * Obtains the first or last item in the array that satisfies the predicate function.
130
+ * So, for example, if the array were arr = [2, 4, 6, 8, 10], and you are looking for
131
+ * the last item arr[i] such that arr[i] < 5 you would be returned 1, because
132
+ * array[1] is 4, the last item in the array that satisfies the
133
+ * predicate function.
134
+ *
135
+ * If instead you were looking for the first item in the same array that satisfies
136
+ * arr[i] > 5 you would be returned 2 because array[2] = 6.
137
+ *
138
+ * Please note: this presupposes that the array is already ordered.
139
+ * This function uses a variation of Binary Search.
140
+ */
141
+ function nearestIndex(arr, predicate, searchStart) {
142
+ const searchFromEnd = searchStart === "END" /* NearestSearchStart.END */;
143
+ if (arr.length === 0) {
144
+ return null;
145
+ }
146
+ let left = 0;
147
+ let right = arr.length - 1;
148
+ let pivot = 0;
149
+ let matchesPredicate = false;
150
+ let moveToTheRight = false;
151
+ let middle = 0;
152
+ do {
153
+ middle = left + (right - left) / 2;
154
+ pivot = searchFromEnd ? Math.ceil(middle) : Math.floor(middle);
155
+ matchesPredicate = predicate(arr[pivot]);
156
+ moveToTheRight = matchesPredicate === searchFromEnd;
157
+ if (moveToTheRight) {
158
+ left = Math.min(right, pivot + (left === pivot ? 1 : 0));
159
+ }
160
+ else {
161
+ right = Math.max(left, pivot + (right === pivot ? -1 : 0));
162
+ }
163
+ } while (right !== left);
164
+ // Special-case: the indexed item doesn't pass the predicate. This
165
+ // occurs when none of the items in the array are a match for the
166
+ // predicate.
167
+ if (!predicate(arr[left])) {
168
+ return null;
169
+ }
170
+ return left;
171
+ }
172
+ /**
173
+ * Obtains the first item in the array that satisfies the predicate function.
174
+ * So, for example, if the array was arr = [2, 4, 6, 8, 10], and you are looking for
175
+ * the first item arr[i] such that arr[i] > 5 you would be returned 2, because
176
+ * array[2] is 6, the first item in the array that satisfies the
177
+ * predicate function.
178
+ *
179
+ * Please note: this presupposes that the array is already ordered.
180
+ */
181
+ export function nearestIndexFromBeginning(arr, predicate) {
182
+ return nearestIndex(arr, predicate, "BEGINNING" /* NearestSearchStart.BEGINNING */);
183
+ }
184
+ /**
185
+ * Obtains the last item in the array that satisfies the predicate function.
186
+ * So, for example, if the array was arr = [2, 4, 6, 8, 10], and you are looking for
187
+ * the last item arr[i] such that arr[i] < 5 you would be returned 1, because
188
+ * arr[1] is 4, the last item in the array that satisfies the
189
+ * predicate function.
190
+ *
191
+ * Please note: this presupposes that the array is already ordered.
192
+ */
193
+ export function nearestIndexFromEnd(arr, predicate) {
194
+ return nearestIndex(arr, predicate, "END" /* NearestSearchStart.END */);
195
+ }
196
+ /** Type guard for ensuring that `arr` does not contain null or undefined **/
197
+ export function arrayDoesNotContainNullOrUndefined(arr) {
198
+ return !arr.includes(null) && !arr.includes(undefined);
199
+ }
@@ -0,0 +1,4 @@
1
+ // Copyright 2023 The Chromium Authors
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+ export {};
@@ -0,0 +1,4 @@
1
+ // Copyright 2025 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 {};
@@ -0,0 +1,13 @@
1
+ // Copyright 2020 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 const isValid = (date) => {
5
+ return !isNaN(date.getTime());
6
+ };
7
+ export const toISO8601Compact = (date) => {
8
+ function leadZero(x) {
9
+ return (x > 9 ? '' : '0') + x;
10
+ }
11
+ return date.getFullYear() + leadZero(date.getMonth() + 1) + leadZero(date.getDate()) + 'T' +
12
+ leadZero(date.getHours()) + leadZero(date.getMinutes()) + leadZero(date.getSeconds());
13
+ };
@@ -0,0 +1,27 @@
1
+ // Copyright 2021 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 const EmptyUrlString = '';
5
+ /**
6
+ * Tagged template helper to construct `UrlString`s in a more readable form,
7
+ * without having to sprinkle casts throughout the codebase. Primarily useful
8
+ * for writing unit tests.
9
+ *
10
+ * Usage:
11
+ * ```js
12
+ * const url1 = urlString`https://www.example.com/404.html`;
13
+ * const url2 = urlString`http://${host}/path/to/file.js`;
14
+ * ```
15
+ *
16
+ * This is implemented as a wrapper around `String.raw` for convenience. This
17
+ * function doesn't perform any kind of validation that the returned string is
18
+ * really a valid `UrlString`.
19
+ *
20
+ * @param strings the string parts of the template.
21
+ * @param values the dynamic values of the template.
22
+ * @returns the string constructed from `strings` and `values` casted to an
23
+ * `UrlString`.
24
+ */
25
+ export const urlString = (strings, ...values) => String.raw({ raw: strings }, ...values);
26
+ export const EmptyRawPathString = '';
27
+ export const EmptyEncodedPathString = '';
@@ -0,0 +1,19 @@
1
+ // Copyright 2025 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
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
5
+ // @ts-ignore 'process' is not available when type-checking against browser types.
6
+ export const IS_NODE = typeof process !== 'undefined' && process.versions?.node !== null;
7
+ export const IS_BROWSER =
8
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
9
+ // @ts-ignore 'window' is not available when type-checking against node.js types.
10
+ typeof window !== 'undefined' || (typeof self !== 'undefined' && typeof self.postMessage === 'function');
11
+ export const HOST_RUNTIME = await (async () => {
12
+ if (IS_NODE) {
13
+ return (await import('./node/node.js')).HostRuntime.HOST_RUNTIME;
14
+ }
15
+ if (IS_BROWSER) {
16
+ return (await import('./browser/browser.js')).HostRuntime.HOST_RUNTIME;
17
+ }
18
+ throw new Error('Unknown runtime!');
19
+ })();
@@ -0,0 +1,21 @@
1
+ // Copyright 2020 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 const ENTER_KEY = 'Enter';
5
+ export const ESCAPE_KEY = 'Escape';
6
+ export const TAB_KEY = 'Tab';
7
+ export const ARROW_KEYS = new Set([
8
+ "ArrowUp" /* ArrowKey.UP */,
9
+ "ArrowDown" /* ArrowKey.DOWN */,
10
+ "ArrowLeft" /* ArrowKey.LEFT */,
11
+ "ArrowRight" /* ArrowKey.RIGHT */,
12
+ ]);
13
+ export function keyIsArrowKey(key) {
14
+ return ARROW_KEYS.has(key);
15
+ }
16
+ export function isEscKey(event) {
17
+ return event.key === 'Escape';
18
+ }
19
+ export function isEnterOrSpaceKey(event) {
20
+ return event.key === 'Enter' || event.key === ' ';
21
+ }
@@ -0,0 +1,79 @@
1
+ // Copyright 2020 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 const inverse = function (map) {
5
+ const result = new Multimap();
6
+ for (const [key, value] of map.entries()) {
7
+ result.set(value, key);
8
+ }
9
+ return result;
10
+ };
11
+ export class Multimap {
12
+ map = new Map();
13
+ set(key, value) {
14
+ let set = this.map.get(key);
15
+ if (!set) {
16
+ set = new Set();
17
+ this.map.set(key, set);
18
+ }
19
+ set.add(value);
20
+ }
21
+ get(key) {
22
+ return this.map.get(key) || new Set();
23
+ }
24
+ has(key) {
25
+ return this.map.has(key);
26
+ }
27
+ hasValue(key, value) {
28
+ const set = this.map.get(key);
29
+ if (!set) {
30
+ return false;
31
+ }
32
+ return set.has(value);
33
+ }
34
+ get size() {
35
+ return this.map.size;
36
+ }
37
+ delete(key, value) {
38
+ const values = this.get(key);
39
+ if (!values) {
40
+ return false;
41
+ }
42
+ const result = values.delete(value);
43
+ if (!values.size) {
44
+ this.map.delete(key);
45
+ }
46
+ return result;
47
+ }
48
+ deleteAll(key) {
49
+ this.map.delete(key);
50
+ }
51
+ keysArray() {
52
+ return [...this.map.keys()];
53
+ }
54
+ keys() {
55
+ return this.map.keys();
56
+ }
57
+ valuesArray() {
58
+ const result = [];
59
+ for (const set of this.map.values()) {
60
+ result.push(...set.values());
61
+ }
62
+ return result;
63
+ }
64
+ clear() {
65
+ this.map.clear();
66
+ }
67
+ }
68
+ /**
69
+ * Gets value for key, assigning a default if value is falsy.
70
+ */
71
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type
72
+ export function getWithDefault(map, key, defaultValueFactory) {
73
+ let value = map.get(key);
74
+ if (value === undefined || value === null) {
75
+ value = defaultValueFactory(key);
76
+ map.set(key, value);
77
+ }
78
+ return value;
79
+ }
@@ -0,0 +1,143 @@
1
+ // Copyright 2023 The Chromium Authors
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+ /**
5
+ * MIME types other than the ones with the "text" type that have text content.
6
+ */
7
+ const ADDITIONAL_TEXT_MIME_TYPES = new Set([
8
+ 'application/ecmascript',
9
+ 'application/javascript',
10
+ 'application/json',
11
+ 'application/json+protobuf',
12
+ 'application/mpegurl',
13
+ 'application/vnd.apple.mpegurl',
14
+ 'application/vnd.dart',
15
+ 'application/xml',
16
+ 'application/x-aspx',
17
+ 'application/x-javascript',
18
+ 'application/x-jsp',
19
+ 'application/x-httpd-php',
20
+ 'application/x-mpegurl',
21
+ 'audio/mpegurl',
22
+ 'audio/x-mpegurl',
23
+ ]);
24
+ /**
25
+ * @returns true iff `mimeType` has textual content. Concretely we return true if:
26
+ * - `mimeType` starts with "text/" or "multipart/"
27
+ * - `mimeType` ends with "+xml"
28
+ * - `mimeType` contains "json"
29
+ * - if `mimeType` is one of a predefined list textual mime types.
30
+ */
31
+ export function isTextType(mimeType) {
32
+ return mimeType.startsWith('text/') || mimeType.startsWith('multipart/') || mimeType.includes('json') ||
33
+ mimeType.endsWith('+xml') || ADDITIONAL_TEXT_MIME_TYPES.has(mimeType);
34
+ }
35
+ /**
36
+ * Port of net::HttpUtils::ParseContentType to extract mimeType and charset from
37
+ * the 'Content-Type' header.
38
+ */
39
+ export function parseContentType(contentType) {
40
+ if (contentType === '*/*') {
41
+ return { mimeType: null, charset: null };
42
+ }
43
+ const { mimeType, params } = parseMimeType(contentType);
44
+ const charset = params.get('charset')?.toLowerCase().trim() ?? null;
45
+ return { mimeType, charset };
46
+ }
47
+ function parseMimeType(contentType) {
48
+ // Remove any leading and trailing whitespace. Note that String.prototype.trim removes a lot more
49
+ // than what the spec considers whitespace. We are fine with that.
50
+ contentType = contentType.trim();
51
+ // The mimetype is basically everything until the first ';' (but trimmed).
52
+ let mimeTypeEnd = findFirstIndexOf(contentType, ' \t;(');
53
+ if (mimeTypeEnd < 0) {
54
+ mimeTypeEnd = contentType.length;
55
+ }
56
+ const slashPos = contentType.indexOf('/');
57
+ if (slashPos < 0 || slashPos > mimeTypeEnd) {
58
+ return { mimeType: null, params: new Map() };
59
+ }
60
+ const mimeType = contentType.substring(0, mimeTypeEnd).toLowerCase();
61
+ // Iterate over parameters. We can't split the string around semicolons because quoted
62
+ // strings may include semicolons.
63
+ const params = new Map();
64
+ let offset = contentType.indexOf(';', mimeTypeEnd);
65
+ while (offset >= 0 && offset < contentType.length) {
66
+ // Trim off the semicolon.
67
+ ++offset;
68
+ // Trim off whitespace
69
+ offset = findFirstIndexNotOf(contentType, ' \t', offset);
70
+ if (offset < 0) {
71
+ continue;
72
+ }
73
+ const paramNameStart = offset;
74
+ // Extend parameter name until we run into semicolon or equals sign.
75
+ offset = findFirstIndexOf(contentType, ';=', offset);
76
+ if (offset < 0 || contentType[offset] === ';') {
77
+ // Nothing more to do if no more input or there is no parameter value.
78
+ continue;
79
+ }
80
+ const paramName = contentType.substring(paramNameStart, offset).toLowerCase();
81
+ // Trim off the '='.
82
+ ++offset;
83
+ // Trim off whitespace.
84
+ offset = findFirstIndexNotOf(contentType, ' \t', offset);
85
+ let paramValue = '';
86
+ if (offset < 0 || contentType[offset] === ';') {
87
+ // Nothing to do here: the value is an unquoted string of only whitespace.
88
+ continue;
89
+ }
90
+ else if (contentType[offset] !== '"') {
91
+ // Not a quote so we can copy the value as-is.
92
+ const valueStart = offset;
93
+ offset = contentType.indexOf(';', offset);
94
+ const valueEnd = offset >= 0 ? offset : contentType.length;
95
+ paramValue = contentType.substring(valueStart, valueEnd).trimEnd();
96
+ }
97
+ else {
98
+ // Otherwise append data with special handling for backslashes, until a close quote.
99
+ // Don't trim whitespace for quoted strings.
100
+ // Trim off the opening quote '"'
101
+ ++offset;
102
+ while (offset < contentType.length && contentType[offset] !== '"') {
103
+ // Skip over backslash and append the next character, when not at the end
104
+ // of the string. Otherwise, copy the next character (which may be a backslash).
105
+ if (contentType[offset] === '\\' && offset + 1 < contentType.length) {
106
+ ++offset;
107
+ }
108
+ paramValue += contentType[offset];
109
+ ++offset;
110
+ }
111
+ offset = contentType.indexOf(';', offset);
112
+ }
113
+ if (!params.has(paramName)) {
114
+ // The first one wins!
115
+ params.set(paramName, paramValue);
116
+ }
117
+ }
118
+ return { mimeType, params };
119
+ }
120
+ /**
121
+ * @returns the smallest index of any character in 'characters' or -1 if none of
122
+ * the characters occur in 'searchString'
123
+ */
124
+ function findFirstIndexOf(searchString, characters, pos = 0) {
125
+ for (let i = pos; i < searchString.length; i++) {
126
+ if (characters.includes(searchString[i])) {
127
+ return i;
128
+ }
129
+ }
130
+ return -1;
131
+ }
132
+ /**
133
+ * @returns the smallest index of any character not in 'characters' or -1 if only
134
+ * 'characters' occur in 'searchString'
135
+ */
136
+ function findFirstIndexNotOf(searchString, characters, pos = 0) {
137
+ for (let i = pos; i < searchString.length; i++) {
138
+ if (!characters.includes(searchString[i])) {
139
+ return i;
140
+ }
141
+ }
142
+ return -1;
143
+ }
@@ -0,0 +1,72 @@
1
+ // Copyright 2020 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 const clamp = (num, min, max) => {
5
+ let clampedNumber = num;
6
+ if (num < min) {
7
+ clampedNumber = min;
8
+ }
9
+ else if (num > max) {
10
+ clampedNumber = max;
11
+ }
12
+ return clampedNumber;
13
+ };
14
+ export const mod = (m, n) => {
15
+ return ((m % n) + n) % n;
16
+ };
17
+ export const toFixedIfFloating = (value) => {
18
+ if (!value || Number.isNaN(Number(value))) {
19
+ return value;
20
+ }
21
+ const number = Number(value);
22
+ return number % 1 ? number.toFixed(3) : String(number);
23
+ };
24
+ /**
25
+ * Rounds a number (including float) down.
26
+ */
27
+ export const floor = (value, precision = 0) => {
28
+ // Allows for rounding to the nearest whole number.
29
+ // Ex: 1 / 10 -> round down to nearest 10th place
30
+ // Ex: 1 / 5 -> round down to nearest 5
31
+ // Ex: 1 / 50 -> round down to nearest 50
32
+ if (precision > 0 && precision < 1) {
33
+ precision = 1 / precision;
34
+ return Math.floor(value / precision) * precision;
35
+ }
36
+ const mult = Math.pow(10, precision);
37
+ return Math.floor(value * mult) / mult;
38
+ };
39
+ /**
40
+ * Computes the great common divisor for two numbers.
41
+ * If the numbers are floats, they will be rounded to an integer.
42
+ */
43
+ export const greatestCommonDivisor = (a, b) => {
44
+ a = Math.round(a);
45
+ b = Math.round(b);
46
+ while (b !== 0) {
47
+ const t = b;
48
+ b = a % b;
49
+ a = t;
50
+ }
51
+ return a;
52
+ };
53
+ const commonRatios = new Map([
54
+ ['8∶5', '16∶10'],
55
+ ]);
56
+ export const aspectRatio = (width, height) => {
57
+ const divisor = greatestCommonDivisor(width, height);
58
+ if (divisor !== 0) {
59
+ width /= divisor;
60
+ height /= divisor;
61
+ }
62
+ const result = `${width}∶${height}`;
63
+ return commonRatios.get(result) || result;
64
+ };
65
+ export const withThousandsSeparator = function (num) {
66
+ let str = String(num);
67
+ const re = /(\d+)(\d{3})/;
68
+ while (str.match(re)) {
69
+ str = str.replace(re, '$1\xA0$2');
70
+ } // \xa0 is a non-breaking space
71
+ return str;
72
+ };